writing-plans
Turn an agreed design or spec into an implementation plan that an engineer or agent with none of your context can follow without guessing - exact files, signatures, tests with expected results, verification commands, and the decisions only you can make.
- Use it when
- There is a spec or settled requirements for a task with several steps and you are about to touch code, or when the user says "write a plan", "implementation plan", "break this into tasks" or "plan this out". Skip it for an obvious one-file change. Not for designing (use brainstorming), for carrying a plan out (use executing-plans), or for open-ended research.
- What kind it is
- A written method: it lays out how the work is done and what to check along the way.
- Size
- 1,237 words. The whole text loads when the skill fires; only the 104-word description is always loaded.
- Starts with
- Ask for the job it describes.
How it is organised
What’s inside
The skill’s top-level sections, in order. The bar is each section’s share of the 1,237 words, so you can see where the weight sits before reading.
- 1When to write one57 words
- 2Before you write101 words
- 3Map the files first57 words
- 4Cut the tasks70 words
- 5Header69 words
- 6Task format140 words
- 7What a step contains258 words
- 8Review focus108 words
- 9Self-review before handing over181 words
- 10Save and hand off111 words
The skill itself
Read it before you install it
writing-plans/SKILL.md · 1,237 wordsDownloadSkill on GitHub ↗--- name: writing-plans description: Turn an agreed design or spec into an implementation plan that an engineer or agent with none of your context can follow without guessing - exact files, signatures, tests with expected results, verification commands, and the decisions only you can make. Use when there is a spec or settled requirements for a task with several steps and you are about to touch code, or when the user says "write a plan", "implementation plan", "break this into tasks" or "plan this out". Skip it for an obvious one-file change. Not for designing (use brainstorming), for carrying a plan out (use executing-plans), or for open-ended research. license: MIT --- # Writing plans A plan records the decisions an implementer cannot make alone, so they can carry the work out without guessing, possibly in a fresh session that has none of your context. It is not the design, and it is not the program. ## When to write one Write a plan for multi-step work whose design is settled. If the design still has open questions, go back to brainstorming first. For an obvious small change, such as one file with nothing to coordinate, just do the work. A ceremonial plan costs more than it saves. If the user asks for a plan anyway, write one. ## Before you write 1. Read the approved spec and the code it touches. Trace callers and interfaces before drawing task boundaries. 2. Check the repository's own instructions, the current branch, the existing tests, and any uncommitted changes. Uncommitted changes you did not make belong to the user, and the plan must not require discarding them. 3. Search for existing code that already does what a planned unit would do. Plan to reuse or extend it rather than duplicate it. 4. Check the scope. If the spec spans independent subsystems, write one plan per subsystem. Each plan should produce working, testable software on its own. ## Map the files first Before any task, list the files to create or change and what each is responsible for. Give each file one clear responsibility. Files that change together live together. Split by responsibility, not by technical layer. In an existing codebase follow its layout, and propose a split only for a file you must change that has grown unmanageable. ## Cut the tasks A task is the smallest unit that carries its own test cycle and is worth reviewing on its own. Fold setup, configuration, scaffolding and documentation into the task that needs them. Split only where a reviewer could reject one task and accept its neighbor. Every task ends in something that can be tested by itself. Tests come first inside each task. There is no separate testing phase at the end. ## Header Start the plan with: - the goal in one sentence, and the architecture in a few - the key technologies - the path to the spec the plan implements, so the executor can read both - **Global constraints**: the spec's project-wide requirements, one line each, with exact values copied from the spec (version floors, dependency limits, naming and copy rules, platform needs). Every task implicitly includes these. - non-goals ## Task format ``` ### Task N: <name> Files: Create <path> / Modify <path> / Test <path> Consumes: what this task uses from earlier tasks - exact names and signatures Produces: what later tasks rely on - exact names, parameter and return types Acceptance: observable outcomes, for example Given / When / Then - [ ] Step 1: write the test <name> asserting <values from the spec> - [ ] Step 2: run <exact command>; expect it to fail with <message> - [ ] Step 3: implement <signature> in <file> - [ ] Step 4: run <exact command>; expect <passing output> - [ ] Step 5: commit (only if the user's workflow commits per task) ``` Consumes and Produces matter because an implementer may see only their own task. This block is how they learn the names and types the neighboring tasks use. ## What a step contains The test for a step: the implementer can write exactly one reasonable thing from it. That is the whole requirement. It means unambiguous, not exhaustive. - **A test step** gives the test's name and its assertions as code, with the spec's exact values in them. - **A code step** gives the file, the exact signature (name, parameters, return type) and any values the spec pins. A function body appears only when the signature and tests do not determine the algorithm, or when the spec fixes exact text. - **A verification step** gives the command and the output that means it passed. - **A reference to another task** points to that task's Consumes and Produces. It does not repeat that task's code. A plan can fail in two opposite ways. A gap is a line that decides nothing: "TBD", "handle edge cases", "add appropriate validation", "write tests for the above", "similar to task 3", or a type or function that no task defines. A transcript is a plan that contains the program, which goes stale the moment the real code differs. People differ on how much code a plan should hold. One school puts full code in every step so a novice cannot go wrong. Another holds that a plan longer than the code it describes has written the code instead. This skill takes the second view, and neither has been measured. If the implementer is known to need full bodies, such as a weaker model or someone new to the stack, add them and say that you did. ## Review focus After the tasks, list the inputs and failure modes that the spec implies, that no task's tests exercise, and that are most likely to hurt a real user: empty input, duplicates, an unexpected format, a missing permission. A spec says what the software must do, not everything it will meet, and its silence on an input is not permission for that input to break the program. Write one line each, naming the condition and the behavior a reasonable person would expect, most likely first. Then add the test that pins each line to the task that owns the code. An empty list means you checked and found none. ## Self-review before handing over Read the finished plan once against the spec. 1. **Coverage.** Can you point to a task for every requirement? Add the missing ones. 2. **Step scan.** Each step lets the implementer write exactly one reasonable thing. Fix gaps, and fix transcripts. 3. **Names.** Types, functions, files and properties used in later tasks match their first definition. A function called `clearLayers` in task 3 and `clearFullLayers` in task 7 is a bug. 4. **Order.** No task needs something that a later task creates. 5. **Review focus.** Every line has a test in the task that owns it. 6. **Proportion.** A plan several times longer than its spec, or one that is mostly code blocks, is a transcript. Replace bodies with signatures, test names and assertions, and check each step is still unambiguous. 7. **Safety.** The plan never tells the implementer to delete, reset, force-push, deploy, publish or overwrite the user's uncommitted work unless the user asked for that. Mark any such step "needs the user's confirmation when reached". Fix problems inline. If you find a requirement with no task, add the task. ## Save and hand off Save the plan where the project keeps plans. If there is no convention, use `docs/plans/YYYY-MM-DD-<feature>.md`. Tell the user the path and ask them to read it. Do not commit it unless asked. Offer the execution options. The plan can be carried out step by step in the current session (executing-plans), or independent tasks can go to separate workers with a review between each (see dispatching-parallel-agents for how to brief them). If the host has its own plan-approval step, that approval is the go-ahead, so do not ask again. Keep the plan current. When execution changes it, update the file and note why, so a fresh session can resume from the checkboxes.
The second audit
What we found in the sources
It keeps the structure of the version most others copy (obra/superpowers) and takes from the variants a different view on how much code a plan should hold, a review-focus step, and a proportion check. The sources disagree on code in plans, and nothing in the files measures which is better; the rewrite says so. Every source below was read at the commit the auditor recorded. Nothing was taken from a source without a permissive license.
What each source contributed
- obra/superpowers ↗ · Primary basis · MIT
Write for an implementer with no context; map the files before the tasks; scope check (one plan per independent subsystem); task right-sizing (smallest unit with its own test cycle, fold scaffolding into the task that needs it); the plan header with goal, architecture, technologies and global constraints copied from the spec; per-task Files and Consumes/Produces blocks; the list of placeholder patterns that count as plan failures; the self-review (coverage, placeholders, type consistency); the execution hand-off.
- VictorStochero/fluxo-orca ↗ · Structure and wording · MIT
A step is done when the implementer can write exactly one reasonable thing from it (unambiguous, not complete); what each kind of step contains (test name and assertions, signature and pinned values, command and passing output); the Review Focus section for inputs the spec implies but no test covers; the proportion check; the spec path in the header; "one action with a checkable result" in place of a time per step.
- lsy041015/orchestra ↗ · Added ideas · MIT
The same decisions-not-code principle stated independently; skip a ceremonial plan for an obvious small change; check repository instructions, branch and the user's uncommitted changes before planning; state non-goals; keep the plan current as the recovery record when execution changes it.
- gylove1994/superpowers-deepseek-v4 ↗ · Added ideas · MIT
Acceptance criteria on every task written as Given/When/Then scenarios, kept separate from the process steps.
- mingchao-king/superprogramming ↗ · Added ideas · MIT
Search the codebase for existing code before planning a new unit, so the plan reuses or extends instead of duplicating, and never schedule testing as a separate final phase. Its Java-specific grep checklist, roadmap file and per-step RED/GREEN/REFACTOR commit messages were left out.
- thepragmaticbear/bearpaws ↗ · Added ideas · MIT
When the host has its own plan-approval step, that approval is the go-ahead and the user is not asked again.
What changed
- The description now says what the skill produces, lists the phrases that should trigger it, and says when to skip it and what it is not for. The upstream description was only "Use when you have a spec or requirements for a multi-step task, before touching code".
- Rewritten as one self-contained file: no namespaced sub-skill requirements in the header, no companion reviewer prompt, no named execution skills of the source plugins.
- Replaced "include the complete code in every step" with the standard that a step lets the implementer write exactly one reasonable thing. This follows fluxo-orca and orchestra, which hold that a plan longer than its code has written the code. Upstream holds the opposite. Neither side gives evidence, so the file states it as a choice and tells the planner when to add full bodies.
- Dropped the 2 to 5 minute figure per step; kept "one action with a checkable result".
- Commit steps are included only when the user's workflow commits per task, rather than "frequent commits" as a default, and the plan itself is not committed unless asked.
- Removed the announce-at-start line and the hard-coded plan path under a plugin namespace; the default location is a generic docs/plans path the user can change.
- Added a safety check to the self-review: no step deletes, resets, force-pushes, deploys or overwrites the user's uncommitted work unless the user asked for it.
Problems found in the sources
- obra/superpowers: The description gives only a trigger. The header it prescribes requires a namespaced sub-skill (a skill that a lone copy lacks), and the hand-off names two namespaced execution skills. It tells the agent to give every step 2 to 5 minutes of work, with no stated basis, and to put complete code in every step, which can turn the plan into a copy of the program. The Context line expects a worktree skill.
- VictorStochero/fluxo-orca: Rewrites upstream to ask for decisions rather than code and adds a Review Focus section and a proportion check, but depends on a Portuguese-named delegacao skill and on escritor and revisor worker roles that are not in the bundle. Whether its approach gives better results is unclear; the file offers no measurement.
- lsy041015/orchestra: Compressed into dense paragraphs. It sets a convention for Korean task titles, ties execution to named worker presets and models, and refers to a review-package script and namespaced skills, none of which are in the bundle.
- gylove1994/superpowers-deepseek-v4: Heavily dependent on companion skills (resume-planning, confirming-worktree-before-edit, multi-reviewer) and a samples index and progress-file template. It commits the plan and a progress file with git on approval or abandonment.
- mingchao-king/superprogramming: Java and Spring specific, requires a plugin knowledge-base file to exist, and mandates a three-commit RED/GREEN/REFACTOR cycle per function. It contains timings with no basis ("5 min", "20 min", "2 min") and a numeric rule of thumb (80 percent field overlap) with no stated source.
- thepragmaticbear/bearpaws: Upstream recast in XML-style tags, with namespaced execution skills and a reviewer-prompt file that is not in the bundle. Its native-plan-mode gate is the one new idea.
- sitien173/superpowers-ccg: Requires loading another skill first (coordinating-multi-model-work), imposes a plan folder layout with a .handover.md file, and assumes OpenMCP jobs. It cannot be used without that tooling.
- mzored/superpowers-cc-to-codex: The writing-plans-codex file makes a call to a codex_plan MCP tool mandatory, so the agent may not write the plan itself. The second file under tests/fixtures is a 58-byte placeholder whose description reads "Upstream fixture".
What was dropped
- The Codex drafting tool, the multi-reviewer loop, sample plan libraries, plan-progress files, worktree-consent steps and resume skills (each depends on a plugin's own skills, tools or files).
- OpenMCP phases, task-guide inputs, handover files and job registration from sitien173/superpowers-ccg.
- The Java and Spring anti-duplication grep list, the roadmap section index and the L2/L3 reuse annotation from mingchao-king/superprogramming.
- Execution-method recommendations tied to named workers, models and presets (orchestra, fluxo-orca).
Read but not used (4)
- jnmetacode/superpowers-zh: A Chinese translation of upstream's writing-plans skill: the headings, header block, task template and placeholder list correspond. It has no Global Constraints or Consumes/Produces blocks, so it appears to translate an earlier revision than the pinned English text. Nothing taken.
- mingchao-king/superprogramming: The zh/ copy is a Chinese version of the same skill: its headings correspond to the English file one for one. Nothing taken beyond the English file.
- mzored/superpowers-cc-to-codex: Two files read: the Codex-drafter port (upstream's self-review and placeholder list with a mandatory codex_plan call) and a 58-byte placeholder. Nothing taken.
- sitien173/superpowers-ccg: Phase-based plan template (goal, files, tasks, acceptance criteria, reviewer checklist, verification commands, one commit message) tied to OpenMCP. The per-phase acceptance and verification content is covered by the task format already taken from upstream.
Left out for license (1)
No license is declared on these, so nothing was taken from them: orkeren21/shipshape.
Same text, wherever you work
Use it where you work
Copy the folder into your skills directory, then ask for the job or type its start command.
- Download
SKILL.mdwith the button above, and put it in a folder namedwriting-plans. - Zip the folder.
- In Claude, open Settings → Skills and upload the zip.
SKILL.md is plain Markdown. Copy the text and paste it as the system prompt or the first message. It will not trigger by itself there; you start it.