Plan
Break a PRD/ARD/SPEC into an implementation plan of vertical-slice tasks. Each task cites the invariants and interfaces it touches, names the test that proves it, and has a status cell. Sole mutator of PLAN.md in the active plan. Use when ready to break requirements into tasks, after grill/design/spec and before build, or when the user says "plan this", "break this down", "tasks", "what's the plan".From its SKILL.md
npx -y skills add arendon1/agent-skills --skill planAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.5 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
plan — requirements into PLAN.md
Break a PRD/ARD/SPEC into an implementation plan of vertical-slice tasks. Each task is a tracer bullet: thin but complete, cutting through every integration layer end-to-end, demoable on its own. Each task cites the invariants and interfaces it serves and names the test that proves it.
Vertical slices, not horizontal layers. A task "add the database layer" is wrong; a task "POST /x returns 200 {id} persisted" is right.
OWNERSHIP
Owns: PLAN.md in the active plan folder.
Reads: PRD.md, ARD.md, SPEC.md (whatever exists), CONTEXT.md, the codebase.
Hands off to: build (executes tasks, flips status cells only).
MUST NOT write PRD.md, ARD.md, SPEC.md, or LESSONS.md.
build flips PLAN.md task status cells ([ ] -> ~ -> [x]) but MUST NOT
rewrite other PLAN.md content. plan is the sole author of task rows.
WHEN (user-invoked)
- After
grill/design/specproduced enough to break into tasks. - User says "plan this", "break this down", "tasks", "what's the plan".
- Existing
PLAN.mdneeds new tasks appended (re-plan a slice).
STEP 0 — READ EXISTING STATE
- Resolve the active plan per §6. If none, ask the user to run
grillfirst. - Read whatever exists:
PRD.md,ARD.md,SPEC.md. At minimum a PRD. - Read
CONTEXT.md— name tasks using canonical terms. - Explore the codebase for existing seams. Prefer existing seams over new ones. Look for prefactoring opportunities: "make the change easy, then make the easy change."
STEP 1 — DRAFT VERTICAL SLICES
Break the objective into tracer bullet tasks. Each task:
- Cuts through ALL integration layers end-to-end (schema, API, UI, tests).
- Delivers a narrow but COMPLETE path. A completed task is demoable/verifiable alone.
- Has one clear acceptance: name the test that proves it.
- Cites the invariants (
§V) and interfaces (§I) it serves. - Names its blockers (which tasks must complete first).
A task that is a single layer ("write the schema") is a horizontal slice — merge it into a vertical slice that proves it end-to-end. Prefactoring that must happen first is its own task, marked as blocking.
STEP 2 — ORDER BY DEPENDENCY
Order tasks so a task's blockers come before it. Publish in dependency order so
references are real. If two tasks are independent, either order is fine — flag
them as parallelizable for the dispatch discipline.
STEP 3 — QUIZ THE USER
Present the proposed breakdown as a numbered list. For each task show:
- Title — short, uses canonical terms.
- Cites —
§V.N,§I.Nit serves. - Test — the test name that proves it (e.g.
TestV2_TokenExpiryRejected). - Blocked by — which tasks must complete first (if any).
Ask the user:
- Does the granularity feel right? (too coarse / too fine)
- Are the dependency relationships correct?
- Should any slices be merged or split further?
Iterate until the user approves the breakdown.
STEP 4 — WRITE PLAN.md
Write PLAN.md using caveman. Template:
# PLAN — <slug>
## §T TASKS
id|status|task|cites|test|blocked by
T1|[ ]|<task 1, vertical slice>|V1,I.api|TestV1_...|-
T2|[ ]|<task 2>|V2|TestV2_...|T1
T3|[ ]|<task 3, parallelizable with T2>|V3|TestV3_...|T1
## §N NOTES
- <prefactoring note>
- <parallelizable set: T2, T3 — dispatch candidate>
Table cell rules: literal | -> escape as \|. Backticks OK. Cells trimmed.
Empty = -. Status: [ ] todo, ~ wip, [x] done.
Task ID rules
- Monotonic —
T1, T2, T3, .... Never reuse an ID, even after deletion. IfT2is dropped, the next task isT4, not a renumberedT2. citescolumn lists§V/§Ideps:V2,I.api.testcolumn names the test that proves the task. A task without a test is a lie — every task MUST have one. (Prefactoring tasks may cite an existing test that must still pass.)blocked bylists task IDs that must be[x]first, or-.
RIGHT-SIZE
- One-line fix:
PLAN.mdwith a singleT1. Skip PRD/ARD/SPEC entirely. - Small feature:
PLAN.mdwith 1-3 tasks, thin cites. - Medium feature: full task table with cites + tests + blockers.
- Complex / high-blast-radius: full task table +
§Nnotes for prefactoring, parallelizable sets, and dispatch candidates.
WHEN TO STOP
Done when:
- Every task is a vertical slice with a named test and cited invariants.
- Dependencies are correct and the user approved.
- Task IDs are monotonic.
- Canonical terms are used throughout.
- Parallelizable sets are flagged in
§Nfordispatch.
HANDOFF
Tell the user: build next (executes tasks in order, invoking tdd per task,
flipping status cells, running verify before declaring each task done).
BOUNDARIES
- MUST NOT write
PRD.md,ARD.md,SPEC.md, orLESSONS.md. - MUST NOT create a task without a test. Every task names its proof.
- MUST NOT produce horizontal-layer tasks. Vertical slices only.
- MUST get user approval on the breakdown before writing
PLAN.md. - MUST use
cavemanandCONTEXT.mdcanonical terms.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.