Pattern: Command → workflow → gsd-tools Token savings: ~150 chars per command Ported from: get-shit-done-v2@213392b
4.3 KiB
4.3 KiB
Add a new integer phase to the end of the current milestone in the roadmap. Automatically calculates next phase number, creates phase directory, and updates roadmap structure.
Find the highest integer phase number in the current milestone:
<required_reading> Read all files referenced by the invoking prompt's execution_context before starting. </required_reading>
Parse the command arguments: - All arguments become the phase description - Example: `/gsd:add-phase Add authentication` → description = "Add authentication" - Example: `/gsd:add-phase Fix critical performance issues` → description = "Fix critical performance issues"If no arguments provided:
ERROR: Phase description required
Usage: /gsd:add-phase <description>
Example: /gsd:add-phase Add authentication system
Exit.
Load the roadmap file:node ~/.claude/get-shit-done/bin/gsd-tools.js verify-path-exists .planning/ROADMAP.md --raw
If false:
ERROR: No roadmap found (.planning/ROADMAP.md)
Run /gsd:new-project to initialize.
Exit.
Read roadmap content for parsing.
Parse the roadmap to find the current milestone section:- Locate the "## Current Milestone:" heading
- Extract milestone name and version
- Identify all phases under this milestone (before next "---" separator or next milestone heading)
- Parse existing phase numbers (including decimals if present)
Example structure:
## Current Milestone: v1.0 Foundation
### Phase 4: Focused Command System
### Phase 5: Path Routing & Validation
### Phase 6: Documentation & Distribution
- Extract all phase numbers from phase headings (### Phase N:)
- Filter to integer phases only (ignore decimals like 4.1, 4.2)
- Find the maximum integer value
- Add 1 to get the next phase number
Example: If phases are 4, 5, 5.1, 6 → next is 7
Format as two-digit: printf "%02d" $next_phase
slug=$(node ~/.claude/get-shit-done/bin/gsd-tools.js generate-slug "$description" --raw)
Phase directory name: {two-digit-phase}-{slug}
Example: 07-add-authentication
phase_dir=".planning/phases/${phase_num}-${slug}"
mkdir -p "$phase_dir"
Confirm: "Created directory: $phase_dir"
Add the new phase entry to the roadmap:-
Find the insertion point (after last phase in current milestone, before "---" separator)
-
Insert new phase heading:
### Phase {N}: {Description} **Goal:** [To be planned] **Depends on:** Phase {N-1} **Plans:** 0 plans Plans: - [ ] TBD (run /gsd:plan-phase {N} to break down) **Details:** [To be added during planning] -
Write updated roadmap back to file
Preserve all other content exactly (formatting, spacing, other phases).
Update STATE.md to reflect the new phase:- Read
.planning/STATE.md - Under "## Current Position" → "Next Phase:" add reference to new phase
- Under "## Accumulated Context" → "### Roadmap Evolution" add entry:
- Phase {N} added: {description}
If "Roadmap Evolution" section doesn't exist, create it.
Present completion summary:Phase {N} added to current milestone:
- Description: {description}
- Directory: .planning/phases/{phase-num}-{slug}/
- Status: Not planned yet
Roadmap updated: .planning/ROADMAP.md
Project state updated: .planning/STATE.md
---
## ▶ Next Up
**Phase {N}: {description}**
`/gsd:plan-phase {N}`
<sub>`/clear` first → fresh context window</sub>
---
**Also available:**
- `/gsd:add-phase <description>` — add another phase
- Review roadmap
---
<success_criteria>
- Phase directory created:
.planning/phases/{NN}-{slug}/ - Roadmap updated with new phase entry
- STATE.md updated with roadmap evolution note
- New phase appears at end of current milestone
- Next phase number calculated correctly (ignoring decimals)
- User informed of next steps </success_criteria>