Planning Tasks
Takes design.md and definition.md from docs/issues/YYYY-MM-DD-<slug>/ as input. Produces a task plan detailed enough for a coding agent to execute without re-deriving implementation from the design.
Does NOT introduce new design decisions, modify the design, or write complete implementations.
EVERY TASK MUST HAVE ALL 8 FIELDS — NO EXCEPTIONS
Workflow
- Step 1: Load Inputs
- Step 2: Explore Codebase
- Step 3: Break Design into Tasks
- Step 4: Order Tasks & Dependencies
- Step 5: Out-of-Scope Tasks
- Step 6: Open Execution Questions
- Step 7: Readiness Declaration
- Step 8: Validate
Step 1: Load Inputs
Read design.md and definition.md from the issue folder. Extract: design goals, non-goals, proposed design, current state.
Step 2: Explore Codebase
-
Read files referenced in issue definition's current state
-
Identify patterns, naming conventions, testing style
-
Locate exact insertion points for new code
No output section — ensures tasks reference real paths and patterns.
Step 3: Break Design into Tasks
Start ## Task List with a Task Index — one line per task:
T1: Add timing instrumentation [S] — T2: Refactor task queue [M] — T3: Add action selector [L]
Each task MUST use this exact format:
T<N>: <short imperative title> [S|M|L]
Objective: One outcome, traceable to a design element. Size: S (single file, <30 lines) | M (2-3 files, moderate logic) | L (multiple files, complex state/logic) Files:
- Create:
exact/path/to/new_file.ts - Modify:
exact/path/to/existing.ts - Test:
tests/path/to/test.test.tsImplementation:
- In
path/to/file.ts: add import X, modifyfunctionName()to do Z - In
tests/path/to/test.test.ts: test "should X" — assert Y Boundaries: What this task must NOT do Dependencies: T<N> | None Expected Outcome: Observable result (file exists, test passes, etc.) Validation:exact command— expected output
Code detail guidance:
-
✓ Interfaces, type definitions, function signatures
-
✓ Key logic as pseudocode or commented outline
-
❌ Complete function bodies
-
❌ Complete test implementations
All tasks must have the same depth of specificity. If a task requires the executing agent to choose between approaches, resolve the choice or flag it in Open Execution Questions.
Step 4: Order Tasks & Dependencies
Explain sequencing rationale. Identify parallel vs sequential tasks.
Step 5: Out-of-Scope Tasks
List tasks that might be assumed necessary but are excluded. Reference design non-goals.
Step 6: Open Execution Questions
List execution uncertainties (tooling, environment, access). Do NOT resolve — only list. Write "No open execution questions identified." if none.
Step 7: Readiness Declaration
Exactly one: Ready for execution | Blocked pending clarification | Requires design update
Step 8: Validate
Check Criteria
Task fields All 8 fields present on every task
Task Index Present at top of Task List
Implementation Specific changes per file, signatures complete, bodies are outlines
Traceability Every task traces to proposed design
Outcomes No vague outcomes ("improved", "refactored")
Validation Exact commands with expected output
File paths Match actual codebase (from Step 2)
Consistency No task significantly vaguer than others
Decisions No embedded design decisions — resolve or flag in Open Execution Questions
If any check fails, return to the failing step and revise.
Output
Save to docs/issues/YYYY-MM-DD-<slug>/plan.md .
Task List
Task Ordering Rationale
Out-of-Scope Tasks
Open Execution Questions
Readiness Declaration
Missing any section invalidates the output.
Anti-patterns
-
❌ 50-line function body → ✓ signature + outline
-
❌ Full test code → ✓ test descriptions with expected assertions
-
❌ "Update the function" → ✓ "In executeTask() (~line 45), add X"
-
❌ No goal reference → ✓ "Objective: ... (design goal #1)"
-
❌ "Either add new RPC or extend existing" → ✓ pick one or flag
-
❌ T1 has exact insertion points, T8 says "add component" → ✓ same depth