Files
msd-core/get-shit-done/workflows/cleanup.md
Tom Boucher 47badff2ee fix(workflow): add plain-text fallback for AskUserQuestion on non-Claude runtimes (#2042)
AskUserQuestion is a Claude Code-only tool. When running GSD on OpenAI Codex,
Gemini CLI, or other non-Claude runtimes, the model renders the tool call as a
markdown code block instead of executing it, so the interactive TUI never
appears and the session stalls without collecting user input.

The workflow.text_mode / --text flag mechanism already handles this in 5 of
the 37 affected workflows. This commit adds the same TEXT_MODE fallback
instruction to all remaining 32 workflows so that, when text_mode is enabled,
every AskUserQuestion call is replaced with a plain-text numbered list that
any runtime can handle.

Fixes #2012

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 12:30:46 -04:00

3.8 KiB

Archive accumulated phase directories from completed milestones into .planning/milestones/v{X.Y}-phases/. Identifies which phases belong to each completed milestone, shows a dry-run summary, and moves directories on confirmation.

<required_reading>

  1. .planning/MILESTONES.md
  2. .planning/milestones/ directory listing
  3. .planning/phases/ directory listing

</required_reading>

Read .planning/MILESTONES.md to identify completed milestones and their versions.

cat .planning/MILESTONES.md

Extract each milestone version (e.g., v1.0, v1.1, v2.0).

Check which milestone archive dirs already exist:

ls -d .planning/milestones/v*-phases 2>/dev/null || true

Filter to milestones that do NOT already have a -phases archive directory.

If all milestones already have phase archives:

All completed milestones already have phase directories archived. Nothing to clean up.

Stop here.

For each completed milestone without a -phases archive, read the archived ROADMAP snapshot to determine which phases belong to it:

cat .planning/milestones/v{X.Y}-ROADMAP.md

Extract phase numbers and names from the archived roadmap (e.g., Phase 1: Foundation, Phase 2: Auth).

Check which of those phase directories still exist in .planning/phases/:

ls -d .planning/phases/*/ 2>/dev/null || true

Match phase directories to milestone membership. Only include directories that still exist in .planning/phases/.

Present a dry-run summary for each milestone:

## Cleanup Summary

### v{X.Y} — {Milestone Name}
These phase directories will be archived:
- 01-foundation/
- 02-auth/
- 03-core-features/

Destination: .planning/milestones/v{X.Y}-phases/

### v{X.Z} — {Milestone Name}
These phase directories will be archived:
- 04-security/
- 05-hardening/

Destination: .planning/milestones/v{X.Z}-phases/

If no phase directories remain to archive (all already moved or deleted):

No phase directories found to archive. Phases may have been removed or archived previously.

Stop here.

Text mode (workflow.text_mode: true in config or --text flag): Set TEXT_MODE=true if --text is present in $ARGUMENTS OR text_mode from init JSON is true. When TEXT_MODE is active, replace every AskUserQuestion call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where AskUserQuestion is not available. AskUserQuestion: "Proceed with archiving?" with options: "Yes — archive listed phases" | "Cancel"

If "Cancel": Stop.

For each milestone, move phase directories:

mkdir -p .planning/milestones/v{X.Y}-phases

For each phase directory belonging to this milestone:

mv .planning/phases/{dir} .planning/milestones/v{X.Y}-phases/

Repeat for all milestones in the cleanup set.

Commit the changes:

node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "chore: archive phase directories from completed milestones" --files .planning/milestones/ .planning/phases/
Archived:
{For each milestone}
- v{X.Y}: {N} phase directories → .planning/milestones/v{X.Y}-phases/

.planning/phases/ cleaned up.

<success_criteria>

  • All completed milestones without existing phase archives identified
  • Phase membership determined from archived ROADMAP snapshots
  • Dry-run summary shown and user confirmed
  • Phase directories moved to .planning/milestones/v{X.Y}-phases/
  • Changes committed

</success_criteria>