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.
- package/agents/gsd-debugger.md +20 -1
- package/agents/gsd-executor.md +31 -0
- package/agents/gsd-phase-researcher.md +14 -4
- package/agents/gsd-planner.md +19 -0
- package/agents/gsd-project-researcher.md +5 -11
- package/agents/gsd-research-synthesizer.md +9 -0
- package/command/gsd/add-todo.md +11 -0
- package/command/gsd/audit-milestone.md +21 -1
- package/command/gsd/check-todos.md +11 -0
- package/command/gsd/debug.md +21 -0
- package/command/gsd/discuss-phase.md +7 -1
- package/command/gsd/execute-phase.md +41 -5
- package/command/gsd/help.md +105 -0
- package/command/gsd/new-milestone.md +268 -263
- package/command/gsd/new-project.md +118 -9
- package/command/gsd/pause-work.md +11 -0
- package/command/gsd/plan-milestone-gaps.md +11 -0
- package/command/gsd/plan-phase.md +77 -26
- package/command/gsd/progress.md +9 -0
- package/command/gsd/quick.md +309 -0
- package/command/gsd/remove-phase.md +11 -0
- package/command/gsd/research-phase.md +22 -1
- package/command/gsd/resume-work.md +1 -0
- package/command/gsd/set-profile.md +106 -0
- package/command/gsd/settings.md +136 -0
- package/command/gsd/update.md +1 -1
- package/get-shit-done/references/checkpoints.md +318 -28
- package/get-shit-done/references/model-profiles.md +73 -0
- package/get-shit-done/references/planning-config.md +94 -0
- package/get-shit-done/references/verification-patterns.md +17 -0
- package/get-shit-done/templates/phase-prompt.md +18 -27
- package/get-shit-done/workflows/complete-milestone.md +11 -0
- package/get-shit-done/workflows/diagnose-issues.md +11 -0
- package/get-shit-done/workflows/discovery-phase.md +11 -10
- package/get-shit-done/workflows/discuss-phase.md +11 -0
- package/get-shit-done/workflows/execute-phase.md +68 -9
- package/get-shit-done/workflows/execute-plan.md +47 -4
- package/get-shit-done/workflows/map-codebase.md +35 -2
- package/get-shit-done/workflows/resume-project.md +4 -0
- package/get-shit-done/workflows/transition.md +2 -2
- package/get-shit-done/workflows/verify-phase.md +2 -3
- package/get-shit-done/workflows/verify-work.md +33 -0
- package/package.json +1 -1
package/agents/gsd-debugger.md
CHANGED
|
@@ -986,7 +986,16 @@ mkdir -p .planning/debug/resolved
|
|
|
986
986
|
mv .planning/debug/{slug}.md .planning/debug/resolved/
|
|
987
987
|
```
|
|
988
988
|
|
|
989
|
-
|
|
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
|
|
package/agents/gsd-executor.md
CHANGED
|
@@ -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
|
|
166
|
+
**Query templates:**
|
|
167
167
|
```
|
|
168
168
|
Stack discovery:
|
|
169
|
-
- "[technology] best practices
|
|
170
|
-
- "[technology] recommended libraries
|
|
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
|
-
-
|
|
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
|
package/agents/gsd-planner.md
CHANGED
|
@@ -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
|
|
209
|
+
**Query templates:**
|
|
210
210
|
```
|
|
211
211
|
Ecosystem discovery:
|
|
212
|
-
- "[technology] best practices
|
|
213
|
-
- "[technology] recommended libraries
|
|
214
|
-
- "[technology] vs [alternative]
|
|
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
|
-
-
|
|
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
|
package/command/gsd/add-todo.md
CHANGED
|
@@ -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
|
package/command/gsd/debug.md
CHANGED
|
@@ -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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
234
|
-
Task(prompt="Execute plan at {plan_02_path}\n\nPlan
|
|
235
|
-
Task(prompt="Execute plan at {plan_03_path}\n\nPlan
|
|
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.
|
package/command/gsd/help.md
CHANGED
|
@@ -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:**
|