@opengsd/gsd-core 1.13.0 → 1.14.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/agents/gsd-advisor-researcher.compact.md +85 -0
- package/agents/gsd-ai-researcher.compact.md +96 -0
- package/agents/gsd-assumptions-analyzer.compact.md +81 -0
- package/agents/gsd-code-fixer.compact.md +458 -0
- package/agents/gsd-code-fixer.md +5 -5
- package/agents/gsd-code-reviewer.compact.md +269 -0
- package/agents/gsd-code-reviewer.md +15 -3
- package/agents/gsd-codebase-mapper.compact.md +760 -0
- package/agents/gsd-debug-session-manager.compact.md +345 -0
- package/agents/gsd-doc-classifier.compact.md +192 -0
- package/agents/gsd-doc-synthesizer.compact.md +200 -0
- package/agents/gsd-doc-verifier.compact.md +143 -0
- package/agents/gsd-doc-writer.compact.md +440 -0
- package/agents/gsd-dom-verifier.compact.md +138 -0
- package/agents/gsd-domain-researcher.compact.md +141 -0
- package/agents/gsd-eval-auditor.compact.md +160 -0
- package/agents/gsd-eval-planner.compact.md +137 -0
- package/agents/gsd-framework-selector.compact.md +82 -0
- package/agents/gsd-integration-checker.compact.md +245 -0
- package/agents/gsd-intel-updater.compact.md +226 -0
- package/agents/gsd-mempalace-curator.compact.md +45 -0
- package/agents/gsd-nyquist-auditor.compact.md +179 -0
- package/agents/gsd-pattern-mapper.compact.md +275 -0
- package/agents/gsd-project-researcher.compact.md +587 -0
- package/agents/gsd-research-synthesizer.compact.md +212 -0
- package/agents/gsd-roadmapper.compact.md +454 -0
- package/agents/gsd-roadmapper.md +13 -0
- package/agents/gsd-security-auditor.compact.md +162 -0
- package/agents/gsd-ui-auditor.compact.md +404 -0
- package/agents/gsd-ui-checker.compact.md +277 -0
- package/agents/gsd-ui-researcher.compact.md +282 -0
- package/agents/gsd-user-profiler.compact.md +108 -0
- package/bin/install.js +206 -68
- package/commands/gsd/cleanup.md +1 -0
- package/commands/gsd/code-review.md +2 -1
- package/commands/gsd/complete-milestone.md +1 -0
- package/commands/gsd/config.md +1 -0
- package/commands/gsd/debug.md +1 -0
- package/commands/gsd/graphify.md +1 -0
- package/commands/gsd/health.md +1 -0
- package/commands/gsd/mempalace-capture.md +1 -0
- package/commands/gsd/mempalace-recall.md +1 -0
- package/commands/gsd/new-milestone.md +1 -0
- package/commands/gsd/new-project.md +1 -0
- package/commands/gsd/next.md +1 -0
- package/commands/gsd/pause-work.md +1 -0
- package/commands/gsd/phase.md +1 -0
- package/commands/gsd/pr-branch.md +1 -0
- package/commands/gsd/resume-work.md +1 -0
- package/commands/gsd/review-backlog.md +1 -0
- package/commands/gsd/settings.md +2 -1
- package/commands/gsd/stats.md +1 -0
- package/commands/gsd/thread.md +1 -0
- package/commands/gsd/workspace.md +1 -0
- package/commands/gsd/workstreams.md +1 -0
- package/gsd-core/bin/check-latest-version.cjs +8 -3
- package/gsd-core/bin/gsd-tools.cjs +338 -125
- package/gsd-core/bin/lib/adr-parser.cjs +1 -1
- package/gsd-core/bin/lib/artifacts.cjs +2 -1
- package/gsd-core/bin/lib/audit.cjs +39 -22
- package/gsd-core/bin/lib/broken-windows.cjs +168 -49
- package/gsd-core/bin/lib/capability-lifecycle.cjs +10 -6
- package/gsd-core/bin/lib/capability-loader.cjs +135 -1
- package/gsd-core/bin/lib/capability-registry.cjs +79 -67
- package/gsd-core/bin/lib/capability-source.cjs +19 -2
- package/gsd-core/bin/lib/capability-validator.cjs +14 -1
- package/gsd-core/bin/lib/check-command-router.cjs +113 -36
- package/gsd-core/bin/lib/code-review-depth.cjs +2 -2
- package/gsd-core/bin/lib/commands.cjs +650 -72
- package/gsd-core/bin/lib/config-loader.cjs +1 -0
- package/gsd-core/bin/lib/config.cjs +153 -38
- package/gsd-core/bin/lib/coverage.cjs +1 -1
- package/gsd-core/bin/lib/decisions.cjs +137 -34
- package/gsd-core/bin/lib/external-descriptor-trust.cjs +29 -14
- package/gsd-core/bin/lib/gsd2-import.cjs +1 -2
- package/gsd-core/bin/lib/health-diagnostic-rules/state-consistency.cjs +12 -1
- package/gsd-core/bin/lib/health-diagnostic-rules/worktree-health.cjs +1 -1
- package/gsd-core/bin/lib/init.cjs +409 -47
- package/gsd-core/bin/lib/install-engine.cjs +16 -3
- package/gsd-core/bin/lib/install-profiles.cjs +14 -0
- package/gsd-core/bin/lib/installer-migrations.cjs +33 -4
- package/gsd-core/bin/lib/loop-resolver.cjs +50 -31
- package/gsd-core/bin/lib/mcp-catalog.cjs +2 -2
- package/gsd-core/bin/lib/milestone.cjs +19 -8
- package/gsd-core/bin/lib/model-resolver.cjs +101 -10
- package/gsd-core/bin/lib/phase-command-router.cjs +7 -1
- package/gsd-core/bin/lib/phase-id.cjs +161 -22
- package/gsd-core/bin/lib/phase-lifecycle.cjs +61 -0
- package/gsd-core/bin/lib/phase.cjs +167 -63
- package/gsd-core/bin/lib/planning-inspect.cjs +34 -18
- package/gsd-core/bin/lib/planning-snapshot.cjs +61 -12
- package/gsd-core/bin/lib/planning-workspace.cjs +50 -1
- package/gsd-core/bin/lib/pristine-baseline.cjs +182 -0
- package/gsd-core/bin/lib/prohibition-enforcement.cjs +91 -4
- package/gsd-core/bin/lib/quick-batch.cjs +1 -1
- package/gsd-core/bin/lib/refactor-trigger-command-router.cjs +61 -2
- package/gsd-core/bin/lib/research-store.cjs +11 -12
- package/gsd-core/bin/lib/review-lane-invocation.cjs +23 -0
- package/gsd-core/bin/lib/reviewer-step-dispatch.cjs +337 -0
- package/gsd-core/bin/lib/roadmap-parser.cjs +56 -15
- package/gsd-core/bin/lib/roadmap.cjs +108 -14
- package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +27 -10
- package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +12 -3
- package/gsd-core/bin/lib/runtime-artifact-layout.cjs +13 -5
- package/gsd-core/bin/lib/runtime-hooks-surface.cjs +193 -4
- package/gsd-core/bin/lib/security.cjs +126 -7
- package/gsd-core/bin/lib/state-document.cjs +130 -28
- package/gsd-core/bin/lib/state-md-schema.cjs +21 -14
- package/gsd-core/bin/lib/state-transition.cjs +142 -28
- package/gsd-core/bin/lib/state.cjs +223 -27
- package/gsd-core/bin/lib/surface.cjs +60 -2
- package/gsd-core/bin/lib/task-command-router.cjs +12 -6
- package/gsd-core/bin/lib/uat.cjs +1 -1
- package/gsd-core/bin/lib/update-context.cjs +30 -24
- package/gsd-core/bin/lib/vendor/js-yaml.cjs +11 -3
- package/gsd-core/bin/lib/verification.cjs +47 -15
- package/gsd-core/bin/lib/verify-command-grounding.cjs +1 -1
- package/gsd-core/bin/lib/verify.cjs +188 -23
- package/gsd-core/bin/lib/workstream-inventory.cjs +1 -0
- package/gsd-core/bin/lib/worktree-safety.cjs +13 -7
- package/gsd-core/bin/shared/config-defaults.manifest.json +1 -0
- package/gsd-core/bin/shared/config-schema.manifest.json +5 -0
- package/gsd-core/bin/verify-reapply-patches.cjs +439 -80
- package/gsd-core/references/compact-content-gate.md +66 -0
- package/gsd-core/references/loop-hook-dispatch.md +18 -0
- package/gsd-core/references/model-profiles.md +12 -3
- package/gsd-core/references/planning-config.md +3 -0
- package/gsd-core/references/tdd.md +5 -2
- package/gsd-core/references/thinking-models-planning.md +18 -2
- package/gsd-core/references/verification-patterns.md +17 -4
- package/gsd-core/references/worktree-path-safety.md +112 -2
- package/gsd-core/templates/README.md +7 -1
- package/gsd-core/templates/state.md +6 -3
- package/gsd-core/templates/summary.compact.md +212 -0
- package/gsd-core/templates/user-setup.compact.md +199 -0
- package/gsd-core/templates/user-setup.md +0 -9
- package/gsd-core/workflows/add-todo.md +3 -2
- package/gsd-core/workflows/autonomous.md +13 -10
- package/gsd-core/workflows/check-todos.md +4 -2
- package/gsd-core/workflows/cleanup.md +3 -1
- package/gsd-core/workflows/code-review/steps/structural-pre-pass.md +7 -0
- package/gsd-core/workflows/code-review-fix.md +3 -3
- package/gsd-core/workflows/code-review.md +156 -30
- package/gsd-core/workflows/complete-milestone/detail/elaboration.md +274 -0
- package/gsd-core/workflows/complete-milestone.md +39 -262
- package/gsd-core/workflows/docs-update/detail/elaboration.md +179 -0
- package/gsd-core/workflows/docs-update.md +14 -155
- package/gsd-core/workflows/execute-phase/detail/elaboration.md +124 -0
- package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +18 -3
- package/gsd-core/workflows/execute-phase/steps/completion-reconciliation.md +56 -0
- package/gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md +7 -2
- package/gsd-core/workflows/execute-phase/steps/executor-progress-policy.md +43 -0
- package/gsd-core/workflows/execute-phase/steps/sequential-root-pin.md +35 -0
- package/gsd-core/workflows/execute-phase.md +53 -152
- package/gsd-core/workflows/execute-plan.md +20 -7
- package/gsd-core/workflows/help/modes/full.compact.md +398 -0
- package/gsd-core/workflows/help.md +1 -1
- package/gsd-core/workflows/map-codebase.md +50 -3
- package/gsd-core/workflows/new-milestone.md +54 -12
- package/gsd-core/workflows/new-project/detail/elaboration.md +216 -0
- package/gsd-core/workflows/new-project.md +32 -202
- package/gsd-core/workflows/plan-phase/detail/elaboration.md +209 -0
- package/gsd-core/workflows/plan-phase.md +22 -181
- package/gsd-core/workflows/pr-branch.md +19 -7
- package/gsd-core/workflows/quick.md +8 -1
- package/gsd-core/workflows/reapply-patches.md +77 -3
- package/gsd-core/workflows/settings.md +18 -5
- package/gsd-core/workflows/update.md +7 -5
- package/gsd-core/workflows/verify-work/detail/elaboration.md +230 -0
- package/gsd-core/workflows/verify-work.md +20 -180
- package/hooks/dist/gsd-agent-isolation-guard.js +42 -16
- package/hooks/dist/gsd-context-monitor.js +88 -15
- package/hooks/dist/gsd-cursor-subagent-start.js +34 -14
- package/hooks/dist/gsd-secret-read-guard.js +44 -18
- package/hooks/dist/gsd-statusline.js +11 -7
- package/hooks/dist/gsd-validate-commit.sh +34 -4
- package/hooks/dist/gsd-worktree-path-guard.js +25 -14
- package/hooks/dist/gsd-write-guard.js +46 -1
- package/hooks/dist/lib/dispatch-identity.js +187 -0
- package/hooks/dist/lib/filename-classification.js +64 -0
- package/hooks/dist/lib/isolation-deny-reason.js +53 -1
- package/hooks/dist/lib/isolation-sentinel.js +58 -19
- package/hooks/gsd-agent-isolation-guard.js +42 -16
- package/hooks/gsd-context-monitor.js +88 -15
- package/hooks/gsd-cursor-subagent-start.js +34 -14
- package/hooks/gsd-secret-read-guard.js +44 -18
- package/hooks/gsd-statusline.js +11 -7
- package/hooks/gsd-validate-commit.sh +34 -4
- package/hooks/gsd-worktree-path-guard.js +25 -14
- package/hooks/gsd-write-guard.js +46 -1
- package/hooks/lib/dispatch-identity.js +187 -0
- package/hooks/lib/filename-classification.js +64 -0
- package/hooks/lib/isolation-deny-reason.js +53 -1
- package/hooks/lib/isolation-sentinel.js +58 -19
- package/package.json +10 -6
- package/scripts/benchmark-compact-content-variants.cjs +298 -0
- package/scripts/benchmark-compact-content.cjs +368 -0
- package/scripts/check-contract-drift.cjs +4 -1
- package/scripts/check-env.cjs +36 -8
- package/scripts/check-glossary-refs.cjs +25 -21
- package/scripts/ci-next-health.cjs +271 -0
- package/scripts/ci-prepare-test-scope.cjs +7 -7
- package/scripts/ci-test-scope.cjs +126 -20
- package/scripts/ci-timeout-report.cjs +1 -1
- package/scripts/diff-touches-shipped-paths.cjs +1 -1
- package/scripts/docs-guard-registry.cjs +7 -2
- package/scripts/gen-adr-index.cjs +8 -2
- package/scripts/gen-inventory-manifest.cjs +12 -0
- package/scripts/gen-platform-conformance-tier.cjs +557 -0
- package/scripts/lib/drift-scan.cjs +1 -1
- package/scripts/lib/macos-conformance-tier.generated.cjs +210 -0
- package/scripts/lib/npm-version-check-diagnosis.cjs +59 -0
- package/scripts/lib/platform-conformance-tier.generated.cjs +276 -0
- package/scripts/lib/suite-detection.cjs +32 -0
- package/scripts/lint-allowed-tools-parity.cjs +221 -0
- package/scripts/lint-docs-guard-registration.exempt-baseline.cjs +19 -2
- package/scripts/lint-phase-id-drift.cjs +338 -13
- package/scripts/lint-response-language-coverage.cjs +9 -3
- package/scripts/lint-source-test-name-collision.cjs +1 -1
- package/scripts/lint-test-file-count.allowlist.json +1 -0
- package/scripts/lint-vendored-deps.cjs +128 -17
- package/scripts/lint-workflow-shellcheck-baseline.json +85 -0
- package/scripts/prompt-injection-scan.sh +14 -0
- package/scripts/workflow-size.cjs +139 -0
- package/skills/gsd-cleanup/SKILL.md +1 -0
- package/skills/gsd-code-review/SKILL.md +2 -1
- package/skills/gsd-complete-milestone/SKILL.md +1 -0
- package/skills/gsd-config/SKILL.md +1 -0
- package/skills/gsd-debug/SKILL.md +1 -0
- package/skills/gsd-graphify/SKILL.md +1 -0
- package/skills/gsd-health/SKILL.md +1 -0
- package/skills/gsd-mempalace-capture/SKILL.md +1 -0
- package/skills/gsd-mempalace-recall/SKILL.md +1 -0
- package/skills/gsd-new-milestone/SKILL.md +1 -0
- package/skills/gsd-new-project/SKILL.md +1 -0
- package/skills/gsd-next/SKILL.md +1 -0
- package/skills/gsd-pause-work/SKILL.md +1 -0
- package/skills/gsd-phase/SKILL.md +1 -0
- package/skills/gsd-pr-branch/SKILL.md +1 -0
- package/skills/gsd-resume-work/SKILL.md +1 -0
- package/skills/gsd-review-backlog/SKILL.md +1 -0
- package/skills/gsd-settings/SKILL.md +2 -1
- package/skills/gsd-stats/SKILL.md +1 -0
- package/skills/gsd-thread/SKILL.md +1 -0
- package/skills/gsd-workspace/SKILL.md +1 -0
- package/skills/gsd-workstreams/SKILL.md +1 -0
- package/vscode/package.json +1 -1
- package/gsd-core/templates/claude-md.md +0 -145
- package/gsd-core/templates/codebase/concerns.md +0 -310
- package/gsd-core/templates/codebase/conventions.md +0 -307
- package/gsd-core/templates/codebase/integrations.md +0 -280
- package/gsd-core/templates/codebase/structure.md +0 -285
- package/gsd-core/templates/codebase/testing.md +0 -480
- package/gsd-core/templates/debug-subagent-prompt.md +0 -91
- package/gsd-core/templates/discovery.md +0 -146
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# new-project.md — deferred elaboration
|
|
2
|
+
|
|
3
|
+
Read in full when `workflow.compact_content` is `false` (the default) — see
|
|
4
|
+
`gsd-core/references/compact-content-gate.md` for the check and resolution rule this
|
|
5
|
+
spine defers to. Each `§` below is the full text the spine condenses at the point it
|
|
6
|
+
names.
|
|
7
|
+
|
|
8
|
+
## § 1 — Prior Spike/Sketch Detection (Step 2b)
|
|
9
|
+
|
|
10
|
+
Check for existing spike and sketch work that should inform project setup:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Check for spike findings skill (project-local)
|
|
14
|
+
SPIKE_SKILL=$(ls ./.claude/skills/spike-findings-*/SKILL.md 2>/dev/null | head -1 || true)
|
|
15
|
+
|
|
16
|
+
# Check for sketch findings skill (project-local)
|
|
17
|
+
SKETCH_SKILL=$(ls ./.claude/skills/sketch-findings-*/SKILL.md 2>/dev/null | head -1 || true)
|
|
18
|
+
|
|
19
|
+
# Check for raw spikes/sketches in .planning/
|
|
20
|
+
HAS_SPIKES=$(ls .planning/spikes/MANIFEST.md 2>/dev/null)
|
|
21
|
+
HAS_SKETCHES=$(ls .planning/sketches/MANIFEST.md 2>/dev/null)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
If any of these exist, surface them before questioning:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
⚡ Prior exploration detected:
|
|
28
|
+
{if SPIKE_SKILL} ✓ Spike findings skill: {path} — validated patterns from experiments
|
|
29
|
+
{if SKETCH_SKILL} ✓ Sketch findings skill: {path} — validated design decisions
|
|
30
|
+
{if HAS_SPIKES && !SPIKE_SKILL} ◆ Raw spikes in .planning/spikes/ — consider `/gsd:spike --wrap-up` to package findings
|
|
31
|
+
{if HAS_SKETCHES && !SKETCH_SKILL} ◆ Raw sketches in .planning/sketches/ — consider `/gsd:sketch --wrap-up` to package findings
|
|
32
|
+
|
|
33
|
+
These findings will be incorporated into project context and available to planning agents.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
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.
|
|
37
|
+
|
|
38
|
+
## § 2 — Research Decision: the four researcher prompts, synthesizer prompt, and self-heal steps
|
|
39
|
+
|
|
40
|
+
Spawn 4 parallel gsd-project-researcher agents with path references:
|
|
41
|
+
|
|
42
|
+
<!-- #2517 model-omit-on-inherit -->
|
|
43
|
+
|
|
44
|
+
> **Model omission (#2517).** Omit the `model` parameter entirely when the value it would carry (`researcher_model`, `synthesizer_model`, `roadmapper_model`) is `"inherit"` or empty. An empty value 404s on runtimes without native tier aliases — the default on non-Claude runtimes. Omitting it inherits the orchestrator's model. See @gsd-core/references/model-profile-resolution.md.
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
Agent(prompt="<research_type>
|
|
48
|
+
Project Research — Stack dimension for [domain].
|
|
49
|
+
</research_type>
|
|
50
|
+
|
|
51
|
+
<milestone_context>
|
|
52
|
+
[greenfield OR subsequent]
|
|
53
|
+
|
|
54
|
+
Greenfield: Research the standard stack for building [domain] from scratch.
|
|
55
|
+
Subsequent: Research what's needed to add [target features] to an existing [domain] app. Don't re-research the existing system.
|
|
56
|
+
</milestone_context>
|
|
57
|
+
|
|
58
|
+
<question>
|
|
59
|
+
What's the standard 2025 stack for [domain]?
|
|
60
|
+
</question>
|
|
61
|
+
|
|
62
|
+
<required_reading>
|
|
63
|
+
- {project_path} (Project context and goals)
|
|
64
|
+
</required_reading>
|
|
65
|
+
|
|
66
|
+
${AGENT_SKILLS_RESEARCHER}
|
|
67
|
+
|
|
68
|
+
<downstream_consumer>
|
|
69
|
+
Your STACK.md feeds into roadmap creation. Be prescriptive:
|
|
70
|
+
- Specific libraries with versions
|
|
71
|
+
- Clear rationale for each choice
|
|
72
|
+
- What NOT to use and why
|
|
73
|
+
</downstream_consumer>
|
|
74
|
+
|
|
75
|
+
<quality_gate>
|
|
76
|
+
- [ ] Versions are current (verify with Context7/official docs, not training data)
|
|
77
|
+
- [ ] Rationale explains WHY, not just WHAT
|
|
78
|
+
- [ ] Confidence levels assigned to each recommendation
|
|
79
|
+
</quality_gate>
|
|
80
|
+
|
|
81
|
+
<!-- #2508 runtime-aware-dispatch -->
|
|
82
|
+
|
|
83
|
+
> **Runtime-aware dispatch (#2508 Phase 4).** GSD workflows dispatch specialized subagents by role. Before dispatching on a built-in-only runtime (kimi-code — three built-ins only), resolve the role to a built-in via `gsd_run query resolve-dispatch-type --requested <role> --raw`. On named-dispatch runtimes (Claude/OpenCode/…) the role is returned unchanged; on kimi-code it maps to `coder`/`explore`/`plan` by role-suffix. The persona rides `${AGENT_SKILLS_<ROLE>}` (Phase 3) regardless. See @gsd-core/references/runtime-aware-dispatch.md.
|
|
84
|
+
|
|
85
|
+
<output>
|
|
86
|
+
Write to: {research_dir}/STACK.md
|
|
87
|
+
Use template: ~/.claude/gsd-core/templates/research-project/STACK.md
|
|
88
|
+
</output>
|
|
89
|
+
", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Stack research")
|
|
90
|
+
|
|
91
|
+
Agent(prompt="<research_type>
|
|
92
|
+
Project Research — Features dimension for [domain].
|
|
93
|
+
</research_type>
|
|
94
|
+
|
|
95
|
+
<milestone_context>
|
|
96
|
+
[greenfield OR subsequent]
|
|
97
|
+
|
|
98
|
+
Greenfield: What features do [domain] products have? What's table stakes vs differentiating?
|
|
99
|
+
Subsequent: How do [target features] typically work? What's expected behavior?
|
|
100
|
+
</milestone_context>
|
|
101
|
+
|
|
102
|
+
<question>
|
|
103
|
+
What features do [domain] products have? What's table stakes vs differentiating?
|
|
104
|
+
</question>
|
|
105
|
+
|
|
106
|
+
<required_reading>
|
|
107
|
+
- {project_path} (Project context, for the Features researcher)
|
|
108
|
+
</required_reading>
|
|
109
|
+
|
|
110
|
+
${AGENT_SKILLS_RESEARCHER}
|
|
111
|
+
|
|
112
|
+
<downstream_consumer>
|
|
113
|
+
Your FEATURES.md feeds into requirements definition. Categorize clearly:
|
|
114
|
+
- Table stakes (must have or users leave)
|
|
115
|
+
- Differentiators (competitive advantage)
|
|
116
|
+
- Anti-features (things to deliberately NOT build)
|
|
117
|
+
</downstream_consumer>
|
|
118
|
+
|
|
119
|
+
<quality_gate>
|
|
120
|
+
- [ ] Categories are clear (table stakes vs differentiators vs anti-features)
|
|
121
|
+
- [ ] Complexity noted for each feature
|
|
122
|
+
- [ ] Dependencies between features identified
|
|
123
|
+
</quality_gate>
|
|
124
|
+
|
|
125
|
+
<output>
|
|
126
|
+
Write to: {research_dir}/FEATURES.md
|
|
127
|
+
Use template: ~/.claude/gsd-core/templates/research-project/FEATURES.md
|
|
128
|
+
</output>
|
|
129
|
+
", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Features research")
|
|
130
|
+
|
|
131
|
+
Agent(prompt="<research_type>
|
|
132
|
+
Project Research — Architecture dimension for [domain].
|
|
133
|
+
</research_type>
|
|
134
|
+
|
|
135
|
+
<milestone_context>
|
|
136
|
+
[greenfield OR subsequent]
|
|
137
|
+
|
|
138
|
+
Greenfield: How are [domain] systems typically structured? What are major components?
|
|
139
|
+
Subsequent: How do [target features] integrate with existing [domain] architecture?
|
|
140
|
+
</milestone_context>
|
|
141
|
+
|
|
142
|
+
<question>
|
|
143
|
+
How are [domain] systems typically structured? What are major components?
|
|
144
|
+
</question>
|
|
145
|
+
|
|
146
|
+
<required_reading>
|
|
147
|
+
- {project_path} (Project context, for the Architecture researcher)
|
|
148
|
+
</required_reading>
|
|
149
|
+
|
|
150
|
+
${AGENT_SKILLS_RESEARCHER}
|
|
151
|
+
|
|
152
|
+
<downstream_consumer>
|
|
153
|
+
Your ARCHITECTURE.md informs phase structure in roadmap. Include:
|
|
154
|
+
- Component boundaries (what talks to what)
|
|
155
|
+
- Data flow (how information moves)
|
|
156
|
+
- Suggested build order (dependencies between components)
|
|
157
|
+
</downstream_consumer>
|
|
158
|
+
|
|
159
|
+
<quality_gate>
|
|
160
|
+
- [ ] Components clearly defined with boundaries
|
|
161
|
+
- [ ] Data flow direction explicit
|
|
162
|
+
- [ ] Build order implications noted
|
|
163
|
+
</quality_gate>
|
|
164
|
+
|
|
165
|
+
<output>
|
|
166
|
+
Write to: {research_dir}/ARCHITECTURE.md
|
|
167
|
+
Use template: ~/.claude/gsd-core/templates/research-project/ARCHITECTURE.md
|
|
168
|
+
</output>
|
|
169
|
+
", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Architecture research")
|
|
170
|
+
|
|
171
|
+
Agent(prompt="<research_type>
|
|
172
|
+
Project Research — Pitfalls dimension for [domain].
|
|
173
|
+
</research_type>
|
|
174
|
+
|
|
175
|
+
<milestone_context>
|
|
176
|
+
[greenfield OR subsequent]
|
|
177
|
+
|
|
178
|
+
Greenfield: What do [domain] projects commonly get wrong? Critical mistakes?
|
|
179
|
+
Subsequent: What are common mistakes when adding [target features] to [domain]?
|
|
180
|
+
</milestone_context>
|
|
181
|
+
|
|
182
|
+
<question>
|
|
183
|
+
What do [domain] projects commonly get wrong? Critical mistakes?
|
|
184
|
+
</question>
|
|
185
|
+
|
|
186
|
+
<required_reading>
|
|
187
|
+
- {project_path} (Project context, for the Pitfalls researcher)
|
|
188
|
+
</required_reading>
|
|
189
|
+
|
|
190
|
+
${AGENT_SKILLS_RESEARCHER}
|
|
191
|
+
|
|
192
|
+
<downstream_consumer>
|
|
193
|
+
Your PITFALLS.md prevents mistakes in roadmap/planning. For each pitfall:
|
|
194
|
+
- Warning signs (how to detect early)
|
|
195
|
+
- Prevention strategy (how to avoid)
|
|
196
|
+
- Which phase should address it
|
|
197
|
+
</downstream_consumer>
|
|
198
|
+
|
|
199
|
+
<quality_gate>
|
|
200
|
+
- [ ] Pitfalls are specific to this domain (not generic advice)
|
|
201
|
+
- [ ] Prevention strategies are actionable
|
|
202
|
+
- [ ] Phase mapping included where relevant
|
|
203
|
+
</quality_gate>
|
|
204
|
+
|
|
205
|
+
<output>
|
|
206
|
+
Write to: {research_dir}/PITFALLS.md
|
|
207
|
+
Use template: ~/.claude/gsd-core/templates/research-project/PITFALLS.md
|
|
208
|
+
</output>
|
|
209
|
+
", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Pitfalls research")
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
(The "wait for all 4 researchers before spawning the synthesizer" orchestrator rule, the full
|
|
213
|
+
synthesizer `Agent()` call, and the entire #222 self-heal recovery sequence — including its log
|
|
214
|
+
message and closing guarantee — are all stated verbatim in the spine. A pre-existing structural
|
|
215
|
+
drift guard (`tests/research-agent-profiles.test.cjs`) pins them there, so nothing about this
|
|
216
|
+
particular sub-flow is deferred to this file.)
|
|
@@ -23,6 +23,8 @@ If `section_manifest` is `null` or `"auto-mode-detection"` is in its `included`
|
|
|
23
23
|
|
|
24
24
|
<process>
|
|
25
25
|
|
|
26
|
+
**Compact Content Gate.** Read and follow `gsd-core/references/compact-content-gate.md` now — it states the `workflow.compact_content` check and the resolution rule this spine defers to. When it directs a Read, read `gsd-core/workflows/new-project/detail/elaboration.md` in full before continuing past this point; its content elaborates on two sections below (Step 2b's prior spike/sketch detection, and Step 6's researcher/synthesizer prompts).
|
|
27
|
+
|
|
26
28
|
## 1. Setup
|
|
27
29
|
|
|
28
30
|
**MANDATORY FIRST STEP — Execute these checks before ANY user interaction:**
|
|
@@ -118,33 +120,9 @@ If `section_manifest` is `null` or `"auto-mode-config"` is in its `included` lis
|
|
|
118
120
|
|
|
119
121
|
## 2b. Prior Spike/Sketch Detection
|
|
120
122
|
|
|
121
|
-
Check for
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
# Check for spike findings skill (project-local)
|
|
125
|
-
SPIKE_SKILL=$(ls ./.claude/skills/spike-findings-*/SKILL.md 2>/dev/null | head -1 || true)
|
|
126
|
-
|
|
127
|
-
# Check for sketch findings skill (project-local)
|
|
128
|
-
SKETCH_SKILL=$(ls ./.claude/skills/sketch-findings-*/SKILL.md 2>/dev/null | head -1 || true)
|
|
129
|
-
|
|
130
|
-
# Check for raw spikes/sketches in .planning/
|
|
131
|
-
HAS_SPIKES=$(ls .planning/spikes/MANIFEST.md 2>/dev/null)
|
|
132
|
-
HAS_SKETCHES=$(ls .planning/sketches/MANIFEST.md 2>/dev/null)
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
If any of these exist, surface them before questioning:
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
⚡ Prior exploration detected:
|
|
139
|
-
{if SPIKE_SKILL} ✓ Spike findings skill: {path} — validated patterns from experiments
|
|
140
|
-
{if SKETCH_SKILL} ✓ Sketch findings skill: {path} — validated design decisions
|
|
141
|
-
{if HAS_SPIKES && !SPIKE_SKILL} ◆ Raw spikes in .planning/spikes/ — consider `/gsd:spike --wrap-up` to package findings
|
|
142
|
-
{if HAS_SKETCHES && !SKETCH_SKILL} ◆ Raw sketches in .planning/sketches/ — consider `/gsd:sketch --wrap-up` to package findings
|
|
143
|
-
|
|
144
|
-
These findings will be incorporated into project context and available to planning agents.
|
|
145
|
-
```
|
|
123
|
+
Check for a spike/sketch findings skill or raw `.planning/{spikes,sketches}/MANIFEST.md` files. If any exist, surface them before questioning (which findings-skill, if any, and any raw un-wrapped spikes/sketches worth `/gsd:spike --wrap-up` / `/gsd:sketch --wrap-up`), and if a findings skill exists, read its SKILL.md to inform the questioning phase — it carries validated patterns, constraints, and design decisions that should shape the project definition.
|
|
146
124
|
|
|
147
|
-
|
|
125
|
+
Exact detection commands and the surfaced-findings banner: `gsd-core/workflows/new-project/detail/elaboration.md` § 1.
|
|
148
126
|
|
|
149
127
|
## 3. Deep Questioning
|
|
150
128
|
|
|
@@ -538,6 +516,10 @@ These spawn additional agents during planning/execution. They add tokens and tim
|
|
|
538
516
|
|
|
539
517
|
All recommended for important projects. Skip for quick experiments.
|
|
540
518
|
|
|
519
|
+
A fourth question in this same round covers Compact Content (#4139) — not a spawned agent,
|
|
520
|
+
but grouped here because it's the last general workflow-behavior toggle before the more
|
|
521
|
+
involved AI-models round below.
|
|
522
|
+
|
|
541
523
|
```
|
|
542
524
|
questions: [
|
|
543
525
|
{
|
|
@@ -566,6 +548,15 @@ questions: [
|
|
|
566
548
|
{ label: "Yes (Recommended)", description: "Confirm deliverables match phase goals" },
|
|
567
549
|
{ label: "No", description: "Trust execution, skip verification" }
|
|
568
550
|
]
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
header: "Compact Content",
|
|
554
|
+
question: "Use token-minimized instruction content where available? (smaller context footprint)",
|
|
555
|
+
multiSelect: false,
|
|
556
|
+
options: [
|
|
557
|
+
{ label: "No (Recommended)", description: "Full instruction detail loaded every time. Best while evaluating GSD or on a large context window." },
|
|
558
|
+
{ label: "Yes", description: "Terser instructions where a compact variant exists; canonical detail loads only when actually needed. Frees up context for long sessions or large codebases." }
|
|
559
|
+
]
|
|
569
560
|
}
|
|
570
561
|
]
|
|
571
562
|
|
|
@@ -627,7 +618,7 @@ Create `.planning/config.json` with all settings (CLI fills in remaining default
|
|
|
627
618
|
|
|
628
619
|
```bash
|
|
629
620
|
mkdir -p .planning
|
|
630
|
-
gsd_run query config-new-project '{"mode":"[yolo|interactive]","granularity":"[selected]","parallelization":true|false,"commit_docs":true|false,"model_profile":"quality|balanced|budget|adaptive|inherit","workflow":{"research":true|false,"plan_check":true|false,"verifier":true|false,"nyquist_validation":[false if granularity=coarse, true otherwise]},"plan_review":{"source_grounding":true|false},"ship":{"pr_body_sections":[{"heading":"User Stories & Acceptance Criteria","enabled":true|false,"source":"REQUIREMENTS.md ## User Stories || REQUIREMENTS.md ## Acceptance Criteria","fallback":"- Acceptance criteria are covered by the linked requirements and verification evidence."},{"heading":"Risks & Dependencies","enabled":true|false,"source":"PLAN.md ## Risks || PLAN.md ## Dependencies","fallback":"- No known high-risk rollout dependencies."},{"heading":"Success Metrics & Release Criteria","enabled":true|false,"source":"REQUIREMENTS.md ## Definition of Done || VERIFICATION.md ## Release Criteria","fallback":"- Release when automated verification and required manual checks pass."},{"heading":"Stakeholder Review & Approval","enabled":true|false,"template":"- Product owner approval pending for {phase_name}."}]}}'
|
|
621
|
+
gsd_run query config-new-project '{"mode":"[yolo|interactive]","granularity":"[selected]","parallelization":true|false,"commit_docs":true|false,"model_profile":"quality|balanced|budget|adaptive|inherit","workflow":{"research":true|false,"plan_check":true|false,"verifier":true|false,"compact_content":true|false,"nyquist_validation":[false if granularity=coarse, true otherwise]},"plan_review":{"source_grounding":true|false},"ship":{"pr_body_sections":[{"heading":"User Stories & Acceptance Criteria","enabled":true|false,"source":"REQUIREMENTS.md ## User Stories || REQUIREMENTS.md ## Acceptance Criteria","fallback":"- Acceptance criteria are covered by the linked requirements and verification evidence."},{"heading":"Risks & Dependencies","enabled":true|false,"source":"PLAN.md ## Risks || PLAN.md ## Dependencies","fallback":"- No known high-risk rollout dependencies."},{"heading":"Success Metrics & Release Criteria","enabled":true|false,"source":"REQUIREMENTS.md ## Definition of Done || VERIFICATION.md ## Release Criteria","fallback":"- Release when automated verification and required manual checks pass."},{"heading":"Stakeholder Review & Approval","enabled":true|false,"template":"- Product owner approval pending for {phase_name}."}]}}'
|
|
631
622
|
```
|
|
632
623
|
|
|
633
624
|
**Note:** Run `/gsd:settings` anytime to update model profile, workflow agents, branching strategy, and other preferences.
|
|
@@ -651,15 +642,18 @@ gsd_run query commit "chore: add project config" --files .planning/config.json
|
|
|
651
642
|
|
|
652
643
|
**Detect multi-repo workspace:**
|
|
653
644
|
|
|
654
|
-
Check for directories with their own `.git`
|
|
645
|
+
Check for directories with their own `.git` (separate repos within the workspace —
|
|
646
|
+
this also finds linked git worktree children, whose `.git` is a file rather than a
|
|
647
|
+
directory, unlike a plain `find -type d` predicate would):
|
|
655
648
|
|
|
656
649
|
```bash
|
|
657
|
-
|
|
650
|
+
gsd_run query init.new-project
|
|
658
651
|
```
|
|
659
652
|
|
|
660
|
-
|
|
653
|
+
Read the `sub_repos_detected` array from the JSON output — each entry is a bare
|
|
654
|
+
directory name already relative to the workspace root (e.g. `"backend"`).
|
|
661
655
|
|
|
662
|
-
|
|
656
|
+
**If sub-repos found:**
|
|
663
657
|
|
|
664
658
|
Use AskUserQuestion:
|
|
665
659
|
|
|
@@ -728,180 +722,13 @@ Display spawning indicator:
|
|
|
728
722
|
→ Pitfalls research
|
|
729
723
|
```
|
|
730
724
|
|
|
731
|
-
Spawn 4 parallel gsd-project-researcher agents
|
|
732
|
-
|
|
733
|
-
<!-- #2517 model-omit-on-inherit -->
|
|
734
|
-
|
|
735
|
-
> **Model omission (#2517).** Omit the `model` parameter entirely when the value it would carry (`researcher_model`, `synthesizer_model`, `roadmapper_model`) is `"inherit"` or empty. An empty value 404s on runtimes without native tier aliases — the default on non-Claude runtimes. Omitting it inherits the orchestrator's model. See @gsd-core/references/model-profile-resolution.md.
|
|
736
|
-
|
|
737
|
-
```text
|
|
738
|
-
Agent(prompt="<research_type>
|
|
739
|
-
Project Research — Stack dimension for [domain].
|
|
740
|
-
</research_type>
|
|
741
|
-
|
|
742
|
-
<milestone_context>
|
|
743
|
-
[greenfield OR subsequent]
|
|
744
|
-
|
|
745
|
-
Greenfield: Research the standard stack for building [domain] from scratch.
|
|
746
|
-
Subsequent: Research what's needed to add [target features] to an existing [domain] app. Don't re-research the existing system.
|
|
747
|
-
</milestone_context>
|
|
748
|
-
|
|
749
|
-
<question>
|
|
750
|
-
What's the standard 2025 stack for [domain]?
|
|
751
|
-
</question>
|
|
752
|
-
|
|
753
|
-
<required_reading>
|
|
754
|
-
- {project_path} (Project context and goals)
|
|
755
|
-
</required_reading>
|
|
756
|
-
|
|
757
|
-
${AGENT_SKILLS_RESEARCHER}
|
|
758
|
-
|
|
759
|
-
<downstream_consumer>
|
|
760
|
-
Your STACK.md feeds into roadmap creation. Be prescriptive:
|
|
761
|
-
- Specific libraries with versions
|
|
762
|
-
- Clear rationale for each choice
|
|
763
|
-
- What NOT to use and why
|
|
764
|
-
</downstream_consumer>
|
|
765
|
-
|
|
766
|
-
<quality_gate>
|
|
767
|
-
- [ ] Versions are current (verify with Context7/official docs, not training data)
|
|
768
|
-
- [ ] Rationale explains WHY, not just WHAT
|
|
769
|
-
- [ ] Confidence levels assigned to each recommendation
|
|
770
|
-
</quality_gate>
|
|
771
|
-
|
|
772
|
-
<!-- #2508 runtime-aware-dispatch -->
|
|
773
|
-
|
|
774
|
-
> **Runtime-aware dispatch (#2508 Phase 4).** GSD workflows dispatch specialized subagents by role. Before dispatching on a built-in-only runtime (kimi-code — three built-ins only), resolve the role to a built-in via `gsd_run query resolve-dispatch-type --requested <role> --raw`. On named-dispatch runtimes (Claude/OpenCode/…) the role is returned unchanged; on kimi-code it maps to `coder`/`explore`/`plan` by role-suffix. The persona rides `${AGENT_SKILLS_<ROLE>}` (Phase 3) regardless. See @gsd-core/references/runtime-aware-dispatch.md.
|
|
775
|
-
|
|
776
|
-
<output>
|
|
777
|
-
Write to: {research_dir}/STACK.md
|
|
778
|
-
Use template: ~/.claude/gsd-core/templates/research-project/STACK.md
|
|
779
|
-
</output>
|
|
780
|
-
", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Stack research")
|
|
781
|
-
|
|
782
|
-
Agent(prompt="<research_type>
|
|
783
|
-
Project Research — Features dimension for [domain].
|
|
784
|
-
</research_type>
|
|
785
|
-
|
|
786
|
-
<milestone_context>
|
|
787
|
-
[greenfield OR subsequent]
|
|
788
|
-
|
|
789
|
-
Greenfield: What features do [domain] products have? What's table stakes vs differentiating?
|
|
790
|
-
Subsequent: How do [target features] typically work? What's expected behavior?
|
|
791
|
-
</milestone_context>
|
|
792
|
-
|
|
793
|
-
<question>
|
|
794
|
-
What features do [domain] products have? What's table stakes vs differentiating?
|
|
795
|
-
</question>
|
|
796
|
-
|
|
797
|
-
<required_reading>
|
|
798
|
-
- {project_path} (Project context)
|
|
799
|
-
</required_reading>
|
|
800
|
-
|
|
801
|
-
${AGENT_SKILLS_RESEARCHER}
|
|
802
|
-
|
|
803
|
-
<downstream_consumer>
|
|
804
|
-
Your FEATURES.md feeds into requirements definition. Categorize clearly:
|
|
805
|
-
- Table stakes (must have or users leave)
|
|
806
|
-
- Differentiators (competitive advantage)
|
|
807
|
-
- Anti-features (things to deliberately NOT build)
|
|
808
|
-
</downstream_consumer>
|
|
809
|
-
|
|
810
|
-
<quality_gate>
|
|
811
|
-
- [ ] Categories are clear (table stakes vs differentiators vs anti-features)
|
|
812
|
-
- [ ] Complexity noted for each feature
|
|
813
|
-
- [ ] Dependencies between features identified
|
|
814
|
-
</quality_gate>
|
|
815
|
-
|
|
816
|
-
<output>
|
|
817
|
-
Write to: {research_dir}/FEATURES.md
|
|
818
|
-
Use template: ~/.claude/gsd-core/templates/research-project/FEATURES.md
|
|
819
|
-
</output>
|
|
820
|
-
", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Features research")
|
|
821
|
-
|
|
822
|
-
Agent(prompt="<research_type>
|
|
823
|
-
Project Research — Architecture dimension for [domain].
|
|
824
|
-
</research_type>
|
|
825
|
-
|
|
826
|
-
<milestone_context>
|
|
827
|
-
[greenfield OR subsequent]
|
|
828
|
-
|
|
829
|
-
Greenfield: How are [domain] systems typically structured? What are major components?
|
|
830
|
-
Subsequent: How do [target features] integrate with existing [domain] architecture?
|
|
831
|
-
</milestone_context>
|
|
832
|
-
|
|
833
|
-
<question>
|
|
834
|
-
How are [domain] systems typically structured? What are major components?
|
|
835
|
-
</question>
|
|
836
|
-
|
|
837
|
-
<required_reading>
|
|
838
|
-
- {project_path} (Project context)
|
|
839
|
-
</required_reading>
|
|
840
|
-
|
|
841
|
-
${AGENT_SKILLS_RESEARCHER}
|
|
842
|
-
|
|
843
|
-
<downstream_consumer>
|
|
844
|
-
Your ARCHITECTURE.md informs phase structure in roadmap. Include:
|
|
845
|
-
- Component boundaries (what talks to what)
|
|
846
|
-
- Data flow (how information moves)
|
|
847
|
-
- Suggested build order (dependencies between components)
|
|
848
|
-
</downstream_consumer>
|
|
849
|
-
|
|
850
|
-
<quality_gate>
|
|
851
|
-
- [ ] Components clearly defined with boundaries
|
|
852
|
-
- [ ] Data flow direction explicit
|
|
853
|
-
- [ ] Build order implications noted
|
|
854
|
-
</quality_gate>
|
|
855
|
-
|
|
856
|
-
<output>
|
|
857
|
-
Write to: {research_dir}/ARCHITECTURE.md
|
|
858
|
-
Use template: ~/.claude/gsd-core/templates/research-project/ARCHITECTURE.md
|
|
859
|
-
</output>
|
|
860
|
-
", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Architecture research")
|
|
861
|
-
|
|
862
|
-
Agent(prompt="<research_type>
|
|
863
|
-
Project Research — Pitfalls dimension for [domain].
|
|
864
|
-
</research_type>
|
|
865
|
-
|
|
866
|
-
<milestone_context>
|
|
867
|
-
[greenfield OR subsequent]
|
|
868
|
-
|
|
869
|
-
Greenfield: What do [domain] projects commonly get wrong? Critical mistakes?
|
|
870
|
-
Subsequent: What are common mistakes when adding [target features] to [domain]?
|
|
871
|
-
</milestone_context>
|
|
872
|
-
|
|
873
|
-
<question>
|
|
874
|
-
What do [domain] projects commonly get wrong? Critical mistakes?
|
|
875
|
-
</question>
|
|
876
|
-
|
|
877
|
-
<required_reading>
|
|
878
|
-
- {project_path} (Project context)
|
|
879
|
-
</required_reading>
|
|
880
|
-
|
|
881
|
-
${AGENT_SKILLS_RESEARCHER}
|
|
882
|
-
|
|
883
|
-
<downstream_consumer>
|
|
884
|
-
Your PITFALLS.md prevents mistakes in roadmap/planning. For each pitfall:
|
|
885
|
-
- Warning signs (how to detect early)
|
|
886
|
-
- Prevention strategy (how to avoid)
|
|
887
|
-
- Which phase should address it
|
|
888
|
-
</downstream_consumer>
|
|
889
|
-
|
|
890
|
-
<quality_gate>
|
|
891
|
-
- [ ] Pitfalls are specific to this domain (not generic advice)
|
|
892
|
-
- [ ] Prevention strategies are actionable
|
|
893
|
-
- [ ] Phase mapping included where relevant
|
|
894
|
-
</quality_gate>
|
|
895
|
-
|
|
896
|
-
<output>
|
|
897
|
-
Write to: {research_dir}/PITFALLS.md
|
|
898
|
-
Use template: ~/.claude/gsd-core/templates/research-project/PITFALLS.md
|
|
899
|
-
</output>
|
|
900
|
-
", subagent_type="gsd-project-researcher", model="{researcher_model}", description="Pitfalls research")
|
|
901
|
-
```
|
|
725
|
+
Spawn 4 parallel gsd-project-researcher agents — one per dimension (Stack, Features, Architecture, Pitfalls) — each given the domain and greenfield/subsequent milestone context, a dimension-specific question, a downstream-consumer note (what the next stage needs from this file), and a quality gate; each writes its own file (STACK.md / FEATURES.md / ARCHITECTURE.md / PITFALLS.md) under `{research_dir}/` from its template.
|
|
902
726
|
|
|
727
|
+
<!-- gsd:protected -->
|
|
903
728
|
> **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling all 4 researcher Agent() calls above, do NOT read research files or synthesize content independently while the subagents are active. Wait for all 4 researchers to complete before spawning the synthesizer. This prevents duplicate work and wasted context.
|
|
904
729
|
|
|
730
|
+
**Model omission (#2517) applies to every one of these 5 spawns** (4 researchers + synthesizer): omit the `model=` parameter entirely when the value it would carry (`researcher_model`, `synthesizer_model`) is `"inherit"` or empty — passing it literally 404s on runtimes without native tier aliases (the default on non-Claude runtimes). Omitting `model=` inherits the orchestrator's model.
|
|
731
|
+
|
|
905
732
|
After all 4 agents complete, spawn synthesizer to create SUMMARY.md:
|
|
906
733
|
|
|
907
734
|
```text
|
|
@@ -927,6 +754,7 @@ Commit after writing.
|
|
|
927
754
|
", subagent_type="gsd-research-synthesizer", model="{synthesizer_model}", description="Synthesize research")
|
|
928
755
|
```
|
|
929
756
|
|
|
757
|
+
<!-- gsd:protected -->
|
|
930
758
|
> **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
|
|
931
759
|
|
|
932
760
|
**Synthesizer output self-heal (#222) — verify SUMMARY.md materialized:** The synthesizer's canonical output is `.planning/research/SUMMARY.md` on disk; its brief structured return (`## SYNTHESIS COMPLETE` plus a few `###` confirmation lines) is NOT the file content. A known LLM false-refusal (issue #222) sometimes makes the agent return the full SUMMARY.md document inline — fabricating a write restriction (e.g. "the runtime is blocking file writes") — instead of writing the file. Prompt hardening alone does not fully eliminate it, so the orchestrator MUST absorb the failure deterministically before spawning `gsd-roadmapper`:
|
|
@@ -937,6 +765,8 @@ Commit after writing.
|
|
|
937
765
|
|
|
938
766
|
This guarantees `gsd-roadmapper` (which lists SUMMARY.md as required reading) never runs against a missing or truncated SUMMARY.md.
|
|
939
767
|
|
|
768
|
+
Exact agent prompts (all four researcher dimensions): `gsd-core/workflows/new-project/detail/elaboration.md` § 2.
|
|
769
|
+
|
|
940
770
|
Display research complete banner and key findings:
|
|
941
771
|
|
|
942
772
|
```
|