Location
/gsd:new-project after REQUIREMENTS.md, updated as phases are added/completed.
Initial Roadmap Structure
Phase Structure
Goal
Purpose: Clear statement of what this phase delivers. Guidelines:- One sentence describing the outcome
- Should be verifiable when complete
- Answers: “What does this phase achieve?”
Dependencies
Purpose: What must be complete before this phase can start. Typical values:Nothing (first phase)- No dependenciesPhase 1- Requires Phase 1 completePhase 2, Phase 3- Multiple dependencies
Requirements
Purpose: Links phase to specific requirements from REQUIREMENTS.md. Format: Comma-separated list of requirement IDs Example:Success Criteria
Purpose: Observable behaviors that must be true for the phase goal to be achieved. Guidelines:- 2-5 criteria per phase
- From user’s perspective
- Testable (can verify true/false)
- Format: “User can [action]” or “[Thing] works/exists”
must_haves in plan frontmatter, enabling automated verification.
Plans
Purpose: Break phase into executable task plans. Guidelines:- Can be “TBD” initially, refined during
/gsd:plan-phase - Typically 1-3 plans per phase
- Split if >3 tasks, multiple subsystems, or risk of context overflow
- Format:
{phase}-{plan}(e.g., 01-01, 01-02)
Phase Numbering
Integer Phases (1, 2, 3…)
Planned milestone work - Created during initial roadmap.Decimal Phases (2.1, 2.2…)
Urgent insertions - Added via/gsd:insert-phase for work that can’t wait.
Example:
Phase Granularity
Phase count depends on thegranularity setting in config.json:
| Granularity | Phase Count | When to Use |
|---|---|---|
coarse | 3-5 phases | Small projects, fast iterations |
standard | 5-8 phases | Most projects (default) |
fine | 8-12 phases | Complex projects, detailed tracking |
/gsd:settings or during /gsd:new-project.
Progress Tracking
Progress Table
Updated by execute workflow after each plan completes:Status Values
| Status | Meaning |
|---|---|
| Not started | Haven’t begun |
| In progress | Currently working |
| Complete | Done (add completion date) |
| Deferred | Pushed to later (with reason) |
Milestone-Grouped Roadmap
After completing first milestone, reorganize with milestone groupings:- Milestone emoji: ✅ shipped, 🚧 in progress, 📋 planned
- Completed milestones collapsed in
<details>for readability - Current/future milestones expanded
- Continuous phase numbering (never restart at 01)
Vertical Slices vs Horizontal Layers
Preferred: Vertical Slices
Each phase delivers a complete feature:- Plans can run in parallel
- Each phase delivers working features
- Easier to test end-to-end
Avoid: Horizontal Layers
Each phase does one layer across all features:- Forced sequential execution
- Nothing works until final phase
- Hard to test incrementally
Evolution
Adding Phases
Append to roadmap:Completing Phases
After/gsd:execute-phase completes:
- Progress table updates automatically
- Phase marked complete with date
- STATE.md updates current position
Archiving Milestones
After/gsd:complete-milestone:
- Completed phases moved to
milestones/directory - Roadmap collapses completed milestone in
<details> - Progress table preserved for history