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
|
@@ -134,29 +134,6 @@ gsd-remix-sdk query commit "docs: defer incomplete Phase {src} items to backlog"
|
|
|
134
134
|
**If the user chooses "Force" (F):** Continue to `determine_next_action` without recording deferral.
|
|
135
135
|
</step>
|
|
136
136
|
|
|
137
|
-
<step name="spike_sketch_notice">
|
|
138
|
-
Check for pending spike/sketch work and surface a notice (does not change routing):
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
# Check for pending spikes (verdict: PENDING in any README)
|
|
142
|
-
PENDING_SPIKES=$(grep -rl 'verdict: PENDING' .planning/spikes/*/README.md 2>/dev/null | wc -l | tr -d ' ')
|
|
143
|
-
|
|
144
|
-
# Check for pending sketches (winner: null in any README)
|
|
145
|
-
PENDING_SKETCHES=$(grep -rl 'winner: null' .planning/sketches/*/README.md 2>/dev/null | wc -l | tr -d ' ')
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
If either count is > 0, display before routing:
|
|
149
|
-
```
|
|
150
|
-
⚠ Pending exploratory work:
|
|
151
|
-
{PENDING_SPIKES} spike(s) with unresolved verdicts in .planning/spikes/
|
|
152
|
-
{PENDING_SKETCHES} sketch(es) without a winning variant in .planning/sketches/
|
|
153
|
-
|
|
154
|
-
Resume with `/gsd-spike` or `/gsd-sketch`, or continue with phase work below.
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Only show lines for non-zero counts. If both are 0, skip this notice entirely.
|
|
158
|
-
</step>
|
|
159
|
-
|
|
160
137
|
<step name="determine_next_action">
|
|
161
138
|
Apply routing rules based on state:
|
|
162
139
|
|
|
@@ -17,21 +17,13 @@ Determine what kind of work is being paused and set the handoff destination acco
|
|
|
17
17
|
# Check for active phase
|
|
18
18
|
phase=$(( ls -lt .planning/phases/*/PLAN.md 2>/dev/null || true ) | head -1 | grep -oP 'phases/\K[^/]+' || true)
|
|
19
19
|
|
|
20
|
-
# Check for active spike
|
|
21
|
-
spike=$(( ls -lt .planning/spikes/*/SPIKE.md .planning/spikes/*/DESIGN.md .planning/spikes/*/README.md 2>/dev/null || true ) | head -1 | grep -oP 'spikes/\K[^/]+' || true)
|
|
22
|
-
|
|
23
|
-
# Check for active sketch
|
|
24
|
-
sketch=$(( ls -lt .planning/sketches/*/README.md .planning/sketches/*/index.html 2>/dev/null || true ) | head -1 | grep -oP 'sketches/\K[^/]+' || true)
|
|
25
|
-
|
|
26
20
|
# Check for active deliberation
|
|
27
21
|
deliberation=$(ls .planning/deliberations/*.md 2>/dev/null | head -1 || true)
|
|
28
22
|
```
|
|
29
23
|
|
|
30
24
|
- **Phase work**: active phase directory → handoff to `.planning/phases/XX-name/.continue-here.md`
|
|
31
|
-
- **
|
|
32
|
-
- **
|
|
33
|
-
- **Deliberation work**: active deliberation file (no phase/spike/sketch) → handoff to `.planning/deliberations/.continue-here.md`
|
|
34
|
-
- **Research work**: research notes exist but no phase/spike/sketch/deliberation → handoff to `.planning/.continue-here.md`
|
|
25
|
+
- **Deliberation work**: active deliberation file (no active phase) → handoff to `.planning/deliberations/.continue-here.md`
|
|
26
|
+
- **Research work**: research notes exist but no phase/deliberation → handoff to `.planning/.continue-here.md`
|
|
35
27
|
- **Default**: no detectable context → handoff to `.planning/.continue-here.md`, note the ambiguity in `<current_state>`
|
|
36
28
|
|
|
37
29
|
If phase is detected, proceed with phase handoff path. Otherwise use the first matching non-phase path above.
|
|
@@ -106,11 +98,11 @@ timestamp=$(gsd-remix-sdk query current-timestamp full --raw)
|
|
|
106
98
|
</step>
|
|
107
99
|
|
|
108
100
|
<step name="write">
|
|
109
|
-
**Write handoff to the path determined in the detect step** (e.g. `.planning/phases/XX-name/.continue-here.md
|
|
101
|
+
**Write handoff to the path determined in the detect step** (e.g. `.planning/phases/XX-name/.continue-here.md` or `.planning/.continue-here.md`):
|
|
110
102
|
|
|
111
103
|
```markdown
|
|
112
104
|
---
|
|
113
|
-
context: [phase|
|
|
105
|
+
context: [phase|deliberation|research|default]
|
|
114
106
|
phase: XX-name
|
|
115
107
|
task: 3
|
|
116
108
|
total_tasks: 7
|
|
@@ -183,7 +175,7 @@ Completed Tasks:
|
|
|
183
175
|
- [service/env]: [current state]
|
|
184
176
|
|
|
185
177
|
## Pre-Execution Critique Required
|
|
186
|
-
<!-- Fill in ONLY if pausing between design and execution (
|
|
178
|
+
<!-- Fill in ONLY if pausing between design and execution (design done, not yet run) -->
|
|
187
179
|
- Design artifact: [path]
|
|
188
180
|
- Critique focus: [key questions the critic should probe]
|
|
189
181
|
- Gate: Do NOT begin execution until critique is complete and design is revised
|
|
@@ -219,7 +211,7 @@ gsd-remix-sdk query commit "wip: [context-name] paused at [X]/[Y]" [handoff-path
|
|
|
219
211
|
|
|
220
212
|
Current state:
|
|
221
213
|
|
|
222
|
-
- Context: [phase|
|
|
214
|
+
- Context: [phase|deliberation|research]
|
|
223
215
|
- Location: [XX-name or SPIKE-NNN]
|
|
224
216
|
- Task: [X] of [Y]
|
|
225
217
|
- Status: [in_progress/blocked]
|
|
@@ -234,7 +226,7 @@ To resume: /gsd-resume-work
|
|
|
234
226
|
</process>
|
|
235
227
|
|
|
236
228
|
<success_criteria>
|
|
237
|
-
- [ ] Context detected (phase/
|
|
229
|
+
- [ ] Context detected (phase/deliberation/research/default)
|
|
238
230
|
- [ ] .continue-here.md created at correct path for detected context
|
|
239
231
|
- [ ] Required Reading, Anti-Patterns, and Infrastructure State sections filled
|
|
240
232
|
- [ ] Pre-Execution Critique section filled if pausing between design and execution
|
|
@@ -36,9 +36,6 @@ if ! command -v gsd-remix-sdk &>/dev/null; then
|
|
|
36
36
|
echo ""
|
|
37
37
|
echo "Repair the bundled SDK:"
|
|
38
38
|
echo " /gsd-health --runtime --repair"
|
|
39
|
-
echo ""
|
|
40
|
-
echo "Or refresh all runtime assets:"
|
|
41
|
-
echo " /gsd-update"
|
|
42
39
|
exit 1
|
|
43
40
|
fi
|
|
44
41
|
|
|
@@ -70,17 +67,17 @@ When `TDD_MODE` is `true`, the planner agent is instructed to apply `type: tdd`
|
|
|
70
67
|
|
|
71
68
|
When `CONTEXT_WINDOW >= 500000`, the planner prompt includes the 3 most recent prior phase CONTEXT.md and SUMMARY.md files PLUS any phases explicitly listed in the current phase's `Depends on:` field in ROADMAP.md. Explicit dependencies always load regardless of recency (e.g., Phase 7 declaring `Depends on: Phase 2` always sees Phase 2's context). Bounded recency keeps the planner's context budget focused on recent work.
|
|
72
69
|
|
|
73
|
-
Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `
|
|
70
|
+
Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `commit_docs`, `text_mode`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `plan_count`, `planning_exists`, `roadmap_exists`, `phase_req_ids`, `response_language`.
|
|
74
71
|
|
|
75
72
|
**If `response_language` is set:** Include `response_language: {value}` in all spawned subagent prompts so any user-facing output stays in the configured language.
|
|
76
73
|
|
|
77
|
-
**File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path
|
|
74
|
+
**File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path`. These are null if files don't exist.
|
|
78
75
|
|
|
79
76
|
**If `planning_exists` is false:** Error — run `/gsd-new-project` first.
|
|
80
77
|
|
|
81
78
|
## 2. Parse and Normalize Arguments
|
|
82
79
|
|
|
83
|
-
Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--gaps`, `--skip-verify`, `--
|
|
80
|
+
Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--gaps`, `--skip-verify`, `--prd <filepath>`, `--text`).
|
|
84
81
|
|
|
85
82
|
Set `TEXT_MODE=true` if `--text` is present in $ARGUMENTS OR `text_mode` from init JSON is `true`. When `TEXT_MODE` is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for Claude Code remote sessions (`/rc` mode) where TUI menus don't work through the Claude App.
|
|
86
83
|
|
|
@@ -95,24 +92,6 @@ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
|
|
|
95
92
|
|
|
96
93
|
**Existing artifacts from init:** `has_research`, `has_plans`, `plan_count`.
|
|
97
94
|
|
|
98
|
-
## 2.5. Validate `--reviews` Prerequisite
|
|
99
|
-
|
|
100
|
-
**Skip if:** No `--reviews` flag.
|
|
101
|
-
|
|
102
|
-
**If `--reviews` AND `--gaps`:** Error — cannot combine `--reviews` with `--gaps`. These are conflicting modes.
|
|
103
|
-
|
|
104
|
-
**If `--reviews` AND `has_reviews` is false (no REVIEWS.md in phase dir):**
|
|
105
|
-
|
|
106
|
-
Error:
|
|
107
|
-
```
|
|
108
|
-
No REVIEWS.md found for Phase {N}. Run reviews first:
|
|
109
|
-
|
|
110
|
-
/gsd-review --phase {N}
|
|
111
|
-
|
|
112
|
-
Then re-run /gsd-plan-phase {N} --reviews
|
|
113
|
-
```
|
|
114
|
-
Exit workflow.
|
|
115
|
-
|
|
116
95
|
## 3. Validate Phase
|
|
117
96
|
|
|
118
97
|
```bash
|
|
@@ -275,49 +254,9 @@ If "Run discuss-phase first":
|
|
|
275
254
|
```
|
|
276
255
|
**Exit the plan-phase workflow. Do not continue.**
|
|
277
256
|
|
|
278
|
-
## 4.5. Check AI-SPEC
|
|
279
|
-
|
|
280
|
-
**Skip if:** `ai_integration_phase_enabled` from config is false, or `--skip-ai-spec` flag provided.
|
|
281
|
-
|
|
282
|
-
```bash
|
|
283
|
-
AI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-AI-SPEC.md 2>/dev/null | head -1)
|
|
284
|
-
AI_PHASE_CFG=$(gsd-remix-sdk query config-get workflow.ai_integration_phase 2>/dev/null || echo "true")
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
**Skip if `AI_PHASE_CFG` is `false`.**
|
|
288
|
-
|
|
289
|
-
**If `AI_SPEC_FILE` is empty:** Check phase goal for AI keywords:
|
|
290
|
-
```bash
|
|
291
|
-
echo "${phase_goal}" | grep -qi "agent\|llm\|rag\|chatbot\|embedding\|langchain\|llamaindex\|crewai\|langgraph\|openai\|anthropic\|vector\|eval\|ai system"
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
**If AI keywords detected AND no AI-SPEC.md:**
|
|
295
|
-
```
|
|
296
|
-
◆ Note: This phase appears to involve AI system development.
|
|
297
|
-
Consider running /gsd-ai-integration-phase {N} before planning to:
|
|
298
|
-
- Select the right framework for your use case
|
|
299
|
-
- Research its docs and best practices
|
|
300
|
-
- Design an evaluation strategy
|
|
301
|
-
|
|
302
|
-
Continue planning without AI-SPEC? (non-blocking — /gsd-ai-integration-phase can be run after)
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
Use AskUserQuestion with options:
|
|
306
|
-
- "Continue — plan without AI-SPEC"
|
|
307
|
-
- "Stop — I'll run /gsd-ai-integration-phase {N} first"
|
|
308
|
-
|
|
309
|
-
If "Stop": Exit with `/gsd-ai-integration-phase {N}` reminder.
|
|
310
|
-
If "Continue": Proceed. (Non-blocking — planner will note AI-SPEC is absent.)
|
|
311
|
-
|
|
312
|
-
**If `AI_SPEC_FILE` is non-empty:** Extract framework for planner context:
|
|
313
|
-
```bash
|
|
314
|
-
FRAMEWORK_LINE=$(grep "Selected Framework:" "${AI_SPEC_FILE}" | head -1)
|
|
315
|
-
```
|
|
316
|
-
Pass `ai_spec_path` and `framework_line` to planner in step 7 so it can reference the AI design contract.
|
|
317
|
-
|
|
318
257
|
## 5. Handle Research
|
|
319
258
|
|
|
320
|
-
**Skip if:** `--gaps` flag or `--skip-research` flag
|
|
259
|
+
**Skip if:** `--gaps` flag or `--skip-research` flag.
|
|
321
260
|
|
|
322
261
|
**If `has_research` is true (from init) AND no `--research` flag:** Use existing, skip to step 6.
|
|
323
262
|
|
|
@@ -413,129 +352,6 @@ Task(
|
|
|
413
352
|
- **`## RESEARCH COMPLETE`:** Display confirmation, continue to step 6
|
|
414
353
|
- **`## RESEARCH BLOCKED`:** Display blocker, offer: 1) Provide context, 2) Skip research, 3) Abort
|
|
415
354
|
|
|
416
|
-
## 5.5. Create Validation Strategy
|
|
417
|
-
|
|
418
|
-
Skip if `nyquist_validation_enabled` is false OR `research_enabled` is false.
|
|
419
|
-
|
|
420
|
-
If `research_enabled` is false and `nyquist_validation_enabled` is true: warn "Nyquist validation enabled but research disabled — VALIDATION.md cannot be created without RESEARCH.md. Plans will lack validation requirements (Dimension 8)." Continue to step 6.
|
|
421
|
-
|
|
422
|
-
**But Nyquist is not applicable for this run** when all of the following are true:
|
|
423
|
-
- `research_enabled` is false
|
|
424
|
-
- `has_research` is false
|
|
425
|
-
- no `--research` flag was provided
|
|
426
|
-
|
|
427
|
-
In that case: **skip validation-strategy creation entirely**. Do **not** expect `RESEARCH.md` or `VALIDATION.md` for this run, and continue to Step 6.
|
|
428
|
-
|
|
429
|
-
```bash
|
|
430
|
-
grep -l "## Validation Architecture" "${PHASE_DIR}"/*-RESEARCH.md 2>/dev/null || true
|
|
431
|
-
```
|
|
432
|
-
|
|
433
|
-
**If found:**
|
|
434
|
-
1. Read template: `~/.claude/get-shit-done/templates/VALIDATION.md`
|
|
435
|
-
2. Write to `${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md` (use Write tool)
|
|
436
|
-
3. Fill frontmatter: `{N}` → phase number, `{phase-slug}` → slug, `{date}` → current date
|
|
437
|
-
4. Verify:
|
|
438
|
-
```bash
|
|
439
|
-
test -f "${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md" && echo "VALIDATION_CREATED=true" || echo "VALIDATION_CREATED=false"
|
|
440
|
-
```
|
|
441
|
-
5. If `VALIDATION_CREATED=false`: STOP — do not proceed to Step 6
|
|
442
|
-
6. If `commit_docs`: `commit "docs(phase-${PHASE}): add validation strategy"`
|
|
443
|
-
|
|
444
|
-
**If not found:** Warn and continue — plans may fail Dimension 8.
|
|
445
|
-
|
|
446
|
-
## 5.55. Security Threat Model Gate
|
|
447
|
-
|
|
448
|
-
> Skip if `workflow.security_enforcement` is explicitly `false`. Absent = enabled.
|
|
449
|
-
|
|
450
|
-
```bash
|
|
451
|
-
SECURITY_CFG=$(gsd-remix-sdk query config-get workflow.security_enforcement --raw 2>/dev/null || echo "true")
|
|
452
|
-
SECURITY_ASVS=$(gsd-remix-sdk query config-get workflow.security_asvs_level --raw 2>/dev/null || echo "1")
|
|
453
|
-
SECURITY_BLOCK=$(gsd-remix-sdk query config-get workflow.security_block_on --raw 2>/dev/null || echo "high")
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
**If `SECURITY_CFG` is `false`:** Skip to step 5.6.
|
|
457
|
-
|
|
458
|
-
**If `SECURITY_CFG` is `true`:** Display banner:
|
|
459
|
-
|
|
460
|
-
```
|
|
461
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
462
|
-
GSD ► SECURITY THREAT MODEL REQUIRED (ASVS L{SECURITY_ASVS})
|
|
463
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
464
|
-
|
|
465
|
-
Each PLAN.md must include a <threat_model> block.
|
|
466
|
-
Block on: {SECURITY_BLOCK} severity threats.
|
|
467
|
-
Opt out: set security_enforcement: false in .planning/config.json
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
Continue to step 5.6. Security config is passed to the planner in step 8.
|
|
471
|
-
|
|
472
|
-
## 5.6. UI Design Contract Gate
|
|
473
|
-
|
|
474
|
-
> Skip if `workflow.ui_phase` is explicitly `false` AND `workflow.ui_safety_gate` is explicitly `false` in `.planning/config.json`. If keys are absent, treat as enabled.
|
|
475
|
-
|
|
476
|
-
```bash
|
|
477
|
-
UI_PHASE_CFG=$(gsd-remix-sdk query config-get workflow.ui_phase 2>/dev/null || echo "true")
|
|
478
|
-
UI_GATE_CFG=$(gsd-remix-sdk query config-get workflow.ui_safety_gate 2>/dev/null || echo "true")
|
|
479
|
-
```
|
|
480
|
-
|
|
481
|
-
**If both are `false`:** Skip to step 6.
|
|
482
|
-
|
|
483
|
-
Check if phase has frontend indicators:
|
|
484
|
-
|
|
485
|
-
```bash
|
|
486
|
-
PHASE_SECTION=$(gsd-remix-sdk query roadmap.get-phase "${PHASE}" 2>/dev/null)
|
|
487
|
-
echo "$PHASE_SECTION" | grep -iE "UI|interface|frontend|component|layout|page|screen|view|form|dashboard|widget" > /dev/null 2>&1
|
|
488
|
-
HAS_UI=$?
|
|
489
|
-
```
|
|
490
|
-
|
|
491
|
-
**If `HAS_UI` is 0 (frontend indicators found):**
|
|
492
|
-
|
|
493
|
-
Check for existing UI-SPEC:
|
|
494
|
-
```bash
|
|
495
|
-
UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
|
|
496
|
-
```
|
|
497
|
-
|
|
498
|
-
**If UI-SPEC.md found:** Set `UI_SPEC_PATH=$UI_SPEC_FILE`. Display: `Using UI design contract: ${UI_SPEC_PATH}`
|
|
499
|
-
|
|
500
|
-
**If UI-SPEC.md missing AND `--skip-ui` flag is present in $ARGUMENTS:** Skip silently to step 6.
|
|
501
|
-
|
|
502
|
-
**If UI-SPEC.md missing AND `UI_GATE_CFG` is `true`:**
|
|
503
|
-
|
|
504
|
-
Read ephemeral chain flag (same field as `check.auto-mode` → `auto_chain_active`):
|
|
505
|
-
```bash
|
|
506
|
-
AUTO_CHAIN=$(gsd-remix-sdk query check auto-mode --pick auto_chain_active 2>/dev/null || echo "false")
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
**If `AUTO_CHAIN` is `true` (running inside a `--chain` or `--auto` pipeline):**
|
|
510
|
-
|
|
511
|
-
Auto-generate UI-SPEC without prompting:
|
|
512
|
-
```
|
|
513
|
-
Skill(skill="gsd-ui-phase", args="${PHASE} --auto ${GSD_WS}")
|
|
514
|
-
```
|
|
515
|
-
After `gsd-ui-phase` returns, re-read:
|
|
516
|
-
```bash
|
|
517
|
-
UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
|
|
518
|
-
UI_SPEC_PATH="${UI_SPEC_FILE}"
|
|
519
|
-
```
|
|
520
|
-
Continue to step 6.
|
|
521
|
-
|
|
522
|
-
**If `AUTO_CHAIN` is `false` (manual invocation):**
|
|
523
|
-
|
|
524
|
-
Output this markdown directly (not as a code block):
|
|
525
|
-
|
|
526
|
-
```
|
|
527
|
-
## ⚠ UI-SPEC.md missing for Phase {N}
|
|
528
|
-
▶ Recommended next step:
|
|
529
|
-
`/gsd-ui-phase {N} ${GSD_WS}` — generate UI design contract before planning
|
|
530
|
-
───────────────────────────────────────────────
|
|
531
|
-
Also available:
|
|
532
|
-
- `/gsd-plan-phase {N} --skip-ui ${GSD_WS}` — plan without UI-SPEC (not recommended for frontend phases)
|
|
533
|
-
```
|
|
534
|
-
|
|
535
|
-
**Exit the plan-phase workflow. Do not continue.**
|
|
536
|
-
|
|
537
|
-
**If `HAS_UI` is 1 (no frontend indicators):** Skip silently to step 5.7.
|
|
538
|
-
|
|
539
355
|
## 5.7. Schema Push Detection Gate
|
|
540
356
|
|
|
541
357
|
> Detects schema-relevant files in the phase scope and injects a mandatory `[BLOCKING]` schema push task into the plan. Prevents false-positive verification where build/types pass because TypeScript types come from config, not the live database.
|
|
@@ -604,9 +420,7 @@ Display: `Schema files detected ({SCHEMA_ORM}) — [BLOCKING] push task will be
|
|
|
604
420
|
ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null || true
|
|
605
421
|
```
|
|
606
422
|
|
|
607
|
-
**If exists
|
|
608
|
-
|
|
609
|
-
**If exists AND no `--reviews` flag:** Offer: 1) Add more plans, 2) View existing, 3) Replan from scratch.
|
|
423
|
+
**If exists:** Offer: 1) Add more plans, 2) View existing, 3) Replan from scratch.
|
|
610
424
|
|
|
611
425
|
## 7. Use Context Paths from INIT
|
|
612
426
|
|
|
@@ -621,37 +435,9 @@ RESEARCH_PATH=$(_gsd_field "$INIT" research_path)
|
|
|
621
435
|
VERIFICATION_PATH=$(_gsd_field "$INIT" verification_path)
|
|
622
436
|
UAT_PATH=$(_gsd_field "$INIT" uat_path)
|
|
623
437
|
CONTEXT_PATH=$(_gsd_field "$INIT" context_path)
|
|
624
|
-
REVIEWS_PATH=$(_gsd_field "$INIT" reviews_path)
|
|
625
438
|
PATTERNS_PATH=$(_gsd_field "$INIT" patterns_path)
|
|
626
|
-
|
|
627
|
-
# Detect spike/sketch findings skills (project-local)
|
|
628
|
-
SPIKE_FINDINGS_PATH=$(ls ./.claude/skills/spike-findings-*/SKILL.md 2>/dev/null | head -1)
|
|
629
|
-
SKETCH_FINDINGS_PATH=$(ls ./.claude/skills/sketch-findings-*/SKILL.md 2>/dev/null | head -1)
|
|
630
439
|
```
|
|
631
440
|
|
|
632
|
-
## 7.5. Verify Nyquist Artifacts
|
|
633
|
-
|
|
634
|
-
Skip if `nyquist_validation_enabled` is false OR `research_enabled` is false.
|
|
635
|
-
|
|
636
|
-
Also skip if all of the following are true:
|
|
637
|
-
- `research_enabled` is false
|
|
638
|
-
- `has_research` is false
|
|
639
|
-
- no `--research` flag was provided
|
|
640
|
-
|
|
641
|
-
In that no-research path, Nyquist artifacts are **not required** for this run.
|
|
642
|
-
|
|
643
|
-
```bash
|
|
644
|
-
VALIDATION_EXISTS=$(ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null | head -1)
|
|
645
|
-
```
|
|
646
|
-
|
|
647
|
-
If missing and Nyquist is still enabled/applicable — ask user:
|
|
648
|
-
1. Re-run: `/gsd-plan-phase {PHASE} --research ${GSD_WS}`
|
|
649
|
-
2. Disable Nyquist with the exact command:
|
|
650
|
-
`gsd-remix-sdk query config-set workflow.nyquist_validation false`
|
|
651
|
-
3. Continue anyway (plans fail Dimension 8)
|
|
652
|
-
|
|
653
|
-
Proceed to Step 7.8 (or Step 8 if pattern mapper is disabled) only if user selects 2 or 3.
|
|
654
|
-
|
|
655
441
|
## 7.8. Spawn gsd-pattern-mapper Agent (Optional)
|
|
656
442
|
|
|
657
443
|
**Skip if** `workflow.pattern_mapper` is explicitly set to `false` in config.json (absent key = enabled). Also skip if no CONTEXT.md and no RESEARCH.md exist for this phase (nothing to extract file lists from).
|
|
@@ -727,7 +513,7 @@ Planner prompt:
|
|
|
727
513
|
```markdown
|
|
728
514
|
<planning_context>
|
|
729
515
|
**Phase:** {phase_number}
|
|
730
|
-
**Mode:** {standard | gap_closure
|
|
516
|
+
**Mode:** {standard | gap_closure}
|
|
731
517
|
|
|
732
518
|
<files_to_read>
|
|
733
519
|
- {state_path} (Project State)
|
|
@@ -738,10 +524,6 @@ Planner prompt:
|
|
|
738
524
|
- {PATTERNS_PATH} (Pattern Map — analog files and code excerpts, if exists)
|
|
739
525
|
- {verification_path} (Verification Gaps - if --gaps)
|
|
740
526
|
- {uat_path} (UAT Gaps - if --gaps)
|
|
741
|
-
- {reviews_path} (Cross-AI Review Feedback - if --reviews)
|
|
742
|
-
- {UI_SPEC_PATH} (UI Design Contract — visual/interaction specs, if exists)
|
|
743
|
-
- {SPIKE_FINDINGS_PATH} (Spike Findings — validated patterns, constraints, landmines from experiments, if exists)
|
|
744
|
-
- {SKETCH_FINDINGS_PATH} (Sketch Findings — validated design decisions, CSS patterns, visual direction, if exists)
|
|
745
527
|
${CONTEXT_WINDOW >= 500000 ? `
|
|
746
528
|
**Cross-phase context (1M model enrichment):**
|
|
747
529
|
- CONTEXT.md files from the 3 most recent completed phases (locked decisions — maintain consistency)
|
|
@@ -952,25 +734,6 @@ Task(
|
|
|
952
734
|
- **`## VERIFICATION PASSED`:** Display confirmation, proceed to step 13.
|
|
953
735
|
- **`## ISSUES FOUND`:** Display issues, check iteration count, proceed to step 12.
|
|
954
736
|
|
|
955
|
-
**Thinking partner for architectural tradeoffs (conditional):**
|
|
956
|
-
If `features.thinking_partner` is enabled, scan the checker's issues for architectural tradeoff keywords
|
|
957
|
-
("architecture", "approach", "strategy", "pattern", "vs", "alternative"). If found:
|
|
958
|
-
|
|
959
|
-
```
|
|
960
|
-
The plan-checker flagged an architectural decision point:
|
|
961
|
-
{issue description}
|
|
962
|
-
|
|
963
|
-
Brief analysis:
|
|
964
|
-
- Option A: {approach_from_plan} — {pros/cons}
|
|
965
|
-
- Option B: {alternative_approach} — {pros/cons}
|
|
966
|
-
- Recommendation: {choice} aligned with {phase_goal}
|
|
967
|
-
|
|
968
|
-
Apply this to the revision? [Yes] / [No, I'll decide]
|
|
969
|
-
```
|
|
970
|
-
|
|
971
|
-
If yes: include the recommendation in the revision prompt. If no: proceed to revision loop as normal.
|
|
972
|
-
If thinking_partner disabled: skip this block entirely.
|
|
973
|
-
|
|
974
737
|
## 12. Revision Loop (Max 3 Iterations)
|
|
975
738
|
|
|
976
739
|
Track `iteration_count` (starts at 1 after initial plan + check).
|
|
@@ -1044,76 +807,31 @@ Display: `Max iterations reached. {N} issues remain:` + issue list
|
|
|
1044
807
|
|
|
1045
808
|
Offer: 1) Force proceed, 2) Provide guidance and retry, 3) Abandon
|
|
1046
809
|
|
|
1047
|
-
## 12.5.
|
|
810
|
+
## 12.5. Security Design Review (Advisory)
|
|
1048
811
|
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
**Activation:** Bounce runs when `--bounce` flag is present OR `workflow.plan_bounce` config is `true`. The `--skip-bounce` flag always wins (disables bounce even if config enables it). The `--gaps` flag also disables bounce (gap-closure mode should not modify plans externally).
|
|
1052
|
-
|
|
1053
|
-
**Prerequisites:** `workflow.plan_bounce_script` must be set to a valid script path. If bounce is activated but no script is configured, display warning and skip:
|
|
1054
|
-
```
|
|
1055
|
-
⚠ Plan bounce activated but no script configured.
|
|
1056
|
-
Set workflow.plan_bounce_script to the path of your refinement script.
|
|
1057
|
-
Skipping bounce step.
|
|
1058
|
-
```
|
|
812
|
+
Runs after plans pass the checker, before the coverage gate. Never blocks planning flow.
|
|
1059
813
|
|
|
1060
|
-
**
|
|
814
|
+
**1. Config gate:**
|
|
1061
815
|
```bash
|
|
1062
|
-
|
|
1063
|
-
BOUNCE_SCRIPT=$(gsd-remix-sdk query config-get workflow.plan_bounce_script 2>/dev/null | jq -r '.' 2>/dev/null || true)
|
|
816
|
+
SECURITY_REVIEW=$(gsd-remix-sdk query config-get workflow.security_review 2>/dev/null || echo "auto")
|
|
1064
817
|
```
|
|
818
|
+
If `"off"`: display `Security design review skipped: workflow.security_review=off` and continue to step 13.
|
|
1065
819
|
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
820
|
+
**2. Trigger decision (on the plan surface, not code):**
|
|
821
|
+
- `"always"` → trigger.
|
|
822
|
+
- `"auto"` → read the plans' objectives, tasks, and `files_modified` lists and judge whether the planned work touches: auth/authz/session design; secrets/crypto handling; new endpoints or public interfaces; user input/upload/deserialization paths; permissions/CORS/Cookie policy; outbound request patterns (SSRF surface); multi-tenant data boundaries; webhook/callback contracts; logging of sensitive data; redirects. Hint items (lean toward triggering, never auto-trigger): plans that add new dependencies, touch rate limiting/abuse protection, audit logging/admin paths, or billing/entitlement gating.
|
|
823
|
+
- **If not triggered:** display one line — `Security design review skipped: {short reason}` — and continue to step 13.
|
|
1071
824
|
|
|
1072
|
-
|
|
1073
|
-
Max passes: ${BOUNCE_PASSES}
|
|
1074
|
-
```
|
|
1075
|
-
|
|
1076
|
-
**For each PLAN.md file in the phase directory:**
|
|
825
|
+
**3. Invoke (company skill first, inline fallback second):**
|
|
1077
826
|
|
|
1078
|
-
|
|
1079
|
-
```bash
|
|
1080
|
-
cp "${PLAN_FILE}" "${PLAN_FILE%.md}.pre-bounce.md"
|
|
827
|
+
Try the company skill via try-invoke-and-catch (no filesystem probing):
|
|
1081
828
|
```
|
|
1082
|
-
|
|
1083
|
-
2. **Invoke bounce script:**
|
|
1084
|
-
```bash
|
|
1085
|
-
"${BOUNCE_SCRIPT}" "${PLAN_FILE}" "${BOUNCE_PASSES}"
|
|
1086
|
-
```
|
|
1087
|
-
|
|
1088
|
-
3. **Validate bounced plan — YAML frontmatter integrity:**
|
|
1089
|
-
After the script returns, check that the bounced file still has valid YAML frontmatter (opening and closing `---` delimiters with parseable content between them). If the bounced plan breaks YAML frontmatter validation, restore the original from the pre-bounce.md backup and continue to the next plan:
|
|
1090
|
-
```
|
|
1091
|
-
⚠ Bounced plan ${PLAN_FILE} has broken YAML frontmatter — restoring original from pre-bounce backup.
|
|
1092
|
-
```
|
|
1093
|
-
|
|
1094
|
-
4. **Handle script failure:** If the bounce script exits non-zero, restore the original plan from the pre-bounce.md backup and continue to the next plan:
|
|
1095
|
-
```
|
|
1096
|
-
⚠ Bounce script failed for ${PLAN_FILE} (exit code ${EXIT_CODE}) — restoring original from pre-bounce backup.
|
|
1097
|
-
```
|
|
1098
|
-
|
|
1099
|
-
**After all plans are bounced:**
|
|
1100
|
-
|
|
1101
|
-
5. **Re-run plan checker on bounced plans:** Spawn gsd-plan-checker (same as step 10) on all modified plans. If a bounced plan fails the checker, restore original from its pre-bounce.md backup:
|
|
1102
|
-
```
|
|
1103
|
-
⚠ Bounced plan ${PLAN_FILE} failed checker validation — restoring original from pre-bounce backup.
|
|
1104
|
-
```
|
|
1105
|
-
|
|
1106
|
-
6. **Commit surviving bounced plans:** If at least one plan survived both the frontmatter validation and the checker re-run, commit the changes:
|
|
1107
|
-
```bash
|
|
1108
|
-
gsd-remix-sdk query commit "refactor(${padded_phase}): bounce plans through external refinement" "${PHASE_DIR}/*-PLAN.md"
|
|
829
|
+
Skill(skill="security-design-review", args="{PHASE_DIR} plan files")
|
|
1109
830
|
```
|
|
1110
831
|
|
|
1111
|
-
|
|
1112
|
-
```
|
|
1113
|
-
Plan bounce complete: {survived}/{total} plans refined
|
|
1114
|
-
```
|
|
832
|
+
If the Skill invocation fails or the skill does not exist, perform a brief inline design pass yourself: for each triggered signal, note in one or two sentences what the plan should specify (e.g., "new endpoint POST /webhooks — plan does not state signature verification; add to task acceptance"). Present the notes to the user as advisory output.
|
|
1115
833
|
|
|
1116
|
-
**
|
|
834
|
+
**4.** Regardless of outcome or errors, continue to step 13.
|
|
1117
835
|
|
|
1118
836
|
## 13. Requirements Coverage Gate
|
|
1119
837
|
|
|
@@ -1302,8 +1020,6 @@ Verification: {Passed | Passed with override | Skipped}
|
|
|
1302
1020
|
**Also available:**
|
|
1303
1021
|
- cat .planning/phases/{phase-dir}/*-PLAN.md — review plans
|
|
1304
1022
|
- /gsd-plan-phase {X} --research — re-research first
|
|
1305
|
-
- /gsd-review --phase {X} --all — peer review plans with external AIs
|
|
1306
|
-
- /gsd-plan-phase {X} --reviews — replan incorporating review feedback
|
|
1307
1023
|
|
|
1308
1024
|
───────────────────────────────────────────────────────────────
|
|
1309
1025
|
</offer_next>
|
|
@@ -185,7 +185,6 @@ Track: `outstanding_debt` — `summary.total_items` from the audit.
|
|
|
185
185
|
| {phase} | {filename} | {pending_count} pending, {skipped_count} skipped, {blocked_count} blocked |
|
|
186
186
|
| {phase} | {filename} | human_needed — {count} items |
|
|
187
187
|
|
|
188
|
-
Review: `/gsd-audit-uat ${GSD_WS}` — full cross-phase audit
|
|
189
188
|
Resume testing: `/gsd-verify-work {phase} ${GSD_WS}` — retest specific phase
|
|
190
189
|
```
|
|
191
190
|
|
|
@@ -228,13 +227,6 @@ Read its `<objective>` section.
|
|
|
228
227
|
|
|
229
228
|
Check if `{phase_num}-CONTEXT.md` exists in phase directory.
|
|
230
229
|
|
|
231
|
-
Check if current phase has UI indicators:
|
|
232
|
-
|
|
233
|
-
```bash
|
|
234
|
-
PHASE_SECTION=$(gsd-remix-sdk query roadmap.get-phase "${CURRENT_PHASE}" 2>/dev/null)
|
|
235
|
-
PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" || echo "false")
|
|
236
|
-
```
|
|
237
|
-
|
|
238
230
|
**If CONTEXT.md exists:**
|
|
239
231
|
|
|
240
232
|
```
|
|
@@ -252,30 +244,7 @@ PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" ||
|
|
|
252
244
|
---
|
|
253
245
|
```
|
|
254
246
|
|
|
255
|
-
**If CONTEXT.md does NOT exist
|
|
256
|
-
|
|
257
|
-
```
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
|
|
261
|
-
|
|
262
|
-
**Phase {N}: {Name}** — {Goal from ROADMAP.md}
|
|
263
|
-
|
|
264
|
-
`/clear` then:
|
|
265
|
-
|
|
266
|
-
`/gsd-discuss-phase {phase}` — gather context and clarify approach
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
**Also available:**
|
|
271
|
-
- `/gsd-ui-phase {phase}` — generate UI design contract (recommended for frontend phases)
|
|
272
|
-
- `/gsd-plan-phase {phase}` — skip discussion, plan directly
|
|
273
|
-
- `/gsd-list-phase-assumptions {phase}` — see Claude's assumptions
|
|
274
|
-
|
|
275
|
-
---
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
**If CONTEXT.md does NOT exist AND phase has no UI:**
|
|
247
|
+
**If CONTEXT.md does NOT exist:**
|
|
279
248
|
|
|
280
249
|
```
|
|
281
250
|
---
|
|
@@ -292,7 +261,6 @@ PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" ||
|
|
|
292
261
|
|
|
293
262
|
**Also available:**
|
|
294
263
|
- `/gsd-plan-phase {phase} ${GSD_WS}` — skip discussion, plan directly
|
|
295
|
-
- `/gsd-list-phase-assumptions {phase} ${GSD_WS}` — see Claude's assumptions
|
|
296
264
|
|
|
297
265
|
---
|
|
298
266
|
```
|
|
@@ -343,7 +311,6 @@ UAT.md exists with `status: partial` — testing session ended before all items
|
|
|
343
311
|
---
|
|
344
312
|
|
|
345
313
|
**Also available:**
|
|
346
|
-
- `/gsd-audit-uat ${GSD_WS}` — full cross-phase UAT audit
|
|
347
314
|
- `/gsd-execute-phase {phase} ${GSD_WS}` — execute phase plans
|
|
348
315
|
|
|
349
316
|
---
|
|
@@ -374,40 +341,6 @@ State: "Current phase is {X}. Milestone has {N} phases (highest: {Y})."
|
|
|
374
341
|
|
|
375
342
|
Read ROADMAP.md to get the next phase's name and goal.
|
|
376
343
|
|
|
377
|
-
Check if next phase has UI indicators:
|
|
378
|
-
|
|
379
|
-
```bash
|
|
380
|
-
NEXT_PHASE_SECTION=$(gsd-remix-sdk query roadmap.get-phase "$((Z+1))" 2>/dev/null)
|
|
381
|
-
NEXT_HAS_UI=$(echo "$NEXT_PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" || echo "false")
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
**If next phase has UI (`NEXT_HAS_UI` is `true`):**
|
|
385
|
-
|
|
386
|
-
```
|
|
387
|
-
---
|
|
388
|
-
|
|
389
|
-
## ✓ Phase {Z} Complete
|
|
390
|
-
|
|
391
|
-
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
|
|
392
|
-
|
|
393
|
-
**Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
|
|
394
|
-
|
|
395
|
-
`/clear` then:
|
|
396
|
-
|
|
397
|
-
`/gsd-discuss-phase {Z+1}` — gather context and clarify approach
|
|
398
|
-
|
|
399
|
-
---
|
|
400
|
-
|
|
401
|
-
**Also available:**
|
|
402
|
-
- `/gsd-ui-phase {Z+1}` — generate UI design contract (recommended for frontend phases)
|
|
403
|
-
- `/gsd-plan-phase {Z+1}` — skip discussion, plan directly
|
|
404
|
-
- `/gsd-verify-work {Z}` — user acceptance test before continuing
|
|
405
|
-
|
|
406
|
-
---
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
**If next phase has no UI:**
|
|
410
|
-
|
|
411
344
|
```
|
|
412
345
|
---
|
|
413
346
|
|