create-plan
Skill0 starsChanged 23 days agoMITView on GitHub
Use when the user asks to create or detail a plan for multi-step work (one or several features, phases or fixes) that will be carried out task by task across sessions, grouped by branch.
42 other projects use a version of this.
Adopted by
Most recently taken up by
- drosam/agentstheir own version, first seen Nov 15, 2026
- markmhendrickson/neotomatheir own version, first seen Nov 15, 2026
- artberri/skillstheir own version, first seen Nov 8, 2026
- Pubx-ai/skillstheir own version, first seen Nov 8, 2026
- mattmireles/gemma-tuner-multimodaltheir own version, first seen Nov 1, 2026
- fnayou/dotfilestheir own version, first seen Oct 25, 2026
Used with
Projects with it also use codebase-migrate, support-ticket-triage and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
ComposioHQSkillcodebase-migrate
Run large codebase migrations and multi-file refactors. Uses the Composio CLI to coordinate issue tracking, batched PRs, and CI verification while the agent executes the transforms locally across hundreds of files.
Also in 5 projects that use this
ComposioHQSkillsupport-ticket-triage
Triage customer support tickets/emails/chats into categories, priority, and next action; draft responses and create reproducible steps; use for Zendesk/Intercom/Help Scout exports or pasted threads.
Also in 5 projects that use this
corticalstackSkilliterate-plan
Revise an existing implementation plan in flow/plans/ based on feedback, researching when needed. Explicit-only; run only when invoked via /iterate-plan or explicitly asked.
Also in 4 projects that use this
hebertzhuSkilldevelop-web-game
Use when building or iterating on a web game and you need a tight implement-test-observe loop; prefer the bundled Playwright client, inspect screenshots and text state, and validate every meaningful change before moving on.
Also in 3 projects that use this
petestewartSkilldatadog-logs
Query Datadog logs via the Logs Search API v2. Use when the user asks to "check the logs", "search logs", "find errors in Datadog", "look up logs for", "show me production logs", "check for errors", "search Datadog", or any request involving log search, error investigation, or production debugging that requires Datadog log data.
Also in 3 projects that use this
- +7 more from ComposioHQ
Other versions42 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 42
- ComposioHQ/awesome-codex-skills★ 17ksame name
- composio-community/awesome-codex-skills★ 16ksame name
- netease-youdao/LobsterAI★ 6.2ksame name
- mattmireles/gemma-tuner-multimodal★ 1.5ksame name
- freestylefly/wesight★ 969same name
- gittower/git-flow-next★ 458same name
- JetBrains/youtrackdb★ 443same name
- OpenFn/lightning★ 321same name
- dannys-code-corner/incan★ 73same name
- DasDigitaleMomentum/opencode-processing-skills★ 60same name
32 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repositoryOne other file it gives its agents.
- CLAUDE.mdCLAUDE.md
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 10 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 40 edited versions we read keep these.
10
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
The plan file gets no content until the user has answered: Ask about these:
- Distinctive: line 24
Open items in the sources: Every TODO, open question or optional item the plan depends on.
- Distinctive: line 59
Path is in that folder: keep the file name Claude Code gives you.
- Distinctive: line 65
every document it names;
- Distinctive: line 70
If a source can't be read, stop and say which one.
- Very specific: line 88
Follow plan-template.md. Its structure is binding.
- Distinctive: line 97
Context: Use the template's subsections.
- Very specific: line 102
Tasks: Use the template's headings: #### [ ] T<group>.<n>: <outcome>, user steps, and Detail tasks.
- Distinctive: line 103
Fields: Use the template's fields in the template's order, and only the ones that apply.
- Distinctive: line 119
Check each of these and fix what you find:
- Distinctive: line 121
Every requirement has a task or appears under Not in scope.
- Distinctive: line 122
No placeholders appear in a detailed group.
- Very specific: line 124
After /clear, each task can be done from the header, Context, its group's context and the task alone.
“Common” is measured: kept by at least 6 in 10 of the 40 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Create a plan
Announce at start: "I'm using the create-plan skill to create the plan."
You write a plan that another agent carries out one task at a time, across sessions, often right after /clear. The plan covers the whole goal. Its tasks are grouped by branch, and each task ends with one commit that carries both the work and that task's tick in the plan. You write the plan; you never carry it out.
The request is the message that asked for the plan, including any /create-plan arguments.
Ask before you write
The plan file gets no content until the user has answered. Ask about these:
- Scope. The goal in one sentence, what the plan covers and what it leaves out. A vague request ("make it faster") gets questions, not a plan.
- Contradictions. Places where the sources disagree with each other or with the code.
- Open items in the sources. Every TODO, open question or optional item the plan depends on.
- Open implementation choices that change what gets built or how it behaves: user-visible behavior, the data model, new dependencies, and anything the sources leave open.
- Missing conventions. Anything
CLAUDE.mddoesn't set that the plan needs, such as the test command or the merge and push rules. Don't fill these in frompackage.json, a Makefile or your own habits. - User steps. Steps only the user can do, and which approvals are needed.
Decide yourself how the work is arranged. That covers:
- names of files, modules, functions and tests that follow the codebase's patterns;
- branch names in
CLAUDE.md's format; - task order and how tasks are split;
- settings that an agreed step needs in order to work.
List these under Context → Decided as planning decisions. The user reviews them when approving the plan.
How to ask. Ask everything in one round, with the most consequential questions first. Give a recommended option and the alternatives for each question. AskUserQuestion takes up to 4 questions per call, so use several calls in a row if you need more. Ask a second round only about what the answers themselves opened up.
If the user tells you not to ask ("just write the plan"), ask only what blocks the plan entirely: a contradiction between the sources, or a scope too vague to plan at all. Record every other open choice under Decided as a planning decision, for the user to review when approving.
What the user answers becomes a decision in the plan. What the user leaves open stays open in the plan. Questions are never written into the plan.
| Thought | Reality |
| "The plan uses these defaults if you don't answer" | That's deciding for the user. Ask, and wait. |
| "I'll draft it and list the questions at the end" | The draft hardens your guesses. Ask first. |
| "It's a small call, I'll just make it" (an extra shortcut, a fallback name) | Each one is a requirement nobody asked for. Ask, or leave it out. |
| "The optional item is cheap, I'll include it" | Optional means the user decides. Ask. |
"package.json has a test script, so that's the test command" | CLAUDE.md sets conventions. Ask what it should say. |
"Is wb/fix/stale-delete OK? Is src/search/fuzzy.ts OK?" | CLAUDE.md and the codebase already settle this. It's a planning decision, so list it under Decided. |
Plan file location
Plan mode hands you a plan file path. If you aren't in plan mode, enter it before you start analysing.
Plans live in the project, in .claude/plans/active/. Finished plans go to .claude/plans/done/, next to it. Claude Code puts plans there when plansDirectory is ./.claude/plans/active in any of its settings files: user, project or local.
- Path is not
<project>/.claude/plans/active/<name>.md(for example~/.claude/plans/…): stop and tell the user to set"plansDirectory": "./.claude/plans/active"and start again. The plan must be in the repository, so that it is committed and follows every clone. Don't write it anywhere else, and don't pick another folder yourself. - Path is in that folder: keep the file name Claude Code gives you.
Process
Read the sources in full:
- the request;
- every document it names;
CLAUDE.md;- the code on the base branch;
plan-template.mdnext to this file.
If a source can't be read, stop and say which one. Never plan from unseen material.
- Check the repository's state:
- the base branch's last commit;
- uncommitted work;
- existing plans in the plans folder;
- whether the tools and commands the plan relies on exist.
- Map the files each part of the work creates or changes. Follow the codebase's existing patterns.
- Split the work into branch groups, one per feature, phase or fix. Unrelated work, such as two features, goes into separate groups. A group whose code builds on an earlier group's changes gets only a Detail task (
T<n>.0), which details it once the earlier group is merged. A group that doesn't depend on another is detailed now. - Verify every claim the plan makes about the code in the groups detailed now, and record where you checked it (
<path>:<lines>). - Present your findings and ask the questions above, in a Q&A session with AskUserQuestion (see "How to ask").
- Write the plan in the template's format.
- Self-review the plan, fix what you find, then present it through plan mode (ExitPlanMode).
- When the user approves, stop. Give the handover block for T1.1 from the header's "Before completing a task", step 4, and let the user start it.
A Detail task follows the same process for one group: on that group's branch, against the code after the previous merge, with its result written into this plan and committed.
Writing the plan
Follow plan-template.md. Its structure is binding; its wording is illustrative.
Title and sections. The title is
# Plan: <goal> (from <source>, <YYYY-MM-DD>), followed by exactly three sections:## How to use this plan (read first, every session)## Context## Tasks
Nothing else goes at the top level.
<goal>names the whole plan, not one feature. If no short phrase covers it, the plan bundles unrelated work: ask whether to split it.- The header. Start from the template's header and change it only where this plan needs it. If the plan itself adds something the header relies on, such as a test command or hooks, say per rule from which task that rule applies and what to do until then.
Context. Use the template's subsections. Cite where everything comes from:
- code claims:
<path>:<lines>; - decisions: the request, a document section, or "user,
<date>".
Mark planning decisions as yours, not as decisions from the sources or the user. If the user's answer changes a decision in a named document, record the final approach under Decided and tell the user that document needs the same change. Cite the sources and
CLAUDE.md; don't copy them.- code claims:
- Tasks. Use the template's headings:
#### [ ] T<group>.<n>: <outcome>, user steps, and Detail tasks.- Fields. Use the template's fields in the template's order, and only the ones that apply. Each kind of task has a minimum:
- Work task: a Start branch, at least one check with explicit pass criteria (Verify or Manual check), and either a Commit message or, directly under Start branch, a line saying the task has no commit of its own.
- User step: Start branch, Instructions and Done when.
- Detail task: Start branch, Do and a Commit message.
- Task size. Make a task the smallest unit with its own check that a reviewer could approve or reject on its own. Setup, config and docs go into the task that needs them.
- Group ending. Each group ends with a task that checks the group, merges it and pushes it, as
CLAUDE.mdsets out. - Plan file. The first task's commit adds the plan file. The plan's last task moves the file to
done/.
- Fields. Use the template's fields in the template's order, and only the ones that apply. Each kind of task has a minimum:
- Conventions. Branch names, commit format, merge and push rules, and the install, check and test commands come from
CLAUDE.md. Where it doesn't set them and the user doesn't either, use Conventional Branch names and Conventional Commits, and write unresolved issues in Conventional Comments format. - Who the plan speaks to. The plan addresses only the agent that carries it out. It never mentions its author and never speaks to the user ("I'd suggest", "Should I").
- No placeholders in detailed groups. None of these:
- "TBD", "add error handling", "write tests for this", "similar to T1.2";
- names that no task or existing code defines;
- commands, paths or rules invented without a source.
Self-review
Check each of these and fix what you find:
- Every requirement has a task or appears under Not in scope.
- No placeholders appear in a detailed group.
- Names, signatures, paths and branches match across tasks and their Interfaces.
- After
/clear, each task can be done from the header, Context, its group's context and the task alone. - The plan has the title and exactly three sections, contains no questions, and doesn't refer to its author.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

