get-shit-done-cc 1.8.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.
@@ -42,7 +42,7 @@ Normalize phase input in step 2 before any directory lookups.
42
42
 
43
43
  <process>
44
44
 
45
- ## 1. Validate Environment
45
+ ## 1. Validate Environment and Resolve Model Profile
46
46
 
47
47
  ```bash
48
48
  ls .planning/ 2>/dev/null
@@ -50,6 +50,24 @@ ls .planning/ 2>/dev/null
50
50
 
51
51
  **If not found:** Error - user should run `/gsd:new-project` first.
52
52
 
53
+ **Resolve model profile for agent spawning:**
54
+
55
+ ```bash
56
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
57
+ ```
58
+
59
+ Default to "balanced" if not set.
60
+
61
+ **Model lookup table:**
62
+
63
+ | Agent | quality | balanced | budget |
64
+ |-------|---------|----------|--------|
65
+ | gsd-phase-researcher | opus | sonnet | haiku |
66
+ | gsd-planner | opus | opus | sonnet |
67
+ | gsd-plan-checker | sonnet | sonnet | haiku |
68
+
69
+ Store resolved models for use in Task calls below.
70
+
53
71
  ## 2. Parse and Normalize Arguments
54
72
 
55
73
  Extract from $ARGUMENTS:
@@ -107,6 +125,14 @@ fi
107
125
 
108
126
  **If `--skip-research` flag:** Skip to step 6.
109
127
 
128
+ **Check config for research setting:**
129
+
130
+ ```bash
131
+ WORKFLOW_RESEARCH=$(cat .planning/config.json 2>/dev/null | grep -o '"research"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
132
+ ```
133
+
134
+ **If `workflow.research` is `false` AND `--research` flag NOT set:** Skip to step 6.
135
+
110
136
  **Otherwise:**
111
137
 
112
138
  Check for existing research:
@@ -182,6 +208,7 @@ Write research findings to: {phase_dir}/{phase}-RESEARCH.md
182
208
  Task(
183
209
  prompt=research_prompt,
184
210
  subagent_type="gsd-phase-researcher",
211
+ model="{researcher_model}",
185
212
  description="Research Phase {phase}"
186
213
  )
187
214
  ```
@@ -205,21 +232,26 @@ ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null
205
232
 
206
233
  **If exists:** Offer: 1) Continue planning (add more plans), 2) View existing, 3) Replan from scratch. Wait for response.
207
234
 
208
- ## 7. Gather Context Paths
235
+ ## 7. Read Context Files
209
236
 
210
- Identify context files for the planner agent:
237
+ Read and store context file contents for the planner agent. The `@` syntax does not work across Task() boundaries - content must be inlined.
211
238
 
212
239
  ```bash
213
- # Required
214
- STATE=.planning/STATE.md
215
- ROADMAP=.planning/ROADMAP.md
216
- REQUIREMENTS=.planning/REQUIREMENTS.md
217
-
218
- # Optional (created by earlier steps or commands)
219
- CONTEXT="${PHASE_DIR}/${PHASE}-CONTEXT.md"
220
- RESEARCH="${PHASE_DIR}/${PHASE}-RESEARCH.md"
221
- VERIFICATION="${PHASE_DIR}/${PHASE}-VERIFICATION.md"
222
- UAT="${PHASE_DIR}/${PHASE}-UAT.md"
240
+ # Read required files
241
+ STATE_CONTENT=$(cat .planning/STATE.md)
242
+ ROADMAP_CONTENT=$(cat .planning/ROADMAP.md)
243
+
244
+ # Read optional files (empty string if missing)
245
+ REQUIREMENTS_CONTENT=$(cat .planning/REQUIREMENTS.md 2>/dev/null)
246
+ CONTEXT_CONTENT=$(cat "${PHASE_DIR}"/*-CONTEXT.md 2>/dev/null)
247
+ RESEARCH_CONTENT=$(cat "${PHASE_DIR}"/*-RESEARCH.md 2>/dev/null)
248
+
249
+ # Gap closure files (only if --gaps mode)
250
+ VERIFICATION_CONTENT=$(cat "${PHASE_DIR}"/*-VERIFICATION.md 2>/dev/null)
251
+ UAT_CONTENT=$(cat "${PHASE_DIR}"/*-UAT.md 2>/dev/null)
252
+
253
+ # Codebase intelligence (if exists)
254
+ INTEL_CONTENT=$(cat .planning/intel/summary.md 2>/dev/null)
223
255
  ```
224
256
 
225
257
  ## 8. Spawn gsd-planner Agent
@@ -233,7 +265,7 @@ Display stage banner:
233
265
  ◆ Spawning planner...
234
266
  ```
235
267
 
236
- Fill prompt and spawn:
268
+ Fill prompt with inlined content and spawn:
237
269
 
238
270
  ```markdown
239
271
  <planning_context>
@@ -242,23 +274,28 @@ Fill prompt and spawn:
242
274
  **Mode:** {standard | gap_closure}
243
275
 
244
276
  **Project State:**
245
- @.planning/STATE.md
277
+ {state_content}
246
278
 
247
279
  **Roadmap:**
248
- @.planning/ROADMAP.md
280
+ {roadmap_content}
249
281
 
250
282
  **Requirements (if exists):**
251
- @.planning/REQUIREMENTS.md
283
+ {requirements_content}
252
284
 
253
285
  **Phase Context (if exists):**
254
- @.planning/phases/{phase_dir}/{phase}-CONTEXT.md
286
+ {context_content}
255
287
 
256
288
  **Research (if exists):**
257
- @.planning/phases/{phase_dir}/{phase}-RESEARCH.md
289
+ {research_content}
258
290
 
259
291
  **Gap Closure (if --gaps mode):**
260
- @.planning/phases/{phase_dir}/{phase}-VERIFICATION.md
261
- @.planning/phases/{phase_dir}/{phase}-UAT.md
292
+ {verification_content}
293
+ {uat_content}
294
+
295
+ **Codebase Intel (if exists):**
296
+ <codebase-intel>
297
+ {intel_content}
298
+ </codebase-intel>
262
299
 
263
300
  </planning_context>
264
301
 
@@ -288,6 +325,7 @@ Before returning PLANNING COMPLETE:
288
325
  Task(
289
326
  prompt=filled_prompt,
290
327
  subagent_type="gsd-planner",
328
+ model="{planner_model}",
291
329
  description="Plan Phase {phase}"
292
330
  )
293
331
  ```
@@ -299,6 +337,8 @@ Parse planner output:
299
337
  **`## PLANNING COMPLETE`:**
300
338
  - Display: `Planner created {N} plan(s). Files on disk.`
301
339
  - If `--skip-verify`: Skip to step 13
340
+ - Check config: `WORKFLOW_PLAN_CHECK=$(cat .planning/config.json 2>/dev/null | grep -o '"plan_check"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")`
341
+ - If `workflow.plan_check` is `false`: Skip to step 13
302
342
  - Otherwise: Proceed to step 10
303
343
 
304
344
  **`## CHECKPOINT REACHED`:**
@@ -320,7 +360,17 @@ Display:
320
360
  ◆ Spawning plan checker...
321
361
  ```
322
362
 
323
- Fill checker prompt and spawn:
363
+ Read plans and requirements for the checker:
364
+
365
+ ```bash
366
+ # Read all plans in phase directory
367
+ PLANS_CONTENT=$(cat "${PHASE_DIR}"/*-PLAN.md 2>/dev/null)
368
+
369
+ # Read requirements (reuse from step 7 if available)
370
+ REQUIREMENTS_CONTENT=$(cat .planning/REQUIREMENTS.md 2>/dev/null)
371
+ ```
372
+
373
+ Fill checker prompt with inlined content and spawn:
324
374
 
325
375
  ```markdown
326
376
  <verification_context>
@@ -329,10 +379,10 @@ Fill checker prompt and spawn:
329
379
  **Phase Goal:** {goal from ROADMAP}
330
380
 
331
381
  **Plans to verify:**
332
- @.planning/phases/{phase_dir}/*-PLAN.md
382
+ {plans_content}
333
383
 
334
384
  **Requirements (if exists):**
335
- @.planning/REQUIREMENTS.md
385
+ {requirements_content}
336
386
 
337
387
  </verification_context>
338
388
 
@@ -347,6 +397,7 @@ Return one of:
347
397
  Task(
348
398
  prompt=checker_prompt,
349
399
  subagent_type="gsd-plan-checker",
400
+ model="{checker_model}",
350
401
  description="Verify Phase {phase} plans"
351
402
  )
352
403
  ```
@@ -371,6 +422,12 @@ Track: `iteration_count` (starts at 1 after initial plan + check)
371
422
 
372
423
  Display: `Sending back to planner for revision... (iteration {N}/3)`
373
424
 
425
+ Read current plans for revision context:
426
+
427
+ ```bash
428
+ PLANS_CONTENT=$(cat "${PHASE_DIR}"/*-PLAN.md 2>/dev/null)
429
+ ```
430
+
374
431
  Spawn gsd-planner with revision prompt:
375
432
 
376
433
  ```markdown
@@ -380,7 +437,7 @@ Spawn gsd-planner with revision prompt:
380
437
  **Mode:** revision
381
438
 
382
439
  **Existing plans:**
383
- @.planning/phases/{phase_dir}/*-PLAN.md
440
+ {plans_content}
384
441
 
385
442
  **Checker issues:**
386
443
  {structured_issues_from_checker}
@@ -388,7 +445,7 @@ Spawn gsd-planner with revision prompt:
388
445
  </revision_context>
389
446
 
390
447
  <instructions>
391
- Read existing PLAN.md files. Make targeted updates to address checker issues.
448
+ Make targeted updates to address checker issues.
392
449
  Do NOT replan from scratch unless issues are fundamental.
393
450
  Return what changed.
394
451
  </instructions>
@@ -398,6 +455,7 @@ Return what changed.
398
455
  Task(
399
456
  prompt=revision_prompt,
400
457
  subagent_type="gsd-planner",
458
+ model="{planner_model}",
401
459
  description="Revise Phase {phase} plans"
402
460
  )
403
461
  ```
@@ -52,6 +52,7 @@ If missing both ROADMAP.md and PROJECT.md: suggest `/gsd:new-project`.
52
52
  - Read `.planning/STATE.md` for living memory (position, decisions, issues)
53
53
  - Read `.planning/ROADMAP.md` for phase structure and objectives
54
54
  - Read `.planning/PROJECT.md` for current state (What This Is, Core Value, Requirements)
55
+ - Read `.planning/config.json` for settings (model_profile, workflow toggles)
55
56
  </step>
56
57
 
57
58
  <step name="recent">
@@ -80,6 +81,7 @@ If missing both ROADMAP.md and PROJECT.md: suggest `/gsd:new-project`.
80
81
  # [Project Name]
81
82
 
82
83
  **Progress:** [████████░░] 8/10 plans complete
84
+ **Profile:** [quality/balanced/budget]
83
85
 
84
86
  ## Recent Work
85
87
  - [Phase X, Plan Y]: [what was accomplished - 1 line]
@@ -0,0 +1,128 @@
1
+ ---
2
+ name: gsd:query-intel
3
+ description: Query codebase intelligence graph for dependencies and hotspots
4
+ argument-hint: "<dependents|hotspots> [file-path]"
5
+ allowed-tools:
6
+ - Bash
7
+ ---
8
+
9
+ <objective>
10
+ Query the codebase intelligence graph database for relationship information.
11
+
12
+ **Query types:**
13
+ - `dependents <file>` — What files depend on this file? (blast radius)
14
+ - `hotspots` — Which files have the most dependents? (change carefully)
15
+
16
+ Output: Formatted query results from graph.db
17
+ </objective>
18
+
19
+ <context>
20
+ This command exposes the graph query capabilities built by Phase 4 (Semantic Intelligence).
21
+
22
+ **Use for:**
23
+ - Checking blast radius before refactoring a core file
24
+ - Identifying high-impact files that need careful changes
25
+ - Understanding dependency relationships in the codebase
26
+
27
+ **Requires:** `.planning/intel/graph.db` (created by `/gsd:analyze-codebase` with entity generation)
28
+
29
+ If graph.db doesn't exist, the command will return an error suggesting to run analyze-codebase first.
30
+ </context>
31
+
32
+ <process>
33
+
34
+ ## Step 1: Parse arguments
35
+
36
+ Extract query type and optional file path from arguments.
37
+
38
+ **Arguments:** $ARGUMENTS
39
+
40
+ **Expected formats:**
41
+ - `dependents src/lib/db.ts` — query what depends on this file
42
+ - `hotspots` — query most-depended-on files
43
+ - `hotspots 10` — query top 10 hotspots (default: 5)
44
+
45
+ ## Step 2: Convert file path to entity ID
46
+
47
+ For `dependents` queries, convert the file path to entity ID format:
48
+ - `src/lib/db.ts` → `src-lib-db`
49
+ - Replace `/` with `-`, remove extension
50
+
51
+ ```bash
52
+ # Example conversion
53
+ FILE_PATH="src/lib/db.ts"
54
+ ENTITY_ID=$(echo "$FILE_PATH" | sed 's/\.[^.]*$//' | tr '/' '-')
55
+ ```
56
+
57
+ ## Step 3: Execute query
58
+
59
+ Run the appropriate query against the graph database:
60
+
61
+ **For dependents:**
62
+ ```bash
63
+ echo '{"action":"query","type":"dependents","target":"'$ENTITY_ID'","limit":20}' | node hooks/gsd-intel-index.js
64
+ ```
65
+
66
+ **For hotspots:**
67
+ ```bash
68
+ echo '{"action":"query","type":"hotspots","limit":5}' | node hooks/gsd-intel-index.js
69
+ ```
70
+
71
+ ## Step 4: Format and present results
72
+
73
+ Parse the JSON response and present in readable format.
74
+
75
+ **For dependents:**
76
+ ```
77
+ ## Files that depend on {file-path}
78
+
79
+ Found {count} dependents:
80
+
81
+ 1. src/api/users.ts
82
+ 2. src/api/auth.ts
83
+ 3. src/services/payment.ts
84
+ ...
85
+
86
+ **Blast radius:** {count} files would be affected by changes.
87
+ ```
88
+
89
+ **For hotspots:**
90
+ ```
91
+ ## Dependency Hotspots
92
+
93
+ These files have the most dependents — change carefully:
94
+
95
+ | Rank | File | Dependents |
96
+ |------|------|------------|
97
+ | 1 | src/lib/db.ts | 42 |
98
+ | 2 | src/types/user.ts | 35 |
99
+ | 3 | src/utils/format.ts | 28 |
100
+ ```
101
+
102
+ ## Step 5: Handle errors
103
+
104
+ **If graph.db doesn't exist:**
105
+ ```
106
+ No graph database found at .planning/intel/graph.db
107
+
108
+ Run /gsd:analyze-codebase first to build the dependency graph.
109
+ ```
110
+
111
+ **If entity not found:**
112
+ ```
113
+ No entity found for: {file-path}
114
+
115
+ The file may not be indexed yet. Try:
116
+ - /gsd:analyze-codebase to rebuild the index
117
+ - Check the file path is correct
118
+ ```
119
+
120
+ </process>
121
+
122
+ <success_criteria>
123
+ - [ ] Query type parsed from arguments
124
+ - [ ] File path converted to entity ID (for dependents)
125
+ - [ ] Query executed against graph.db
126
+ - [ ] Results formatted in readable markdown
127
+ - [ ] Errors handled gracefully with helpful messages
128
+ </success_criteria>
@@ -34,6 +34,27 @@ Orchestration is inline - no separate workflow file. Quick mode is deliberately
34
34
  </context>
35
35
 
36
36
  <process>
37
+ **Step 0: Resolve Model Profile**
38
+
39
+ Read model profile for agent spawning:
40
+
41
+ ```bash
42
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
43
+ ```
44
+
45
+ Default to "balanced" if not set.
46
+
47
+ **Model lookup table:**
48
+
49
+ | Agent | quality | balanced | budget |
50
+ |-------|---------|----------|--------|
51
+ | gsd-planner | opus | opus | sonnet |
52
+ | gsd-executor | opus | sonnet | sonnet |
53
+
54
+ Store resolved models for use in Task calls below.
55
+
56
+ ---
57
+
37
58
  **Step 1: Pre-flight validation**
38
59
 
39
60
  Check that an active GSD project exists:
@@ -145,6 +166,7 @@ Return: ## PLANNING COMPLETE with plan path
145
166
  </output>
146
167
  ",
147
168
  subagent_type="gsd-planner",
169
+ model="{planner_model}",
148
170
  description="Quick plan: ${DESCRIPTION}"
149
171
  )
150
172
  ```
@@ -178,6 +200,7 @@ Project state: @.planning/STATE.md
178
200
  </constraints>
179
201
  ",
180
202
  subagent_type="gsd-executor",
203
+ model="{executor_model}",
181
204
  description="Execute: ${DESCRIPTION}"
182
205
  )
183
206
  ```
@@ -31,6 +31,24 @@ Normalize phase input in step 1 before any directory lookups.
31
31
 
32
32
  <process>
33
33
 
34
+ ## 0. Resolve Model Profile
35
+
36
+ Read model profile for agent spawning:
37
+
38
+ ```bash
39
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
40
+ ```
41
+
42
+ Default to "balanced" if not set.
43
+
44
+ **Model lookup table:**
45
+
46
+ | Agent | quality | balanced | budget |
47
+ |-------|---------|----------|--------|
48
+ | gsd-phase-researcher | opus | sonnet | haiku |
49
+
50
+ Store resolved model for use in Task calls below.
51
+
34
52
  ## 1. Normalize and Validate Phase
35
53
 
36
54
  ```bash
@@ -132,6 +150,7 @@ Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
132
150
  Task(
133
151
  prompt=filled_prompt,
134
152
  subagent_type="gsd-phase-researcher",
153
+ model="{researcher_model}",
135
154
  description="Research Phase {phase}"
136
155
  )
137
156
  ```
@@ -165,6 +184,7 @@ Research file: @.planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
165
184
  Task(
166
185
  prompt=continuation_prompt,
167
186
  subagent_type="gsd-phase-researcher",
187
+ model="{researcher_model}",
168
188
  description="Continue research Phase {phase}"
169
189
  )
170
190
  ```
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: set-profile
3
+ description: Switch model profile for GSD agents (quality/balanced/budget)
4
+ arguments:
5
+ - name: profile
6
+ description: "Profile name: quality, balanced, or budget"
7
+ required: true
8
+ ---
9
+
10
+ <objective>
11
+ Switch the model profile used by GSD agents. This controls which Claude model each agent uses, balancing quality vs token spend.
12
+ </objective>
13
+
14
+ <profiles>
15
+ | Profile | Description |
16
+ |---------|-------------|
17
+ | **quality** | Opus everywhere except read-only verification |
18
+ | **balanced** | Opus for planning, Sonnet for execution/verification (default) |
19
+ | **budget** | Sonnet for writing, Haiku for research/verification |
20
+ </profiles>
21
+
22
+ <process>
23
+
24
+ ## 1. Validate argument
25
+
26
+ ```
27
+ if $ARGUMENTS.profile not in ["quality", "balanced", "budget"]:
28
+ Error: Invalid profile "$ARGUMENTS.profile"
29
+ Valid profiles: quality, balanced, budget
30
+ STOP
31
+ ```
32
+
33
+ ## 2. Check for project
34
+
35
+ ```bash
36
+ ls .planning/config.json 2>/dev/null
37
+ ```
38
+
39
+ If no `.planning/` directory:
40
+ ```
41
+ Error: No GSD project found.
42
+ Run /gsd:new-project first to initialize a project.
43
+ ```
44
+
45
+ ## 3. Update config.json
46
+
47
+ Read current config:
48
+ ```bash
49
+ cat .planning/config.json
50
+ ```
51
+
52
+ Update `model_profile` field (or add if missing):
53
+ ```json
54
+ {
55
+ "model_profile": "$ARGUMENTS.profile"
56
+ }
57
+ ```
58
+
59
+ Write updated config back to `.planning/config.json`.
60
+
61
+ ## 4. Confirm
62
+
63
+ ```
64
+ ✓ Model profile set to: $ARGUMENTS.profile
65
+
66
+ Agents will now use:
67
+ [Show table from model-profiles.md for selected profile]
68
+
69
+ Next spawned agents will use the new profile.
70
+ ```
71
+
72
+ </process>
73
+
74
+ <examples>
75
+
76
+ **Switch to budget mode:**
77
+ ```
78
+ /gsd:set-profile budget
79
+
80
+ ✓ Model profile set to: budget
81
+
82
+ Agents will now use:
83
+ | Agent | Model |
84
+ |-------|-------|
85
+ | gsd-planner | sonnet |
86
+ | gsd-executor | sonnet |
87
+ | gsd-verifier | haiku |
88
+ | ... | ... |
89
+ ```
90
+
91
+ **Switch to quality mode:**
92
+ ```
93
+ /gsd:set-profile quality
94
+
95
+ ✓ Model profile set to: quality
96
+
97
+ Agents will now use:
98
+ | Agent | Model |
99
+ |-------|-------|
100
+ | gsd-planner | opus |
101
+ | gsd-executor | opus |
102
+ | gsd-verifier | sonnet |
103
+ | ... | ... |
104
+ ```
105
+
106
+ </examples>
@@ -0,0 +1,136 @@
1
+ ---
2
+ name: gsd:settings
3
+ description: Configure GSD workflow toggles and model profile
4
+ allowed-tools:
5
+ - Read
6
+ - Write
7
+ - AskUserQuestion
8
+ ---
9
+
10
+ <objective>
11
+ Allow users to toggle workflow agents on/off and select model profile via interactive settings.
12
+
13
+ Updates `.planning/config.json` with workflow preferences and model profile selection.
14
+ </objective>
15
+
16
+ <process>
17
+
18
+ ## 1. Validate Environment
19
+
20
+ ```bash
21
+ ls .planning/config.json 2>/dev/null
22
+ ```
23
+
24
+ **If not found:** Error - run `/gsd:new-project` first.
25
+
26
+ ## 2. Read Current Config
27
+
28
+ ```bash
29
+ cat .planning/config.json
30
+ ```
31
+
32
+ Parse current values (default to `true` if not present):
33
+ - `workflow.research` — spawn researcher during plan-phase
34
+ - `workflow.plan_check` — spawn plan checker during plan-phase
35
+ - `workflow.verifier` — spawn verifier during execute-phase
36
+ - `model_profile` — which model each agent uses (default: `balanced`)
37
+
38
+ ## 3. Present Settings
39
+
40
+ Use AskUserQuestion with current values shown:
41
+
42
+ ```
43
+ AskUserQuestion([
44
+ {
45
+ question: "Which model profile for agents?",
46
+ header: "Model",
47
+ multiSelect: false,
48
+ options: [
49
+ { label: "Quality", description: "Opus everywhere except verification (highest cost)" },
50
+ { label: "Balanced (Recommended)", description: "Opus for planning, Sonnet for execution/verification" },
51
+ { label: "Budget", description: "Sonnet for writing, Haiku for research/verification (lowest cost)" }
52
+ ]
53
+ },
54
+ {
55
+ question: "Spawn Plan Researcher? (researches domain before planning)",
56
+ header: "Research",
57
+ multiSelect: false,
58
+ options: [
59
+ { label: "Yes", description: "Research phase goals before planning" },
60
+ { label: "No", description: "Skip research, plan directly" }
61
+ ]
62
+ },
63
+ {
64
+ question: "Spawn Plan Checker? (verifies plans before execution)",
65
+ header: "Plan Check",
66
+ multiSelect: false,
67
+ options: [
68
+ { label: "Yes", description: "Verify plans meet phase goals" },
69
+ { label: "No", description: "Skip plan verification" }
70
+ ]
71
+ },
72
+ {
73
+ question: "Spawn Execution Verifier? (verifies phase completion)",
74
+ header: "Verifier",
75
+ multiSelect: false,
76
+ options: [
77
+ { label: "Yes", description: "Verify must-haves after execution" },
78
+ { label: "No", description: "Skip post-execution verification" }
79
+ ]
80
+ }
81
+ ])
82
+ ```
83
+
84
+ **Pre-select based on current config values.**
85
+
86
+ ## 4. Update Config
87
+
88
+ Merge new settings into existing config.json:
89
+
90
+ ```json
91
+ {
92
+ ...existing_config,
93
+ "model_profile": "quality" | "balanced" | "budget",
94
+ "workflow": {
95
+ "research": true/false,
96
+ "plan_check": true/false,
97
+ "verifier": true/false
98
+ }
99
+ }
100
+ ```
101
+
102
+ Write updated config to `.planning/config.json`.
103
+
104
+ ## 5. Confirm Changes
105
+
106
+ Display:
107
+
108
+ ```
109
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110
+ GSD ► SETTINGS UPDATED
111
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
112
+
113
+ | Setting | Value |
114
+ |----------------------|-------|
115
+ | Model Profile | {quality/balanced/budget} |
116
+ | Plan Researcher | {On/Off} |
117
+ | Plan Checker | {On/Off} |
118
+ | Execution Verifier | {On/Off} |
119
+
120
+ These settings apply to future /gsd:plan-phase and /gsd:execute-phase runs.
121
+
122
+ Quick commands:
123
+ - /gsd:set-profile <profile> — switch model profile
124
+ - /gsd:plan-phase --research — force research
125
+ - /gsd:plan-phase --skip-research — skip research
126
+ - /gsd:plan-phase --skip-verify — skip plan check
127
+ ```
128
+
129
+ </process>
130
+
131
+ <success_criteria>
132
+ - [ ] Current config read
133
+ - [ ] User presented with 4 settings (profile + 3 toggles)
134
+ - [ ] Config updated with model_profile and workflow section
135
+ - [ ] Changes confirmed to user
136
+ </success_criteria>