gsd-opencode 1.6.0 → 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 (44) 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 +2 -2
  27. package/command/gsd/whats-new.md +3 -3
  28. package/get-shit-done/references/checkpoints.md +318 -28
  29. package/get-shit-done/references/model-profiles.md +73 -0
  30. package/get-shit-done/references/planning-config.md +94 -0
  31. package/get-shit-done/references/verification-patterns.md +17 -0
  32. package/get-shit-done/templates/phase-prompt.md +18 -27
  33. package/get-shit-done/workflows/complete-milestone.md +11 -0
  34. package/get-shit-done/workflows/diagnose-issues.md +11 -0
  35. package/get-shit-done/workflows/discovery-phase.md +11 -10
  36. package/get-shit-done/workflows/discuss-phase.md +11 -0
  37. package/get-shit-done/workflows/execute-phase.md +68 -9
  38. package/get-shit-done/workflows/execute-plan.md +47 -4
  39. package/get-shit-done/workflows/map-codebase.md +35 -2
  40. package/get-shit-done/workflows/resume-project.md +4 -0
  41. package/get-shit-done/workflows/transition.md +2 -2
  42. package/get-shit-done/workflows/verify-phase.md +2 -3
  43. package/get-shit-done/workflows/verify-work.md +33 -0
  44. package/package.json +1 -1
@@ -620,6 +620,17 @@ git push origin v[X.Y]
620
620
 
621
621
  Commit milestone completion including archive files and deletions.
622
622
 
623
+ **Check planning config:**
624
+
625
+ ```bash
626
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
627
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
628
+ ```
629
+
630
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
631
+
632
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
633
+
623
634
  ```bash
624
635
  # Stage archive files (new)
625
636
  git add .planning/milestones/v[X.Y]-ROADMAP.md
@@ -156,6 +156,17 @@ For each gap in the Gaps section, add artifacts and missing fields:
156
156
 
157
157
  Update status in frontmatter to "diagnosed".
158
158
 
159
+ **Check planning config:**
160
+
161
+ ```bash
162
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
163
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
164
+ ```
165
+
166
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
167
+
168
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
169
+
159
170
  Commit the updated UAT.md:
160
171
  ```bash
161
172
  git add ".planning/phases/XX-name/{phase}-UAT.md"
@@ -107,16 +107,14 @@ For: Choosing between options, new external integration.
107
107
 
108
108
  5. **Cross-verify:** Any webfetch finding → confirm with Context7/official docs.
109
109
 
110
- 6. **Quality check:** Before finalizing findings, consult the gsd-researcher agent's verification protocols to avoid common research gaps.
111
-
112
- 7. **Create DISCOVERY.md** using ~/.config/opencode/get-shit-done/templates/discovery.md structure:
110
+ 6. **Create DISCOVERY.md** using ~/.config/opencode/get-shit-done/templates/discovery.md structure:
113
111
 
114
112
  - Summary with recommendation
115
113
  - Key findings per option
116
114
  - Code examples from Context7
117
115
  - Confidence level (should be MEDIUM-HIGH for Level 2)
118
116
 
119
- 8. Return to plan-phase.md.
117
+ 7. Return to plan-phase.md.
120
118
 
121
119
  **Output:** `.planning/phases/XX-name/DISCOVERY.md`
122
120
  </step>
@@ -160,18 +158,16 @@ For: Architectural decisions, novel problems, high-risk choices.
160
158
  - Mark what's verified vs assumed
161
159
  - Flag contradictions
162
160
 
163
- 6. **Quality check:** Before finalizing findings, consult the gsd-researcher agent's verification protocols to ensure comprehensive coverage and avoid common research gaps.
164
-
165
- 7. **Create comprehensive DISCOVERY.md:**
161
+ 6. **Create comprehensive DISCOVERY.md:**
166
162
 
167
163
  - Full structure from ~/.config/opencode/get-shit-done/templates/discovery.md
168
164
  - Quality report with source attribution
169
165
  - Confidence by finding
170
166
  - If LOW confidence on any critical finding → add validation checkpoints
171
167
 
172
- 8. **Confidence gate:** If overall confidence is LOW, present options before proceeding.
168
+ 7. **Confidence gate:** If overall confidence is LOW, present options before proceeding.
173
169
 
174
- 9. Return to plan-phase.md.
170
+ 8. Return to plan-phase.md.
175
171
 
176
172
  **Output:** `.planning/phases/XX-name/DISCOVERY.md` (comprehensive)
177
173
  </step>
@@ -277,8 +273,13 @@ NOTE: DISCOVERY.md is NOT committed separately. It will be committed with phase
277
273
  **Level 2 (Standard):**
278
274
  - Context7 consulted for all options
279
275
  - webfetch findings cross-verified
276
+ - DISCOVERY.md created with recommendation
277
+ - Confidence level MEDIUM or higher
278
+ - Ready to inform PLAN.md creation
280
279
 
281
- 7. Quality gate
280
+ **Level 3 (Deep Dive):**
281
+ - Discovery scope defined
282
+ - Context7 exhaustively consulted
282
283
  - All webfetch findings verified against authoritative sources
283
284
  - DISCOVERY.md created with comprehensive analysis
284
285
  - Quality report with source attribution
@@ -393,6 +393,17 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
393
393
  <step name="git_commit">
394
394
  Commit phase context:
395
395
 
396
+ **Check planning config:**
397
+
398
+ ```bash
399
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
400
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
401
+ ```
402
+
403
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
404
+
405
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
406
+
396
407
  ```bash
397
408
  git add "${PHASE_DIR}/${PADDED_PHASE}-CONTEXT.md"
398
409
  git commit -m "$(cat <<'EOF'
@@ -8,11 +8,32 @@ The orchestrator's job is coordination, not execution. Each subagent loads the f
8
8
 
9
9
  <required_reading>
10
10
  read STATE.md before any operation to load project context.
11
+ read config.json for planning behavior settings.
11
12
  </required_reading>
12
13
 
13
14
  <process>
14
15
 
15
- <step name="load_project_state" priority="first">
16
+ <step name="resolve_model_profile" priority="first">
17
+ read model profile for agent spawning:
18
+
19
+ ```bash
20
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
21
+ ```
22
+
23
+ Default to "balanced" if not set.
24
+
25
+ **Model lookup table:**
26
+
27
+ | Agent | quality | balanced | budget |
28
+ |-------|---------|----------|--------|
29
+ | gsd-executor | opus | sonnet | sonnet |
30
+ | gsd-verifier | sonnet | sonnet | haiku |
31
+ | general | — | — | — |
32
+
33
+ Store resolved models for use in Task calls below.
34
+ </step>
35
+
36
+ <step name="load_project_state">
16
37
  Before any operation, read project state:
17
38
 
18
39
  ```bash
@@ -33,6 +54,17 @@ Options:
33
54
  ```
34
55
 
35
56
  **If .planning/ doesn't exist:** Error - project not initialized.
57
+
58
+ **Load planning config:**
59
+
60
+ ```bash
61
+ # Check if planning docs should be committed (default: true)
62
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
63
+ # Auto-detect gitignored (overrides config)
64
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
65
+ ```
66
+
67
+ Store `COMMIT_PLANNING_DOCS` for use in git operations.
36
68
  </step>
37
69
 
38
70
  <step name="validate_phase">
@@ -158,9 +190,18 @@ Execute each wave in sequence. Autonomous plans within a wave run in parallel.
158
190
  - Bad: "Executing terrain generation plan"
159
191
  - Good: "Procedural terrain generator using Perlin noise — creates height maps, biome zones, and collision meshes. Required before vehicle physics can interact with ground."
160
192
 
161
- 2. **Spawn all autonomous agents in wave simultaneously:**
193
+ 2. **read files and spawn all autonomous agents in wave simultaneously:**
194
+
195
+ Before spawning, read file contents. The `@` syntax does not work across Task() boundaries - content must be inlined.
196
+
197
+ ```bash
198
+ # read each plan in the wave
199
+ PLAN_CONTENT=$(cat "{plan_path}")
200
+ STATE_CONTENT=$(cat .planning/STATE.md)
201
+ CONFIG_CONTENT=$(cat .planning/config.json 2>/dev/null)
202
+ ```
162
203
 
163
- Use Task tool with multiple parallel calls. Each agent gets prompt from subagent-task-prompt template:
204
+ Use Task tool with multiple parallel calls. Each agent gets prompt with inlined content:
164
205
 
165
206
  ```
166
207
  <objective>
@@ -177,9 +218,14 @@ Execute each wave in sequence. Autonomous plans within a wave run in parallel.
177
218
  </execution_context>
178
219
 
179
220
  <context>
180
- Plan: @{plan_path}
181
- Project state: @.planning/STATE.md
182
- Config: @.planning/config.json (if exists)
221
+ Plan:
222
+ {plan_content}
223
+
224
+ Project state:
225
+ {state_content}
226
+
227
+ Config (if exists):
228
+ {config_content}
183
229
  </context>
184
230
 
185
231
  <success_criteria>
@@ -248,7 +294,7 @@ Plans with `autonomous: false` require user interaction.
248
294
 
249
295
  1. **Spawn agent for checkpoint plan:**
250
296
  ```
251
- Task(prompt="{subagent-task-prompt}", subagent_type="general")
297
+ Task(prompt="{subagent-task-prompt}", subagent_type="gsd-executor", model="{executor_model}")
252
298
  ```
253
299
 
254
300
  2. **Agent runs until checkpoint:**
@@ -287,7 +333,8 @@ Plans with `autonomous: false` require user interaction.
287
333
  ```
288
334
  Task(
289
335
  prompt=filled_continuation_template,
290
- subagent_type="general"
336
+ subagent_type="gsd-executor",
337
+ model="{executor_model}"
291
338
  )
292
339
  ```
293
340
 
@@ -363,7 +410,8 @@ Phase goal: {goal from ROADMAP.md}
363
410
 
364
411
  Check must_haves against actual codebase. Create VERIFICATION.md.
365
412
  Verify what actually exists in the code.",
366
- subagent_type="gsd-verifier"
413
+ subagent_type="gsd-verifier",
414
+ model="{verifier_model}"
367
415
  )
368
416
  ```
369
417
 
@@ -456,6 +504,17 @@ Update ROADMAP.md to reflect phase completion:
456
504
  # Update status
457
505
  ```
458
506
 
507
+ **Check planning config:**
508
+
509
+ If `COMMIT_PLANNING_DOCS=false` (set in load_project_state):
510
+ - Skip all git operations for .planning/ files
511
+ - Planning docs exist locally but are gitignored
512
+ - Log: "Skipping planning docs commit (commit_docs: false)"
513
+ - Proceed to offer_next step
514
+
515
+ If `COMMIT_PLANNING_DOCS=true` (default):
516
+ - Continue with git operations below
517
+
459
518
  Commit phase completion (roadmap, state, verification):
460
519
  ```bash
461
520
  git add .planning/ROADMAP.md .planning/STATE.md .planning/phases/{phase_dir}/*-VERIFICATION.md
@@ -4,11 +4,32 @@ Execute a phase prompt (PLAN.md) and create the outcome summary (SUMMARY.md).
4
4
 
5
5
  <required_reading>
6
6
  read STATE.md before any operation to load project context.
7
+ read config.json for planning behavior settings.
8
+
9
+ @~/.config/opencode/get-shit-done/references/git-integration.md
7
10
  </required_reading>
8
11
 
9
12
  <process>
10
13
 
11
- <step name="load_project_state" priority="first">
14
+ <step name="resolve_model_profile" priority="first">
15
+ read model profile for agent spawning:
16
+
17
+ ```bash
18
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
19
+ ```
20
+
21
+ Default to "balanced" if not set.
22
+
23
+ **Model lookup table:**
24
+
25
+ | Agent | quality | balanced | budget |
26
+ |-------|---------|----------|--------|
27
+ | gsd-executor | opus | sonnet | sonnet |
28
+
29
+ Store resolved model for use in Task calls below.
30
+ </step>
31
+
32
+ <step name="load_project_state">
12
33
  Before any operation, read project state:
13
34
 
14
35
  ```bash
@@ -34,6 +55,17 @@ Options:
34
55
  **If .planning/ doesn't exist:** Error - project not initialized.
35
56
 
36
57
  This ensures every execution has full project context.
58
+
59
+ **Load planning config:**
60
+
61
+ ```bash
62
+ # Check if planning docs should be committed (default: true)
63
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
64
+ # Auto-detect gitignored (overrides config)
65
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
66
+ ```
67
+
68
+ Store `COMMIT_PLANNING_DOCS` for use in git operations.
37
69
  </step>
38
70
 
39
71
  <step name="identify_plan">
@@ -205,7 +237,7 @@ No segmentation benefit - execute entirely in main
205
237
  ```
206
238
  1. Run init_agent_tracking step first (see step below)
207
239
 
208
- 2. Use Task tool with subagent_type="gsd-executor":
240
+ 2. Use Task tool with subagent_type="gsd-executor" and model="{executor_model}":
209
241
 
210
242
  Prompt: "Execute plan at .planning/phases/{phase}-{plan}-PLAN.md
211
243
 
@@ -357,7 +389,7 @@ For Pattern A (fully autonomous) and Pattern C (decision-dependent), skip this s
357
389
 
358
390
  B. If routing = Subagent:
359
391
  ```
360
- Spawn Task tool with subagent_type="gsd-executor":
392
+ Spawn Task tool with subagent_type="gsd-executor" and model="{executor_model}":
361
393
 
362
394
  Prompt: "Execute tasks [task numbers/names] from plan at [plan path].
363
395
 
@@ -1511,6 +1543,17 @@ Commit execution metadata (SUMMARY + STATE + ROADMAP):
1511
1543
  **Note:** All task code has already been committed during execution (one commit per task).
1512
1544
  PLAN.md was already committed during plan-phase. This final commit captures execution results only.
1513
1545
 
1546
+ **Check planning config:**
1547
+
1548
+ If `COMMIT_PLANNING_DOCS=false` (set in load_project_state):
1549
+ - Skip all git operations for .planning/ files
1550
+ - Planning docs exist locally but are gitignored
1551
+ - Log: "Skipping planning docs commit (commit_docs: false)"
1552
+ - Proceed to next step
1553
+
1554
+ If `COMMIT_PLANNING_DOCS=true` (default):
1555
+ - Continue with git operations below
1556
+
1514
1557
  **1. Stage execution artifacts:**
1515
1558
 
1516
1559
  ```bash
@@ -1574,7 +1617,7 @@ lmn012o feat(08-02): create user registration endpoint
1574
1617
 
1575
1618
  Each task has its own commit, followed by one metadata commit documenting plan completion.
1576
1619
 
1577
- For commit message conventions, see ~/.config/opencode/get-shit-done/references/git-integration.md
1620
+ See `git-integration.md` (loaded via required_reading) for commit message conventions.
1578
1621
  </step>
1579
1622
 
1580
1623
  <step name="update_codebase_map">
@@ -22,7 +22,25 @@ Documents are reference material for OpenCode when planning/executing. Always in
22
22
 
23
23
  <process>
24
24
 
25
- <step name="check_existing" priority="first">
25
+ <step name="resolve_model_profile" priority="first">
26
+ read model profile for agent spawning:
27
+
28
+ ```bash
29
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
30
+ ```
31
+
32
+ Default to "balanced" if not set.
33
+
34
+ **Model lookup table:**
35
+
36
+ | Agent | quality | balanced | budget |
37
+ |-------|---------|----------|--------|
38
+ | gsd-codebase-mapper | sonnet | haiku | haiku |
39
+
40
+ Store resolved model for use in Task calls below.
41
+ </step>
42
+
43
+ <step name="check_existing">
26
44
  Check if .planning/codebase/ already exists:
27
45
 
28
46
  ```bash
@@ -73,7 +91,7 @@ Continue to spawn_agents.
73
91
  <step name="spawn_agents">
74
92
  Spawn 4 parallel gsd-codebase-mapper agents.
75
93
 
76
- Use Task tool with `subagent_type="gsd-codebase-mapper"` and `run_in_background=true` for parallel execution.
94
+ Use Task tool with `subagent_type="gsd-codebase-mapper"`, `model="{mapper_model}"`, and `run_in_background=true` for parallel execution.
77
95
 
78
96
  **CRITICAL:** Use the dedicated `gsd-codebase-mapper` agent, NOT `Explore`. The mapper agent writes documents directly.
79
97
 
@@ -82,6 +100,7 @@ Use Task tool with `subagent_type="gsd-codebase-mapper"` and `run_in_background=
82
100
  Task tool parameters:
83
101
  ```
84
102
  subagent_type: "gsd-codebase-mapper"
103
+ model: "{mapper_model}"
85
104
  run_in_background: true
86
105
  description: "Map codebase tech stack"
87
106
  ```
@@ -104,6 +123,7 @@ Explore thoroughly. write documents directly using templates. Return confirmatio
104
123
  Task tool parameters:
105
124
  ```
106
125
  subagent_type: "gsd-codebase-mapper"
126
+ model: "{mapper_model}"
107
127
  run_in_background: true
108
128
  description: "Map codebase architecture"
109
129
  ```
@@ -126,6 +146,7 @@ Explore thoroughly. write documents directly using templates. Return confirmatio
126
146
  Task tool parameters:
127
147
  ```
128
148
  subagent_type: "gsd-codebase-mapper"
149
+ model: "{mapper_model}"
129
150
  run_in_background: true
130
151
  description: "Map codebase conventions"
131
152
  ```
@@ -148,6 +169,7 @@ Explore thoroughly. write documents directly using templates. Return confirmatio
148
169
  Task tool parameters:
149
170
  ```
150
171
  subagent_type: "gsd-codebase-mapper"
172
+ model: "{mapper_model}"
151
173
  run_in_background: true
152
174
  description: "Map codebase concerns"
153
175
  ```
@@ -211,6 +233,17 @@ Continue to commit_codebase_map.
211
233
  <step name="commit_codebase_map">
212
234
  Commit the codebase map:
213
235
 
236
+ **Check planning config:**
237
+
238
+ ```bash
239
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
240
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
241
+ ```
242
+
243
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
244
+
245
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
246
+
214
247
  ```bash
215
248
  git add .planning/codebase/*.md
216
249
  git commit -m "$(cat <<'EOF'
@@ -13,6 +13,10 @@ Enables seamless session continuity for fully autonomous workflows.
13
13
  "Where were we?" should have an immediate, complete answer.
14
14
  </purpose>
15
15
 
16
+ <required_reading>
17
+ @~/.config/opencode/get-shit-done/references/continuation-format.md
18
+ </required_reading>
19
+
16
20
  <process>
17
21
 
18
22
  <step name="detect_existing_project">
@@ -433,7 +433,7 @@ Next: Phase [X+1] — [Name]
433
433
  ⚡ Auto-continuing: Plan Phase [X+1] in detail
434
434
  ```
435
435
 
436
- Exit skill and invoke "/gsd-plan-phase [X+1]"
436
+ Exit skill and invoke Command("/gsd-plan-phase [X+1]")
437
437
 
438
438
  </if>
439
439
 
@@ -478,7 +478,7 @@ Phase {X} marked complete.
478
478
  ⚡ Auto-continuing: Complete milestone and archive
479
479
  ```
480
480
 
481
- Exit skill and invoke "/gsd-complete-milestone {version}"
481
+ Exit skill and invoke Command("/gsd-complete-milestone {version}")
482
482
 
483
483
  </if>
484
484
 
@@ -18,9 +18,8 @@ Then verify each level against the actual codebase.
18
18
  </core_principle>
19
19
 
20
20
  <required_reading>
21
- **Load these references:**
22
- - ~/.config/opencode/get-shit-done/references/verification-patterns.md (detection patterns)
23
- - ~/.config/opencode/get-shit-done/templates/verification-report.md (output format)
21
+ @~/.config/opencode/get-shit-done/references/verification-patterns.md
22
+ @~/.config/opencode/get-shit-done/templates/verification-report.md
24
23
  </required_reading>
25
24
 
26
25
  <process>
@@ -20,6 +20,25 @@ No Pass/Fail buttons. No severity questions. Just: "Here's what should happen. D
20
20
 
21
21
  <process>
22
22
 
23
+ <step name="resolve_model_profile" priority="first">
24
+ read model profile for agent spawning:
25
+
26
+ ```bash
27
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
28
+ ```
29
+
30
+ Default to "balanced" if not set.
31
+
32
+ **Model lookup table:**
33
+
34
+ | Agent | quality | balanced | budget |
35
+ |-------|---------|----------|--------|
36
+ | gsd-planner | opus | opus | sonnet |
37
+ | gsd-plan-checker | sonnet | sonnet | haiku |
38
+
39
+ Store resolved models for use in Task calls below.
40
+ </step>
41
+
23
42
  <step name="check_active_session">
24
43
  **First: Check for active UAT sessions**
25
44
 
@@ -285,6 +304,17 @@ Clear Current Test section:
285
304
  [testing complete]
286
305
  ```
287
306
 
307
+ **Check planning config:**
308
+
309
+ ```bash
310
+ COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
311
+ git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
312
+ ```
313
+
314
+ **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
315
+
316
+ **If `COMMIT_PLANNING_DOCS=true` (default):**
317
+
288
318
  Commit the UAT file:
289
319
  ```bash
290
320
  git add ".planning/phases/XX-name/{phase}-UAT.md"
@@ -378,6 +408,7 @@ Plans must be executable prompts.
378
408
  </downstream_consumer>
379
409
  """,
380
410
  subagent_type="gsd-planner",
411
+ model="{planner_model}",
381
412
  description="Plan gap fixes for Phase {phase}"
382
413
  )
383
414
  ```
@@ -423,6 +454,7 @@ Return one of:
423
454
  </expected_output>
424
455
  """,
425
456
  subagent_type="gsd-plan-checker",
457
+ model="{checker_model}",
426
458
  description="Verify Phase {phase} fix plans"
427
459
  )
428
460
  ```
@@ -463,6 +495,7 @@ Do NOT replan from scratch unless issues are fundamental.
463
495
  </instructions>
464
496
  """,
465
497
  subagent_type="gsd-planner",
498
+ model="{planner_model}",
466
499
  description="Revise Phase {phase} plans"
467
500
  )
468
501
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-opencode",
3
- "version": "1.6.0",
3
+ "version": "1.9.0",
4
4
  "description": "A meta-prompting, context engineering and spec-driven development system for OpenCode by TÂCHES.",
5
5
  "keywords": [
6
6
  "opencode",