Files
msd-core/commands/gsd/add-phase.md
Lex Christopherson d45fbd845d fix: replace inline command invocation with clear-then-paste pattern
End-of-command workflows now show explicit instructions to run /clear
and paste the next command, rather than offering numbered options that
invoke SlashCommand directly. This prevents users from accidentally
exhausting context by continuing work in the same session.

- Updated 16 files (commands and workflows)
- YOLO mode auto-continues preserved (user explicitly chose automation)
- In-workflow decisions like consider-issues preserved

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 09:33:51 -06:00

4.9 KiB

description, argument-hint, allowed-tools
description argument-hint allowed-tools
Add phase to end of current milestone in roadmap <description>
Read
Write
Bash
Add a new integer phase to the end of the current milestone in the roadmap.

This command appends sequential phases to the current milestone's phase list, automatically calculating the next phase number based on existing phases.

Purpose: Add planned work discovered during execution that belongs at the end of current milestone.

<execution_context> @.planning/ROADMAP.md @.planning/STATE.md </execution_context>

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:
if [ -f .planning/ROADMAP.md ]; then
  ROADMAP=".planning/ROADMAP.md"
else
  echo "ERROR: No roadmap found (.planning/ROADMAP.md)"
  exit 1
fi

Read roadmap content for parsing.

Parse the roadmap to find the current milestone section:
  1. Locate the "## Current Milestone:" heading
  2. Extract milestone name and version
  3. Identify all phases under this milestone (before next "---" separator or next milestone heading)
  4. 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
Find the highest integer phase number in the current milestone:
  1. Extract all phase numbers from phase headings (### Phase N:)
  2. Filter to integer phases only (ignore decimals like 4.1, 4.2)
  3. Find the maximum integer value
  4. 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

Convert the phase description to a kebab-case slug:
# Example transformation:
# "Add authentication" → "add-authentication"
# "Fix critical performance issues" → "fix-critical-performance-issues"

slug=$(echo "$description" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')

Phase directory name: {two-digit-phase}-{slug} Example: 07-add-authentication

Create the phase directory structure:
phase_dir=".planning/phases/${phase_num}-${slug}"
mkdir -p "$phase_dir"

Confirm: "Created directory: $phase_dir"

Add the new phase entry to the roadmap:
  1. Find the insertion point (after last phase in current milestone, before "---" separator)

  2. 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]
    
  3. Write updated roadmap back to file

Preserve all other content exactly (formatting, spacing, other phases).

Update STATE.md to reflect the new phase:
  1. Read .planning/STATE.md
  2. Under "## Current Position" → "Next Phase:" add reference to new phase
  3. 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: {roadmap-path}
Project state updated: .planning/STATE.md

## To Continue

Run `/clear`, then paste:

/gsd:plan-phase {N}


Other options:
- Add another phase: `/gsd:add-phase <description>`
- Review roadmap: `cat .planning/ROADMAP.md`

<anti_patterns>

  • Don't modify phases outside current milestone
  • Don't renumber existing phases
  • Don't use decimal numbering (that's /gsd:insert-phase)
  • Don't create plans yet (that's /gsd:plan-phase)
  • Don't commit changes (user decides when to commit) </anti_patterns>

<success_criteria> Phase addition is complete when:

  • 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>