gsd-opencode 1.30.0 → 1.33.1
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 +0 -1
- package/agents/gsd-doc-verifier.md +207 -0
- package/agents/gsd-doc-writer.md +608 -0
- package/agents/gsd-executor.md +22 -1
- package/agents/gsd-phase-researcher.md +41 -0
- package/agents/gsd-plan-checker.md +82 -0
- package/agents/gsd-planner.md +123 -194
- package/agents/gsd-security-auditor.md +129 -0
- package/agents/gsd-ui-auditor.md +40 -0
- package/agents/gsd-user-profiler.md +2 -2
- package/agents/gsd-verifier.md +84 -18
- package/commands/gsd/gsd-add-backlog.md +1 -1
- package/commands/gsd/gsd-analyze-dependencies.md +34 -0
- package/commands/gsd/gsd-autonomous.md +6 -2
- package/commands/gsd/gsd-cleanup.md +5 -0
- package/commands/gsd/gsd-debug.md +24 -21
- package/commands/gsd/gsd-discuss-phase.md +7 -2
- package/commands/gsd/gsd-docs-update.md +48 -0
- package/commands/gsd/gsd-execute-phase.md +4 -0
- package/commands/gsd/gsd-help.md +2 -0
- package/commands/gsd/gsd-join-discord.md +2 -1
- package/commands/gsd/gsd-manager.md +1 -0
- package/commands/gsd/gsd-new-project.md +4 -0
- package/commands/gsd/gsd-plan-phase.md +5 -0
- package/commands/gsd/gsd-quick.md +5 -3
- package/commands/gsd/gsd-reapply-patches.md +171 -39
- package/commands/gsd/gsd-research-phase.md +2 -12
- package/commands/gsd/gsd-review-backlog.md +1 -0
- package/commands/gsd/gsd-review.md +3 -2
- package/commands/gsd/gsd-secure-phase.md +35 -0
- package/commands/gsd/gsd-set-profile.md +0 -1
- package/commands/gsd/gsd-thread.md +1 -1
- package/commands/gsd/gsd-workstreams.md +7 -2
- package/get-shit-done/bin/gsd-tools.cjs +42 -8
- package/get-shit-done/bin/lib/commands.cjs +68 -14
- package/get-shit-done/bin/lib/config.cjs +18 -10
- package/get-shit-done/bin/lib/core.cjs +383 -80
- package/get-shit-done/bin/lib/docs.cjs +267 -0
- package/get-shit-done/bin/lib/frontmatter.cjs +47 -2
- package/get-shit-done/bin/lib/init.cjs +85 -5
- package/get-shit-done/bin/lib/milestone.cjs +21 -0
- package/get-shit-done/bin/lib/model-profiles.cjs +2 -0
- package/get-shit-done/bin/lib/phase.cjs +232 -189
- package/get-shit-done/bin/lib/profile-output.cjs +97 -1
- package/get-shit-done/bin/lib/roadmap.cjs +137 -113
- package/get-shit-done/bin/lib/schema-detect.cjs +238 -0
- package/get-shit-done/bin/lib/security.cjs +5 -3
- package/get-shit-done/bin/lib/state.cjs +366 -44
- package/get-shit-done/bin/lib/verify.cjs +158 -14
- package/get-shit-done/bin/lib/workstream.cjs +6 -2
- package/get-shit-done/references/agent-contracts.md +79 -0
- package/get-shit-done/references/artifact-types.md +113 -0
- package/get-shit-done/references/context-budget.md +49 -0
- package/get-shit-done/references/continuation-format.md +15 -15
- package/get-shit-done/references/domain-probes.md +125 -0
- package/get-shit-done/references/gate-prompts.md +100 -0
- package/get-shit-done/references/model-profiles.md +2 -2
- package/get-shit-done/references/planner-gap-closure.md +62 -0
- package/get-shit-done/references/planner-reviews.md +39 -0
- package/get-shit-done/references/planner-revision.md +87 -0
- package/get-shit-done/references/planning-config.md +15 -0
- package/get-shit-done/references/revision-loop.md +97 -0
- package/get-shit-done/references/ui-brand.md +2 -2
- package/get-shit-done/references/universal-anti-patterns.md +58 -0
- package/get-shit-done/references/workstream-flag.md +56 -3
- package/get-shit-done/templates/SECURITY.md +61 -0
- package/get-shit-done/templates/VALIDATION.md +3 -3
- package/get-shit-done/templates/claude-md.md +27 -4
- package/get-shit-done/templates/config.json +4 -0
- package/get-shit-done/templates/debug-subagent-prompt.md +2 -6
- package/get-shit-done/templates/planner-subagent-prompt.md +2 -10
- package/get-shit-done/workflows/add-phase.md +2 -2
- package/get-shit-done/workflows/add-todo.md +1 -1
- package/get-shit-done/workflows/analyze-dependencies.md +96 -0
- package/get-shit-done/workflows/audit-milestone.md +8 -12
- package/get-shit-done/workflows/autonomous.md +158 -13
- package/get-shit-done/workflows/check-todos.md +2 -2
- package/get-shit-done/workflows/complete-milestone.md +13 -4
- package/get-shit-done/workflows/diagnose-issues.md +8 -6
- package/get-shit-done/workflows/discovery-phase.md +1 -1
- package/get-shit-done/workflows/discuss-phase-assumptions.md +24 -6
- package/get-shit-done/workflows/discuss-phase-power.md +291 -0
- package/get-shit-done/workflows/discuss-phase.md +153 -20
- package/get-shit-done/workflows/docs-update.md +1093 -0
- package/get-shit-done/workflows/execute-phase.md +362 -66
- package/get-shit-done/workflows/execute-plan.md +1 -1
- package/get-shit-done/workflows/help.md +9 -6
- package/get-shit-done/workflows/insert-phase.md +2 -2
- package/get-shit-done/workflows/manager.md +27 -26
- package/get-shit-done/workflows/map-codebase.md +10 -32
- package/get-shit-done/workflows/new-milestone.md +14 -8
- package/get-shit-done/workflows/new-project.md +48 -25
- package/get-shit-done/workflows/next.md +1 -1
- package/get-shit-done/workflows/note.md +1 -1
- package/get-shit-done/workflows/pause-work.md +73 -10
- package/get-shit-done/workflows/plan-milestone-gaps.md +2 -2
- package/get-shit-done/workflows/plan-phase.md +184 -32
- package/get-shit-done/workflows/progress.md +20 -20
- package/get-shit-done/workflows/quick.md +102 -84
- package/get-shit-done/workflows/research-phase.md +2 -6
- package/get-shit-done/workflows/resume-project.md +4 -4
- package/get-shit-done/workflows/review.md +56 -3
- package/get-shit-done/workflows/secure-phase.md +154 -0
- package/get-shit-done/workflows/settings.md +13 -2
- package/get-shit-done/workflows/ship.md +13 -4
- package/get-shit-done/workflows/transition.md +6 -6
- package/get-shit-done/workflows/ui-phase.md +4 -14
- package/get-shit-done/workflows/ui-review.md +25 -7
- package/get-shit-done/workflows/update.md +165 -16
- package/get-shit-done/workflows/validate-phase.md +1 -11
- package/get-shit-done/workflows/verify-phase.md +127 -6
- package/get-shit-done/workflows/verify-work.md +69 -21
- package/package.json +1 -1
|
@@ -13,6 +13,7 @@ Goal-backward verification:
|
|
|
13
13
|
1. What must be TRUE for the goal to be achieved?
|
|
14
14
|
2. What must EXIST for those truths to hold?
|
|
15
15
|
3. What must be WIRED for those artifacts to function?
|
|
16
|
+
4. What must TESTS PROVE for those truths to be evidenced?
|
|
16
17
|
|
|
17
18
|
Then verify each level against the actual codebase.
|
|
18
19
|
</core_principle>
|
|
@@ -41,7 +42,12 @@ grep -E "^| ${phase_number}" .planning/REQUIREMENTS.md 2>/dev/null || true
|
|
|
41
42
|
ls "$phase_dir"/*-SUMMARY.md "$phase_dir"/*-PLAN.md 2>/dev/null || true
|
|
42
43
|
```
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
Load full milestone phases for deferred-item filtering (Step 9b):
|
|
46
|
+
```bash
|
|
47
|
+
node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" roadmap analyze
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Extract **phase goal** from ROADMAP.md (the outcome to verify, not tasks), **requirements** from REQUIREMENTS.md if it exists, and **all milestone phases** from roadmap analyze (for cross-referencing gaps against later phases).
|
|
45
51
|
</step>
|
|
46
52
|
|
|
47
53
|
<step name="establish_must_haves">
|
|
@@ -190,6 +196,93 @@ Extract files modified in this phase from SUMMARY.md, scan each:
|
|
|
190
196
|
Categorize: 🛑 Blocker (prevents goal) | ⚠️ Warning (incomplete) | ℹ️ Info (notable).
|
|
191
197
|
</step>
|
|
192
198
|
|
|
199
|
+
<step name="audit_test_quality">
|
|
200
|
+
**Verify that tests PROVE what they claim to prove.**
|
|
201
|
+
|
|
202
|
+
This step catches test-level deceptions that pass all prior checks: files exist, are substantive, are wired, and tests pass — but the tests don't actually validate the requirement.
|
|
203
|
+
|
|
204
|
+
**1. Identify requirement-linked test files**
|
|
205
|
+
|
|
206
|
+
From PLAN and SUMMARY files, map each requirement to the test files that are supposed to prove it.
|
|
207
|
+
|
|
208
|
+
**2. Disabled test scan**
|
|
209
|
+
|
|
210
|
+
For ALL test files linked to requirements, search for disabled/skipped patterns:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
grep -rn -E "it\.skip|describe\.skip|test\.skip|xit\(|xdescribe\(|xtest\(|@pytest\.mark\.skip|@unittest\.skip|#\[ignore\]|\.pending|it\.todo|test\.todo" "$TEST_FILE"
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**Rule:** A disabled test linked to a requirement = requirement NOT tested.
|
|
217
|
+
- 🛑 BLOCKER if the disabled test is the only test proving that requirement
|
|
218
|
+
- ⚠️ WARNING if other active tests also cover the requirement
|
|
219
|
+
|
|
220
|
+
**3. Circular test detection**
|
|
221
|
+
|
|
222
|
+
Search for scripts/utilities that generate expected values by running the system under test:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
grep -rn -E "writeFileSync|writeFile|fs\.write|open\(.*w\)" "$TEST_DIRS"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
For each match, check if it also imports the system/service/module being tested. If a script both imports the system-under-test AND writes expected output values → CIRCULAR.
|
|
229
|
+
|
|
230
|
+
**Circular test indicators:**
|
|
231
|
+
- Script imports a service AND writes to fixture files
|
|
232
|
+
- Expected values have comments like "computed from engine", "captured from baseline"
|
|
233
|
+
- Script filename contains "capture", "baseline", "generate", "snapshot" in test context
|
|
234
|
+
- Expected values were added in the same commit as the test assertions
|
|
235
|
+
|
|
236
|
+
**Rule:** A test comparing system output against values generated by the same system is circular. It proves consistency, not correctness.
|
|
237
|
+
|
|
238
|
+
**4. Expected value provenance** (for comparison/parity/migration requirements)
|
|
239
|
+
|
|
240
|
+
When a requirement demands comparison with an external source ("identical to X", "matches Y", "same output as Z"):
|
|
241
|
+
|
|
242
|
+
- Is the external source actually invoked or referenced in the test pipeline?
|
|
243
|
+
- Do fixture files contain data sourced from the external system?
|
|
244
|
+
- Or do all expected values come from the new system itself or from mathematical formulas?
|
|
245
|
+
|
|
246
|
+
**Provenance classification:**
|
|
247
|
+
- VALID: Expected value from external/legacy system output, manual capture, or independent oracle
|
|
248
|
+
- PARTIAL: Expected value from mathematical derivation (proves formula, not system match)
|
|
249
|
+
- CIRCULAR: Expected value from the system being tested
|
|
250
|
+
- UNKNOWN: No provenance information — treat as SUSPECT
|
|
251
|
+
|
|
252
|
+
**5. Assertion strength**
|
|
253
|
+
|
|
254
|
+
For each test linked to a requirement, classify the strongest assertion:
|
|
255
|
+
|
|
256
|
+
| Level | Examples | Proves |
|
|
257
|
+
|-------|---------|--------|
|
|
258
|
+
| Existence | `toBeDefined()`, `!= null` | Something returned |
|
|
259
|
+
| Type | `typeof x === 'number'` | Correct shape |
|
|
260
|
+
| Status | `code === 200` | No error |
|
|
261
|
+
| Value | `toEqual(expected)`, `toBeCloseTo(x)` | Specific value |
|
|
262
|
+
| Behavioral | Multi-step workflow assertions | End-to-end correctness |
|
|
263
|
+
|
|
264
|
+
If a requirement demands value-level or behavioral-level proof and the test only has existence/type/status assertions → INSUFFICIENT.
|
|
265
|
+
|
|
266
|
+
**6. Coverage quantity**
|
|
267
|
+
|
|
268
|
+
If a requirement specifies a quantity of test cases (e.g., "30 calculations"), check if the actual number of active (non-skipped) test cases meets the requirement.
|
|
269
|
+
|
|
270
|
+
**Reporting — add to VERIFICATION.md:**
|
|
271
|
+
|
|
272
|
+
```markdown
|
|
273
|
+
### Test Quality Audit
|
|
274
|
+
|
|
275
|
+
| Test File | Linked Req | Active | Skipped | Circular | Assertion Level | Verdict |
|
|
276
|
+
|-----------|-----------|--------|---------|----------|----------------|---------|
|
|
277
|
+
|
|
278
|
+
**Disabled tests on requirements:** {N} → {BLOCKER if any req has ONLY disabled tests}
|
|
279
|
+
**Circular patterns detected:** {N} → {BLOCKER if any}
|
|
280
|
+
**Insufficient assertions:** {N} → {WARNING}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**Impact on status:** Any BLOCKER from test quality audit ��� overall status = `gaps_found`, regardless of other checks passing.
|
|
284
|
+
</step>
|
|
285
|
+
|
|
193
286
|
<step name="identify_human_verification">
|
|
194
287
|
**Always needs human:** Visual appearance, user flow completion, real-time behavior (WebSocket/SSE), external service integration, performance feel, error message clarity.
|
|
195
288
|
|
|
@@ -199,15 +292,41 @@ Format each as: Test Name → What to do → Expected result → Why can't verif
|
|
|
199
292
|
</step>
|
|
200
293
|
|
|
201
294
|
<step name="determine_status">
|
|
202
|
-
|
|
295
|
+
Classify status using this decision tree IN ORDER (most restrictive first):
|
|
203
296
|
|
|
204
|
-
|
|
297
|
+
1. IF any truth FAILED, artifact MISSING/STUB, key link NOT_WIRED, blocker found, **or test quality audit found blockers (disabled requirement tests, circular tests)**:
|
|
298
|
+
→ **gaps_found**
|
|
205
299
|
|
|
206
|
-
|
|
300
|
+
2. IF the previous step produced ANY human verification items:
|
|
301
|
+
→ **human_needed** (even if all truths VERIFIED and score is N/N)
|
|
302
|
+
|
|
303
|
+
3. IF all checks pass AND no human verification items:
|
|
304
|
+
→ **passed**
|
|
305
|
+
|
|
306
|
+
**passed is ONLY valid when no human verification items exist.**
|
|
207
307
|
|
|
208
308
|
**Score:** `verified_truths / total_truths`
|
|
209
309
|
</step>
|
|
210
310
|
|
|
311
|
+
<step name="filter_deferred_items">
|
|
312
|
+
Before reporting gaps, cross-reference each gap against later phases in the milestone using the full roadmap data loaded in load_context (from `roadmap analyze`).
|
|
313
|
+
|
|
314
|
+
For each potential gap identified in determine_status:
|
|
315
|
+
1. Check if the gap's failed truth or missing item is covered by a later phase's goal or success criteria
|
|
316
|
+
2. **Match criteria:** The gap's concern appears in a later phase's goal text, success criteria text, or the later phase's name clearly suggests it covers this area
|
|
317
|
+
3. If a clear match is found → move the gap to a `deferred` list with the matching phase reference and evidence text
|
|
318
|
+
4. If no match in any later phase → keep as a real `gap`
|
|
319
|
+
|
|
320
|
+
**Important:** Be conservative. Only defer a gap when there is clear, specific evidence in a later phase. Vague or tangential matches should NOT cause deferral — when in doubt, keep it as a real gap.
|
|
321
|
+
|
|
322
|
+
**Deferred items do NOT affect the status determination.** Recalculate after filtering:
|
|
323
|
+
- If gaps list is now empty and no human items exist → `passed`
|
|
324
|
+
- If gaps list is now empty but human items exist → `human_needed`
|
|
325
|
+
- If gaps list still has items → `gaps_found`
|
|
326
|
+
|
|
327
|
+
Include deferred items in VERIFICATION.md frontmatter (`deferred:` section) and body (Deferred Items table) for transparency. If no deferred items exist, omit these sections.
|
|
328
|
+
</step>
|
|
329
|
+
|
|
211
330
|
<step name="generate_fix_plans">
|
|
212
331
|
If gaps_found:
|
|
213
332
|
|
|
@@ -215,7 +334,7 @@ If gaps_found:
|
|
|
215
334
|
|
|
216
335
|
2. **Generate plan per cluster:** Objective, 2-3 tasks (files/action/verify each), re-verify step. Keep focused: single concern per plan.
|
|
217
336
|
|
|
218
|
-
3. **Order by dependency:** Fix missing → fix stubs → fix wiring → verify.
|
|
337
|
+
3. **Order by dependency:** Fix missing → fix stubs → fix wiring → **fix test evidence** → verify.
|
|
219
338
|
</step>
|
|
220
339
|
|
|
221
340
|
<step name="create_report">
|
|
@@ -246,9 +365,11 @@ Orchestrator routes: `passed` → update_roadmap | `gaps_found` → create/execu
|
|
|
246
365
|
- [ ] All key links verified
|
|
247
366
|
- [ ] Requirements coverage assessed (if applicable)
|
|
248
367
|
- [ ] Anti-patterns scanned and categorized
|
|
368
|
+
- [ ] Test quality audited (disabled tests, circular patterns, assertion strength, provenance)
|
|
249
369
|
- [ ] Human verification items identified
|
|
250
370
|
- [ ] Overall status determined
|
|
251
|
-
- [ ]
|
|
371
|
+
- [ ] Deferred items filtered against later milestone phases (if gaps found)
|
|
372
|
+
- [ ] Fix plans generated (if gaps_found after filtering)
|
|
252
373
|
- [ ] VERIFICATION.md created with complete report
|
|
253
374
|
- [ ] Results returned to orchestrator
|
|
254
375
|
</success_criteria>
|
|
@@ -86,6 +86,42 @@ Provide a phase number to start testing (e.g., /gsd-verify-work 4)
|
|
|
86
86
|
Continue to `create_uat_file`.
|
|
87
87
|
</step>
|
|
88
88
|
|
|
89
|
+
<step name="automated_ui_verification">
|
|
90
|
+
**Automated UI Verification (when Playwright-MCP is available)**
|
|
91
|
+
|
|
92
|
+
Before running manual UAT, check whether this phase has a UI component and whether
|
|
93
|
+
`mcp__playwright__*` or `mcp__puppeteer__*` tools are available in the current session.
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
UI_PHASE_FLAG=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-get workflow.ui_phase --raw 2>/dev/null || echo "true")
|
|
97
|
+
UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**If Playwright-MCP tools are available in this session (`mcp__playwright__*` tools
|
|
101
|
+
respond to tool calls) AND (`UI_PHASE_FLAG` is `true` OR `UI_SPEC_FILE` is non-empty):**
|
|
102
|
+
|
|
103
|
+
For each UI checkpoint listed in the phase's UI-SPEC.md (or inferred from SUMMARY.md):
|
|
104
|
+
|
|
105
|
+
1. Use `mcp__playwright__navigate` (or equivalent) to open the component's URL.
|
|
106
|
+
2. Use `mcp__playwright__screenshot` to capture a screenshot.
|
|
107
|
+
3. Compare the screenshot visually against the spec's stated requirements
|
|
108
|
+
(dimensions, color, layout, spacing).
|
|
109
|
+
4. Automatically mark checkpoints as **passed** or **needs review** based on the
|
|
110
|
+
visual comparison — no manual question required for items that clearly match.
|
|
111
|
+
5. Flag items that require human judgment (subjective aesthetics, content accuracy)
|
|
112
|
+
and present only those as manual UAT questions.
|
|
113
|
+
|
|
114
|
+
If automated verification is not available, fall back to the standard manual
|
|
115
|
+
checkpoint questions defined in this workflow unchanged. This step is entirely
|
|
116
|
+
conditional: if Playwright-MCP is not configured, behavior is unchanged from today.
|
|
117
|
+
|
|
118
|
+
**Display summary line before proceeding:**
|
|
119
|
+
```
|
|
120
|
+
UI checkpoints: {N} auto-verified, {M} queued for manual review
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
</step>
|
|
124
|
+
|
|
89
125
|
<step name="find_summaries">
|
|
90
126
|
**Find what to test:**
|
|
91
127
|
|
|
@@ -375,11 +411,38 @@ Present summary:
|
|
|
375
411
|
**If issues > 0:** Proceed to `diagnose_issues`
|
|
376
412
|
|
|
377
413
|
**If issues == 0:**
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
SECURITY_CFG=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-get workflow.security_enforcement --raw 2>/dev/null || echo "true")
|
|
417
|
+
SECURITY_FILE=$(ls "${PHASE_DIR}"/*-SECURITY.md 2>/dev/null | head -1)
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
If `SECURITY_CFG` is `true` AND `SECURITY_FILE` is empty:
|
|
421
|
+
```
|
|
422
|
+
⚠ Security enforcement enabled — /gsd-secure-phase {phase} has not run.
|
|
423
|
+
Run before advancing to the next phase.
|
|
424
|
+
|
|
425
|
+
All tests passed. Ready to continue.
|
|
426
|
+
|
|
427
|
+
- `/gsd-secure-phase {phase}` — security review (required before advancing)
|
|
428
|
+
- `/gsd-plan-phase {next}` — Plan next phase
|
|
429
|
+
- `/gsd-execute-phase {next}` — Execute next phase
|
|
430
|
+
- `/gsd-ui-review {phase}` — visual quality audit (if frontend files were modified)
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
If `SECURITY_CFG` is `true` AND `SECURITY_FILE` exists: check frontmatter `threats_open`. If > 0:
|
|
434
|
+
```
|
|
435
|
+
⚠ Security gate: {threats_open} threats open
|
|
436
|
+
/gsd-secure-phase {phase} — resolve before advancing
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
If `SECURITY_CFG` is `false` OR (`SECURITY_FILE` exists AND `threats_open` is `0`):
|
|
378
440
|
```
|
|
379
441
|
All tests passed. Ready to continue.
|
|
380
442
|
|
|
381
443
|
- `/gsd-plan-phase {next}` — Plan next phase
|
|
382
444
|
- `/gsd-execute-phase {next}` — Execute next phase
|
|
445
|
+
- `/gsd-secure-phase {phase}` — security review
|
|
383
446
|
- `/gsd-ui-review {phase}` — visual quality audit (if frontend files were modified)
|
|
384
447
|
```
|
|
385
448
|
</step>
|
|
@@ -420,8 +483,7 @@ Display:
|
|
|
420
483
|
Spawn gsd-planner in --gaps mode:
|
|
421
484
|
|
|
422
485
|
```
|
|
423
|
-
|
|
424
|
-
prompt="""
|
|
486
|
+
@gsd-planner """
|
|
425
487
|
<planning_context>
|
|
426
488
|
|
|
427
489
|
**Phase:** {phase_number}
|
|
@@ -441,11 +503,7 @@ ${AGENT_SKILLS_PLANNER}
|
|
|
441
503
|
Output consumed by /gsd-execute-phase
|
|
442
504
|
Plans must be executable prompts.
|
|
443
505
|
</downstream_consumer>
|
|
444
|
-
"""
|
|
445
|
-
subagent_type="gsd-planner",
|
|
446
|
-
model="{planner_model}",
|
|
447
|
-
description="Plan gap fixes for Phase {phase}"
|
|
448
|
-
)
|
|
506
|
+
"""
|
|
449
507
|
```
|
|
450
508
|
|
|
451
509
|
On return:
|
|
@@ -470,8 +528,7 @@ Initialize: `iteration_count = 1`
|
|
|
470
528
|
Spawn gsd-plan-checker:
|
|
471
529
|
|
|
472
530
|
```
|
|
473
|
-
|
|
474
|
-
prompt="""
|
|
531
|
+
@gsd-plan-checker """
|
|
475
532
|
<verification_context>
|
|
476
533
|
|
|
477
534
|
**Phase:** {phase_number}
|
|
@@ -490,11 +547,7 @@ Return one of:
|
|
|
490
547
|
- ## VERIFICATION PASSED — all checks pass
|
|
491
548
|
- ## ISSUES FOUND — structured issue list
|
|
492
549
|
</expected_output>
|
|
493
|
-
"""
|
|
494
|
-
subagent_type="gsd-plan-checker",
|
|
495
|
-
model="{checker_model}",
|
|
496
|
-
description="Verify Phase {phase} fix plans"
|
|
497
|
-
)
|
|
550
|
+
"""
|
|
498
551
|
```
|
|
499
552
|
|
|
500
553
|
On return:
|
|
@@ -512,8 +565,7 @@ Display: `Sending back to planner for revision... (iteration {N}/3)`
|
|
|
512
565
|
Spawn gsd-planner with revision context:
|
|
513
566
|
|
|
514
567
|
```
|
|
515
|
-
|
|
516
|
-
prompt="""
|
|
568
|
+
@gsd-planner """
|
|
517
569
|
<revision_context>
|
|
518
570
|
|
|
519
571
|
**Phase:** {phase_number}
|
|
@@ -534,11 +586,7 @@ ${AGENT_SKILLS_PLANNER}
|
|
|
534
586
|
read existing PLAN.md files. Make targeted updates to address checker issues.
|
|
535
587
|
Do NOT replan from scratch unless issues are fundamental.
|
|
536
588
|
</instructions>
|
|
537
|
-
"""
|
|
538
|
-
subagent_type="gsd-planner",
|
|
539
|
-
model="{planner_model}",
|
|
540
|
-
description="Revise Phase {phase} plans"
|
|
541
|
-
)
|
|
589
|
+
"""
|
|
542
590
|
```
|
|
543
591
|
|
|
544
592
|
After planner returns → spawn checker again (verify_gap_plans logic)
|