Use when you have requirements or a spec for multi-step work and need a concrete implementation plan before touching code
Create implementation plans assuming the implementer is skilled but knows NOTHING about this codebase.
EVERY TASK MUST BE COMPLETABLE IN MINUTES, NOT HOURS
A plan that says "implement the feature" is a wish. A plan that says "add this function to this file, test it with this command, expect this output" is actionable. If the implementer has to explore the codebase to figure out what to do, the plan failed.
No exceptions:
Violating the letter of this rule IS violating the spirit.
This skill is for turning UNDERSTOOD requirements into EXECUTABLE plans.
digraph planning {
"Gather context" [shape=box];
"Enough to plan?" [shape=diamond];
"Define tasks" [shape=box];
"Each task actionable?" [shape=diamond];
"Add detail" [shape=box];
"Write plan" [shape=box];
"Present plan" [shape=doublecircle];
"Gather context" -> "Enough to plan?";
"Enough to plan?" -> "Define tasks" [label="yes"];
"Enough to plan?" -> "Gather context" [label="no — research first"];
"Define tasks" -> "Each task actionable?";
"Each task actionable?" -> "Write plan" [label="yes"];
"Each task actionable?" -> "Add detail" [label="no — missing files/steps"];
"Add detail" -> "Each task actionable?";
"Write plan" -> "Present plan";
}
Before writing any plan, build a concrete picture of the codebase:
Use available tools (file search, code search, MCP integrations) to gather this context. Do not plan from assumptions about project structure.
Break the work into tasks where each task:
Target: 3-7 tasks. Fewer than 3 means tasks are too coarse. More than 7 means the scope is too large or tasks are too granular.
Present the plan in conversation. Persist to a file only if requested.
# [Feature Name] Implementation Plan
**Goal:** [One sentence — what is done when the plan is complete]
**Architecture:** [2-3 sentences — approach and key design decisions]
**Test/lint commands:** [Exact commands used to verify throughout]
---
### Task 1: [Descriptive Name]
**Files:**
- Create: `exact/path/to/new_file.py`
- Modify: `exact/path/to/existing.py`
- Test: `tests/exact/path/to/test_file.py`
**Step 1: Write the failing test**
```python
def test_specific_behavior():
result = function(input)
assert result == expected
```
**Step 2: Run test — expect FAIL**
Run: `pytest tests/path/test_file.py::test_specific_behavior -v`
Expected: FAIL — `NameError: name 'function' is not defined`
**Step 3: Implement**
```python
def function(input):
return expected
```
**Step 4: Run test — expect PASS**
Run: `pytest tests/path/test_file.py::test_specific_behavior -v`
Expected: PASS
**Step 5: Commit**
```bash
git add tests/path/test_file.py src/path/new_file.py
git commit -m "feat: add specific behavior"
```
---
### Task 2: [Next Task]
...
Non-negotiable elements in every task:
| Symptom | Problem |
|---|---|
| "Implement the handler" without code | Plan is a TODO list, not a plan |
| "Update tests as needed" | Which tests? What assertions? Be specific. |
| "See existing patterns" | Copy the relevant pattern INTO the plan |
| File paths with wildcards or "etc." | The implementer will guess wrong |
| No verification commands | No way to know if a task succeeded |
| Tasks that take more than 15 minutes | Break them down further |
| Design decisions deferred to implementer | Decide now or research first |
| Excuse | Reality |
|---|---|
| "The implementer can figure out the details" | They can't — they have zero codebase context. Spell it out. |
| "This is too simple to need a full plan" | Then don't use this skill. If you're using it, write the full plan. |
| "I'll add the test details later" | Tests ARE the plan. Without them, you have a sketch. |
| "The exact file paths might change" | Use the paths that exist NOW. The implementer can't act on hypotheticals. |
| "I don't want to over-specify" | Under-specification forces the implementer to explore. That's YOUR job. |
| "There are too many tasks to detail" | Scope is too large. Break into phases, plan the first phase only. |
| Situation | Approach |
|---|---|
| Greenfield feature | Full TDD cycle per task, strict ordering |
| Modification to existing code | Show before/after for each change point |
| Refactor | Prove behavior preservation with tests FIRST, then restructure |
| Config/infrastructure change | Verification = status commands, not unit tests |
| Multi-language or multi-service | One task per service boundary, integration task at the end |
Once the plan is written, route to the appropriate next step:
Do not hand off a plan with vague tasks. Every task in the plan must pass the Iron Law before execution begins.