diff --git a/README.md b/README.md
index 44b0d9163..0055e697a 100644
--- a/README.md
+++ b/README.md
@@ -302,6 +302,8 @@ You're never locked in. The system adapts.
| `/gsd:plan-phase [N]` | Generate task plans for phase |
| `/gsd:execute-plan` | Run plan via subagent |
| `/gsd:progress` | Where am I? What's next? |
+| `/gsd:verify-work [N]`* | User acceptance test of phase or plan |
+| `/gsd:plan-fix [plan]` | Plan fixes for UAT issues from verify-work |
| `/gsd:complete-milestone` | Ship it, prep next version |
| `/gsd:discuss-milestone` | Gather context for next milestone |
| `/gsd:new-milestone [name]` | Create new milestone with phases |
@@ -316,6 +318,8 @@ You're never locked in. The system adapts.
| `/gsd:consider-issues` | Review deferred issues, close resolved, identify urgent |
| `/gsd:help` | Show all commands and usage guide |
+*Contributed by reddit user OracleGreyBeard
+
---
## Troubleshooting
diff --git a/commands/gsd/plan-fix.md b/commands/gsd/plan-fix.md
new file mode 100644
index 000000000..712862e37
--- /dev/null
+++ b/commands/gsd/plan-fix.md
@@ -0,0 +1,205 @@
+---
+name: gsd:plan-fix
+description: Plan fixes for UAT issues from verify-work
+argument-hint: "[plan, e.g., '04-02']"
+allowed-tools:
+ - 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-scoped ISSUES.md files.
+Output: {plan}-FIX.md in the phase directory, ready for execution.
+
+
+
+@~/.claude/get-shit-done/references/plan-format.md
+@~/.claude/get-shit-done/references/checkpoints.md
+
+
+
+Plan number: $ARGUMENTS (required - e.g., "04-02" or "09-01")
+
+**Load project state:**
+@.planning/STATE.md
+@.planning/ROADMAP.md
+
+
+
+
+
+**Parse plan argument:**
+
+$ARGUMENTS should be a plan number like "04-02" or "09-01".
+Extract phase number (XX) and plan number (NN).
+
+If no argument provided:
+```
+Error: Plan number required.
+
+Usage: /gsd:plan-fix 04-02
+
+This creates a fix plan from .planning/phases/XX-name/04-02-ISSUES.md
+```
+Exit.
+
+
+
+**Find ISSUES.md file:**
+
+Search for matching ISSUES.md:
+```bash
+ls .planning/phases/*/{plan}-ISSUES.md 2>/dev/null
+```
+
+If not found:
+```
+No ISSUES.md found for plan {plan}.
+
+ISSUES.md files are created by /gsd:verify-work when UAT finds issues.
+If no issues were found during testing, no fix plan is needed.
+```
+Exit.
+
+
+
+**Read issues:**
+
+Read the ISSUES.md file.
+Parse each issue:
+- ID (UAT-XXX)
+- Title
+- Severity (critical/major/minor)
+- Description/steps to reproduce
+- Acceptance criteria
+
+Count total issues by severity.
+
+
+
+**Create fix tasks:**
+
+For each issue (or logical group):
+- Create one task per issue OR
+- Group related minor issues into single task
+
+Task structure:
+```xml
+
+ Fix UAT-001: [issue title]
+ [affected files from issue]
+
+[What to fix based on issue description]
+[Reference original acceptance criteria]
+
+ [Test that issue is resolved]
+ [Issue acceptance criteria met]
+
+```
+
+Prioritize: critical → major → minor
+
+
+
+**Write FIX.md:**
+
+Create `.planning/phases/XX-name/{plan}-FIX.md`:
+
+```markdown
+---
+phase: XX-name
+plan: {plan}-FIX
+type: fix
+---
+
+
+Fix {N} UAT issues from plan {plan}.
+
+Source: {plan}-ISSUES.md
+Priority: {critical count} critical, {major count} major, {minor count} minor
+
+
+
+@~/.claude/get-shit-done/workflows/execute-phase.md
+@~/.claude/get-shit-done/templates/summary.md
+
+
+
+@.planning/STATE.md
+@.planning/ROADMAP.md
+
+**Issues being fixed:**
+@.planning/phases/XX-name/{plan}-ISSUES.md
+
+**Original plan for reference:**
+@.planning/phases/XX-name/{plan}-PLAN.md
+
+
+
+[Generated fix tasks]
+
+
+
+Before declaring plan complete:
+- [ ] All critical issues fixed
+- [ ] All major issues fixed
+- [ ] Minor issues fixed or documented as deferred
+- [ ] Original acceptance criteria from issues met
+
+
+
+- All UAT issues from {plan}-ISSUES.md addressed
+- Tests pass
+- Ready for re-verification
+
+
+
+```
+
+
+
+**Offer execution:**
+
+```
+---
+
+## ✓ Fix Plan Created
+
+**{plan}-FIX.md** — {N} issues to fix
+
+| Severity | Count |
+|----------|-------|
+| Critical | {n} |
+| Major | {n} |
+| Minor | {n} |
+
+---
+
+Would you like to:
+1. Execute the fix plan now
+2. Review the plan first
+3. Modify the plan before executing
+
+---
+```
+
+Use AskUserQuestion to get response.
+If execute: `/gsd:execute-plan .planning/phases/XX-name/{plan}-FIX.md`
+
+
+
+
+
+- [ ] ISSUES.md found and parsed
+- [ ] Fix tasks created for each issue
+- [ ] FIX.md written with proper structure
+- [ ] User offered to execute or review
+
diff --git a/commands/gsd/progress.md b/commands/gsd/progress.md
index 0b0020936..5f0c628fe 100644
--- a/commands/gsd/progress.md
+++ b/commands/gsd/progress.md
@@ -92,21 +92,35 @@ CONTEXT: [✓ if CONTEXT.md exists | - if not]
**Determine next action based on verified counts.**
-**Step 1: Count plans and summaries in current phase**
+**Step 1: Count plans, summaries, and issues in current phase**
List files in the current phase directory:
```bash
ls -1 .planning/phases/[current-phase-dir]/*-PLAN.md 2>/dev/null | wc -l
ls -1 .planning/phases/[current-phase-dir]/*-SUMMARY.md 2>/dev/null | wc -l
+ls -1 .planning/phases/[current-phase-dir]/*-ISSUES.md 2>/dev/null | wc -l
+ls -1 .planning/phases/[current-phase-dir]/*-FIX.md 2>/dev/null | wc -l
+ls -1 .planning/phases/[current-phase-dir]/*-FIX-SUMMARY.md 2>/dev/null | wc -l
```
-State: "This phase has {X} plans and {Y} summaries."
+State: "This phase has {X} plans, {Y} summaries, {Z} issues files, {W} fix plans."
+
+**Step 1.5: Check for unaddressed UAT issues**
+
+For each *-ISSUES.md file, check if matching *-FIX.md exists.
+For each *-FIX.md file, check if matching *-FIX-SUMMARY.md exists.
+
+Track:
+- `issues_without_fix`: ISSUES.md files without FIX.md
+- `fixes_without_summary`: FIX.md files without FIX-SUMMARY.md
**Step 2: Route based on counts**
| Condition | Meaning | Action |
|-----------|---------|--------|
+| fixes_without_summary > 0 | Unexecuted fix plans exist | Go to **Route A** (with FIX.md) |
+| issues_without_fix > 0 | UAT issues need fix plans | Go to **Route E** |
| summaries < plans | Unexecuted plans exist | Go to **Route A** |
| summaries = plans AND plans > 0 | Phase complete | Go to Step 3 |
| plans = 0 | Phase not yet planned | Go to **Route B** |
@@ -180,6 +194,32 @@ Check if `{phase}-CONTEXT.md` exists in phase directory.
---
+**Route E: UAT issues need fix plans**
+
+ISSUES.md exists without matching FIX.md. User needs to plan fixes.
+
+```
+---
+
+## ⚠ UAT Issues Found
+
+**{plan}-ISSUES.md** has {N} issues without a fix plan.
+
+`/gsd:plan-fix {plan}`
+
+`/clear` first → fresh context window
+
+---
+
+**Also available:**
+- `/gsd:execute-plan [path]` — continue with other work first
+- `/gsd:verify-work {phase}` — run more UAT testing
+
+---
+```
+
+---
+
**Step 3: Check milestone status (only when phase complete)**
Read ROADMAP.md and identify:
@@ -219,6 +259,7 @@ Read ROADMAP.md to get the next phase's name and goal.
---
**Also available:**
+- `/gsd:verify-work {Z}` — user acceptance test before continuing
- `/gsd:discuss-phase {Z+1}` — gather context first
- `/gsd:research-phase {Z+1}` — investigate unknowns
@@ -244,6 +285,11 @@ All {N} phases finished!
`/clear` first → fresh context window
+---
+
+**Also available:**
+- `/gsd:verify-work` — user acceptance test before completing milestone
+
---
```