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
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-quick
|
|
3
|
+
description: Execute a quick task with GSD guarantees (atomic commits, state tracking) but skip optional agents
|
|
4
|
+
argument-hint: ""
|
|
5
|
+
tools:
|
|
6
|
+
- read
|
|
7
|
+
- write
|
|
8
|
+
- edit
|
|
9
|
+
- glob
|
|
10
|
+
- grep
|
|
11
|
+
- bash
|
|
12
|
+
|
|
13
|
+
- question
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<objective>
|
|
17
|
+
Execute small, ad-hoc tasks with GSD guarantees (atomic commits, STATE.md tracking) while skipping optional agents (research, plan-checker, verifier).
|
|
18
|
+
|
|
19
|
+
Quick mode is the same system with a shorter path:
|
|
20
|
+
- Spawns gsd-planner (quick mode) + gsd-executor(s)
|
|
21
|
+
- Skips gsd-phase-researcher, gsd-plan-checker, gsd-verifier
|
|
22
|
+
- Quick tasks live in `.planning/quick/` separate from planned phases
|
|
23
|
+
- Updates STATE.md "Quick Tasks Completed" table (NOT ROADMAP.md)
|
|
24
|
+
|
|
25
|
+
Use when: You know exactly what to do and the task is small enough to not need research or verification.
|
|
26
|
+
</objective>
|
|
27
|
+
|
|
28
|
+
<execution_context>
|
|
29
|
+
Orchestration is inline - no separate workflow file. Quick mode is deliberately simpler than full GSD.
|
|
30
|
+
</execution_context>
|
|
31
|
+
|
|
32
|
+
<context>
|
|
33
|
+
@.planning/STATE.md
|
|
34
|
+
</context>
|
|
35
|
+
|
|
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
|
+
|
|
58
|
+
**Step 1: Pre-flight validation**
|
|
59
|
+
|
|
60
|
+
Check that an active GSD project exists:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
if [ ! -f .planning/ROADMAP.md ]; then
|
|
64
|
+
echo "Quick mode requires an active project with ROADMAP.md."
|
|
65
|
+
echo "Run /gsd-new-project first."
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
If validation fails, stop immediately with the error message.
|
|
71
|
+
|
|
72
|
+
Quick tasks can run mid-phase - validation only checks ROADMAP.md exists, not phase status.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
**Step 2: Get task description**
|
|
77
|
+
|
|
78
|
+
Prompt user interactively for the task description:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
question(
|
|
82
|
+
header: "Quick Task",
|
|
83
|
+
question: "What do you want to do?",
|
|
84
|
+
followUp: null
|
|
85
|
+
)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Store response as `$DESCRIPTION`.
|
|
89
|
+
|
|
90
|
+
If empty, re-prompt: "Please provide a task description."
|
|
91
|
+
|
|
92
|
+
Generate slug from description:
|
|
93
|
+
```bash
|
|
94
|
+
slug=$(echo "$DESCRIPTION" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//' | cut -c1-40)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
**Step 3: Calculate next quick task number**
|
|
100
|
+
|
|
101
|
+
Ensure `.planning/quick/` directory exists and find the next sequential number:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Ensure .planning/quick/ exists
|
|
105
|
+
mkdir -p .planning/quick
|
|
106
|
+
|
|
107
|
+
# Find highest existing number and increment
|
|
108
|
+
last=$(ls -1d .planning/quick/[0-9][0-9][0-9]-* 2>/dev/null | sort -r | head -1 | xargs -I{} basename {} | grep -oE '^[0-9]+')
|
|
109
|
+
|
|
110
|
+
if [ -z "$last" ]; then
|
|
111
|
+
next_num="001"
|
|
112
|
+
else
|
|
113
|
+
next_num=$(printf "%03d" $((10#$last + 1)))
|
|
114
|
+
fi
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
**Step 4: Create quick task directory**
|
|
120
|
+
|
|
121
|
+
Create the directory for this quick task:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
QUICK_DIR=".planning/quick/${next_num}-${slug}"
|
|
125
|
+
mkdir -p "$QUICK_DIR"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Report to user:
|
|
129
|
+
```
|
|
130
|
+
Creating quick task ${next_num}: ${DESCRIPTION}
|
|
131
|
+
Directory: ${QUICK_DIR}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Store `$QUICK_DIR` for use in orchestration.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
**Step 5: Spawn planner (quick mode)**
|
|
139
|
+
|
|
140
|
+
Spawn gsd-planner with quick mode context:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Task(
|
|
144
|
+
prompt="
|
|
145
|
+
<planning_context>
|
|
146
|
+
|
|
147
|
+
**Mode:** quick
|
|
148
|
+
**Directory:** ${QUICK_DIR}
|
|
149
|
+
**Description:** ${DESCRIPTION}
|
|
150
|
+
|
|
151
|
+
**Project State:**
|
|
152
|
+
@.planning/STATE.md
|
|
153
|
+
|
|
154
|
+
</planning_context>
|
|
155
|
+
|
|
156
|
+
<constraints>
|
|
157
|
+
- Create a SINGLE plan with 1-3 focused tasks
|
|
158
|
+
- Quick tasks should be atomic and self-contained
|
|
159
|
+
- No research phase, no checker phase
|
|
160
|
+
- Target ~30% context usage (simple, focused)
|
|
161
|
+
</constraints>
|
|
162
|
+
|
|
163
|
+
<output>
|
|
164
|
+
write plan to: ${QUICK_DIR}/${next_num}-PLAN.md
|
|
165
|
+
Return: ## PLANNING COMPLETE with plan path
|
|
166
|
+
</output>
|
|
167
|
+
",
|
|
168
|
+
subagent_type="gsd-planner",
|
|
169
|
+
model="{planner_model}",
|
|
170
|
+
description="Quick plan: ${DESCRIPTION}"
|
|
171
|
+
)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
After planner returns:
|
|
175
|
+
1. Verify plan exists at `${QUICK_DIR}/${next_num}-PLAN.md`
|
|
176
|
+
2. Extract plan count (typically 1 for quick tasks)
|
|
177
|
+
3. Report: "Plan created: ${QUICK_DIR}/${next_num}-PLAN.md"
|
|
178
|
+
|
|
179
|
+
If plan not found, error: "Planner failed to create ${next_num}-PLAN.md"
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
**Step 6: Spawn executor**
|
|
184
|
+
|
|
185
|
+
Spawn gsd-executor with plan reference:
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
Task(
|
|
189
|
+
prompt="
|
|
190
|
+
Execute quick task ${next_num}.
|
|
191
|
+
|
|
192
|
+
Plan: @${QUICK_DIR}/${next_num}-PLAN.md
|
|
193
|
+
Project state: @.planning/STATE.md
|
|
194
|
+
|
|
195
|
+
<constraints>
|
|
196
|
+
- Execute all tasks in the plan
|
|
197
|
+
- Commit each task atomically
|
|
198
|
+
- Create summary at: ${QUICK_DIR}/${next_num}-SUMMARY.md
|
|
199
|
+
- Do NOT update ROADMAP.md (quick tasks are separate from planned phases)
|
|
200
|
+
</constraints>
|
|
201
|
+
",
|
|
202
|
+
subagent_type="gsd-executor",
|
|
203
|
+
model="{executor_model}",
|
|
204
|
+
description="Execute: ${DESCRIPTION}"
|
|
205
|
+
)
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
After executor returns:
|
|
209
|
+
1. Verify summary exists at `${QUICK_DIR}/${next_num}-SUMMARY.md`
|
|
210
|
+
2. Extract commit hash from executor output
|
|
211
|
+
3. Report completion status
|
|
212
|
+
|
|
213
|
+
If summary not found, error: "Executor failed to create ${next_num}-SUMMARY.md"
|
|
214
|
+
|
|
215
|
+
Note: For quick tasks producing multiple plans (rare), spawn executors in parallel waves per execute-phase patterns.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
**Step 7: Update STATE.md**
|
|
220
|
+
|
|
221
|
+
Update STATE.md with quick task completion record.
|
|
222
|
+
|
|
223
|
+
**7a. Check if "Quick Tasks Completed" section exists:**
|
|
224
|
+
|
|
225
|
+
read STATE.md and check for `### Quick Tasks Completed` section.
|
|
226
|
+
|
|
227
|
+
**7b. If section doesn't exist, create it:**
|
|
228
|
+
|
|
229
|
+
Insert after `### Blockers/Concerns` section:
|
|
230
|
+
|
|
231
|
+
```markdown
|
|
232
|
+
### Quick Tasks Completed
|
|
233
|
+
|
|
234
|
+
| # | Description | Date | Commit | Directory |
|
|
235
|
+
|---|-------------|------|--------|-----------|
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**7c. Append new row to table:**
|
|
239
|
+
|
|
240
|
+
```markdown
|
|
241
|
+
| ${next_num} | ${DESCRIPTION} | $(date +%Y-%m-%d) | ${commit_hash} | [${next_num}-${slug}](./quick/${next_num}-${slug}/) |
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**7d. Update "Last activity" line:**
|
|
245
|
+
|
|
246
|
+
Find and update the line:
|
|
247
|
+
```
|
|
248
|
+
Last activity: $(date +%Y-%m-%d) - Completed quick task ${next_num}: ${DESCRIPTION}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Use edit tool to make these changes atomically
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
**Step 8: Final commit and completion**
|
|
256
|
+
|
|
257
|
+
Stage and commit quick task artifacts:
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Stage quick task artifacts
|
|
261
|
+
git add ${QUICK_DIR}/${next_num}-PLAN.md
|
|
262
|
+
git add ${QUICK_DIR}/${next_num}-SUMMARY.md
|
|
263
|
+
git add .planning/STATE.md
|
|
264
|
+
|
|
265
|
+
# Commit with quick task format
|
|
266
|
+
git commit -m "$(cat <<'EOF'
|
|
267
|
+
docs(quick-${next_num}): ${DESCRIPTION}
|
|
268
|
+
|
|
269
|
+
Quick task completed.
|
|
270
|
+
|
|
271
|
+
Co-Authored-By: OpenCode Opus 4.5 <noreply@anthropic.com>
|
|
272
|
+
EOF
|
|
273
|
+
)"
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Get final commit hash:
|
|
277
|
+
```bash
|
|
278
|
+
commit_hash=$(git rev-parse --short HEAD)
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Display completion output:
|
|
282
|
+
```
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
GSD > QUICK TASK COMPLETE
|
|
286
|
+
|
|
287
|
+
Quick Task ${next_num}: ${DESCRIPTION}
|
|
288
|
+
|
|
289
|
+
Summary: ${QUICK_DIR}/${next_num}-SUMMARY.md
|
|
290
|
+
Commit: ${commit_hash}
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
Ready for next task: /gsd-quick
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
</process>
|
|
298
|
+
|
|
299
|
+
<success_criteria>
|
|
300
|
+
- [ ] ROADMAP.md validation passes
|
|
301
|
+
- [ ] User provides task description
|
|
302
|
+
- [ ] Slug generated (lowercase, hyphens, max 40 chars)
|
|
303
|
+
- [ ] Next number calculated (001, 002, 003...)
|
|
304
|
+
- [ ] Directory created at `.planning/quick/NNN-slug/`
|
|
305
|
+
- [ ] `${next_num}-PLAN.md` created by planner
|
|
306
|
+
- [ ] `${next_num}-SUMMARY.md` created by executor
|
|
307
|
+
- [ ] STATE.md updated with quick task row
|
|
308
|
+
- [ ] Artifacts committed
|
|
309
|
+
</success_criteria>
|
|
@@ -252,6 +252,17 @@ Update any internal references to reflect new numbering.
|
|
|
252
252
|
<step name="commit">
|
|
253
253
|
Stage and commit the removal:
|
|
254
254
|
|
|
255
|
+
**Check planning config:**
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
|
|
259
|
+
git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**If `COMMIT_PLANNING_DOCS=false`:** Skip git operations
|
|
263
|
+
|
|
264
|
+
**If `COMMIT_PLANNING_DOCS=true` (default):**
|
|
265
|
+
|
|
255
266
|
```bash
|
|
256
267
|
git add .planning/
|
|
257
268
|
git commit -m "chore: remove phase {target} ({original-phase-name})"
|
|
@@ -5,6 +5,7 @@ argument-hint: "[phase]"
|
|
|
5
5
|
tools:
|
|
6
6
|
- read
|
|
7
7
|
- bash
|
|
8
|
+
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
<objective>
|
|
@@ -30,6 +31,24 @@ Normalize phase input in step 1 before any directory lookups.
|
|
|
30
31
|
|
|
31
32
|
<process>
|
|
32
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
|
+
|
|
33
52
|
## 1. Normalize and Validate Phase
|
|
34
53
|
|
|
35
54
|
```bash
|
|
@@ -68,7 +87,7 @@ grep -A30 "### Decisions Made" .planning/STATE.md 2>/dev/null
|
|
|
68
87
|
|
|
69
88
|
Present summary with phase description, requirements, prior decisions.
|
|
70
89
|
|
|
71
|
-
## 4. Spawn gsd-researcher Agent
|
|
90
|
+
## 4. Spawn gsd-phase-researcher Agent
|
|
72
91
|
|
|
73
92
|
Research modes: ecosystem (default), feasibility, implementation, comparison.
|
|
74
93
|
|
|
@@ -131,6 +150,7 @@ write to: .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
|
|
|
131
150
|
Task(
|
|
132
151
|
prompt=filled_prompt,
|
|
133
152
|
subagent_type="gsd-phase-researcher",
|
|
153
|
+
model="{researcher_model}",
|
|
134
154
|
description="Research Phase {phase}"
|
|
135
155
|
)
|
|
136
156
|
```
|
|
@@ -164,6 +184,7 @@ Research file: @.planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
|
|
|
164
184
|
Task(
|
|
165
185
|
prompt=continuation_prompt,
|
|
166
186
|
subagent_type="gsd-phase-researcher",
|
|
187
|
+
model="{researcher_model}",
|
|
167
188
|
description="Continue research Phase {phase}"
|
|
168
189
|
)
|
|
169
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 OpenCode 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
|
+
tools:
|
|
5
|
+
- read
|
|
6
|
+
- write
|
|
7
|
+
- question
|
|
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 question with current values shown:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
question([
|
|
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>
|
package/command/gsd/update.md
CHANGED
|
@@ -43,7 +43,7 @@ npm view gsd-opencode version 2>/dev/null
|
|
|
43
43
|
```
|
|
44
44
|
Couldn't check for updates (offline or npm unavailable).
|
|
45
45
|
|
|
46
|
-
To update manually: `npx gsd-opencode --global`
|
|
46
|
+
To update manually: `npx gsd-opencode@latest --global`
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
STOP here if npm unavailable.
|