gsd-remix 1.0.2 → 1.1.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/README.md +13 -81
- package/README.zh-CN.md +13 -57
- package/agents/gsd-debugger.md +0 -3
- package/agents/gsd-executor.md +5 -11
- package/agents/gsd-phase-researcher.md +3 -107
- package/agents/gsd-plan-checker.md +0 -61
- package/agents/gsd-planner.md +4 -63
- package/agents/gsd-roadmapper.md +0 -29
- package/agents/gsd-security-auditor.md +62 -114
- package/agents/gsd-verifier.md +0 -3
- package/bin/install.js +20 -118
- package/commands/gsd/complete-milestone.md +0 -22
- package/commands/gsd/plan-phase.md +1 -2
- package/get-shit-done/bin/gsd-tools.cjs +5 -224
- package/get-shit-done/bin/lib/claude-md.cjs +427 -0
- package/get-shit-done/bin/lib/config-schema.cjs +2 -12
- package/get-shit-done/bin/lib/config.cjs +3 -12
- package/get-shit-done/bin/lib/core.cjs +4 -5
- package/get-shit-done/bin/lib/init.cjs +0 -163
- package/get-shit-done/bin/lib/model-profiles.cjs +12 -18
- package/get-shit-done/bin/lib/verify.cjs +0 -66
- package/get-shit-done/references/agent-contracts.md +0 -6
- package/get-shit-done/references/artifact-types.md +0 -30
- package/get-shit-done/references/continuation-format.md +0 -1
- package/get-shit-done/references/model-profiles.md +39 -37
- package/get-shit-done/references/planning-config.md +7 -12
- package/get-shit-done/references/verification-overrides.md +1 -1
- package/get-shit-done/templates/README.md +2 -9
- package/get-shit-done/templates/claude-md.md +0 -14
- package/get-shit-done/templates/config.json +5 -19
- package/get-shit-done/workflows/autonomous.md +9 -141
- package/get-shit-done/workflows/complete-milestone.md +3 -4
- package/get-shit-done/workflows/discuss-phase-assumptions.md +1 -18
- package/get-shit-done/workflows/discuss-phase.md +10 -104
- package/get-shit-done/workflows/do.md +1 -5
- package/get-shit-done/workflows/execute-phase.md +53 -103
- package/get-shit-done/workflows/execute-plan.md +4 -4
- package/get-shit-done/workflows/health.md +2 -5
- package/get-shit-done/workflows/help.md +0 -165
- package/get-shit-done/workflows/new-milestone.md +0 -51
- package/get-shit-done/workflows/new-project.md +2 -63
- package/get-shit-done/workflows/next.md +0 -23
- package/get-shit-done/workflows/pause-work.md +7 -15
- package/get-shit-done/workflows/plan-phase.md +20 -304
- package/get-shit-done/workflows/pr-branch.md +0 -1
- package/get-shit-done/workflows/progress.md +1 -68
- package/get-shit-done/workflows/quick.md +0 -3
- package/get-shit-done/workflows/research-phase.md +0 -1
- package/get-shit-done/workflows/settings.md +1 -57
- package/get-shit-done/workflows/transition.md +3 -86
- package/get-shit-done/workflows/verify-work.md +0 -64
- package/package.json +1 -1
- package/scripts/build-hooks.js +0 -2
- package/sdk/prompts/agents/gsd-executor.md +2 -0
- package/sdk/prompts/agents/gsd-plan-checker.md +0 -3
- package/sdk/prompts/agents/gsd-roadmapper.md +0 -29
- package/sdk/src/config.ts +4 -5
- package/sdk/src/golden/golden-integration-covered.ts +0 -2
- package/sdk/src/golden/golden-policy.ts +1 -1
- package/sdk/src/golden/golden.integration.test.ts +0 -27
- package/sdk/src/golden/read-only-golden-rows.ts +0 -15
- package/sdk/src/query/QUERY-HANDLERS.md +3 -34
- package/sdk/src/query/claude-md.ts +421 -0
- package/sdk/src/query/commit.test.ts +155 -1
- package/sdk/src/query/commit.ts +71 -17
- package/sdk/src/query/config-gates.test.ts +1 -2
- package/sdk/src/query/config-gates.ts +1 -5
- package/sdk/src/query/config-mutation.test.ts +0 -1
- package/sdk/src/query/config-mutation.ts +5 -6
- package/sdk/src/query/config-query.test.ts +2 -2
- package/sdk/src/query/config-query.ts +12 -18
- package/sdk/src/query/decomposed-handlers.test.ts +0 -64
- package/sdk/src/query/index.ts +4 -68
- package/sdk/src/query/init.test.ts +0 -64
- package/sdk/src/query/init.ts +0 -189
- package/sdk/src/query/normalize-query-command.ts +0 -2
- package/sdk/src/query/profile.test.ts +0 -43
- package/sdk/src/query/profile.ts +1 -141
- package/sdk/src/query/state-mutation.ts +18 -0
- package/sdk/src/runtime-health.ts +3 -3
- package/agents/gsd-ai-researcher.md +0 -133
- package/agents/gsd-doc-classifier.md +0 -168
- package/agents/gsd-doc-synthesizer.md +0 -204
- package/agents/gsd-doc-verifier.md +0 -217
- package/agents/gsd-doc-writer.md +0 -615
- package/agents/gsd-domain-researcher.md +0 -153
- package/agents/gsd-eval-auditor.md +0 -191
- package/agents/gsd-eval-planner.md +0 -154
- package/agents/gsd-framework-selector.md +0 -160
- package/agents/gsd-intel-updater.md +0 -334
- package/agents/gsd-nyquist-auditor.md +0 -203
- package/agents/gsd-ui-auditor.md +0 -495
- package/agents/gsd-ui-checker.md +0 -309
- package/agents/gsd-ui-researcher.md +0 -380
- package/agents/gsd-user-profiler.md +0 -171
- package/commands/gsd/ai-integration-phase.md +0 -36
- package/commands/gsd/analyze-dependencies.md +0 -34
- package/commands/gsd/audit-fix.md +0 -33
- package/commands/gsd/audit-milestone.md +0 -36
- package/commands/gsd/audit-uat.md +0 -24
- package/commands/gsd/docs-update.md +0 -48
- package/commands/gsd/eval-review.md +0 -32
- package/commands/gsd/explore.md +0 -27
- package/commands/gsd/extract_learnings.md +0 -22
- package/commands/gsd/forensics.md +0 -56
- package/commands/gsd/from-gsd2.md +0 -47
- package/commands/gsd/graphify.md +0 -201
- package/commands/gsd/import.md +0 -37
- package/commands/gsd/inbox.md +0 -38
- package/commands/gsd/ingest-docs.md +0 -42
- package/commands/gsd/intel.md +0 -179
- package/commands/gsd/join-discord.md +0 -19
- package/commands/gsd/list-phase-assumptions.md +0 -46
- package/commands/gsd/list-workspaces.md +0 -19
- package/commands/gsd/manager.md +0 -40
- package/commands/gsd/milestone-summary.md +0 -51
- package/commands/gsd/new-workspace.md +0 -44
- package/commands/gsd/plan-milestone-gaps.md +0 -34
- package/commands/gsd/plan-review-convergence.md +0 -52
- package/commands/gsd/plant-seed.md +0 -28
- package/commands/gsd/profile-user.md +0 -46
- package/commands/gsd/reapply-patches.md +0 -331
- package/commands/gsd/remove-workspace.md +0 -26
- package/commands/gsd/review.md +0 -40
- package/commands/gsd/scan.md +0 -26
- package/commands/gsd/secure-phase.md +0 -35
- package/commands/gsd/session-report.md +0 -19
- package/commands/gsd/set-profile.md +0 -12
- package/commands/gsd/ship.md +0 -23
- package/commands/gsd/sketch-wrap-up.md +0 -31
- package/commands/gsd/sketch.md +0 -49
- package/commands/gsd/spec-phase.md +0 -62
- package/commands/gsd/spike-wrap-up.md +0 -31
- package/commands/gsd/spike.md +0 -46
- package/commands/gsd/stats.md +0 -18
- package/commands/gsd/sync-skills.md +0 -19
- package/commands/gsd/thread.md +0 -227
- package/commands/gsd/ui-phase.md +0 -34
- package/commands/gsd/ui-review.md +0 -32
- package/commands/gsd/ultraplan-phase.md +0 -33
- package/commands/gsd/update.md +0 -37
- package/commands/gsd/validate-phase.md +0 -35
- package/commands/gsd/workstreams.md +0 -69
- package/get-shit-done/bin/lib/docs.cjs +0 -267
- package/get-shit-done/bin/lib/graphify.cjs +0 -494
- package/get-shit-done/bin/lib/gsd2-import.cjs +0 -511
- package/get-shit-done/bin/lib/intel.cjs +0 -639
- package/get-shit-done/bin/lib/profile-output.cjs +0 -1080
- package/get-shit-done/bin/lib/profile-pipeline.cjs +0 -539
- package/get-shit-done/bin/lib/workstream.cjs +0 -495
- package/get-shit-done/references/ai-evals.md +0 -156
- package/get-shit-done/references/ai-frameworks.md +0 -186
- package/get-shit-done/references/doc-conflict-engine.md +0 -91
- package/get-shit-done/references/model-profile-resolution.md +0 -38
- package/get-shit-done/references/planner-reviews.md +0 -39
- package/get-shit-done/references/sketch-interactivity.md +0 -41
- package/get-shit-done/references/sketch-theme-system.md +0 -94
- package/get-shit-done/references/sketch-tooling.md +0 -45
- package/get-shit-done/references/sketch-variant-patterns.md +0 -81
- package/get-shit-done/references/thinking-models-debug.md +0 -44
- package/get-shit-done/references/thinking-models-execution.md +0 -50
- package/get-shit-done/references/thinking-models-planning.md +0 -62
- package/get-shit-done/references/thinking-models-research.md +0 -50
- package/get-shit-done/references/thinking-models-verification.md +0 -55
- package/get-shit-done/references/thinking-partner.md +0 -96
- package/get-shit-done/references/user-profiling.md +0 -681
- package/get-shit-done/references/workstream-flag.md +0 -111
- package/get-shit-done/templates/AI-SPEC.md +0 -246
- package/get-shit-done/templates/SECURITY.md +0 -61
- package/get-shit-done/templates/UI-SPEC.md +0 -100
- package/get-shit-done/templates/VALIDATION.md +0 -76
- package/get-shit-done/templates/dev-preferences.md +0 -21
- package/get-shit-done/templates/user-profile.md +0 -146
- package/get-shit-done/workflows/ai-integration-phase.md +0 -284
- package/get-shit-done/workflows/analyze-dependencies.md +0 -96
- package/get-shit-done/workflows/audit-fix.md +0 -175
- package/get-shit-done/workflows/audit-milestone.md +0 -340
- package/get-shit-done/workflows/audit-uat.md +0 -109
- package/get-shit-done/workflows/docs-update.md +0 -1155
- package/get-shit-done/workflows/eval-review.md +0 -155
- package/get-shit-done/workflows/explore.md +0 -141
- package/get-shit-done/workflows/extract_learnings.md +0 -242
- package/get-shit-done/workflows/forensics.md +0 -265
- package/get-shit-done/workflows/import.md +0 -246
- package/get-shit-done/workflows/inbox.md +0 -387
- package/get-shit-done/workflows/ingest-docs.md +0 -328
- package/get-shit-done/workflows/list-phase-assumptions.md +0 -178
- package/get-shit-done/workflows/list-workspaces.md +0 -56
- package/get-shit-done/workflows/manager.md +0 -365
- package/get-shit-done/workflows/milestone-summary.md +0 -223
- package/get-shit-done/workflows/new-workspace.md +0 -239
- package/get-shit-done/workflows/plan-milestone-gaps.md +0 -273
- package/get-shit-done/workflows/plan-review-convergence.md +0 -254
- package/get-shit-done/workflows/plant-seed.md +0 -172
- package/get-shit-done/workflows/profile-user.md +0 -452
- package/get-shit-done/workflows/remove-workspace.md +0 -92
- package/get-shit-done/workflows/review.md +0 -344
- package/get-shit-done/workflows/scan.md +0 -102
- package/get-shit-done/workflows/secure-phase.md +0 -166
- package/get-shit-done/workflows/session-report.md +0 -146
- package/get-shit-done/workflows/ship.md +0 -302
- package/get-shit-done/workflows/sketch-wrap-up.md +0 -283
- package/get-shit-done/workflows/sketch.md +0 -286
- package/get-shit-done/workflows/spec-phase.md +0 -262
- package/get-shit-done/workflows/spike-wrap-up.md +0 -281
- package/get-shit-done/workflows/spike.md +0 -362
- package/get-shit-done/workflows/stats.md +0 -60
- package/get-shit-done/workflows/sync-skills.md +0 -182
- package/get-shit-done/workflows/ui-phase.md +0 -323
- package/get-shit-done/workflows/ui-review.md +0 -190
- package/get-shit-done/workflows/ultraplan-phase.md +0 -189
- package/get-shit-done/workflows/update.md +0 -587
- package/get-shit-done/workflows/validate-phase.md +0 -176
- package/hooks/dist/gsd-check-update-worker.js +0 -108
- package/hooks/dist/gsd-check-update.js +0 -63
- package/hooks/gsd-check-update-worker.js +0 -108
- package/hooks/gsd-check-update.js +0 -63
- package/sdk/src/golden/fixtures/profile-sample-sessions/demo-project/sample.jsonl +0 -3
- package/sdk/src/query/docs-init.ts +0 -257
- package/sdk/src/query/intel.test.ts +0 -90
- package/sdk/src/query/intel.ts +0 -404
- package/sdk/src/query/profile-extract-messages.ts +0 -247
- package/sdk/src/query/profile-output.ts +0 -908
- package/sdk/src/query/profile-questionnaire-data.ts +0 -181
- package/sdk/src/query/profile-sample.ts +0 -184
- package/sdk/src/query/profile-scan-sessions.ts +0 -174
- package/sdk/src/query/workspace.test.ts +0 -119
- package/sdk/src/query/workspace.ts +0 -131
- package/sdk/src/query/workstream.test.ts +0 -51
- package/sdk/src/query/workstream.ts +0 -434
|
@@ -43,10 +43,7 @@ Always use the exact name from this list — do not fall back to 'general-purpos
|
|
|
43
43
|
- gsd-debugger — Diagnoses and fixes issues
|
|
44
44
|
- gsd-codebase-mapper — Maps project structure and dependencies
|
|
45
45
|
- gsd-integration-checker — Checks cross-phase integration
|
|
46
|
-
- gsd-
|
|
47
|
-
- gsd-ui-researcher — Researches UI/UX approaches
|
|
48
|
-
- gsd-ui-checker — Reviews UI implementation quality
|
|
49
|
-
- gsd-ui-auditor — Audits UI against design requirements
|
|
46
|
+
- gsd-security-auditor — Diff-scoped security review (fallback when no company security skill)
|
|
50
47
|
</available_agent_types>
|
|
51
48
|
|
|
52
49
|
<process>
|
|
@@ -57,8 +54,6 @@ Parse `$ARGUMENTS` before loading any context:
|
|
|
57
54
|
- First positional token → `PHASE_ARG`
|
|
58
55
|
- Optional `--wave N` → `WAVE_FILTER`
|
|
59
56
|
- Optional `--gaps-only` keeps its current meaning
|
|
60
|
-
- Optional `--cross-ai` → `CROSS_AI_FORCE=true` (force all plans through cross-AI execution)
|
|
61
|
-
- Optional `--no-cross-ai` → `CROSS_AI_DISABLED=true` (disable cross-AI for this run, overrides config and frontmatter)
|
|
62
57
|
|
|
63
58
|
If `--wave` is absent, preserve the current behavior of executing all incomplete waves in the phase.
|
|
64
59
|
</step>
|
|
@@ -72,9 +67,6 @@ if ! command -v gsd-remix-sdk &>/dev/null; then
|
|
|
72
67
|
echo ""
|
|
73
68
|
echo "Repair the bundled SDK:"
|
|
74
69
|
echo " /gsd-health --runtime --repair"
|
|
75
|
-
echo ""
|
|
76
|
-
echo "Or refresh all runtime assets:"
|
|
77
|
-
echo " /gsd-update"
|
|
78
70
|
exit 1
|
|
79
71
|
fi
|
|
80
72
|
|
|
@@ -286,77 +278,6 @@ Report:
|
|
|
286
278
|
```
|
|
287
279
|
</step>
|
|
288
280
|
|
|
289
|
-
<step name="cross_ai_delegation">
|
|
290
|
-
**Optional step 2.5 — Delegate plans to an external AI runtime.**
|
|
291
|
-
|
|
292
|
-
This step runs after plan discovery and before normal wave execution. It identifies plans
|
|
293
|
-
that should be delegated to an external AI command and executes them via stdin-based prompt
|
|
294
|
-
delivery. Plans handled here are removed from the execute_waves plan list so the normal
|
|
295
|
-
executor skips them.
|
|
296
|
-
|
|
297
|
-
**Activation logic:**
|
|
298
|
-
|
|
299
|
-
1. If `CROSS_AI_DISABLED` is true (`--no-cross-ai` flag): skip this step entirely.
|
|
300
|
-
2. If `CROSS_AI_FORCE` is true (`--cross-ai` flag): mark ALL incomplete plans for cross-AI execution.
|
|
301
|
-
3. Otherwise: check each plan's frontmatter for `cross_ai: true` AND verify config
|
|
302
|
-
`workflow.cross_ai_execution` is `true`. Plans matching both conditions are marked for cross-AI.
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
CROSS_AI_ENABLED=$(gsd-remix-sdk query config-get workflow.cross_ai_execution 2>/dev/null || echo "false")
|
|
306
|
-
CROSS_AI_CMD=$(gsd-remix-sdk query config-get workflow.cross_ai_command 2>/dev/null || echo "")
|
|
307
|
-
CROSS_AI_TIMEOUT=$(gsd-remix-sdk query config-get workflow.cross_ai_timeout 2>/dev/null || echo "300")
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
**If no plans are marked for cross-AI:** Skip to execute_waves.
|
|
311
|
-
|
|
312
|
-
**If plans are marked but `cross_ai_command` is empty:** Error — tell user to set
|
|
313
|
-
`workflow.cross_ai_command` via `gsd-remix-sdk query config-set workflow.cross_ai_command "<command>"`.
|
|
314
|
-
|
|
315
|
-
**For each cross-AI plan (sequentially):**
|
|
316
|
-
|
|
317
|
-
1. **Construct the task prompt** from the plan file:
|
|
318
|
-
- Extract `<objective>` and `<tasks>` sections from the PLAN.md
|
|
319
|
-
- Append PROJECT.md context (project name, description, tech stack)
|
|
320
|
-
- Format as a self-contained execution prompt
|
|
321
|
-
|
|
322
|
-
2. **Check for dirty working tree before execution:**
|
|
323
|
-
```bash
|
|
324
|
-
if ! git diff --quiet HEAD 2>/dev/null; then
|
|
325
|
-
echo "WARNING: dirty working tree detected — the external AI command may produce uncommitted changes that conflict with existing modifications"
|
|
326
|
-
fi
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
3. **Run the external command** from the project root, writing the prompt to stdin.
|
|
330
|
-
Never shell-interpolate the prompt — always pipe via stdin to prevent injection:
|
|
331
|
-
```bash
|
|
332
|
-
echo "$TASK_PROMPT" | timeout "${CROSS_AI_TIMEOUT}s" ${CROSS_AI_CMD} > "$CANDIDATE_SUMMARY" 2>"$ERROR_LOG"
|
|
333
|
-
EXIT_CODE=$?
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
4. **Evaluate the result:**
|
|
337
|
-
|
|
338
|
-
**Success (exit 0 + valid summary):**
|
|
339
|
-
- Read `$CANDIDATE_SUMMARY` and validate it contains meaningful content
|
|
340
|
-
(not empty, has at least a heading and description — a valid SUMMARY.md structure)
|
|
341
|
-
- Write it as the plan's SUMMARY.md file
|
|
342
|
-
- Update STATE.md plan status to complete
|
|
343
|
-
- Update ROADMAP.md progress
|
|
344
|
-
- Mark plan as handled — skip it in execute_waves
|
|
345
|
-
|
|
346
|
-
**Failure (non-zero exit or invalid summary):**
|
|
347
|
-
- Display the error output and exit code
|
|
348
|
-
- Warn: "The external command may have left uncommitted changes or partial edits
|
|
349
|
-
in the working tree. Review `git status` and `git diff` before proceeding."
|
|
350
|
-
- Offer three choices:
|
|
351
|
-
- **retry** — run the same plan through cross-AI again
|
|
352
|
-
- **skip** — fall back to normal executor for this plan (re-add to execute_waves list)
|
|
353
|
-
- **abort** — stop execution entirely, preserve state for resume
|
|
354
|
-
|
|
355
|
-
5. **After all cross-AI plans processed:** Remove successfully handled plans from the
|
|
356
|
-
incomplete plan list so execute_waves skips them. Any skipped-to-fallback plans remain
|
|
357
|
-
in the list for normal executor processing.
|
|
358
|
-
</step>
|
|
359
|
-
|
|
360
281
|
<step name="execute_waves">
|
|
361
282
|
Execute each selected wave in sequence. Within a wave: parallel if `PARALLELIZATION=true`, sequential if `false`.
|
|
362
283
|
|
|
@@ -967,26 +888,6 @@ After all waves:
|
|
|
967
888
|
[Aggregate from SUMMARYs, or "None"]
|
|
968
889
|
```
|
|
969
890
|
|
|
970
|
-
**Security gate check:**
|
|
971
|
-
```bash
|
|
972
|
-
SECURITY_CFG=$(gsd-remix-sdk query config-get workflow.security_enforcement --raw 2>/dev/null || echo "true")
|
|
973
|
-
SECURITY_FILE=$(ls "${PHASE_DIR}"/*-SECURITY.md 2>/dev/null | head -1)
|
|
974
|
-
```
|
|
975
|
-
|
|
976
|
-
If `SECURITY_CFG` is `false`: skip.
|
|
977
|
-
|
|
978
|
-
If `SECURITY_CFG` is `true` AND `SECURITY_FILE` is empty (no SECURITY.md yet):
|
|
979
|
-
Include in the next-steps routing output:
|
|
980
|
-
```
|
|
981
|
-
⚠ Security enforcement enabled — run before advancing:
|
|
982
|
-
/gsd-secure-phase {PHASE} ${GSD_WS}
|
|
983
|
-
```
|
|
984
|
-
|
|
985
|
-
If `SECURITY_CFG` is `true` AND SECURITY.md exists: check frontmatter `threats_open`. If > 0:
|
|
986
|
-
```
|
|
987
|
-
⚠ Security gate: {threats_open} threats open
|
|
988
|
-
/gsd-secure-phase {PHASE} — resolve before advancing
|
|
989
|
-
```
|
|
990
891
|
</step>
|
|
991
892
|
|
|
992
893
|
<step name="tdd_review_checkpoint">
|
|
@@ -1094,7 +995,56 @@ Code review found issues. Consider running:
|
|
|
1094
995
|
|
|
1095
996
|
**Error handling:** If the Skill invocation fails or throws, catch the error, display "Code review encountered an error (non-blocking): {error}" and proceed to next step. Review failures must never block execution.
|
|
1096
997
|
|
|
1097
|
-
Regardless of review result, ALWAYS proceed to close_parent_artifacts → regression_gate → verify_phase_goal.
|
|
998
|
+
Regardless of review result, ALWAYS proceed to security_review_gate → close_parent_artifacts → regression_gate → verify_phase_goal.
|
|
999
|
+
</step>
|
|
1000
|
+
|
|
1001
|
+
<step name="security_review_gate" required="true">
|
|
1002
|
+
**Advisory security review anchored on the phase's real diff.** Never blocks execution flow.
|
|
1003
|
+
|
|
1004
|
+
**1. Config gate:**
|
|
1005
|
+
```bash
|
|
1006
|
+
SECURITY_REVIEW=$(gsd-remix-sdk query config-get workflow.security_review 2>/dev/null || echo "auto")
|
|
1007
|
+
```
|
|
1008
|
+
|
|
1009
|
+
If `SECURITY_REVIEW` is `"off"`: display `Security review skipped: workflow.security_review=off` and proceed to next step.
|
|
1010
|
+
|
|
1011
|
+
**2. Resolve changed-file scope (reuse, don't recompute):** resolution order is `--files` argument > aggregated `files_modified` from this phase's SUMMARY.md files > `git diff --name-only` against the phase's starting commit.
|
|
1012
|
+
```bash
|
|
1013
|
+
CHANGED_FILES=$(grep -h "^- " "${PHASE_DIR}"/*-SUMMARY.md 2>/dev/null | grep -oE '[^ ]+\.[a-zA-Z]+' | sort -u)
|
|
1014
|
+
[ -z "$CHANGED_FILES" ] && CHANGED_FILES=$(git diff --name-only "${PHASE_START_COMMIT:-HEAD~10}" 2>/dev/null)
|
|
1015
|
+
```
|
|
1016
|
+
|
|
1017
|
+
**3. Trigger decision:**
|
|
1018
|
+
|
|
1019
|
+
- If `SECURITY_REVIEW` is `"always"` → trigger. Reviewer model: **opus**.
|
|
1020
|
+
- If `SECURITY_REVIEW` is `"auto"`:
|
|
1021
|
+
- **Hard rules (no AI judgment — low-frequency files only):** trigger if any changed file matches `.env*`, `Dockerfile*`, or CI config (`.github/workflows/`, `.gitlab-ci.yml`, `Jenkinsfile`, `cloudbuild.*`, `.circleci/`). Reviewer model: **opus**.
|
|
1022
|
+
- **Otherwise, AI judgment:** read the changed-file list and each plan's SUMMARY (including any `## Security-Relevant Surface` section) and decide whether the change plausibly touches: auth/authz/session handling; secrets or crypto; user input, deserialization, or file upload; new network endpoints; path/SQL/command string concatenation; permissions/CORS/Cookie config; XSS or unsafe HTML rendering; SSRF (outbound requests from BFF/server); PII or credentials in logs; redirects.
|
|
1023
|
+
Lean toward triggering when the diff **adds a new dependency** (package.json/lockfile changes are NOT a hard rule — they are a hint). Additional hints (hint only, never auto-trigger): tenant/account/org boundary changes; webhook signature verification or callbacks; rate limiting/abuse protection; audit logging or admin-privilege paths; billing/entitlement gating.
|
|
1024
|
+
Reviewer model when triggered via semantic signal: **sonnet**.
|
|
1025
|
+
- **If not triggered:** you MUST display one line — `Security review skipped: {short reason, e.g. "docs-only diff, no security-relevant surface"}` — then proceed to next step. Silent skips are not allowed.
|
|
1026
|
+
|
|
1027
|
+
**4. Invoke review (company skill first, generic fallback second):**
|
|
1028
|
+
|
|
1029
|
+
Try the company skill via try-invoke-and-catch (do NOT probe the filesystem for skills — plugin-provided skills are not discoverable that way):
|
|
1030
|
+
```
|
|
1031
|
+
Skill(skill="security-code-review", args="{changed file list}")
|
|
1032
|
+
```
|
|
1033
|
+
|
|
1034
|
+
If the Skill invocation fails or the skill does not exist, fall back to the bundled generic reviewer:
|
|
1035
|
+
```
|
|
1036
|
+
Task(
|
|
1037
|
+
subagent_type="gsd-security-auditor",
|
|
1038
|
+
model="{opus for hard-rule/always triggers, sonnet for auto semantic triggers}",
|
|
1039
|
+
prompt="<changed_files>{list}</changed_files>
|
|
1040
|
+
<diff>run: git diff {phase start ref} -- {changed files}</diff>
|
|
1041
|
+
<trigger_reason>{hard rule | semantic signal | always}</trigger_reason>
|
|
1042
|
+
<summary_surface>{## Security-Relevant Surface content from SUMMARYs, if any}</summary_surface>",
|
|
1043
|
+
description="Security review: phase {N} diff"
|
|
1044
|
+
)
|
|
1045
|
+
```
|
|
1046
|
+
|
|
1047
|
+
**5. Relay findings.** Display the reviewer's findings table to the user. Critical/high findings deserve a suggestion to fix before shipping — but this gate is advisory: regardless of findings or errors, ALWAYS proceed to close_parent_artifacts. If the review itself errors, display `Security review encountered an error (non-blocking): {error}` and proceed.
|
|
1098
1048
|
</step>
|
|
1099
1049
|
|
|
1100
1050
|
<step name="close_parent_artifacts">
|
|
@@ -1385,7 +1335,7 @@ All automated checks passed. {N} items need human testing:
|
|
|
1385
1335
|
|
|
1386
1336
|
{From VERIFICATION.md human_verification section}
|
|
1387
1337
|
|
|
1388
|
-
Items saved to `{phase_num}-HUMAN-UAT.md` — they will appear in `/gsd-progress
|
|
1338
|
+
Items saved to `{phase_num}-HUMAN-UAT.md` — they will appear in `/gsd-progress`.
|
|
1389
1339
|
|
|
1390
1340
|
"approved" → continue | Report issues → gap closure
|
|
1391
1341
|
```
|
|
@@ -1480,7 +1430,7 @@ Extract from result: `next_phase`, `next_phase_name`, `is_last_phase`, `warnings
|
|
|
1480
1430
|
|
|
1481
1431
|
{list each warning}
|
|
1482
1432
|
|
|
1483
|
-
These items are tracked and will appear in `/gsd-progress
|
|
1433
|
+
These items are tracked and will appear in `/gsd-progress`.
|
|
1484
1434
|
```
|
|
1485
1435
|
|
|
1486
1436
|
```bash
|
|
@@ -61,11 +61,11 @@ PHASE=$(echo "$PLAN_PATH" | grep -oE '[0-9]+(\.[0-9]+)?-[0-9]+')
|
|
|
61
61
|
# config settings can be fetched via gsd-remix-sdk query config-get if needed
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
<if mode="yolo">
|
|
64
|
+
<if mode="yolo" OR="gates.execute_next_plan is false or absent">
|
|
65
65
|
Auto-approve: `⚡ Execute {phase}-{plan}-PLAN.md [Plan X of Y for Phase Z]` → parse_segments.
|
|
66
66
|
</if>
|
|
67
67
|
|
|
68
|
-
<if mode="interactive"
|
|
68
|
+
<if mode="interactive" AND="gates.execute_next_plan is explicitly true">
|
|
69
69
|
Present plan identification, wait for confirmation.
|
|
70
70
|
</if>
|
|
71
71
|
</step>
|
|
@@ -91,7 +91,7 @@ Parse JSON for: `task_count`, `inline_threshold`, `checkpoint_mode`, `threshold_
|
|
|
91
91
|
Use the route returned by `plan.execution-route` by default. This decision is deterministic and code-based — do NOT substitute your own LLM judgment unless the query failed.
|
|
92
92
|
|
|
93
93
|
Routing rules encoded in the query:
|
|
94
|
-
- `INLINE_THRESHOLD` remains the hard floor. If `task_count <= INLINE_THRESHOLD`, use inline execution immediately.
|
|
94
|
+
- `INLINE_THRESHOLD` remains the hard floor. If `INLINE_THRESHOLD > 0` and `task_count <= INLINE_THRESHOLD`, use inline execution immediately. A threshold of `0` disables inline routing.
|
|
95
95
|
- For plans above the threshold, a conservative low-complexity override is allowed only for simple `3-5` task plans with:
|
|
96
96
|
- no checkpoint tasks
|
|
97
97
|
- small file surface
|
|
@@ -121,7 +121,7 @@ If `EXECUTION_ROUTE` failed or returned no usable recommendation:
|
|
|
121
121
|
grep -n 'type="checkpoint' "$PLAN_FILE"
|
|
122
122
|
```
|
|
123
123
|
- count `<task>` tags
|
|
124
|
-
- inline when `TASK_COUNT <= INLINE_THRESHOLD`
|
|
124
|
+
- inline when `INLINE_THRESHOLD > 0` and `TASK_COUNT <= INLINE_THRESHOLD`
|
|
125
125
|
- otherwise apply checkpoint-based routing
|
|
126
126
|
|
|
127
127
|
**Pattern A:** init_agent_tracking → capture `EXPECTED_BASE=$(git rev-parse HEAD)` → spawn Task(subagent_type="gsd-executor", model=executor_model) with prompt: execute plan at [path], autonomous, all tasks + SUMMARY + commit, follow deviation/auth rules, report: plan name, tasks, SUMMARY path, commit hash → track agent_id → wait → update tracking → report. **Include `isolation="worktree"` only if `workflow.use_worktrees` is not `false`** (read via `config-get workflow.use_worktrees`). **When using `isolation="worktree"`, include a `<worktree_branch_check>` block in the prompt** instructing the executor to run `git merge-base HEAD {EXPECTED_BASE}` and, if the result differs from `{EXPECTED_BASE}`, hard-reset the branch with `git reset --hard {EXPECTED_BASE}` before starting work (safe — runs before any agent work), then verify with `[ "$(git rev-parse HEAD)" != "{EXPECTED_BASE}" ] && exit 1`. This corrects a known issue where `EnterWorktree` creates branches from `main` instead of the feature branch HEAD (affects all platforms).
|
|
@@ -153,13 +153,13 @@ Warnings: N
|
|
|
153
153
|
## Warnings
|
|
154
154
|
|
|
155
155
|
- [legacy_bridge_missing] No gsd-tools.cjs bridge could be found for CJS fallback commands.
|
|
156
|
-
Fix:
|
|
156
|
+
Fix: Reinstall GSD to restore the bundled bridge. Use /gsd-health --runtime --repair only for SDK CLI repair.
|
|
157
157
|
```
|
|
158
158
|
|
|
159
159
|
**Footer:**
|
|
160
160
|
```
|
|
161
161
|
---
|
|
162
|
-
Runtime mode is read-only unless --repair is set. Use /gsd-health --runtime --repair to rebuild the bundled SDK, or
|
|
162
|
+
Runtime mode is read-only unless --repair is set. Use /gsd-health --runtime --repair to rebuild the bundled SDK, or reinstall GSD to refresh all runtime assets.
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
Then STOP. Do not proceed to repair prompts.
|
|
@@ -266,8 +266,6 @@ Report final status.
|
|
|
266
266
|
| W005 | warning | Phase directory naming mismatch | No |
|
|
267
267
|
| W006 | warning | Phase in ROADMAP but no directory | No |
|
|
268
268
|
| W007 | warning | Phase on disk but not in ROADMAP | No |
|
|
269
|
-
| W008 | warning | config.json: workflow.nyquist_validation absent (defaults to enabled but agents may skip) | Yes |
|
|
270
|
-
| W009 | warning | Phase has Validation Architecture in RESEARCH.md but no VALIDATION.md | No |
|
|
271
269
|
| W018 | warning | MILESTONES.md missing entry for archived milestone snapshot | Yes (`--backfill`) |
|
|
272
270
|
| W019 | warning | Unrecognized .planning/ root file — not a canonical GSD artifact | No |
|
|
273
271
|
| I001 | info | Plan without SUMMARY (may be in progress) | No |
|
|
@@ -281,7 +279,6 @@ Report final status.
|
|
|
281
279
|
| createConfig | Create config.json with defaults | None |
|
|
282
280
|
| resetConfig | Delete + recreate config.json | Loses custom settings |
|
|
283
281
|
| regenerateState | Create STATE.md from ROADMAP structure when it is missing | Loses session history |
|
|
284
|
-
| addNyquistKey | Add workflow.nyquist_validation: true to config.json | None — matches existing default |
|
|
285
282
|
| backfillMilestones | Synthesize missing MILESTONES.md entries from `.planning/milestones/vX.Y-ROADMAP.md` snapshots | None — additive only; triggered by `--backfill` flag |
|
|
286
283
|
|
|
287
284
|
**Not repairable (too risky):**
|
|
@@ -82,15 +82,6 @@ Comprehensive ecosystem research for niche/complex domains.
|
|
|
82
82
|
|
|
83
83
|
Usage: `/gsd-research-phase 3`
|
|
84
84
|
|
|
85
|
-
**`/gsd-list-phase-assumptions <number>`**
|
|
86
|
-
See what Claude is planning to do before it starts.
|
|
87
|
-
|
|
88
|
-
- Shows Claude's intended approach for a phase
|
|
89
|
-
- Lets you course-correct if Claude misunderstood your vision
|
|
90
|
-
- No files created - conversational output only
|
|
91
|
-
|
|
92
|
-
Usage: `/gsd-list-phase-assumptions 3`
|
|
93
|
-
|
|
94
85
|
**`/gsd-plan-phase <number>`**
|
|
95
86
|
Create detailed execution plan for a specific phase.
|
|
96
87
|
|
|
@@ -276,57 +267,6 @@ Systematic debugging with persistent state across context resets.
|
|
|
276
267
|
Usage: `/gsd-debug "login button doesn't work"`
|
|
277
268
|
Usage: `/gsd-debug` (resume active session)
|
|
278
269
|
|
|
279
|
-
### Spiking & Sketching
|
|
280
|
-
|
|
281
|
-
**`/gsd-spike [idea] [--quick]`**
|
|
282
|
-
Rapidly spike an idea with throwaway experiments to validate feasibility.
|
|
283
|
-
|
|
284
|
-
- Decomposes idea into 2-5 focused experiments (risk-ordered)
|
|
285
|
-
- Each spike answers one specific Given/When/Then question
|
|
286
|
-
- Builds minimum code, runs it, captures verdict (VALIDATED/INVALIDATED/PARTIAL)
|
|
287
|
-
- Saves to `.planning/spikes/` with MANIFEST.md tracking
|
|
288
|
-
- Does not require `/gsd-new-project` — works in any repo
|
|
289
|
-
- `--quick` skips decomposition, builds immediately
|
|
290
|
-
|
|
291
|
-
Usage: `/gsd-spike "can we stream LLM output over WebSockets?"`
|
|
292
|
-
Usage: `/gsd-spike --quick "test if pdfjs extracts tables"`
|
|
293
|
-
|
|
294
|
-
**`/gsd-sketch [idea] [--quick]`**
|
|
295
|
-
Rapidly sketch UI/design ideas using throwaway HTML mockups with multi-variant exploration.
|
|
296
|
-
|
|
297
|
-
- Conversational mood/direction intake before building
|
|
298
|
-
- Each sketch produces 2-3 variants as tabbed HTML pages
|
|
299
|
-
- User compares variants, cherry-picks elements, iterates
|
|
300
|
-
- Shared CSS theme system compounds across sketches
|
|
301
|
-
- Saves to `.planning/sketches/` with MANIFEST.md tracking
|
|
302
|
-
- Does not require `/gsd-new-project` — works in any repo
|
|
303
|
-
- `--quick` skips mood intake, jumps to building
|
|
304
|
-
|
|
305
|
-
Usage: `/gsd-sketch "dashboard layout for the admin panel"`
|
|
306
|
-
Usage: `/gsd-sketch --quick "form card grouping"`
|
|
307
|
-
|
|
308
|
-
**`/gsd-spike-wrap-up`**
|
|
309
|
-
Package spike findings into a persistent project skill.
|
|
310
|
-
|
|
311
|
-
- Curates each spike one-at-a-time (include/exclude/partial/UAT)
|
|
312
|
-
- Groups findings by feature area
|
|
313
|
-
- Generates `./.claude/skills/spike-findings-[project]/` with references and sources
|
|
314
|
-
- Writes summary to `.planning/spikes/WRAP-UP-SUMMARY.md`
|
|
315
|
-
- Adds auto-load routing line to project CLAUDE.md
|
|
316
|
-
|
|
317
|
-
Usage: `/gsd-spike-wrap-up`
|
|
318
|
-
|
|
319
|
-
**`/gsd-sketch-wrap-up`**
|
|
320
|
-
Package sketch design findings into a persistent project skill.
|
|
321
|
-
|
|
322
|
-
- Curates each sketch one-at-a-time (include/exclude/partial/revisit)
|
|
323
|
-
- Groups findings by design area
|
|
324
|
-
- Generates `./.claude/skills/sketch-findings-[project]/` with design decisions, CSS patterns, HTML structures
|
|
325
|
-
- Writes summary to `.planning/sketches/WRAP-UP-SUMMARY.md`
|
|
326
|
-
- Adds auto-load routing line to project CLAUDE.md
|
|
327
|
-
|
|
328
|
-
Usage: `/gsd-sketch-wrap-up`
|
|
329
|
-
|
|
330
270
|
### Quick Notes
|
|
331
271
|
|
|
332
272
|
**`/gsd-note <text>`**
|
|
@@ -382,33 +322,6 @@ Usage: `/gsd-verify-work 3`
|
|
|
382
322
|
|
|
383
323
|
### Ship Work
|
|
384
324
|
|
|
385
|
-
**`/gsd-ship [phase]`**
|
|
386
|
-
Create a PR from completed phase work with an auto-generated body.
|
|
387
|
-
|
|
388
|
-
- Pushes branch to remote
|
|
389
|
-
- Creates PR with summary from SUMMARY.md, VERIFICATION.md, REQUIREMENTS.md
|
|
390
|
-
- Optionally requests code review
|
|
391
|
-
- Updates STATE.md with shipping status
|
|
392
|
-
|
|
393
|
-
Prerequisites: Phase verified, `gh` CLI installed and authenticated.
|
|
394
|
-
|
|
395
|
-
Usage: `/gsd-ship 4` or `/gsd-ship 4 --draft`
|
|
396
|
-
|
|
397
|
-
---
|
|
398
|
-
|
|
399
|
-
**`/gsd-review --phase N [--gemini] [--claude] [--codex] [--coderabbit] [--opencode] [--qwen] [--cursor] [--all]`**
|
|
400
|
-
Cross-AI peer review — invoke external AI CLIs to independently review phase plans.
|
|
401
|
-
|
|
402
|
-
- Detects available CLIs (gemini, claude, codex, coderabbit)
|
|
403
|
-
- Each CLI reviews plans independently with the same structured prompt
|
|
404
|
-
- CodeRabbit reviews the current git diff (not a prompt) — may take up to 5 minutes
|
|
405
|
-
- Produces REVIEWS.md with per-reviewer feedback and consensus summary
|
|
406
|
-
- Feed reviews back into planning: `/gsd-plan-phase N --reviews`
|
|
407
|
-
|
|
408
|
-
Usage: `/gsd-review --phase 3 --all`
|
|
409
|
-
|
|
410
|
-
---
|
|
411
|
-
|
|
412
325
|
**`/gsd-pr-branch [target]`**
|
|
413
326
|
Create a clean branch for pull requests by filtering out .planning/ commits.
|
|
414
327
|
|
|
@@ -420,48 +333,6 @@ Usage: `/gsd-pr-branch` or `/gsd-pr-branch main`
|
|
|
420
333
|
|
|
421
334
|
---
|
|
422
335
|
|
|
423
|
-
**`/gsd-plant-seed [idea]`**
|
|
424
|
-
Capture a forward-looking idea with trigger conditions for automatic surfacing.
|
|
425
|
-
|
|
426
|
-
- Seeds preserve WHY, WHEN to surface, and breadcrumbs to related code
|
|
427
|
-
- Auto-surfaces during `/gsd-new-milestone` when trigger conditions match
|
|
428
|
-
- Better than deferred items — triggers are checked, not forgotten
|
|
429
|
-
|
|
430
|
-
Usage: `/gsd-plant-seed "add real-time notifications when we build the events system"`
|
|
431
|
-
|
|
432
|
-
---
|
|
433
|
-
|
|
434
|
-
**`/gsd-audit-uat`**
|
|
435
|
-
Cross-phase audit of all outstanding UAT and verification items.
|
|
436
|
-
- Scans every phase for pending, skipped, blocked, and human_needed items
|
|
437
|
-
- Cross-references against codebase to detect stale documentation
|
|
438
|
-
- Produces prioritized human test plan grouped by testability
|
|
439
|
-
- Use before starting a new milestone to clear verification debt
|
|
440
|
-
|
|
441
|
-
Usage: `/gsd-audit-uat`
|
|
442
|
-
|
|
443
|
-
### Milestone Auditing
|
|
444
|
-
|
|
445
|
-
**`/gsd-audit-milestone [version]`**
|
|
446
|
-
Audit milestone completion against original intent.
|
|
447
|
-
|
|
448
|
-
- Reads all phase VERIFICATION.md files
|
|
449
|
-
- Checks requirements coverage
|
|
450
|
-
- Spawns integration checker for cross-phase wiring
|
|
451
|
-
- Creates MILESTONE-AUDIT.md with gaps and tech debt
|
|
452
|
-
|
|
453
|
-
Usage: `/gsd-audit-milestone`
|
|
454
|
-
|
|
455
|
-
**`/gsd-plan-milestone-gaps`**
|
|
456
|
-
Create phases to close gaps identified by audit.
|
|
457
|
-
|
|
458
|
-
- Reads MILESTONE-AUDIT.md and groups gaps into phases
|
|
459
|
-
- Prioritizes by requirement priority (must/should/nice)
|
|
460
|
-
- Adds gap closure phases to ROADMAP.md
|
|
461
|
-
- Ready for `/gsd-plan-phase` on new phases
|
|
462
|
-
|
|
463
|
-
Usage: `/gsd-plan-milestone-gaps`
|
|
464
|
-
|
|
465
336
|
### Configuration
|
|
466
337
|
|
|
467
338
|
**`/gsd-settings`**
|
|
@@ -473,16 +344,6 @@ Configure workflow toggles and model profile interactively.
|
|
|
473
344
|
|
|
474
345
|
Usage: `/gsd-settings`
|
|
475
346
|
|
|
476
|
-
**`/gsd-set-profile <profile>`**
|
|
477
|
-
Quick switch model profile for GSD agents.
|
|
478
|
-
|
|
479
|
-
- `quality` — Opus everywhere except verification
|
|
480
|
-
- `balanced` — Opus for planning, Sonnet for execution (default)
|
|
481
|
-
- `budget` — Sonnet for writing, Haiku for research/verification
|
|
482
|
-
- `inherit` — Use current session model for all agents (OpenCode `/model`)
|
|
483
|
-
|
|
484
|
-
Usage: `/gsd-set-profile budget`
|
|
485
|
-
|
|
486
347
|
### Utility Commands
|
|
487
348
|
|
|
488
349
|
**`/gsd-cleanup`**
|
|
@@ -498,25 +359,6 @@ Usage: `/gsd-cleanup`
|
|
|
498
359
|
**`/gsd-help`**
|
|
499
360
|
Show this command reference.
|
|
500
361
|
|
|
501
|
-
**`/gsd-update`**
|
|
502
|
-
Update GSD to latest version with changelog preview.
|
|
503
|
-
|
|
504
|
-
- Shows installed vs latest version comparison
|
|
505
|
-
- Displays changelog entries for versions you've missed
|
|
506
|
-
- Highlights breaking changes
|
|
507
|
-
- Confirms before running install
|
|
508
|
-
- Better than raw `npx get-shit-done-cc`
|
|
509
|
-
|
|
510
|
-
Usage: `/gsd-update`
|
|
511
|
-
|
|
512
|
-
**`/gsd-join-discord`**
|
|
513
|
-
Join the GSD Discord community.
|
|
514
|
-
|
|
515
|
-
- Get help, share what you're building, stay updated
|
|
516
|
-
- Connect with other GSD users
|
|
517
|
-
|
|
518
|
-
Usage: `/gsd-join-discord`
|
|
519
|
-
|
|
520
362
|
## Files & Structure
|
|
521
363
|
|
|
522
364
|
```
|
|
@@ -529,13 +371,6 @@ Usage: `/gsd-join-discord`
|
|
|
529
371
|
├── todos/ # Captured ideas and tasks
|
|
530
372
|
│ ├── pending/ # Todos waiting to be worked on
|
|
531
373
|
│ └── done/ # Completed todos
|
|
532
|
-
├── spikes/ # Spike experiments (/gsd-spike)
|
|
533
|
-
│ ├── MANIFEST.md # Spike inventory and verdicts
|
|
534
|
-
│ └── NNN-name/ # Individual spike directories
|
|
535
|
-
├── sketches/ # Design sketches (/gsd-sketch)
|
|
536
|
-
│ ├── MANIFEST.md # Sketch inventory and winners
|
|
537
|
-
│ ├── themes/ # Shared CSS theme files
|
|
538
|
-
│ └── NNN-name/ # Individual sketch directories (HTML + README)
|
|
539
374
|
├── debug/ # Active debug sessions
|
|
540
375
|
│ └── resolved/ # Archived resolved issues
|
|
541
376
|
├── milestones/
|
|
@@ -46,55 +46,6 @@ If the flag is absent, keep the current behavior of continuing phase numbering f
|
|
|
46
46
|
- Wait for their response, then use AskUserQuestion to probe specifics
|
|
47
47
|
- If user selects "Other" at any point to provide freeform input, ask follow-up as plain text — not another AskUserQuestion
|
|
48
48
|
|
|
49
|
-
## 2.5. Scan Planted Seeds
|
|
50
|
-
|
|
51
|
-
Check `.planning/seeds/` for seed files that match the milestone goals gathered in step 2.
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
ls .planning/seeds/SEED-*.md 2>/dev/null
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**If no seed files exist:** Skip this step silently — do not print any message or prompt.
|
|
58
|
-
|
|
59
|
-
**If seed files exist:** Read each `SEED-*.md` file and extract from its frontmatter and body:
|
|
60
|
-
- **Idea** — the seed title (heading after frontmatter, e.g. `# SEED-001: <idea>`)
|
|
61
|
-
- **Trigger conditions** — the `trigger_when` frontmatter field and the "When to Surface" section's bullet list
|
|
62
|
-
- **Planted during** — the `planted_during` frontmatter field (for context)
|
|
63
|
-
|
|
64
|
-
Compare each seed's trigger conditions against the milestone goals from step 2. A seed matches when its trigger conditions are relevant to any of the milestone's target features or goals.
|
|
65
|
-
|
|
66
|
-
**If no seeds match:** Skip silently — do not prompt the user.
|
|
67
|
-
|
|
68
|
-
**If matching seeds found:**
|
|
69
|
-
|
|
70
|
-
**`--auto` mode:** Auto-select ALL matching seeds. Log: `[auto] Selected N matching seed(s): [list seed names]`
|
|
71
|
-
|
|
72
|
-
**Text mode (`TEXT_MODE=true`):** Present matching seeds as a plain-text numbered list:
|
|
73
|
-
```
|
|
74
|
-
Seeds that match your milestone goals:
|
|
75
|
-
1. SEED-001: <idea> (trigger: <trigger_when>)
|
|
76
|
-
2. SEED-003: <idea> (trigger: <trigger_when>)
|
|
77
|
-
|
|
78
|
-
Enter numbers to include (comma-separated), or "none" to skip:
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**Normal mode:** Present via AskUserQuestion:
|
|
82
|
-
```
|
|
83
|
-
AskUserQuestion(
|
|
84
|
-
header: "Seeds",
|
|
85
|
-
question: "These planted seeds match your milestone goals. Include any in this milestone's scope?",
|
|
86
|
-
multiSelect: true,
|
|
87
|
-
options: [
|
|
88
|
-
{ label: "SEED-001: <idea>", description: "Trigger: <trigger_when> | Planted during: <planted_during>" },
|
|
89
|
-
...
|
|
90
|
-
]
|
|
91
|
-
)
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
**After selection:**
|
|
95
|
-
- Selected seeds become additional context for requirement definition in step 9. Store them in an accumulator (e.g. `$SELECTED_SEEDS`) so step 9 can reference the ideas and their "Why This Matters" sections when defining requirements.
|
|
96
|
-
- Unselected seeds remain untouched in `.planning/seeds/` — never delete or modify seed files during this workflow.
|
|
97
|
-
|
|
98
49
|
## 3. Determine Milestone Version
|
|
99
50
|
|
|
100
51
|
- Parse last version from MILESTONES.md
|
|
@@ -363,8 +314,6 @@ Display key findings from SUMMARY.md:
|
|
|
363
314
|
|
|
364
315
|
Read PROJECT.md: core value, current milestone goals, validated requirements (what exists).
|
|
365
316
|
|
|
366
|
-
**If `$SELECTED_SEEDS` is non-empty (from step 2.5):** Include selected seed ideas and their "Why This Matters" sections as additional input when defining requirements. Seeds provide user-validated feature ideas that should be incorporated into the requirement categories alongside research findings or conversation-gathered features.
|
|
367
|
-
|
|
368
317
|
**If research exists:** Read FEATURES.md, extract feature categories.
|
|
369
318
|
|
|
370
319
|
Present features by category:
|
|
@@ -227,7 +227,7 @@ Create `.planning/config.json` with all settings (CLI fills in remaining default
|
|
|
227
227
|
|
|
228
228
|
```bash
|
|
229
229
|
mkdir -p .planning
|
|
230
|
-
gsd-remix-sdk query config-new-project '{"mode":"yolo","granularity":"[selected]","parallelization":true|false,"commit_docs":true|false,"model_profile":"
|
|
230
|
+
gsd-remix-sdk query config-new-project '{"mode":"yolo","granularity":"[selected]","parallelization":true|false,"commit_docs":true|false,"model_profile":"balanced|inherit","workflow":{"research":true|false,"plan_check":true|false,"verifier":true|false,"auto_advance":true}}'
|
|
231
231
|
```
|
|
232
232
|
|
|
233
233
|
**If commit_docs = No:** Add `.planning/` to `.gitignore`.
|
|
@@ -247,36 +247,6 @@ gsd-remix-sdk query config-set workflow._auto_chain_active true
|
|
|
247
247
|
|
|
248
248
|
Proceed to Step 4 (skip Steps 3 and 5).
|
|
249
249
|
|
|
250
|
-
## 2b. Prior Spike/Sketch Detection
|
|
251
|
-
|
|
252
|
-
Check for existing spike and sketch work that should inform project setup:
|
|
253
|
-
|
|
254
|
-
```bash
|
|
255
|
-
# Check for spike findings skill (project-local)
|
|
256
|
-
SPIKE_SKILL=$(ls ./.claude/skills/spike-findings-*/SKILL.md 2>/dev/null | head -1)
|
|
257
|
-
|
|
258
|
-
# Check for sketch findings skill (project-local)
|
|
259
|
-
SKETCH_SKILL=$(ls ./.claude/skills/sketch-findings-*/SKILL.md 2>/dev/null | head -1)
|
|
260
|
-
|
|
261
|
-
# Check for raw spikes/sketches in .planning/
|
|
262
|
-
HAS_SPIKES=$(ls .planning/spikes/MANIFEST.md 2>/dev/null)
|
|
263
|
-
HAS_SKETCHES=$(ls .planning/sketches/MANIFEST.md 2>/dev/null)
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
If any of these exist, surface them before questioning:
|
|
267
|
-
|
|
268
|
-
```
|
|
269
|
-
⚡ Prior exploration detected:
|
|
270
|
-
{if SPIKE_SKILL} ✓ Spike findings skill: {path} — validated patterns from experiments
|
|
271
|
-
{if SKETCH_SKILL} ✓ Sketch findings skill: {path} — validated design decisions
|
|
272
|
-
{if HAS_SPIKES && !SPIKE_SKILL} ◆ Raw spikes in .planning/spikes/ — consider `/gsd-spike-wrap-up` to package findings
|
|
273
|
-
{if HAS_SKETCHES && !SKETCH_SKILL} ◆ Raw sketches in .planning/sketches/ — consider `/gsd-sketch-wrap-up` to package findings
|
|
274
|
-
|
|
275
|
-
These findings will be incorporated into project context and available to planning agents.
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
If spike/sketch findings skills exist, read their SKILL.md files to inform the questioning phase — they contain validated patterns, constraints, and design decisions that should shape the project definition.
|
|
279
|
-
|
|
280
250
|
## 3. Deep Questioning
|
|
281
251
|
|
|
282
252
|
**If auto mode:** Skip (already handled in Step 2a). Extract project context from provided document instead and proceed to Step 4.
|
|
@@ -649,7 +619,7 @@ Create `.planning/config.json` with all settings (CLI fills in remaining default
|
|
|
649
619
|
|
|
650
620
|
```bash
|
|
651
621
|
mkdir -p .planning
|
|
652
|
-
gsd-remix-sdk query config-new-project '{"mode":"[yolo|interactive]","granularity":"[selected]","parallelization":true|false,"commit_docs":true|false,"model_profile":"
|
|
622
|
+
gsd-remix-sdk query config-new-project '{"mode":"[yolo|interactive]","granularity":"[selected]","parallelization":true|false,"commit_docs":true|false,"model_profile":"balanced|inherit","workflow":{"research":true|false,"plan_check":true|false,"verifier":true|false}}'
|
|
653
623
|
```
|
|
654
624
|
|
|
655
625
|
**Note:** Run `/gsd-settings` anytime to update model profile, workflow agents, branching strategy, and other preferences.
|
|
@@ -1296,37 +1266,6 @@ Exit skill and invoke SlashCommand("/gsd-discuss-phase 1 --auto")
|
|
|
1296
1266
|
|
|
1297
1267
|
**If interactive mode:**
|
|
1298
1268
|
|
|
1299
|
-
Check if Phase 1 has UI indicators (look for `**UI hint**: yes` in Phase 1 detail section of ROADMAP.md):
|
|
1300
|
-
|
|
1301
|
-
```bash
|
|
1302
|
-
PHASE1_SECTION=$(gsd-remix-sdk query roadmap.get-phase 1 2>/dev/null)
|
|
1303
|
-
PHASE1_HAS_UI=$(echo "$PHASE1_SECTION" | grep -qi "UI hint.*yes" && echo "true" || echo "false")
|
|
1304
|
-
```
|
|
1305
|
-
|
|
1306
|
-
**If Phase 1 has UI (`PHASE1_HAS_UI` is `true`):**
|
|
1307
|
-
|
|
1308
|
-
```
|
|
1309
|
-
───────────────────────────────────────────────────────────────
|
|
1310
|
-
|
|
1311
|
-
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
|
|
1312
|
-
|
|
1313
|
-
**Phase 1: [Phase Name]** — [Goal from ROADMAP.md]
|
|
1314
|
-
|
|
1315
|
-
/clear then:
|
|
1316
|
-
|
|
1317
|
-
/gsd-discuss-phase 1 — gather context and clarify approach
|
|
1318
|
-
|
|
1319
|
-
---
|
|
1320
|
-
|
|
1321
|
-
**Also available:**
|
|
1322
|
-
- /gsd-ui-phase 1 — generate UI design contract (recommended for frontend phases)
|
|
1323
|
-
- /gsd-plan-phase 1 — skip discussion, plan directly
|
|
1324
|
-
|
|
1325
|
-
───────────────────────────────────────────────────────────────
|
|
1326
|
-
```
|
|
1327
|
-
|
|
1328
|
-
**If Phase 1 has no UI:**
|
|
1329
|
-
|
|
1330
1269
|
```
|
|
1331
1270
|
───────────────────────────────────────────────────────────────
|
|
1332
1271
|
|