Files
msd-core/commands/gsd/plan-fix.md
Lex Christopherson 9e0808b409 feat: redesign verify-work as conversational UAT with persistent state
- One test at a time instead of full checklist upfront
- Plain text responses instead of AskUserQuestion forms
- Severity inferred from description, never asked
- Persistent UAT.md survives /clear (like debug workflow)
- Single file per phase replaces per-plan ISSUES.md
- Updated plan-fix to read from UAT.md

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-14 09:56:17 -06:00

4.6 KiB

name, description, argument-hint, allowed-tools
name description argument-hint allowed-tools
gsd:plan-fix Plan fixes for UAT issues from verify-work <phase, e.g., '4'>
Read
Bash
Write
Glob
Grep
AskUserQuestion
Create FIX.md plan from UAT issues found during verify-work.

Purpose: Plan fixes for issues logged in {phase}-UAT.md. Output: {phase}-FIX.md in the phase directory, ready for execution.

<execution_context> @/.claude/get-shit-done/references/plan-format.md @/.claude/get-shit-done/references/checkpoints.md </execution_context>

Phase: $ARGUMENTS (required - e.g., "4")

@.planning/STATE.md @.planning/ROADMAP.md

**Parse phase argument:**

$ARGUMENTS should be a phase number like "4" or "04".

If no argument provided:

Error: Phase number required.

Usage: /gsd:plan-fix 4

This creates a fix plan from .planning/phases/04-name/04-UAT.md

Exit.

**Find UAT.md file:**
ls .planning/phases/${PHASE_ARG}*/*-UAT.md 2>/dev/null

If not found:

No UAT.md found for phase {phase}.

UAT.md files are created by /gsd:verify-work during testing.
Run /gsd:verify-work {phase} first.

Exit.

If found but status is "testing":

UAT session still in progress.

Run /gsd:verify-work to complete testing first.

Exit.

**Read issues from UAT.md:**

Read the "Issues for /gsd:plan-fix" section.

If section is empty or says "[none yet]":

No issues found in UAT.md.

All tests passed - no fix plan needed.

Exit.

Parse each issue:

  • ID (UAT-XXX)
  • Brief summary
  • Severity (blocker/major/minor/cosmetic)
  • Test number (for context)

Also read the corresponding test from "Tests" section to get:

  • expected behavior
  • reported issue (verbatim user description)
**Create fix tasks:**

For each issue (or logical group):

  • Create one task per issue OR
  • Group related cosmetic/minor issues into single task

Task structure:

<task type="auto">
  <name>Fix UAT-{NNN}: {issue summary}</name>
  <files>[affected files - infer from test context]</files>
  <action>
**Issue:** {verbatim reported description}
**Expected:** {from test}

[Specific fix approach]
  </action>
  <verify>
- Reproduce original issue - confirm fixed
- {expected behavior} now works correctly
  </verify>
  <done>UAT-{NNN} resolved - {expected behavior} works</done>
</task>

Prioritize: blocker → major → minor → cosmetic

**Write FIX.md:**

Create .planning/phases/XX-name/{phase}-FIX.md:

---
phase: XX-name
plan: {phase}-FIX
type: fix
wave: 1
depends_on: []
autonomous: true
---

<objective>
Fix {N} UAT issues from phase {phase}.

Source: {phase}-UAT.md
Priority: {blocker count} blocker, {major count} major, {minor count} minor, {cosmetic count} cosmetic
</objective>

<execution_context>
@~/.claude/get-shit-done/workflows/execute-plan.md
@~/.claude/get-shit-done/templates/summary.md
</execution_context>

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

**Issues being fixed:**
@.planning/phases/XX-name/{phase}-UAT.md

**Original plans for reference:**
@.planning/phases/XX-name/{phase}-01-PLAN.md
[other relevant plans]
</context>

<tasks>
[Generated fix tasks]
</tasks>

<verification>
Before declaring plan complete:
- [ ] All blocker issues fixed
- [ ] All major issues fixed
- [ ] Minor/cosmetic issues fixed or documented as deferred
- [ ] Each fix verified against original reported issue
</verification>

<success_criteria>
- All UAT issues from {phase}-UAT.md addressed
- Tests pass
- Ready for re-verification with /gsd:verify-work {phase}
</success_criteria>

<output>
After completion, create `.planning/phases/XX-name/{phase}-FIX-SUMMARY.md`
</output>
**Offer execution:**
## Fix Plan Created

**{phase}-FIX.md** — {N} issues to fix

| Severity | Count |
|----------|-------|
| Blocker  | {n}   |
| Major    | {n}   |
| Minor    | {n}   |
| Cosmetic | {n}   |

---

Next steps:
- Execute: `/gsd:execute-plan .planning/phases/XX-name/{phase}-FIX.md`
- Review plan first: `cat .planning/phases/XX-name/{phase}-FIX.md`
- Re-test after fixes: `/gsd:verify-work {phase}`

Use AskUserQuestion:

  • header: "Next"
  • question: "What would you like to do?"
  • options:
    • "Execute fix plan" — Run the fixes now
    • "Review plan first" — Look at the plan before executing
    • "Done for now" — Come back later

<success_criteria>

  • UAT.md found and issues parsed
  • Fix tasks created for each issue
  • FIX.md written with proper structure
  • User offered next steps </success_criteria>