plan
Skill0 starsChanged 29 days agoApache-2.0View on GitHub
Break work that is already decided into atomic issues someone can pick up in whatever order the dependencies allow, with the sequencing reasoning attached. Use it when the approach is settled and the open question is execution shape: "break this into issues", "file issues for this design", "what order should we do these in?", "this is too big for one PR, split it up", "what tasks do we need?", "how many issues is this?", or an accepted design handed over with "let's start building" — an agent that picks its own starting point ships the pieces in an order that does not build. Do NOT use it when the feature itself is not worked out and the requirements and approach are still open; that whole run is `/scope`, which calls this as its last hop. Do NOT use it to sequence FEATURES across an initiative rather than issues inside one (`/roadmap`), or to run the resulting plan (`/execute`).
184 other projects use a version of this.
Adopted by
Most recently taken up by
- phuthuycoding/kanban-flowtheir own version, first seen Nov 8, 2026
- PeanutGT/NutsSkillstheir own version, first seen Nov 8, 2026
- domengabrovsek/agent-configtheir own version, first seen Nov 8, 2026
- domengabrovsek/claudetheir own version, first seen Nov 8, 2026
- codewithmukesh/dotnet-claude-kittheir own version, first seen Nov 8, 2026
- joeldevz/skynex-pitheir own version, first seen Nov 8, 2026
Used with
Projects with it also use heartmula, webhook-subscriptions 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.
math-incSkillheartmula
Set up and run HeartMuLa, the open-source music generation model family (Suno-like). Generates full songs from lyrics + tags with multilingual support.
Also in 9 projects that use this
Tommy-ywSkillwebhook-subscriptions
Create and manage webhook subscriptions for event-driven agent activation, or for direct push notifications (zero LLM cost). Use when the user wants external services to trigger agent runs OR push notifications to chats.
Also in 5 projects that use this
math-incSkillminecraft-modpack-server
Set up a modded Minecraft server from a CurseForge/Modrinth server pack zip. Covers NeoForge/Forge install, Java version, JVM tuning, firewall, LAN config, backups, and launch scripts.
Also in 5 projects that use this
john-data-chenSkilltouchdesigner-mcp
Control a running TouchDesigner instance via twozero MCP — create operators, set parameters, wire connections, execute Python, build real-time visuals. 36 native tools.
Also in 6 projects that use this
gaebalaiSkillcodex-system
PROACTIVELY consult Codex CLI, your highly capable supporter with exceptional reasoning and task completion abilities. Codex is a trusted expert you should ALWAYS consult BEFORE making decisions on: design choices, implementation approaches, debugging strategies, refactoring plans, or any non-trivial problem. When uncertain, consult Codex. Don't hesitate - Codex provides better analysis. Explicit triggers: "think deeper", "analyze", "second opinion", "consult codex".
Also in 3 projects that use this
ibahgatSkillcontext-optimize
Improve context efficiency and cache stability for long or complex sessions.
Also in 3 projects that use this
- +3 more from math-inc
Other versions184 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 184
- Yeachan-Heo/oh-my-codex★ 34ksame name
- crbnos/carbon★ 2.8ksame name
- graphistry/pygraphistry★ 2.6ksame name
- zereight/gitlab-mcp★ 2.1ksame name
- math-inc/OpenGauss★ 1.3ksame name
- kdlbs/kandev★ 1.1ksame name
- suboss87/FDEOps★ 940same name
- codewithmukesh/dotnet-claude-kit★ 808same name
- witnesstodark/mr-mak-workspace★ 718same name
- loongclaw-ai/loongclaw★ 640same name
174 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 repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- briefSkill
- charterSkill
- compSkill
- coordinateSkill
- decisionSkill
- deliverSkill
- designSkill
- executeSkill
- exploreSkill
- inflightSkill
- prdSkill
- private-contentSkill
- public-contentSkill
- releaseSkill
- review-planSkill
- roadmapSkill
- scopeSkill
- strategySkill
- visionSkill
- work-onSkill
- writing-styleSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
22 rules. 0 are common, 10 are distinctive, and 12 are very specific to this project.
0
Common
Most of the 167 edited versions we read keep these.
10
Distinctive
This author's own choices. Worth a look.
12
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 33
Writing style: Read skills/writing-style/SKILL.md for guidance.
- Distinctive: line 110
Default behavior when neither flag is set: evaluate the design's component coupling.
- Very specific: line 181
When invoked as /plan, this skill drives decomposition of a source document into implementable issues.
- Very specific: line 204
Check $ARGUMENTS for flags before extracting the document path.
- Very specific: line 213
If no mode flag, read CLAUDE.md ## Execution Mode: header.
- Very specific: line 234
Read only by step 5a, and only when the work splits: continue resolves a split to coordinated, stop to multi-pr.
- Very specific: line 253
If conflicting flags are present (e.g., both --strategic and --tactical), error and ask user to pick one.
- Very specific: line 287
Confine to
<repo-root>/docs/roadmaps/: Not any docs/roadmaps/ path segment beneath the root -- a fixture tree has one of its own, and a … - Distinctive: line 295
Omit rather than record: when this repo is Public and the roadmap lives in a private repo.
- Distinctive: line 311
Read the repo's CLAUDE.md (or CLAUDE.local.md) and look for:
- Distinctive: line 320
If not found, infer from repo path:
- Distinctive: line 328
After detecting visibility, load the appropriate content governance skill:
- Very specific: line 329
Private repos: Read skills/private-content/SKILL.md
- Very specific: line 330
Public repos: Read skills/public-content/SKILL.md
- Distinctive: line 334
If no scope flag was provided, read default from CLAUDE.md:
- Distinctive: line 343
If not found, default to Tactical.
- Very specific: line 360
Only plan documents with the right status: Accepted designs/PRDs, Active roadmaps.
- Distinctive: line 527
Creation: Create PLAN doc and optional GitHub artifacts
- Very specific: line 539
Topic Scoping: all working state is keys in plan-<topic>, never files in the staging folder
- Very specific: line 556
No GitHub issues or milestone created, unless a stated issues or issues-and-milestone level is approved at the filing approval
- Distinctive: line 559
Not available for roadmap input (roadmap mode is always multi-pr)
- Distinctive: line 566
No GitHub issues or milestone created
“Common” is measured: kept by at least 6 in 10 of the 167 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
!${CLAUDE_PLUGIN_ROOT}/scripts/skill-preflight.sh plan 2>&1 || true
@.claude/shirabe-extensions/plan.md @.claude/shirabe-extensions/plan.local.md
Plan Skill
Plans turn accepted designs into implementable work. They define the decomposition strategy, issue sequencing, and dependency graph that guide implementation through /work-on. When planning a roadmap, the output is planning issues (one per feature) rather than code-level issues.
Writing style: Read skills/writing-style/SKILL.md for guidance.
Artifact Lifecycle
Lifecycle: Working. Completion condition: the work-on cascade verifies the PLAN-Active state's terminal contract and finalizes the chain.
The lifecycle states are Draft -> Active -> Done -> DELETED,
mirroring the working-artifact lifecycle template established in
docs/designs/current/DESIGN-lifecycle-draft-ready-discipline.md.
Deleted by: the work-on cascade's PLAN deletion step.
The PLAN file is removed from disk in the same atomic finalization commit that transitions BRIEF/PRD to Done and DESIGN to Current.
PLAN Doc Structure
Plans live at docs/plans/PLAN-<topic>.md. See the full specification at
references/quality/plan-doc-structure.md.
The required sections depend on the PLAN's shape: outline-shaped (every
single-pr PLAN, and a multi-pr or coordinated one at
tracking_level: none) or issue-carrying. The per-shape lists, which match
what shirabe validate checks, are under "Required Sections" in
references/quality/plan-doc-structure.md.
PLAN docs use a unified Draft -> Active -> Done -> DELETED lifecycle,
identical across execution modes. Only the Draft -> Active gate
differs, and it keys on whether the transition will create GitHub
issues -- the resolved Tracking Level -- not on execution_mode.
An activation that files issues requires approval, because that
is the moment remote artifacts appear; one that files none auto-fires
when /plan finishes authoring. So a multi-pr plan whose tracking
level is none auto-fires, and a single-pr plan whose level is
issues waits for approval. A committed PLAN at status: Draft is a
violation in either case. That includes a /scope run abandoned while /plan
was running: an abandoned run writes no PLAN at all, only its upstream
documents (docs/decisions/DECISION-contradiction-scope-abandonment-draft-plan-2026-09-28.md).
Every path that files issues or a milestone asks first, whatever the
mode: interactively the author answers the filing question, and "don't
file" writes the PLAN at tracking level none with outlines. Under
--auto nobody is asked, so /plan files only when the repository's
CLAUDE.md declares ## Tracking Level: issues or issues-and-milestone
covering what the PLAN would file (an issues header covers no milestone).
Otherwise it writes the work items as outlines in the PLAN and files nothing,
even where the mode's default level would have filed. This is
docs/decisions/DECISION-contradiction-plan-issue-filing-under-auto-2026-09-28.md;
Phase 7's "Filing approval" step carries the procedure.
coordinated follows the same gate. An outline-shaped coordinated PLAN
(tracking level none, coordinated's default) files nothing, so it is
authored at Active. A coordinated PLAN at issues or
issues-and-milestone files issues only behind that filing approval.
Decomposition Strategies
Walking Skeleton
A thin vertical slice that exercises the full pipeline end-to-end, followed by issues that thicken each layer. Use walking skeleton when:
- The design spans multiple components that interact at runtime
- Integration risk is high (new APIs, new data flows, new infrastructure)
- Early feedback on the end-to-end path is more valuable than component depth
- The
--walking-skeletonflag is passed
Horizontal Decomposition
Layer-by-layer implementation where each issue builds one component fully before moving to the next. Use horizontal when:
- Components have clear, stable interfaces between them
- One component is a prerequisite for all others (parser before validator)
- The design describes independent modules with minimal runtime interaction
- The
--no-skeletonflag is passed
Default behavior when neither flag is set: evaluate the design's component coupling. Tightly coupled components with unclear interfaces favor walking skeleton. Loosely coupled components with well-defined boundaries favor horizontal.
Execution Mode Decision (single-pr vs multi-pr vs coordinated)
Default: the repo's Delivery Preference. Resolve
## Delivery Preference: consolidated|atomic on the
flag > CLAUDE.md-header > consolidated stack. Under consolidated -- the
default, and what every repo gets without declaring anything -- reach for one PR.
Anchored on principle P1 (usable value is the unit of work) in
${CLAUDE_PLUGIN_ROOT}/references/workflow-principles.md.
Escape only on a named branch. The three branches are defined once in
${CLAUDE_PLUGIN_ROOT}/references/split-triggers.md (plan profile); this surface
names them, and that file defines them:
- Hard Constraint -- a named, non-optional condition that makes one PR impossible: cross-repo landing order; a workflow that must reach the default branch before it can be invoked; a merge gate between steps.
- Incremental Value -- each resulting unit is independently useful to a reader who meets it alone. "Could be separate PRs" is not the test.
- Stated Preference -- the repo declared
atomic, and the decomposition permits a split. This is where reviewability lives; say so in those terms rather than restating it as a value claim.
Whichever branch fires is named in the PLAN's split_rationale field, and L09
checks it is there. A single-pr PLAN under consolidated fires no branch and
records nothing; a single-pr PLAN under atomic is the departure and still
owes a branch.
A roadmap input is always multi-pr under Incremental Value -- not because the input is a roadmap, but because each feature is a cohesive deliverable that lands observable value on its own (P1 again). The mechanism "the input is a roadmap" is not the reason; the value the feature delivers is.
Coordinated Mode
coordinated lands the work as one PR per repository and PR group, in one or
more repositories, in a recorded merge order behind a coordination PR that
merges last. Its contract (lifecycle, grouping, merge order, done-signal) is
${CLAUDE_PLUGIN_ROOT}/references/coordination-strategy.md, which this skill
binds to rather than restates; the PLAN-side
authoring details (the Repo/Group annotation rows, gate-node declarations, and
the contraction + acyclicity behavior) live in
references/quality/plan-doc-structure.md under "Coordinated Mode."
Each PR node carries REPO, PR_GROUP, ISSUES, and ISSUE_SOURCE
vars; references/plan-to-tasks-contract.md documents them.
Complexity Classification
Each issue gets a complexity (simple, testable, or critical) that determines its
acceptance criteria template. Assign during Phase 3; see references/phases/phase-3-decomposition.md
for the full criteria and AC templates.
Placeholder Conventions
Issues reference each other as <<ISSUE:N>>, N being the 1-based local
sequence number (format in references/templates/agent-prompt.md). Phase 7
replaces these with actual GitHub issue numbers after creation. In single-pr
mode, placeholders map to outline headings in the PLAN doc's Issue Outlines section.
Validation Rules by Consumer Phase
See references/quality/consumer-validation-rules.md for validation rules that consuming skills must apply to PLAN artifacts.
Planning Workflow
When invoked as /plan, this skill drives decomposition of a source document into
implementable issues. The source can be a design doc, PRD, or roadmap. The workflow
produces either GitHub artifacts (multi-pr) or a self-contained PLAN document
(single-pr), depending on execution mode. Roadmaps produce planning issues (one per
feature) rather than code-level issues.
Input Detection
From $ARGUMENTS (after stripping flags):
- Empty -- ask the user what to plan (document path or topic)
- Path matching a known pattern -- use it as the source document:
docs/designs/DESIGN-*.md-- design doc (input_type: design)docs/prds/PRD-*.md-- PRD (input_type: prd)docs/roadmaps/ROADMAP-*.md-- roadmap (input_type: roadmap)
- Anything else -- treat as a direct topic (input_type: topic). No upstream document is required. Use when /explore produced a clear scope with no open decisions, or when planning a well-understood list of capabilities directly.
Context Resolution
1. Parse Flags
Check $ARGUMENTS for flags before extracting the document path. Flags may
appear in any order after the document path.
Execution mode flags:
--auto-- non-interactive execution; follow${CLAUDE_PLUGIN_ROOT}/references/decision-protocol.mdat all decision points; track decisions in keywork/decisions.mdinplan-<topic>(written once the session is open; see Session and Keys)--interactive-- force interactive (default)
If no mode flag, read CLAUDE.md ## Execution Mode: header.
Scope flags:
--strategic-- force strategic scope--tactical-- force tactical scope
Decomposition flags:
--walking-skeleton-- force walking skeleton decomposition--no-skeleton-- force horizontal decomposition
Upstream flag:
--upstream <path>-- the ROADMAP whose feature this plan implements. It is recorded in the produced PLAN'supstream:alongside the source document, and it is the reason the PLAN carries it rather than any durable artifact: a roadmap is deleted when its features land, and the PLAN is deleted by the same cascade and goes first, so the link cannot outlive its target. No durable document in the chain may name a roadmap.
Intent and coordination flags (direct-use flags; a parent such as /scope
forwards them verbatim when its caller passed them):
--intent=continue|stop-- the caller's intent for the work after planning. Read only by step 5a, and only when the work splits:continueresolves a split tocoordinated,stoptomulti-pr. It never changes whether the work splits, and a PLAN that doesn't split issingle-preither way.--coordinated-- resolve a split tocoordinated, outranking--intentand theCLAUDE.mdheader.--no-coordinated-- resolve a split tomulti-pr, outranking--intentand theCLAUDE.mdheader.
A run with none of the three behaves exactly as before they existed. Validate
them before anything else runs, and before the plan-<topic> session is
opened or any key is written. Each of these is a rejection with an error naming the offending flag,
and the run stops without writing anything:
- an
--intentvalue other thancontinueorstop(--intent=bogus, a bare--intent,--intent=none); --intentgiven more than once, even with the same value (e.g.--intent=stop --intent=continue);--coordinatedtogether with--no-coordinated, or either given twice.
If conflicting flags are present (e.g., both --strategic and --tactical), error
and ask user to pick one. Remove flags from arguments before using the remainder as
the document path.
The --upstream contract
Same flag, same meaning, same discipline /brief, /prd, /roadmap,
/strategy and /comp already carry.
Parse it, and the token after it, before the positional argument is
classified. The value is never tested as a document path in the input-detection
table, never treated as a topic, and never used to derive the topic slug. That
last part is what keeps the produced PLAN at PLAN-<topic>.md rather than
PLAN-<roadmap-slug>.md, and it is why the roadmap cannot simply be handed over
positionally: the positional slot is the input classifier and the slug source at
once, so a roadmap there changes what /plan is planning.
A bare --upstream is a rejection, naming the missing argument, before any
phase runs. A second occurrence is rejected the same way: the field records one
roadmap, and silently keeping the last would hide which one the plan named.
Validate the value in this order. The order is not cosmetic -- running the filesystem checks first would reject every cross-repo roadmap and make the visibility check, the only one that can say anything about such a value, unreachable.
- Cross-repo discrimination. An
owner/repo:pathvalue names a file in another repository. It is not a working-tree path: skip canonicalization, the directory confinement, and the tracked-by-git check, keep the basename rule on its file component, and go straight to check 6. - Canonicalize and bounds-check. Resolve against the repo root, resolve
symlinks fully, and reject a canonical path outside the working tree. Unlike
most path arguments this one ends up in a committed field, so a symlink out of
the tree or a
../-shaped value is a rejection rather than a curiosity. - Confine to
<repo-root>/docs/roadmaps/. Not anydocs/roadmaps/path segment beneath the root -- a fixture tree has one of its own, and a roadmap path laundered out of one is exactly what this refuses. - Enforce the
ROADMAP-basename, on the file component for a cross-repo value. - Reject a path under
wip/, and reject an untracked path. Both are record-time checks and both apply here, because/planrecords. (/briefdrops the tracked-by-git half precisely because it does not.) - Omit rather than record when this repo is Public and the roadmap lives in
a private repo. Do not write the entry, do not fail, and tell the author the
link is being dropped and why. Public documents must not reference private
ones, and no tooling enforces that for a cross-repo value --
shirabe validateresolves nothing for one, so a public PLAN naming a private roadmap validates clean and always will. This check lives here rather than only in a parent skill so a standalone/planruns it too.
Quote it and pass it after -- in every command it reaches. The value flows
into git ls-files in the Phase 7 hygiene step and inside shirabe validate's
own R6 upstream resolution; both pass it after -- so neither a leading dash
nor a shell metacharacter in a filename can change what runs. Validation is not
the guarantee -- the argument boundary is.
2. Detect Visibility
Read the repo's CLAUDE.md (or CLAUDE.local.md) and look for:
## Repo Visibility: Privateor
## Repo Visibility: PublicIf not found, infer from repo path:
private/in path -- Privatepublic/in path -- Public- Unknown -- default to Private (safer)
Visibility is immutable -- public repos must never accidentally include private references. Flags can't override it.
After detecting visibility, load the appropriate content governance skill:
- Private repos: Read
skills/private-content/SKILL.md - Public repos: Read
skills/public-content/SKILL.md
3. Detect Default Scope
If no scope flag was provided, read default from CLAUDE.md:
## Default Scope: Strategicor
## Default Scope: TacticalIf not found, default to Tactical.
4. Determine Effective Scope
Effective Scope = Flag Override (if present) OR Default Scope5. Log Effective Context
Output before proceeding:
Planning in [Strategic|Tactical] scope with [Private|Public] visibility...Handoff Validation
Only plan documents with the right status: Accepted designs/PRDs, Active roadmaps.
Phase 1 (references/phases/phase-1-analysis.md) has the full validation table
with error messages per status. Direct topics skip status validation.
Session and Keys
/plan keeps its working state as keys in its own koto session,
plan-<topic>, following
${CLAUDE_PLUGIN_ROOT}/references/skill-session-convention.md. It writes no
file to the staging folder, chained or direct. Topic is derived from the
source document filename: DESIGN-foo-bar.md produces topic foo-bar,
ROADMAP-foo-bar.md produces topic foo-bar; a direct topic is its own slug.
Once the flags above have validated and the topic is known, and before the
resume rows below, /plan opens the session and records whether it runs
under a parent:
"${CLAUDE_PLUGIN_ROOT}/scripts/skill-session.sh" open plan <topic>
"${CLAUDE_PLUGIN_ROOT}/scripts/skill-session.sh" adopt plan <topic>open attaches to a live plan-<topic> (an interrupted run, whose keys the
resume rows read), replaces a finished one (a fresh run), or creates it. Any
non-zero exit from either command stops the run with the script's message:
127 or 69 means koto is missing or too old, and the skill never falls back to
files. adopt exiting 3 is the two-parents case below.
| Key | Written at | Holds |
work/decisions.md | Context Resolution, under --auto | the autonomous-decision ledger |
work/analysis.md | Phase 1 | source path, input type, scope, review_rounds |
work/milestones.md | Phase 2 | the milestone grouping |
work/decomposition.md | Phase 3 | the strategy, execution mode and issue outlines |
work/issue_<id>_body.md | Phase 4 | each generated issue body or outline, ingested from a scratch directory |
work/manifest.json | Phase 4 | the issue manifest; each entry's file names its body key's last component (issue_<id>_body.md) |
work/dependencies.md | Phase 5 | the dependency graph |
work/review.md, work/review_loopback.md | Phase 6, by /review-plan | the review verdict (proceed or loop-back) |
work/mapping.json | Phase 7 | internal IDs to GitHub issue numbers, once issues are filed |
Keys are read and written with koto against plan-<topic>: koto context
exists plan-<topic> <key> tests one (exit 0 present, 1 absent), koto context
get plan-<topic> <key> prints it, koto context add plan-<topic> <key> stores
the content given on stdin (the whole content: to change part of it, get the
key, edit it, and add it back), koto context list plan-<topic> --prefix
<prefix> lists keys, and koto context remove plan-<topic> <key> removes one.
Generation agents never write keys: Phase 4 pins each body to a file in a
skill-session.sh scratch directory and ingests it, and Phase 7 materializes
the manifest and bodies into a scratch directory (skill-session.sh get) for
create-issue.sh and create-issues-batch.sh, whose interfaces take files.
/review-plan, which Phase 6 runs inline, names its files with /plan's
prefix, so it reads and writes this same session: its verdict lands as
work/review.md or work/review_loopback.md here, and a loop-back removes
/plan's keys back to the loop target.
Closing. A direct run closes its session when it finishes:
"${CLAUDE_PLUGIN_ROOT}/scripts/skill-session.sh" close plan-<topic> done
at Phase 7's end (abandoned when the author abandons the plan). Under a
parent /plan never closes its own session: the parent closes it at its own
exit (skill-session.sh close-children), and the keys stay readable until
then.
Resume Logic
Resume is based on the keys in plan-<topic> (Session and Keys above).
dispatch read plan <topic> prints parent=<session>
-> run under that parent; see ${CLAUDE_PLUGIN_ROOT}/references/fixes/sub-agent-dispatch.md,
then continue down this ladder
if GitHub issues exist for this design -> Resume at Phase 7 (verify/complete)
if key work/review.md exists -> Resume at Phase 7
if key work/dependencies.md exists -> Resume at Phase 6
if key work/manifest.json exists -> Resume at Phase 5
if key work/decomposition.md exists -> Resume at Phase 4
if key work/milestones.md exists -> Resume at Phase 3
if key work/analysis.md exists -> Resume at Phase 2
else -> Start at Phase 1To check for existing GitHub issues:
gh issue list --search "Design: <design-doc-path>" --json number,title,stateEach key row is koto context exists plan-<topic> <key>. When resuming, read
the existing key (koto context get) to restore context before continuing.
Running under a parent. The first row runs
"${CLAUDE_PLUGIN_ROOT}/scripts/skill-session.sh" dispatch read plan <topic>
with the topic this run works on (derived from the source document's file
name, as above). A printed parent=<session> line means /plan runs under that parent (scope-<topic> or
charter-<topic>), with the parent's upfront decision in the rationale= and
suppress_status_aware_prompt= lines; what changes under a parent is in
${CLAUDE_PLUGIN_ROOT}/references/fixes/sub-agent-dispatch.md.
Four cases are no match. Three print nothing and exit 0, and the run is a
direct one with the rows below unchanged: no parent session, a finished parent
session, and a parent whose chain/dispatch key names another child. The
fourth, two parent sessions that both name /plan, exits 3: don't pick one
and don't run directly; stop and report both sessions, which the script names
on stderr, so the author can clear the stale key. Any other non-zero exit
stops the run with the script's message (open has already checked koto).
adopt has recorded the same match as chain/parent in plan-<topic>, or
removed a chain/parent an earlier chained run left.
The first row is not a resume point: the rest of the ladder applies the same way under a parent, and the dispatch key only changes which steps the run skips, as the next paragraph says.
Under /scope's dispatch key /plan still reaches its own verdict (the Phase 6
review) and makes its own status transition (Phase 7's step 7.5), but skips
everything that publishes or routes: it pushes nothing, opens no pull request,
creates no branch, makes no cleanup commit, and asks no routing question, so
step 7.6 closes nothing (/plan never closes its own session under a parent;
/scope closes plan-<topic> at its exit) and step 7.8's upstream-issue
question and its gh issue edit are skipped. This is
shape 6, Parent-owned-publishing, in ${CLAUDE_PLUGIN_ROOT}/references/fixes/sub-agent-dispatch.md,
recorded in docs/decisions/DECISION-contradiction-child-steps-under-scope-2026-09-28.md.
Under --auto it takes the recommended verdict and names it in its output.
Workflow Phases
What Phases 4 and 7 produce depends on the execution mode:
- single-pr: Phase 4 agents produce structured outlines (not full issue bodies). Phase 7 writes them into the PLAN doc's Issue Outlines section. No GitHub issues or milestone created. The PLAN is authored at Active.
- multi-pr: Phase 4 agents produce full issue body files. At a filing tracking
level, Phase 7 creates the GitHub issues (and milestone) behind the filing approval
and populates the Implementation Issues table; at
none, including an--autorun whose CLAUDE.md declares no filing level, it writes outlines and files nothing. PLAN status set to Active. - coordinated: at tracking level
none(its default) Phase 4 agents produce structured outlines and Phase 7 writes them, each with**Repo**:and**Group**:, into Issue Outlines with nothing filed. Atissuesorissues-and-milestoneagents produce full issue bodies and Phase 7 files them behind the filing approval.
Phase Execution
Execute phases sequentially by reading the corresponding phase file. Use the effective scope from Context Resolution throughout.
- Analysis: Understand source document scope and components/features
- Read:
references/phases/phase-1-analysis.md - Artifact: key
work/analysis.md
- Read:
- Milestone: Derive milestone from source document
- Read:
references/phases/phase-2-milestone.md - Artifact: key
work/milestones.md
- Read:
- Decomposition: Break into atomic issues, then value confirmation (3.5a) + execution mode selection (3.6)
- Read:
references/phases/phase-3-decomposition.md - Artifact: key
work/decomposition.md(includes value-guard result and execution mode decision)
- Read:
- Generation: Generate rich issue bodies via parallel agents
- Read:
references/phases/phase-4-agent-generation.md - Artifact: keys
work/issue_<id>_body.md+work/manifest.json
- Read:
- Dependencies: Map issue dependencies and sequencing
- Read:
references/phases/phase-5-dependencies.md - Artifact: key
work/dependencies.md
- Read:
- Review: AI validates completeness, sequencing, and complexity assignments
- Read:
references/phases/phase-6-review.md - Artifact: key
work/review.md(orwork/review_loopback.md)
- Read:
- Creation: Create PLAN doc and optional GitHub artifacts
- Read:
references/phases/phase-7-creation.md - Artifact:
docs/plans/PLAN-<topic>.md - multi-pr: GitHub milestone + issues behind the filing approval; outlines at
none - single-pr: PLAN doc with Issue Outlines, no GitHub artifacts unless a stated filing level is approved
- coordinated: PLAN doc with Repo/Group-tagged outlines at
none; issues with Repo/Group rows, behind a filing approval, only atissueslevels
- Read:
Critical Requirements
- Atomic Issues: each issue should be independent and completable in one session
- Topic Scoping: all working state is keys in
plan-<topic>, never files in the staging folder
Output
Final artifacts depend on execution mode:
multi-pr mode (design/prd/topic input):
docs/plans/PLAN-<topic>.mdwith status Active- At a filing level, after the filing approval: a GitHub milestone (1:1 with the
plan, at
issues-and-milestone) and GitHub issues with complexity labels, acceptance criteria, and milestone assignment - At
none: Issue Outlines instead, and nothing filed - Source design doc status updated to "Planned"
single-pr mode:
docs/plans/PLAN-<topic>.mdwith status Active- Issue Outlines section populated with structured outlines (goal, AC, dependencies)
- No GitHub issues or milestone created, unless a stated
issuesorissues-and-milestonelevel is approved at the filing approval - Source design doc status updated to "Planned"
- Not available for roadmap input (roadmap mode is always multi-pr)
coordinated mode, tracking level none (the default):
docs/plans/PLAN-<topic>.mdwith status Active,execution_mode: coordinated,split_mode_source, andtracking_level: none- Issue Outlines, each with
**Repo**:and**Group**:, plus any### Gate:blocks and a Dependency Graph - No GitHub issues or milestone created
- Source design doc status updated to "Planned"
coordinated mode, tracking level issues or issues-and-milestone:
docs/plans/PLAN-<topic>.mdwith status Active and the resolvedtracking_level- GitHub issues (and, at
issues-and-milestone, a milestone), filed only after the filing approval - An Implementation Issues table with a
_Repo: ... | Group: ..._row under each issue and any_Gate:rows - Source design doc status updated to "Planned"
Team Shape
/plan's team shape is declared in team.yaml as the
machine-readable contract surface. The child layer spawns one worker
peer role: decomposer (worker, upper_bound 20, phase-4-agent-
generation), one decomposer per outline emitted by Phase 3. /plan's
Phase 6 also invokes /review-plan as a sub-skill via inline
Skill-tool dispatch; this is a CHILD invocation under the Dispatch
Contract, NOT a peer, and is therefore not declared in team.yaml.
See Dispatch Contract for v1 parent-side consumption rules.
Reference Files
| File | When to load |
references/templates/agent-prompt.md | Phase 4 agent spawning (design/prd) |
references/templates/agent-prompt-planning.md | Phase 4 agent spawning (roadmap) |
references/templates/ac-critical.md | Phase 4 critical complexity |
references/templates/ac-simple.md | Phase 4 simple complexity |
references/templates/ac-testable.md | Phase 4 testable complexity |
references/templates/walking-skeleton-issue.md | Phase 4 walking skeleton |
references/quality/plan-doc-structure.md | Phase 7 PLAN doc construction |
references/quality/plan-doc-examples.md | Phase 7 (if examples needed) |
references/quality/consumer-validation-rules.md | When implementing a consuming skill that must validate PLAN artifacts |
${CLAUDE_SKILL_DIR}/scripts/resolve-split-mode.sh | Phase 3 step 5a (split mode) |
${CLAUDE_SKILL_DIR}/scripts/build-dependency-graph.sh | Phase 5 |
${CLAUDE_SKILL_DIR}/scripts/create-issues-batch.sh | Phase 7 multi-pr and coordinated filing (stable sub-operation via ${CLAUDE_PLUGIN_ROOT}/skills/plan/scripts/create-issues-batch.sh) |
${CLAUDE_SKILL_DIR}/scripts/create-issue.sh | Phase 7 multi-pr (stable sub-operation via ${CLAUDE_PLUGIN_ROOT}/skills/plan/scripts/create-issue.sh) |
${CLAUDE_SKILL_DIR}/scripts/plan-to-tasks.sh | When emitting koto task-entry JSON from a PLAN doc (stable sub-operation via ${CLAUDE_PLUGIN_ROOT}/skills/plan/scripts/plan-to-tasks.sh) |
${CLAUDE_SKILL_DIR}/scripts/render-template.sh | Phase 4 |
${CLAUDE_SKILL_DIR}/scripts/apply-complexity-label.sh | Phase 7 multi-pr |
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.

