Breakdown
The plan itself comes from Claude Code's built-in plan mode
(engineering-principles §7). This skill breaks the result into tickets.
Two modes. For work that fits one session, break it into tracer-bullet
tickets with blocking edges. For work too large for one session, chart a
decision map — a shared index of decision tickets resolved one at a time
until the way to the destination is clear.
When to use
- You have an approved plan, spec, or conversation result to break into tickets.
- The work spans multiple sessions and needs a shared decision map.
- You need to sequence work by blocking edges before implementation starts.
Not for: Work that fits one session (just implement it); writing the spec itself (use spec).
Steps
Mode 1 — Tracer-bullet tickets (work fits one session)
Gather context. Read the plan or spec. If the user passes a reference
(path, issue number, URL), fetch its full body. Explore the codebase if you
haven't, so ticket titles use the project's domain glossary and respect
existing ADRs.
Draft vertical slices. Each slice cuts a narrow but COMPLETE path through
every layer (schema, API, UI, tests) — vertical, not a horizontal layer. A
completed slice is demoable on its own. Size each to a single fresh context.
Declare blocking edges. For each ticket, list the tickets that must
complete before it can start. A ticket with no blockers starts immediately.
Wide-refactor exception. A single mechanical change fanning across the
codebase (rename a column, retype a shared symbol) can't land green as a
vertical slice. Sequence it as expand–contract: add the new form beside
the old, migrate call sites in per-package batches (each its own ticket
blocked by the expand), then delete the old form in a final ticket blocked
by every batch.
Quiz the user. Present the breakdown as a numbered list — title, blocked
by, what it delivers. Ask: granularity right? Blocking edges correct? Any
tickets to merge or split? Iterate until approved.
Publish. Two layers:
docs/PLAN.md — project-level plan, concise (mermaid-heavy), on main.
docs/vX.Y/plan.md — the current version's detailed ticket breakdown (title, blocked by,
what it delivers, ordered blockers first), on the version branch. Falls back to
docs/PLAN.md alone for single-version projects.
Work the frontier: any ticket whose blockers are all done.
Mode 2 — Decision map (work too large for one session)
Name the destination. Pin down what this effort is finding its way to —
the spec, decision, or change. The destination fixes the scope; settle it
first.
Map the frontier, breadth-first. Fan out across the whole space,
surfacing open decisions and first takeable steps. If this surfaces no fog,
the way is already clear — stop and ask the user how to proceed.
Create the map as a single tracker issue labelled wayfinder:map:
Destination, Notes, empty Decisions-so-far, fog sketched into Not yet
specified.
Create the tickets you can specify now as child issues, then wire
blocking edges in a second pass (issues need ids before they can reference
each other). Each ticket is a question sized to one session. What you can't
yet phrase sharply stays in Not yet specified — don't pre-slice fog.
Work the map one ticket per session. Claim a frontier ticket, resolve
it, post the answer as a resolution comment, close the issue, and append a
one-line gist to the map's Decisions-so-far. Graduate fog that the answer
makes specifiable into fresh tickets. Rule out-of-scope work by closing the
ticket and noting it in Out of scope — never in Decisions-so-far.
Stop when no tickets remain and the way to the destination is clear.
Example. A team wants to extract an order service from a monolith but doesn't know
where to start.
- Destination: "Split the order service out of the monolith, zero downtime."
- Frontier (first pass): "What is the order service boundary?" (research ticket);
"What is the current order data model?" (task ticket — can start now);
"How do peers handle the cutover?" (research ticket).
- Not yet specified (fog): dual-write period length (can't phrase until the boundary
is decided); monitoring for the new service (can't phrase until it's extracted).
After the boundary research resolves, dual-write and monitoring graduate from fog → two
fresh task tickets, and the frontier advances. The map's Decisions-so-far gains a one-line
gist of the boundary decision; the remaining fog shrinks until the path is clear.
Verify
- Tickets written with blocking edges declared; each sized to a single session.
- Map (if used) resolves to a clear path: Decisions-so-far indexes every closed
ticket, Not yet specified holds only fog you can't yet phrase sharply.
- Wide refactors sequenced as expand–contract, not forced into tracer bullets.
- Out-of-scope work ruled out explicitly, not left on the frontier.
Output: docs/PLAN.md (project-level, concise, main) + docs/vX.Y/plan.md (version-level, detailed, version branch). Single-version projects fall back to docs/PLAN.md alone.
References
- ${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md — discipline shared by every skill; §7 covers plan mode.
- references/ticket-format.md — local-ticket and issue templates, the staleness rule, and ticket-type routing.
1---2name: breakdown3description: Use when breaking a plan, spec, or conversation into tracer-bullet tickets, each declaring its blocking edges — for work too large for one session, builds a shared map of decision tickets resolved one at a time. Triggers on "break into tickets", "decompose", "wayfinder", "拆解任务", "拆票", "任务分解".4---56# Breakdown78The plan itself comes from Claude Code's built-in plan mode9(engineering-principles §7). This skill breaks the result into tickets.1011Two modes. For work that fits one session, break it into **tracer-bullet12tickets** with blocking edges. For work too large for one session, chart a13**decision map** — a shared index of decision tickets resolved one at a time14until the way to the destination is clear.1516## When to use1718- You have an approved plan, spec, or conversation result to break into tickets.19- The work spans multiple sessions and needs a shared decision map.20- You need to sequence work by blocking edges before implementation starts.2122**Not for:** Work that fits one session (just `implement` it); writing the spec itself (use `spec`).2324## Steps2526### Mode 1 — Tracer-bullet tickets (work fits one session)27281. **Gather context.** Read the plan or spec. If the user passes a reference29 (path, issue number, URL), fetch its full body. Explore the codebase if you30 haven't, so ticket titles use the project's domain glossary and respect31 existing ADRs.32332. **Draft vertical slices.** Each slice cuts a narrow but COMPLETE path through34 every layer (schema, API, UI, tests) — vertical, not a horizontal layer. A35 completed slice is demoable on its own. Size each to a single fresh context.36373. **Declare blocking edges.** For each ticket, list the tickets that must38 complete before it can start. A ticket with no blockers starts immediately.39404. **Wide-refactor exception.** A single mechanical change fanning across the41 codebase (rename a column, retype a shared symbol) can't land green as a42 vertical slice. Sequence it as **expand–contract**: add the new form beside43 the old, migrate call sites in per-package batches (each its own ticket44 blocked by the expand), then delete the old form in a final ticket blocked45 by every batch.46475. **Quiz the user.** Present the breakdown as a numbered list — title, blocked48 by, what it delivers. Ask: granularity right? Blocking edges correct? Any49 tickets to merge or split? Iterate until approved.50516. **Publish.** Two layers:52 - `docs/PLAN.md` — project-level plan, concise (mermaid-heavy), on main.53 - `docs/vX.Y/plan.md` — the current version's detailed ticket breakdown (title, blocked by,54 what it delivers, ordered blockers first), on the version branch. Falls back to55 `docs/PLAN.md` alone for single-version projects.56 Work the **frontier**: any ticket whose blockers are all done.5758### Mode 2 — Decision map (work too large for one session)59601. **Name the destination.** Pin down what this effort is finding its way to —61 the spec, decision, or change. The destination fixes the scope; settle it62 first.63642. **Map the frontier, breadth-first.** Fan out across the whole space,65 surfacing open decisions and first takeable steps. If this surfaces no fog,66 the way is already clear — stop and ask the user how to proceed.67683. **Create the map** as a single tracker issue labelled `wayfinder:map`:69 Destination, Notes, empty Decisions-so-far, fog sketched into **Not yet70 specified**.71724. **Create the tickets you can specify now** as child issues, then wire73 blocking edges in a second pass (issues need ids before they can reference74 each other). Each ticket is a question sized to one session. What you can't75 yet phrase sharply stays in **Not yet specified** — don't pre-slice fog.76775. **Work the map one ticket per session.** Claim a frontier ticket, resolve78 it, post the answer as a resolution comment, close the issue, and append a79 one-line gist to the map's Decisions-so-far. Graduate fog that the answer80 makes specifiable into fresh tickets. Rule out-of-scope work by closing the81 ticket and noting it in **Out of scope** — never in Decisions-so-far.82836. **Stop** when no tickets remain and the way to the destination is clear.8485**Example.** A team wants to extract an order service from a monolith but doesn't know86where to start.8788- **Destination:** "Split the order service out of the monolith, zero downtime."89- **Frontier (first pass):** "What is the order service boundary?" (research ticket);90 "What is the current order data model?" (task ticket — can start now);91 "How do peers handle the cutover?" (research ticket).92- **Not yet specified (fog):** dual-write period length (can't phrase until the boundary93 is decided); monitoring for the new service (can't phrase until it's extracted).9495After the boundary research resolves, dual-write and monitoring graduate from fog → two96fresh task tickets, and the frontier advances. The map's Decisions-so-far gains a one-line97gist of the boundary decision; the remaining fog shrinks until the path is clear.9899## Verify100101- Tickets written with blocking edges declared; each sized to a single session.102- Map (if used) resolves to a clear path: Decisions-so-far indexes every closed103 ticket, Not yet specified holds only fog you can't yet phrase sharply.104- Wide refactors sequenced as expand–contract, not forced into tracer bullets.105- Out-of-scope work ruled out explicitly, not left on the frontier.106107**Output:** `docs/PLAN.md` (project-level, concise, main) + `docs/vX.Y/plan.md` (version-level, detailed, version branch). Single-version projects fall back to `docs/PLAN.md` alone.108109## References110111- [${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md](${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md) — discipline shared by every skill; §7 covers plan mode.112- [references/ticket-format.md](references/ticket-format.md) — local-ticket and issue templates, the staleness rule, and ticket-type routing.