Break a plan or milestone brief into independently-grabbable vertical slices (tracer bullets). Produces slices in `M###-ROADMAP.md` by default, or GitHub issues only with explicit user confirmation. Use when asked to "break this into slices", "decompose the plan", "vertical slices", "break into issues", or when a plan is ready but needs task-level decomposition. Prefers many thin slices over few thick ones; marks dependency order explicitly.
77
96%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Typical invocation points:
write-milestone-brief (or after a discuss phase that produced a brief)<core_principle> VERTICAL, NOT HORIZONTAL. A slice that adds "schema + API + UI + tests for feature X on one narrow path" is vertical. A slice that adds "all schemas for all features" is horizontal and is wrong. Horizontal slices destroy the demoability property that makes slice completion meaningful.
MANY THIN, NOT FEW THICK. If a slice could be split into two demoable pieces, split it. Thin slices retire risk earlier, parallelize better, and give the user faster feedback on whether the direction is right.
DEPENDENCY GRAPH, NOT LINEAR LIST. Slices that don't depend on each other should be marked that way — depends:[] means the slice can start immediately. The GSD engine uses this to parallelize.
</core_principle>
M###-CONTEXT.md for the active milestone — the brief is the source of truth for scope.M###-ROADMAP.md if one exists — you may be refining rather than creating from scratch.src/resources/extensions/gsd/templates/roadmap.md for the exact slice format. The parser depends on it.mcp__github__issue_read.If you haven't yet, spawn Agent(subagent_type=Explore) to map the modules the milestone touches. This is fast and prevents proposing slices that don't align with the codebase's seams.
Produce a draft list of slices. For each slice, capture:
S01, S02, ... — assigned in dependency order (earliest first).high / medium / low — slices that retire the most uncertainty go first.[] or [S01] or [S01,S02] — which slices must finish first.Present the draft as a numbered list with ID, title, risk, depends, demo line. Then ask (one round, not many):
Iterate on feedback until the user approves the breakdown. Do not proceed to Step 5 without explicit approval.
Once approved, write or update M###-ROADMAP.md matching the template exactly. Critical format (parsers depend on it):
- [ ] **S01: Title** `risk:high` `depends:[]`
> After this: one sentence showing what's demoable
- [ ] **S02: Title** `risk:medium` `depends:[S01]`
> After this: one sentence showing what's demoableFill the rest of the template: Vision, Success Criteria, Key Risks, Proof Strategy, Verification Classes, Definition of Done, Requirement Coverage, Horizontal Checklist (omit entirely for trivial milestones), and the Boundary Map (S01 → S02 produces/consumes blocks — be specific, name real APIs/types/invariants).
Use write to the path .gsd/milestones/<MID>/<MID>-ROADMAP.md. Do not edit checkboxes by hand during normal execution — the gsd_* tools own state.
If the user explicitly asks (and only if — outward actions need confirmation), create one GitHub issue per slice with mcp__github__issue_write. Create in dependency order so "Blocked by" references can cite real issue numbers.
## Parent
#<parent-milestone-issue-number> (if applicable; otherwise omit)
## What to build
<concise description of this vertical slice — end-to-end behavior, not layer-by-layer>
## Acceptance criteria
- [ ] <criterion 1>
- [ ] <criterion 2>
## Blocked by
- Blocked by #<issue-number>
<or "None - can start immediately">
---
From milestone brief at `.gsd/milestones/<MID>/<MID>-CONTEXT.md`.Do NOT close or modify any parent issue.
<anti_patterns>
/gsd start spike.gsd_* tools own that state during execution.</anti_patterns>
<success_criteria>
depends:[] on slices that can start immediately.M###-ROADMAP.md matches the template format exactly (parsers depend on it).</success_criteria>
33c00aa
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.