gsd-opencode 1.6.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/agents/gsd-debugger.md +20 -1
  2. package/agents/gsd-executor.md +31 -0
  3. package/agents/gsd-phase-researcher.md +14 -4
  4. package/agents/gsd-planner.md +19 -0
  5. package/agents/gsd-project-researcher.md +5 -11
  6. package/agents/gsd-research-synthesizer.md +9 -0
  7. package/command/gsd/add-todo.md +11 -0
  8. package/command/gsd/audit-milestone.md +21 -1
  9. package/command/gsd/check-todos.md +11 -0
  10. package/command/gsd/debug.md +21 -0
  11. package/command/gsd/discuss-phase.md +7 -1
  12. package/command/gsd/execute-phase.md +41 -5
  13. package/command/gsd/help.md +105 -0
  14. package/command/gsd/new-milestone.md +268 -263
  15. package/command/gsd/new-project.md +118 -9
  16. package/command/gsd/pause-work.md +11 -0
  17. package/command/gsd/plan-milestone-gaps.md +11 -0
  18. package/command/gsd/plan-phase.md +77 -26
  19. package/command/gsd/progress.md +9 -0
  20. package/command/gsd/quick.md +309 -0
  21. package/command/gsd/remove-phase.md +11 -0
  22. package/command/gsd/research-phase.md +22 -1
  23. package/command/gsd/resume-work.md +1 -0
  24. package/command/gsd/set-profile.md +106 -0
  25. package/command/gsd/settings.md +136 -0
  26. package/command/gsd/update.md +1 -1
  27. package/get-shit-done/references/checkpoints.md +318 -28
  28. package/get-shit-done/references/model-profiles.md +73 -0
  29. package/get-shit-done/references/planning-config.md +94 -0
  30. package/get-shit-done/references/verification-patterns.md +17 -0
  31. package/get-shit-done/templates/phase-prompt.md +18 -27
  32. package/get-shit-done/workflows/complete-milestone.md +11 -0
  33. package/get-shit-done/workflows/diagnose-issues.md +11 -0
  34. package/get-shit-done/workflows/discovery-phase.md +11 -10
  35. package/get-shit-done/workflows/discuss-phase.md +11 -0
  36. package/get-shit-done/workflows/execute-phase.md +68 -9
  37. package/get-shit-done/workflows/execute-plan.md +47 -4
  38. package/get-shit-done/workflows/map-codebase.md +35 -2
  39. package/get-shit-done/workflows/resume-project.md +4 -0
  40. package/get-shit-done/workflows/transition.md +2 -2
  41. package/get-shit-done/workflows/verify-phase.md +2 -3
  42. package/get-shit-done/workflows/verify-work.md +33 -0
  43. package/package.json +1 -1
@@ -986,7 +986,16 @@ mkdir -p .planning/debug/resolved
986
986
  mv .planning/debug/{slug}.md .planning/debug/resolved/
987
987
  ```
988
988
 
989
- Commit:
989
+ **Check planning config:**
990
+
991
+ ```bash
992
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
993
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
994
+ ```
995
+
996
+ **Commit the fix:**
997
+
998
+ If `COMMIT_PLANNING_DOCS=true` (default):
990
999
  ```bash
991
1000
  git add -A
992
1001
  git commit -m "fix: {brief description}
@@ -995,6 +1004,16 @@ Root cause: {root_cause}
995
1004
  Debug session: .planning/debug/resolved/{slug}.md"
996
1005
  ```
997
1006
 
1007
+ If `COMMIT_PLANNING_DOCS=false`:
1008
+ ```bash
1009
+ # Only commit code changes, exclude .planning/
1010
+ git add -A
1011
+ git reset .planning/
1012
+ git commit -m "fix: {brief description}
1013
+
1014
+ Root cause: {root_cause}"
1015
+ ```
1016
+
998
1017
  Report completion and offer next steps.
999
1018
  </step>
1000
1019
 
@@ -45,8 +45,20 @@ Options:
45
45
  ```
46
46
 
47
47
  **If .planning/ doesn't exist:** Error - project not initialized.
48
+
49
+ **Load planning config:**
50
+
51
+ ```bash
52
+ # Check if planning docs should be committed (default: true)
53
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
54
+ # Auto-detect gitignored (overrides config)
55
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
56
+ ```
57
+
58
+ Store `COMMIT_PLANNING_DOCS` for use in git operations.
48
59
  </step>
49
60
 
61
+
50
62
  <step name="load_plan">
51
63
  read the plan file provided in your prompt context.
52
64
 
@@ -341,6 +353,21 @@ Type "done" when authenticated.
341
353
  </authentication_gates>
342
354
 
343
355
  <checkpoint_protocol>
356
+
357
+ **CRITICAL: Automation before verification**
358
+
359
+ Before any `checkpoint:human-verify`, ensure verification environment is ready. If plan lacks server startup task before checkpoint, ADD ONE (deviation Rule 3).
360
+
361
+ For full automation-first patterns, server lifecycle, CLI handling, and error recovery:
362
+ **See @~/.config/opencode/get-shit-done/references/checkpoints.md**
363
+
364
+ **Quick reference:**
365
+ - Users NEVER run CLI commands - OpenCode does all automation
366
+ - Users ONLY visit URLs, click UI, evaluate visuals, provide secrets
367
+ - OpenCode starts servers, seeds databases, configures env vars
368
+
369
+ ---
370
+
344
371
  When encountering `type="checkpoint:*"`:
345
372
 
346
373
  **STOP immediately.** Do not continue to next task.
@@ -698,6 +725,10 @@ Resume file: [path to .continue-here if exists, else "None"]
698
725
  <final_commit>
699
726
  After SUMMARY.md and STATE.md updates:
700
727
 
728
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations for planning files, log "Skipping planning docs commit (commit_docs: false)"
729
+
730
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
731
+
701
732
  **1. Stage execution artifacts:**
702
733
 
703
734
  ```bash
@@ -163,11 +163,11 @@ For finding what exists, community patterns, real-world usage.
163
163
  - "How do people solve Y?"
164
164
  - "Common mistakes with Z"
165
165
 
166
- **Query templates (use current year):**
166
+ **Query templates:**
167
167
  ```
168
168
  Stack discovery:
169
- - "[technology] best practices 2025"
170
- - "[technology] recommended libraries 2025"
169
+ - "[technology] best practices [current year]"
170
+ - "[technology] recommended libraries [current year]"
171
171
 
172
172
  Pattern discovery:
173
173
  - "how to build [type of thing] with [technology]"
@@ -179,7 +179,7 @@ Problem discovery:
179
179
  ```
180
180
 
181
181
  **Best practices:**
182
- - Include current year for freshness
182
+ - Always include the current year (check today's date) for freshness
183
183
  - Use multiple query variations
184
184
  - Cross-verify findings with authoritative sources
185
185
  - Mark webfetch-only findings as LOW confidence
@@ -188,6 +188,7 @@ Problem discovery:
188
188
 
189
189
  **CRITICAL:** webfetch findings must be verified.
190
190
 
191
+ ```
191
192
  For each webfetch finding:
192
193
 
193
194
  1. Can I verify with Context7?
@@ -455,6 +456,11 @@ PHASE_DIR=$(ls -d .planning/phases/${PADDED_PHASE}-* .planning/phases/${PHASE}-*
455
456
 
456
457
  # read CONTEXT.md if exists (from /gsd-discuss-phase)
457
458
  cat "${PHASE_DIR}"/*-CONTEXT.md 2>/dev/null
459
+
460
+ # Check if planning docs should be committed (default: true)
461
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
462
+ # Auto-detect gitignored (overrides config)
463
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
458
464
  ```
459
465
 
460
466
  **If CONTEXT.md exists**, it contains user decisions that MUST constrain your research:
@@ -531,6 +537,10 @@ Where `PHASE_DIR` is the full path (e.g., `.planning/phases/01-foundation`)
531
537
 
532
538
  ## Step 6: Commit Research
533
539
 
540
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations, log "Skipping planning docs commit (commit_docs: false)"
541
+
542
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
543
+
534
544
  ```bash
535
545
  git add "${PHASE_DIR}/${PADDED_PHASE}-RESEARCH.md"
536
546
  git commit -m "docs(${PHASE}): research phase domain
@@ -959,6 +959,10 @@ After making edits, self-check:
959
959
 
960
960
  ### Step 6: Commit Revised Plans
961
961
 
962
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations, log "Skipping planning docs commit (commit_docs: false)"
963
+
964
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
965
+
962
966
  ```bash
963
967
  git add .planning/phases/${PHASE}-*/${PHASE}-*-PLAN.md
964
968
  git commit -m "fix(${PHASE}): revise plans based on checker feedback"
@@ -1004,6 +1008,17 @@ read `.planning/STATE.md` and parse:
1004
1008
  - Blockers/concerns (things this phase may address)
1005
1009
 
1006
1010
  If STATE.md missing but .planning/ exists, offer to reconstruct or continue without.
1011
+
1012
+ **Load planning config:**
1013
+
1014
+ ```bash
1015
+ # Check if planning docs should be committed (default: true)
1016
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
1017
+ # Auto-detect gitignored (overrides config)
1018
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
1019
+ ```
1020
+
1021
+ Store `COMMIT_PLANNING_DOCS` for use in git operations.
1007
1022
  </step>
1008
1023
 
1009
1024
  <step name="load_codebase_context">
@@ -1215,6 +1230,10 @@ Update ROADMAP.md to finalize phase placeholders created by add-phase or insert-
1215
1230
  <step name="git_commit">
1216
1231
  Commit phase plan(s) and updated roadmap:
1217
1232
 
1233
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations, log "Skipping planning docs commit (commit_docs: false)"
1234
+
1235
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
1236
+
1218
1237
  ```bash
1219
1238
  git add .planning/phases/${PHASE}-*/${PHASE}-*-PLAN.md .planning/ROADMAP.md
1220
1239
  git commit -m "docs(${PHASE}): create phase plan
@@ -206,12 +206,12 @@ For finding what exists, community patterns, real-world usage.
206
206
  - "Common mistakes with Z"
207
207
  - Ecosystem surveys
208
208
 
209
- **Query templates (use current year):**
209
+ **Query templates:**
210
210
  ```
211
211
  Ecosystem discovery:
212
- - "[technology] best practices 2025"
213
- - "[technology] recommended libraries 2025"
214
- - "[technology] vs [alternative] 2025"
212
+ - "[technology] best practices [current year]"
213
+ - "[technology] recommended libraries [current year]"
214
+ - "[technology] vs [alternative] [current year]"
215
215
 
216
216
  Pattern discovery:
217
217
  - "how to build [type of thing] with [technology]"
@@ -225,13 +225,7 @@ Problem discovery:
225
225
  ```
226
226
 
227
227
  **Best practices:**
228
- - Include current year for freshness
229
- - Use multiple query variations
230
- - Cross-verify findings with authoritative sources
231
- - Mark webfetch-only findings as LOW confidence
232
-
233
- **Best practices:**
234
- - Include current year for freshness
228
+ - Always include the current year (check today's date) for freshness
235
229
  - Use multiple query variations
236
230
  - Cross-verify findings with authoritative sources
237
231
  - Mark webfetch-only findings as LOW confidence
@@ -51,6 +51,11 @@ cat .planning/research/STACK.md
51
51
  cat .planning/research/FEATURES.md
52
52
  cat .planning/research/ARCHITECTURE.md
53
53
  cat .planning/research/PITFALLS.md
54
+
55
+ # Check if planning docs should be committed (default: true)
56
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
57
+ # Auto-detect gitignored (overrides config)
58
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
54
59
  ```
55
60
 
56
61
  Parse each file to extract:
@@ -128,6 +133,10 @@ write to `.planning/research/SUMMARY.md`
128
133
 
129
134
  The 4 parallel researcher agents write files but do NOT commit. You commit everything together.
130
135
 
136
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations, log "Skipping planning docs commit (commit_docs: false)"
137
+
138
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
139
+
131
140
  ```bash
132
141
  git add .planning/research/
133
142
  git commit -m "docs: complete project research
@@ -126,6 +126,17 @@ If `.planning/STATE.md` exists:
126
126
  <step name="git_commit">
127
127
  Commit the todo and any updated state:
128
128
 
129
+ **Check planning config:**
130
+
131
+ ```bash
132
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
133
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
134
+ ```
135
+
136
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations, log "Todo saved (not committed - commit_docs: false)"
137
+
138
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
139
+
129
140
  ```bash
130
141
  git add .planning/todos/pending/[filename]
131
142
  [ -f .planning/STATE.md ] && git add .planning/STATE.md
@@ -7,6 +7,7 @@ tools:
7
7
  - glob
8
8
  - grep
9
9
  - bash
10
+
10
11
  - write
11
12
  ---
12
13
 
@@ -38,6 +39,24 @@ glob: .planning/phases/*/*-VERIFICATION.md
38
39
 
39
40
  <process>
40
41
 
42
+ ## 0. Resolve Model Profile
43
+
44
+ read model profile for agent spawning:
45
+
46
+ ```bash
47
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
48
+ ```
49
+
50
+ Default to "balanced" if not set.
51
+
52
+ **Model lookup table:**
53
+
54
+ | Agent | quality | balanced | budget |
55
+ |-------|---------|----------|--------|
56
+ | gsd-integration-checker | sonnet | sonnet | haiku |
57
+
58
+ Store resolved model for use in Task call below.
59
+
41
60
  ## 1. Determine Milestone Scope
42
61
 
43
62
  ```bash
@@ -82,7 +101,8 @@ Phase exports: {from SUMMARYs}
82
101
  API routes: {routes created}
83
102
 
84
103
  Verify cross-phase wiring and E2E user flows.",
85
- subagent_type="gsd-integration-checker"
104
+ subagent_type="gsd-integration-checker",
105
+ model="{integration_checker_model}"
86
106
  )
87
107
  ```
88
108
 
@@ -177,6 +177,17 @@ Update STATE.md "### Pending Todos" section if exists.
177
177
  <step name="git_commit">
178
178
  If todo was moved to done/, commit the change:
179
179
 
180
+ **Check planning config:**
181
+
182
+ ```bash
183
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
184
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
185
+ ```
186
+
187
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations, log "Todo moved (not committed - commit_docs: false)"
188
+
189
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
190
+
180
191
  ```bash
181
192
  git add .planning/todos/done/[filename]
182
193
  git rm --cached .planning/todos/pending/[filename] 2>/dev/null || true
@@ -5,6 +5,7 @@ argument-hint: [issue description]
5
5
  tools:
6
6
  - read
7
7
  - bash
8
+
8
9
  - question
9
10
  ---
10
11
 
@@ -27,6 +28,24 @@ ls .planning/debug/*.md 2>/dev/null | grep -v resolved | head -5
27
28
 
28
29
  <process>
29
30
 
31
+ ## 0. Resolve Model Profile
32
+
33
+ read model profile for agent spawning:
34
+
35
+ ```bash
36
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
37
+ ```
38
+
39
+ Default to "balanced" if not set.
40
+
41
+ **Model lookup table:**
42
+
43
+ | Agent | quality | balanced | budget |
44
+ |-------|---------|----------|--------|
45
+ | gsd-debugger | opus | sonnet | sonnet |
46
+
47
+ Store resolved model for use in Task calls below.
48
+
30
49
  ## 1. Check Active Sessions
31
50
 
32
51
  If active sessions exist AND no $ARGUMENTS:
@@ -81,6 +100,7 @@ Create: .planning/debug/{slug}.md
81
100
  Task(
82
101
  prompt=filled_prompt,
83
102
  subagent_type="gsd-debugger",
103
+ model="{debugger_model}",
84
104
  description="Debug {slug}"
85
105
  )
86
106
  ```
@@ -133,6 +153,7 @@ goal: find_and_fix
133
153
  Task(
134
154
  prompt=continuation_prompt,
135
155
  subagent_type="gsd-debugger",
156
+ model="{debugger_model}",
136
157
  description="Continue debug {slug}"
137
158
  )
138
159
  ```
@@ -2,7 +2,13 @@
2
2
  name: gsd-discuss-phase
3
3
  description: Gather phase context through adaptive questioning before planning
4
4
  argument-hint: "<phase>"
5
- tools: [read, write, bash, glob, grep, question]
5
+ tools:
6
+ - read
7
+ - write
8
+ - bash
9
+ - glob
10
+ - grep
11
+ - question
6
12
  ---
7
13
 
8
14
  <objective>
@@ -9,6 +9,7 @@ tools:
9
9
  - glob
10
10
  - grep
11
11
  - bash
12
+
12
13
  - todowrite
13
14
  - question
14
15
  ---
@@ -37,6 +38,24 @@ Phase: $ARGUMENTS
37
38
  </context>
38
39
 
39
40
  <process>
41
+ 0. **Resolve Model Profile**
42
+
43
+ read model profile for agent spawning:
44
+ ```bash
45
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
46
+ ```
47
+
48
+ Default to "balanced" if not set.
49
+
50
+ **Model lookup table:**
51
+
52
+ | Agent | quality | balanced | budget |
53
+ |-------|---------|----------|--------|
54
+ | gsd-executor | opus | sonnet | sonnet |
55
+ | gsd-verifier | sonnet | sonnet | haiku |
56
+
57
+ Store resolved models for use in Task calls below.
58
+
40
59
  1. **Validate phase exists**
41
60
  - Find phase directory matching argument
42
61
  - Count PLAN.md files
@@ -78,6 +97,11 @@ Phase: $ARGUMENTS
78
97
  **If clean:** Continue to verification.
79
98
 
80
99
  7. **Verify phase goal**
100
+ Check config: `WORKFLOW_VERIFIER=$(cat .planning/config.json 2>/dev/null | grep -o '"verifier"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")`
101
+
102
+ **If `workflow.verifier` is `false`:** Skip to step 8 (treat as passed).
103
+
104
+ **Otherwise:**
81
105
  - Spawn `gsd-verifier` subagent with phase directory and goal
82
106
  - Verifier checks must_haves against actual codebase (not SUMMARY claims)
83
107
  - Creates VERIFICATION.md with detailed report
@@ -98,7 +122,9 @@ Phase: $ARGUMENTS
98
122
  - Skip if: REQUIREMENTS.md doesn't exist, or phase has no Requirements line
99
123
 
100
124
  10. **Commit phase completion**
101
- Bundle all phase metadata updates in one commit:
125
+ Check `COMMIT_PLANNING_DOCS` from config.json (default: true).
126
+ If false: Skip git operations for .planning/ files.
127
+ If true: Bundle all phase metadata updates in one commit:
102
128
  - Stage: `git add .planning/ROADMAP.md .planning/STATE.md`
103
129
  - Stage REQUIREMENTS.md if updated: `git add .planning/REQUIREMENTS.md`
104
130
  - Commit: `docs({phase}): complete {phase-name} phase`
@@ -227,12 +253,22 @@ After user runs /gsd-plan-phase {Z} --gaps:
227
253
  <wave_execution>
228
254
  **Parallel spawning:**
229
255
 
230
- Spawn all plans in a wave with a single message containing multiple Task calls:
256
+ Before spawning, read file contents. The `@` syntax does not work across Task() boundaries.
257
+
258
+ ```bash
259
+ # read each plan and STATE.md
260
+ PLAN_01_CONTENT=$(cat "{plan_01_path}")
261
+ PLAN_02_CONTENT=$(cat "{plan_02_path}")
262
+ PLAN_03_CONTENT=$(cat "{plan_03_path}")
263
+ STATE_CONTENT=$(cat .planning/STATE.md)
264
+ ```
265
+
266
+ Spawn all plans in a wave with a single message containing multiple Task calls, with inlined content:
231
267
 
232
268
  ```
233
- Task(prompt="Execute plan at {plan_01_path}\n\nPlan: @{plan_01_path}\nProject state: @.planning/STATE.md", subagent_type="gsd-executor")
234
- Task(prompt="Execute plan at {plan_02_path}\n\nPlan: @{plan_02_path}\nProject state: @.planning/STATE.md", subagent_type="gsd-executor")
235
- Task(prompt="Execute plan at {plan_03_path}\n\nPlan: @{plan_03_path}\nProject state: @.planning/STATE.md", subagent_type="gsd-executor")
269
+ Task(prompt="Execute plan at {plan_01_path}\n\nPlan:\n{plan_01_content}\n\nProject state:\n{state_content}", subagent_type="gsd-executor", model="{executor_model}")
270
+ Task(prompt="Execute plan at {plan_02_path}\n\nPlan:\n{plan_02_content}\n\nProject state:\n{state_content}", subagent_type="gsd-executor", model="{executor_model}")
271
+ Task(prompt="Execute plan at {plan_03_path}\n\nPlan:\n{plan_03_content}\n\nProject state:\n{state_content}", subagent_type="gsd-executor", model="{executor_model}")
236
272
  ```
237
273
 
238
274
  All three run in parallel. Task tool blocks until all complete.
@@ -129,6 +129,21 @@ Execute all plans in a phase.
129
129
 
130
130
  Usage: `/gsd-execute-phase 5`
131
131
 
132
+ ### Quick Mode
133
+
134
+ **`/gsd-quick`**
135
+ Execute small, ad-hoc tasks with GSD guarantees but skip optional agents.
136
+
137
+ Quick mode uses the same system with a shorter path:
138
+ - Spawns planner + executor (skips researcher, checker, verifier)
139
+ - Quick tasks live in `.planning/quick/` separate from planned phases
140
+ - Updates STATE.md tracking (not ROADMAP.md)
141
+
142
+ Use when you know exactly what to do and the task is small enough to not need research or verification.
143
+
144
+ Usage: `/gsd-quick`
145
+ Result: Creates `.planning/quick/NNN-slug/PLAN.md`, `.planning/quick/NNN-slug/SUMMARY.md`
146
+
132
147
  ### Roadmap Management
133
148
 
134
149
  **`/gsd-add-phase <description>`**
@@ -259,6 +274,60 @@ List pending todos and select one to work on.
259
274
  Usage: `/gsd-check-todos`
260
275
  Usage: `/gsd-check-todos api`
261
276
 
277
+ ### User Acceptance Testing
278
+
279
+ **`/gsd-verify-work [phase]`**
280
+ Validate built features through conversational UAT.
281
+
282
+ - Extracts testable deliverables from SUMMARY.md files
283
+ - Presents tests one at a time (yes/no responses)
284
+ - Automatically diagnoses failures and creates fix plans
285
+ - Ready for re-execution if issues found
286
+
287
+ Usage: `/gsd-verify-work 3`
288
+
289
+ ### Milestone Auditing
290
+
291
+ **`/gsd-audit-milestone [version]`**
292
+ Audit milestone completion against original intent.
293
+
294
+ - Reads all phase VERIFICATION.md files
295
+ - Checks requirements coverage
296
+ - Spawns integration checker for cross-phase wiring
297
+ - Creates MILESTONE-AUDIT.md with gaps and tech debt
298
+
299
+ Usage: `/gsd-audit-milestone`
300
+
301
+ **`/gsd-plan-milestone-gaps`**
302
+ Create phases to close gaps identified by audit.
303
+
304
+ - Reads MILESTONE-AUDIT.md and groups gaps into phases
305
+ - Prioritizes by requirement priority (must/should/nice)
306
+ - Adds gap closure phases to ROADMAP.md
307
+ - Ready for `/gsd-plan-phase` on new phases
308
+
309
+ Usage: `/gsd-plan-milestone-gaps`
310
+
311
+ ### Configuration
312
+
313
+ **`/gsd-settings`**
314
+ Configure workflow toggles and model profile interactively.
315
+
316
+ - Toggle researcher, plan checker, verifier agents
317
+ - Select model profile (quality/balanced/budget)
318
+ - Updates `.planning/config.json`
319
+
320
+ Usage: `/gsd-settings`
321
+
322
+ **`/gsd-set-profile <profile>`**
323
+ Quick switch model profile for GSD agents.
324
+
325
+ - `quality` — Opus everywhere except verification
326
+ - `balanced` — Opus for planning, Sonnet for execution (default)
327
+ - `budget` — Sonnet for writing, Haiku for research/verification
328
+
329
+ Usage: `/gsd-set-profile budget`
330
+
262
331
  ### Utility Commands
263
332
 
264
333
  **`/gsd-help`**
@@ -274,6 +343,15 @@ See what's changed since your installed version.
274
343
 
275
344
  Usage: `/gsd-whats-new`
276
345
 
346
+ **`/gsd-update`**
347
+ Update GSD to latest version with changelog preview.
348
+
349
+ - Shows what changed before updating
350
+ - Confirms before running install
351
+ - Better than raw `npx gsd-opencode`
352
+
353
+ Usage: `/gsd-update`
354
+
277
355
  ## Files & Structure
278
356
 
279
357
  ```
@@ -322,6 +400,33 @@ Set during `/gsd-new-project`:
322
400
 
323
401
  Change anytime by editing `.planning/config.json`
324
402
 
403
+ ## Planning Configuration
404
+
405
+ Configure how planning artifacts are managed in `.planning/config.json`:
406
+
407
+ **`planning.commit_docs`** (default: `true`)
408
+ - `true`: Planning artifacts committed to git (standard workflow)
409
+ - `false`: Planning artifacts kept local-only, not committed
410
+
411
+ When `commit_docs: false`:
412
+ - Add `.planning/` to your `.gitignore`
413
+ - Useful for OSS contributions, client projects, or keeping planning private
414
+ - All planning files still work normally, just not tracked in git
415
+
416
+ **`planning.search_gitignored`** (default: `false`)
417
+ - `true`: Add `--no-ignore` to broad ripgrep searches
418
+ - Only needed when `.planning/` is gitignored and you want project-wide searches to include it
419
+
420
+ Example config:
421
+ ```json
422
+ {
423
+ "planning": {
424
+ "commit_docs": false,
425
+ "search_gitignored": true
426
+ }
427
+ }
428
+ ```
429
+
325
430
  ## Common Workflows
326
431
 
327
432
  **Starting a new project:**