Skip to main content
ROADMAP.md breaks down your project into executable phases. Each phase has a clear goal, success criteria, and maps to specific requirements.

Location

Created during /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?”
Example:

Dependencies

Purpose: What must be complete before this phase can start. Typical values:
  • Nothing (first phase) - No dependencies
  • Phase 1 - Requires Phase 1 complete
  • Phase 2, Phase 3 - Multiple dependencies
Note: Dependencies create sequential execution. Phases without dependencies can be considered for parallel execution.

Requirements

Purpose: Links phase to specific requirements from REQUIREMENTS.md. Format: Comma-separated list of requirement IDs Example:
Validation: Every v1 requirement must appear in at least one phase.

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”
Good examples:
Bad examples (too vague):
Usage: Success criteria flow to 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)
Naming:

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:
Execution order: 2 → 2.1 → 2.2 → 3

Phase Granularity

Phase count depends on the granularity setting in config.json: Set via /gsd:settings or during /gsd:new-project.

Progress Tracking

Progress Table

Updated by execute workflow after each plan completes:

Status Values

Milestone-Grouped Roadmap

After completing first milestone, reorganize with milestone groupings:
Notes:
  • 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:
Benefits:
  • 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:
Downsides:
  • Forced sequential execution
  • Nothing works until final phase
  • Hard to test incrementally

Evolution

Adding Phases

Append to roadmap:
Insert urgent work:

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

See Also