lazy · git:20260309.b2e83d0 · 2026-03-09 · sha256 86c2c9be0591cf4d

lazy git:20260309.b2e83d0A

Immutable. This exact content is served forever at /api/v1/blob/86c2c9be0591cf4d.

---
name: lazy
description: Use when starting new work, planning a feature, or deciding what to implement next. Detects existing RFCs, Specs, and Plans to determine the right starting point. Supports lightweight paths for bug fixes and small tweaks.
---

```
NO WORK WITHOUT A PLAN
```

If you're about to write code without knowing where you are in the workflow, stop. Plan first.

use the `lazyspec` cli tool. this is in the user's path.

<HARD-GATE>
Do NOT skip to implementation. Detect existing artifacts, classify the work,
and use the right skill.
</HARD-GATE>

> [!IMPORTANT]
> Read `_common.md` in the skills directory for CLI usage, forbidden actions, and subagent tiers.

<NEVER>
- Do NOT use /write-rfc, create-spec, or create-plan without user approval of the direction first.
</NEVER>

# Lazy

## Workflow Position

```d2
lazy -> write-rfc -> create-spec -> resolve-context -> create-plan -> build

lazy.style.fill: "#4A9EFF"
lazy.style.font-color: "#FFFFFF"
write-rfc.style.opacity: 0.4
create-spec.style.opacity: 0.4
resolve-context.style.opacity: 0.4
create-plan.style.opacity: 0.4
build.style.opacity: 0.4
```

## Workflow

```d2
User describes work -> Detect existing artifacts -> Classify work

Classify work -> New feature (full pipeline)
Classify work -> Bug fix / small tweak (lightweight)

New feature (full pipeline) -> Determine entry point

Determine entry point -> Nothing exists: Brainstorm
Determine entry point -> RFC exists, no Spec: Brainstorm slices
Determine entry point -> Spec exists, no Plan: Resolve context
Determine entry point -> Plan with tasks: Ready to build

Nothing exists: Brainstorm -> User approves direction? -> Use /create-spec skill: yes
User approves direction? -> Revise: no
Revise -> Nothing exists: Brainstorm

Nothing exists: Brainstorm -> Heavy/cross-cutting? -> Use /write-rfc skill: yes (optional)

RFC exists, no Spec: Brainstorm slices -> Use /create-spec skill
Spec exists, no Plan: Resolve context -> Use /resolve-context skill
Plan with tasks: Ready to build -> Use /build skill

Bug fix / small tweak (lightweight) -> Related Spec exists?
Related Spec exists? -> Create plan against it: yes
Related Spec exists? -> Create standalone plan: no

Create plan against it -> Use /create-plan skill
Create standalone plan -> Use /create-plan skill

Use /write-rfc skill.shape: double_circle
Use /create-spec skill.shape: double_circle
Use /resolve-context skill.shape: double_circle
Use /create-plan skill.shape: double_circle
Use /build skill.shape: double_circle
```

## Preflight

1. Run `lazyspec status --json` to get all documents, relationships, and validation in one call
2. Search for topic-specific matches: `lazyspec search "<topic>" --json`
3. Present findings to the user before choosing a direction
4. Classify the work (new feature, bug fix, tweak, refactor) before selecting a pipeline

## Subagent Dispatch

| Operation                 | Agent Type | Tier   | Context to provide                        |
| ------------------------- | ---------- | ------ | ----------------------------------------- |
| Search existing artifacts | Explore    | Medium | Topic keywords, document types to search  |
| Classify work complexity  | _(inline)_ | -      | No subagent needed, main agent classifies |

## Steps

### 1. Detect existing artifacts

Get the full project state and search for related work:

```
lazyspec status --json
lazyspec search "<topic>" --json
lazyspec context DOC-XXX --json
```

### 2. Present findings

Tell the user what you found:

- Which RFCs, Specs, Plans already exist for this work
- Their current status (draft, accepted, etc.)
- What relationships exist between them

### 3. Classify the work

Not all work needs the full pipeline. Before determining entry point, classify what the user is asking for:

| Classification  | Criteria                                                              | Pipeline                    |
| --------------- | --------------------------------------------------------------------- | --------------------------- |
| **New feature** | Adds new capability or behavior. Even small features need a Spec.     | Spec -> Plan (RFC optional) |
| **Bug fix**     | Corrects existing behavior that doesn't match intent.                 | Plan only                   |
| **Small tweak** | Minor adjustment to existing behavior (config change, copy, styling). | Plan only                   |
| **Refactor**    | Restructures code without changing behavior.                          | Plan only                   |

> [!NOTE]
> When unsure, ask the user. The classification determines how much ceremony the work gets.

**New features** always need a Spec. RFCs are optional, reserved for heavy or cross-cutting designs that affect multiple areas. Most features go straight to Spec.

**Project RFCs** should be linked if available.

**Bug fixes, small tweaks, and refactors** skip RFC and Spec creation entirely. They go straight to `create-plan`, optionally linked to an existing Spec if one is related.

### 4. Determine entry point

**For new features** (full pipeline):

| State                                | Action                                              |
| ------------------------------------ | --------------------------------------------------- |
| Nothing exists                       | Brainstorm the design, then use `/create-spec`      |
| Nothing exists (heavy/cross-cutting) | Brainstorm the design, then use `/write-rfc`        |
| RFC exists, no Specs                 | Brainstorm contract slices, then use `/create-spec` |
| Spec exists, no Plan                 | Use `/resolve-context` (chains to `/create-plan`)   |
| Plan exists with task breakdown      | Use `/build`                                        |
| Plan exists without task breakdown   | Use `/create-plan` to add tasks                     |

**For bug fixes, tweaks, and refactors** (lightweight pipeline):

| State                            | Action                                  |
| -------------------------------- | --------------------------------------- |
| Related Spec exists              | Use `/create-plan` linked to that Spec  |
| No related Spec (standalone fix) | Use `/create-plan` as a standalone plan |
| Plan already exists with tasks   | Use `/build`                            |

### 5. Brainstorm (when needed)

Brainstorming is fractal -- it applies at whatever level you're entering:

**Spec level (nothing exists, or RFC exists):**

- Ask clarifying questions about the problem (one at a time)
- Propose 2-3 design approaches with trade-offs
- Present your recommendation
- If an RFC exists, read it to understand intent and propose contract slices
- Get user approval before invoking create-spec

**RFC level (heavy/cross-cutting work only):**

- Only when the work spans multiple areas, teams, or requires significant architectural decisions
- Ask clarifying questions about the problem (one at a time)
- Propose 2-3 design approaches with trade-offs
- Present your recommendation
- Get user approval before invoking write-rfc

**Plan level (Spec exists, no Plan):**

- This is handled by create-plan, which generates the task breakdown
- Propose 2-3 design approaches with trade-offs
- Use /resolve-context skill, which chains to create-plan

**Lightweight plan (bug fix / tweak):**

- Confirm the problem or change with the user
- If a related Spec exists, confirm linking to it
- Propose 2-3 design approaches with trade-offs
- Use /create-plan skill directly (no resolve-context needed for standalone plans)

### 6. Use the appropriate skill

After determining the entry point and brainstorming (if needed), use the Skill tool to invoke the next skill (e.g. `/write-rfc`, `/create-spec`, `/create-plan`, `/build`). Each skill chains to its successor -- follow the chain, don't skip ahead.

## Red Flags

| Red Flag                                 | Reality                                                  |
| ---------------------------------------- | -------------------------------------------------------- |
| "Let me just start coding"               | Code without a plan = rework. Plan first.                |
| "I already know what to build"           | Then the plan should be quick. Still do it.              |
| "This is too small to plan"              | Small work still gets a plan. The plan can be small too. |
| "I'll figure out the design as I code"   | That's not design. That's hoping.                        |
| "This bug fix needs an RFC"              | No it doesn't. Classify the work correctly.              |
| "Let me create a Spec for this typo fix" | Overkill. Bug fixes and tweaks skip Spec creation.       |

## Checklist

Before invoking any downstream skill:

- [ ] Have you searched for existing artifacts? (`lazyspec search --json`, `lazyspec list --json`)
- [ ] Have you presented findings to the user?
- [ ] Has the user approved the direction?
- [ ] Are you invoking the correct skill for the work classification?

If any answer is "no", stop. Complete the missing step.

## Rules

- New features need Specs. RFCs are optional (for heavy/cross-cutting work). Bug fixes, tweaks, and refactors do not.
- One question at a time during brainstorming
- Get user approval before invoking the next skill
- Never skip directly to build without a Plan with tasks