Use when you have a spec or requirements for a multi-step task, before touching code
How this skill is triggered — by the user, by Claude, or both
Slash command
/superpowers-extended-cc:writing-plansThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**You MUST NOT call `EnterPlanMode` or `ExitPlanMode` at any point during this skill.** This skill operates in normal mode and manages its own completion flow via `AskUserQuestion`. Calling `EnterPlanMode` traps the session in plan mode where Write/Edit are restricted. Calling `ExitPlanMode` breaks the workflow and skips the user's execution choice. If you feel the urge to call either, STOP — f...
You MUST NOT call EnterPlanMode or ExitPlanMode at any point during this skill. This skill operates in normal mode and manages its own completion flow via AskUserQuestion. Calling EnterPlanMode traps the session in plan mode where Write/Edit are restricted. Calling ExitPlanMode breaks the workflow and skips the user's execution choice. If you feel the urge to call either, STOP — follow this skill's instructions instead.
Write comprehensive implementation plans assuming the engineer has zero context for our codebase and questionable taste. Document everything they need to know: which files to touch for each task, code, testing, docs they might need to check, how to test it. Give them the whole plan as bite-sized tasks. DRY. YAGNI. TDD. Frequent commits.
Assume they are a skilled developer, but know almost nothing about our toolset or problem domain. Assume they don't know good test design very well.
Announce at start: "I'm using the writing-plans skill to create the implementation plan."
Context: This should be run in a dedicated worktree (created by brainstorming skill).
Save plans to: docs/plans/YYYY-MM-DD-<feature-name>.md
BEFORE exploring code or writing the plan, you MUST:
TaskList to check for existing tasks from brainstormingTaskCreate as you write each plan taskDo not proceed to exploration until TaskList has been called.
TaskList
Each step is one action (2-5 minutes):
Every plan MUST start with this header:
# [Feature Name] Implementation Plan
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers-extended-cc:executing-plans to implement this plan task-by-task.
**Goal:** [One sentence describing what this builds]
**Architecture:** [2-3 sentences about approach]
**Tech Stack:** [Key technologies/libraries]
---
### Task N: [Component Name]
**Files:**
- Create: `exact/path/to/file.py`
- Modify: `exact/path/to/existing.py:123-145`
- Test: `tests/exact/path/to/test.py`
**Step 1: Write the failing test**
```python
def test_specific_behavior():
result = function(input)
assert result == expected
```
**Step 2: Run test to verify it fails**
Run: `pytest tests/path/test.py::test_name -v`
Expected: FAIL with "function not defined"
**Step 3: Write minimal implementation**
```python
def function(input):
return expected
```
**Step 4: Run test to verify it passes**
Run: `pytest tests/path/test.py::test_name -v`
Expected: PASS
**Step 5: Commit**
```bash
git add tests/path/test.py src/path/file.py
git commit -m "feat: add specific feature"
```
Your ONLY permitted next action is calling AskUserQuestion with this EXACT structure:
AskUserQuestion:
question: "Plan complete and saved to docs/plans/<filename>.md. How would you like to execute it?"
header: "Execution"
options:
- label: "Subagent-Driven (this session)"
description: "I dispatch fresh subagent per task, review between tasks, fast iteration"
- label: "Parallel Session (separate)"
description: "Open new session in worktree with executing-plans, batch execution with checkpoints"
If you are about to call ExitPlanMode, STOP — call AskUserQuestion instead.
If Subagent-Driven chosen:
If Parallel Session chosen:
Use Claude Code's native task tools (v2.1.16+) to create structured tasks alongside the plan document.
For each task in the plan, create a corresponding native task:
TaskCreate:
subject: "Task N: [Component Name]"
description: |
[Copy the full task content from the plan you just wrote — files, steps, acceptance criteria, everything]
activeForm: "Implementing [Component Name]"
After all tasks created, set blockedBy relationships:
TaskUpdate:
taskId: [task-id]
addBlockedBy: [prerequisite-task-ids]
Update task status as work progresses:
TaskUpdate:
taskId: [task-id]
status: in_progress # when starting
TaskUpdate:
taskId: [task-id]
status: completed # when done
At plan completion, write the task persistence file in the same directory as the plan document.
If the plan is saved to docs/plans/2026-01-15-feature.md, the tasks file MUST be saved to docs/plans/2026-01-15-feature.md.tasks.json.
{
"planPath": "docs/plans/2026-01-15-feature.md",
"tasks": [
{"id": 0, "subject": "Task 0: ...", "status": "pending"},
{"id": 1, "subject": "Task 1: ...", "status": "pending", "blockedBy": [0]}
],
"lastUpdated": "<timestamp>"
}
Both the plan .md and .tasks.json must be co-located in docs/plans/.
Any new session can resume by running:
/superpowers-extended-cc:executing-plans <plan-path>
The skill reads the .tasks.json file and continues from where it left off.
npx claudepluginhub 0xabrar/superpowersCreates detailed implementation plans with bite-sized tasks, exact file paths, and TDD steps. Use when you have a spec before coding.