diff --git a/get-shit-done/workflows/discuss-phase.md b/get-shit-done/workflows/discuss-phase.md
index e9b5f1010..178c25471 100644
--- a/get-shit-done/workflows/discuss-phase.md
+++ b/get-shit-done/workflows/discuss-phase.md
@@ -252,6 +252,7 @@ Ask 4 questions per area before offering to continue or move on. Each answer oft
If "More questions" → ask 4 more, then check again
If "Next area" → proceed to next selected area
+ If "Other" (free text) → interpret intent: continuation phrases ("chat more", "keep going", "yes", "more") map to "More questions"; advancement phrases ("done", "move on", "next", "skip") map to "Next area". If ambiguous, ask: "Continue with more questions about [area], or move to the next area?"
4. **After all areas complete:**
- header: "Done"
diff --git a/get-shit-done/workflows/execute-phase.md b/get-shit-done/workflows/execute-phase.md
index 73be6a4f5..5c1d25443 100644
--- a/get-shit-done/workflows/execute-phase.md
+++ b/get-shit-done/workflows/execute-phase.md
@@ -336,37 +336,33 @@ Gap closure cycle: `/gsd:plan-phase {X} --gaps` reads VERIFICATION.md → create
-```bash
-node ~/.claude/get-shit-done/bin/gsd-tools.js roadmap update-plan-progress "${PHASE_NUMBER}"
-```
-Counts PLAN vs SUMMARY files on disk. Updates progress table row with correct count and status.
+**Mark phase complete and update all tracking files:**
```bash
-node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/phases/{phase_dir}/*-VERIFICATION.md .planning/REQUIREMENTS.md
+COMPLETION=$(node ~/.claude/get-shit-done/bin/gsd-tools.js phase complete "${PHASE_NUMBER}")
+```
+
+The CLI handles:
+- Marking phase checkbox `[x]` with completion date
+- Updating Progress table (Status → Complete, date)
+- Updating plan count to final
+- Advancing STATE.md to next phase
+- Updating REQUIREMENTS.md traceability
+
+Extract from result: `next_phase`, `next_phase_name`, `is_last_phase`.
+
+```bash
+node ~/.claude/get-shit-done/bin/gsd-tools.js commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md .planning/phases/{phase_dir}/*-VERIFICATION.md
```
-**If more phases:**
-```
-## Next Up
+**Routing is handled by `transition.md`** — do NOT emit a separate "Next Up" block here.
-**Phase {X+1}: {Name}** — {Goal}
+After `verify_phase_goal` passes (or human approves), the workflow ends. The user runs `/gsd:progress` or the transition workflow handles next-step routing.
-`/gsd:plan-phase {X+1}`
-
-`/clear` first for fresh context
-```
-
-**If milestone complete:**
-```
-MILESTONE COMPLETE!
-
-All {N} phases executed.
-
-`/gsd:complete-milestone`
-```
+**Exception:** If `gaps_found`, the `verify_phase_goal` step already presents the gap-closure path (`/gsd:plan-phase {X} --gaps`). No additional routing needed.
diff --git a/get-shit-done/workflows/transition.md b/get-shit-done/workflows/transition.md
index d01f53c6c..eec8132a7 100644
--- a/get-shit-done/workflows/transition.md
+++ b/get-shit-done/workflows/transition.md
@@ -358,10 +358,18 @@ This returns all phases with goals, disk status, and completion info.
Read ROADMAP.md to get the next phase's name and goal.
+**Check if next phase has CONTEXT.md:**
+
+```bash
+ls .planning/phases/*[X+1]*/*-CONTEXT.md 2>/dev/null
+```
+
**If next phase exists:**
+**If CONTEXT.md exists:**
+
```
Phase [X] marked complete.
@@ -372,10 +380,24 @@ Next: Phase [X+1] — [Name]
Exit skill and invoke SlashCommand("/gsd:plan-phase [X+1]")
+**If CONTEXT.md does NOT exist:**
+
+```
+Phase [X] marked complete.
+
+Next: Phase [X+1] — [Name]
+
+⚡ Auto-continuing: Discuss Phase [X+1] first
+```
+
+Exit skill and invoke SlashCommand("/gsd:discuss-phase [X+1]")
+
+**If CONTEXT.md does NOT exist:**
+
```
## ✓ Phase [X] Complete
@@ -385,6 +407,31 @@ Exit skill and invoke SlashCommand("/gsd:plan-phase [X+1]")
**Phase [X+1]: [Name]** — [Goal from ROADMAP.md]
+`/gsd:discuss-phase [X+1]` — gather context and clarify approach
+
+`/clear` first → fresh context window
+
+---
+
+**Also available:**
+- `/gsd:plan-phase [X+1]` — skip discussion, plan directly
+- `/gsd:research-phase [X+1]` — investigate unknowns
+
+---
+```
+
+**If CONTEXT.md exists:**
+
+```
+## ✓ Phase [X] Complete
+
+---
+
+## ▶ Next Up
+
+**Phase [X+1]: [Name]** — [Goal from ROADMAP.md]
+✓ Context gathered, ready to plan
+
`/gsd:plan-phase [X+1]`
`/clear` first → fresh context window
@@ -392,9 +439,8 @@ Exit skill and invoke SlashCommand("/gsd:plan-phase [X+1]")
---
**Also available:**
-- `/gsd:discuss-phase [X+1]` — gather context first
+- `/gsd:discuss-phase [X+1]` — revisit context
- `/gsd:research-phase [X+1]` — investigate unknowns
-- Review roadmap
---
```