Files
msd-core/get-shit-done/workflows/insert-phase.md
TÂCHES 246d542c65 feat(gsd-tools): add compound init commands and update workflows (#468)
* feat(gsd-tools): add compound init commands for workflow setup

Adds 8 compound commands that return all context a workflow needs in
one JSON blob, replacing 5-10 atomic calls per workflow:

- init execute-phase: models, config, phase info, plan inventory
- init plan-phase: models, workflow flags, existing artifacts
- init new-project: models, brownfield detection, state checks
- init new-milestone: models, milestone info
- init quick: models, next task number, timestamps
- init resume: file existence, interrupted agent
- init verify-work: models, phase info
- init phase-op: generic phase context

Updated 8 workflows to use compound commands:
- execute-phase, plan-phase, new-project, quick
- resume-project, verify-work, discuss-phase

Token savings: ~200 lines of bash setup replaced with single init calls.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(gsd-tools): add 4 new init commands and update files to use compound commands

Add new compound init commands:
- init todos - context for todo workflows
- init milestone-op - context for milestone operations
- init map-codebase - context for codebase mapping
- init progress - context for progress workflow

Update 24 files to use compound init commands instead of atomic calls:
- 4 phase operation workflows (add-phase, insert-phase, remove-phase, verify-phase)
- 5 todo/milestone workflows (add-todo, check-todos, audit-milestone, complete-milestone, new-milestone)
- 6 misc workflows (execute-plan, map-codebase, pause-work, progress, set-profile, settings)
- 6 agent files (gsd-executor, gsd-planner, gsd-phase-researcher, gsd-plan-checker, gsd-debugger, gsd-research-synthesizer)
- 2 command files (debug, research-phase)
- 1 reference file (planning-config)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(gsd-tools): add init to help output

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(verify-phase): correct expected init fields

The workflow was referencing plans/summaries from init phase-op,
but those fields come from ls command. Updated to reference
has_plans and plan_count which are actually in phase-op output.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-07 22:09:07 -06:00

5.5 KiB

Insert a decimal phase for urgent work discovered mid-milestone between existing integer phases. Uses decimal numbering (72.1, 72.2, etc.) to preserve the logical sequence of planned phases while accommodating urgent insertions without renumbering the entire roadmap.

<required_reading> Read all files referenced by the invoking prompt's execution_context before starting. </required_reading>

Parse the command arguments: - First argument: integer phase number to insert after - Remaining arguments: phase description

Example: /gsd:insert-phase 72 Fix critical auth bug -> after = 72 -> description = "Fix critical auth bug"

Validation:

if [ $# -lt 2 ]; then
  echo "ERROR: Both phase number and description required"
  echo "Usage: /gsd:insert-phase <after> <description>"
  echo "Example: /gsd:insert-phase 72 Fix critical auth bug"
  exit 1
fi

Parse first argument as integer:

after_phase=$1
shift
description="$*"

# Validate after_phase is an integer
if ! [[ "$after_phase" =~ ^[0-9]+$ ]]; then
  echo "ERROR: Phase number must be an integer"
  exit 1
fi
Load phase operation context:
INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.js init phase-op "${after_phase}")

Check roadmap_exists from init JSON. If false:

ERROR: No roadmap found (.planning/ROADMAP.md)

Exit.

Read roadmap content for parsing.

Verify that the target phase exists in the roadmap:
  1. Search for "### Phase {after_phase}:" heading

  2. If not found:

    ERROR: Phase {after_phase} not found in roadmap
    Available phases: [list phase numbers]
    

    Exit.

  3. Verify phase is in current milestone (not completed/archived)

Find existing decimal phases after the target phase:
  1. Search for all "### Phase {after_phase}.N:" headings
  2. Extract decimal suffixes (e.g., for Phase 72: find 72.1, 72.2, 72.3)
  3. Find the highest decimal suffix
  4. Calculate next decimal: max + 1

Examples:

  • Phase 72 with no decimals -> next is 72.1
  • Phase 72 with 72.1 -> next is 72.2
  • Phase 72 with 72.1, 72.2 -> next is 72.3

Store as: decimal_phase="$(printf "%02d" $after_phase).${next_decimal}"

Convert the phase description to a kebab-case slug.

Use generate-slug command (init phase-op provides phase_slug for existing phase, but this is a new phase):

slug=$(node ~/.claude/get-shit-done/bin/gsd-tools.js generate-slug "$description" --raw)

Phase directory name: {decimal-phase}-{slug} Example: 06.1-fix-critical-auth-bug (phase 6 insertion)

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

Confirm: "Created directory: $phase_dir"

Insert the new phase entry into the roadmap:
  1. Find insertion point: immediately after Phase {after_phase}'s content (before next phase heading or "---")

  2. Insert new phase heading with (INSERTED) marker:

    ### Phase {decimal_phase}: {Description} (INSERTED)
    
    **Goal:** [Urgent work - to be planned]
    **Depends on:** Phase {after_phase}
    **Plans:** 0 plans
    
    Plans:
    - [ ] TBD (run /gsd:plan-phase {decimal_phase} to break down)
    
    **Details:**
    [To be added during planning]
    
  3. Write updated roadmap back to file

The "(INSERTED)" marker helps identify decimal phases as urgent insertions.

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

Update STATE.md to reflect the inserted phase:
  1. Read .planning/STATE.md
  2. Under "## Accumulated Context" -> "### Roadmap Evolution" add entry:
    - Phase {decimal_phase} inserted after Phase {after_phase}: {description} (URGENT)
    

If "Roadmap Evolution" section doesn't exist, create it.

Add note about insertion reason if appropriate.

Present completion summary:
Phase {decimal_phase} inserted after Phase {after_phase}:
- Description: {description}
- Directory: .planning/phases/{decimal-phase}-{slug}/
- Status: Not planned yet
- Marker: (INSERTED) - indicates urgent work

Roadmap updated: {roadmap-path}
Project state updated: .planning/STATE.md

---

## Next Up

**Phase {decimal_phase}: {description}** -- urgent insertion

`/gsd:plan-phase {decimal_phase}`

<sub>`/clear` first -> fresh context window</sub>

---

**Also available:**
- Review insertion impact: Check if Phase {next_integer} dependencies still make sense
- Review roadmap

---

<anti_patterns>

  • Don't use this for planned work at end of milestone (use /gsd:add-phase)
  • Don't insert before Phase 1 (decimal 0.1 makes no sense)
  • Don't renumber existing phases
  • Don't modify the target phase content
  • Don't create plans yet (that's /gsd:plan-phase)
  • Don't commit changes (user decides when to commit) </anti_patterns>

<success_criteria> Phase insertion is complete when:

  • Phase directory created: .planning/phases/{N.M}-{slug}/
  • Roadmap updated with new phase entry (includes "(INSERTED)" marker)
  • Phase inserted in correct position (after target phase, before next integer phase)
  • STATE.md updated with roadmap evolution note
  • Decimal number calculated correctly (based on existing decimals)
  • User informed of next steps and dependency implications </success_criteria>