@opengsd/gsd-core 1.17.0 → 1.18.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 +1 -1
- package/agents/gsd-advisor-researcher.md +1 -1
- package/agents/gsd-assumptions-analyzer.compact.md +1 -1
- package/agents/gsd-assumptions-analyzer.md +1 -1
- package/agents/gsd-code-fixer.compact.md +1 -1
- package/agents/gsd-code-fixer.md +1 -1
- package/agents/gsd-code-reviewer.compact.md +1 -1
- package/agents/gsd-code-reviewer.md +1 -1
- package/agents/gsd-codebase-mapper.compact.md +1 -1
- package/agents/gsd-codebase-mapper.md +1 -1
- package/agents/gsd-debugger.md +1 -1
- package/agents/gsd-doc-verifier.compact.md +4 -4
- package/agents/gsd-doc-verifier.md +4 -3
- package/agents/gsd-doc-writer.compact.md +23 -5
- package/agents/gsd-doc-writer.md +19 -6
- package/agents/gsd-eval-auditor.compact.md +1 -1
- package/agents/gsd-eval-auditor.md +1 -1
- package/agents/gsd-executor.md +7 -3
- package/agents/gsd-integration-checker.compact.md +1 -1
- package/agents/gsd-integration-checker.md +1 -1
- package/agents/gsd-nyquist-auditor.compact.md +1 -1
- package/agents/gsd-nyquist-auditor.md +1 -1
- package/agents/gsd-phase-researcher.md +1 -1
- package/agents/gsd-plan-checker.md +2 -1
- package/agents/gsd-planner.md +5 -4
- package/agents/gsd-project-researcher.compact.md +1 -1
- package/agents/gsd-project-researcher.md +1 -1
- package/agents/gsd-research-synthesizer.compact.md +5 -5
- package/agents/gsd-research-synthesizer.md +5 -5
- package/agents/gsd-roadmapper.compact.md +1 -1
- package/agents/gsd-roadmapper.md +1 -1
- package/agents/gsd-security-auditor.compact.md +1 -1
- package/agents/gsd-security-auditor.md +1 -1
- package/agents/gsd-ui-auditor.compact.md +1 -1
- package/agents/gsd-ui-auditor.md +1 -1
- package/agents/gsd-ui-checker.compact.md +1 -1
- package/agents/gsd-ui-checker.md +1 -1
- package/agents/gsd-ui-researcher.compact.md +13 -1
- package/agents/gsd-ui-researcher.md +28 -1
- package/agents/gsd-verifier.md +1 -1
- package/bin/install.js +38 -2
- package/commands/gsd/code-review.md +8 -0
- package/commands/gsd/pause-work.md +1 -1
- package/gsd-core/bin/gsd-tools.cjs +18 -11
- package/gsd-core/bin/lib/capability-ledger.cjs +25 -0
- package/gsd-core/bin/lib/capability-lock.cjs +29 -7
- package/gsd-core/bin/lib/capability-registry.cjs +70 -64
- package/gsd-core/bin/lib/capability-source.cjs +3 -1
- package/gsd-core/bin/lib/capability-state.cjs +6 -3
- package/gsd-core/bin/lib/capability-validator.cjs +6 -4
- package/gsd-core/bin/lib/commands.cjs +5 -1
- package/gsd-core/bin/lib/config-loader.cjs +3 -3
- package/gsd-core/bin/lib/decision-coverage-support.cjs +19 -0
- package/gsd-core/bin/lib/gate-decision-coverage-plan.cjs +15 -0
- package/gsd-core/bin/lib/gate-decision-coverage-verify.cjs +13 -0
- package/gsd-core/bin/lib/gate-predicate-evaluator.cjs +23 -3
- package/gsd-core/bin/lib/gate-predicate.cjs +8 -12
- package/gsd-core/bin/lib/gate-tdd-review-checkpoint.cjs +60 -5
- package/gsd-core/bin/lib/init.cjs +11 -4
- package/gsd-core/bin/lib/install-effort-resolver.cjs +2 -2
- package/gsd-core/bin/lib/install-model-override-resolver.cjs +4 -3
- package/gsd-core/bin/lib/install-profiles.cjs +5 -3
- package/gsd-core/bin/lib/phase.cjs +120 -11
- package/gsd-core/bin/lib/report-parser.cjs +57 -1
- package/gsd-core/bin/lib/review-lane-invocation.cjs +40 -0
- package/gsd-core/bin/lib/review-reviewer-selection.cjs +20 -1
- package/gsd-core/bin/lib/roadmap.cjs +56 -5
- package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +47 -2
- package/gsd-core/bin/lib/runtime-homes.cjs +18 -0
- package/gsd-core/bin/lib/shell-command-projection.cjs +2 -0
- package/gsd-core/bin/lib/smart-entry.cjs +24 -16
- package/gsd-core/bin/lib/state-document.cjs +37 -3
- package/gsd-core/bin/lib/state-transition.cjs +31 -10
- package/gsd-core/bin/lib/state.cjs +90 -60
- package/gsd-core/bin/lib/task-command-router.cjs +2 -3
- package/gsd-core/bin/lib/tdd-red-evidence.cjs +5 -0
- package/gsd-core/bin/lib/tdd-test-files.cjs +42 -0
- package/gsd-core/bin/lib/verify.cjs +36 -1
- package/gsd-core/references/agent-contracts.md +1 -1
- package/gsd-core/references/agent-skills-bootstrap.md +26 -7
- package/gsd-core/references/git-integration.md +3 -3
- package/gsd-core/references/planner-reversibility.md +18 -4
- package/gsd-core/references/planner-verify-command-grounding.md +18 -0
- package/gsd-core/references/tdd.md +4 -3
- package/gsd-core/references/verifier-phase-gates.md +8 -1
- package/gsd-core/workflows/add-backlog.md +10 -2
- package/gsd-core/workflows/add-phase.md +5 -1
- package/gsd-core/workflows/add-tests.md +5 -1
- package/gsd-core/workflows/add-todo.md +5 -1
- package/gsd-core/workflows/ai-integration-phase.md +5 -1
- package/gsd-core/workflows/audit-milestone.md +21 -9
- package/gsd-core/workflows/autonomous/templates/minimal-context.md +41 -0
- package/gsd-core/workflows/autonomous.md +52 -64
- package/gsd-core/workflows/check-todos.md +5 -1
- package/gsd-core/workflows/code-review-fix.md +5 -1
- package/gsd-core/workflows/code-review.md +5 -1
- package/gsd-core/workflows/complete-milestone/detail/elaboration.md +5 -1
- package/gsd-core/workflows/complete-milestone.md +25 -5
- package/gsd-core/workflows/debug.md +5 -1
- package/gsd-core/workflows/diagnose-issues.md +5 -1
- package/gsd-core/workflows/discuss-phase/modes/chain.md +5 -1
- package/gsd-core/workflows/discuss-phase-assumptions.md +11 -3
- package/gsd-core/workflows/discuss-phase.md +5 -1
- package/gsd-core/workflows/docs-update/detail/elaboration.md +7 -6
- package/gsd-core/workflows/docs-update.md +27 -5
- package/gsd-core/workflows/edit-phase.md +5 -1
- package/gsd-core/workflows/eval-review.md +11 -3
- package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +5 -1
- package/gsd-core/workflows/execute-phase/steps/post-merge-gate.md +12 -6
- package/gsd-core/workflows/execute-phase/steps/regression-gate-run.md +19 -2
- package/gsd-core/workflows/execute-phase/steps/regression-gate.md +18 -1
- package/gsd-core/workflows/execute-phase/steps/verify-phase-goal.md +5 -1
- package/gsd-core/workflows/execute-phase.md +37 -6
- package/gsd-core/workflows/execute-plan.md +8 -4
- package/gsd-core/workflows/extract-learnings.md +6 -2
- package/gsd-core/workflows/forensics.md +5 -1
- package/gsd-core/workflows/import.md +5 -1
- package/gsd-core/workflows/insert-phase.md +5 -1
- package/gsd-core/workflows/manager.md +10 -2
- package/gsd-core/workflows/map-codebase.md +5 -1
- package/gsd-core/workflows/milestone-summary.md +10 -2
- package/gsd-core/workflows/new-milestone.md +13 -5
- package/gsd-core/workflows/new-project.md +9 -5
- package/gsd-core/workflows/next.md +8 -4
- package/gsd-core/workflows/pause-work.md +3 -3
- package/gsd-core/workflows/plan-phase/steps/auto-advance-check.md +70 -0
- package/gsd-core/workflows/plan-phase/steps/chunked-planning-mode.md +5 -1
- package/gsd-core/workflows/plan-phase/steps/closed-phase-gate.md +6 -2
- package/gsd-core/workflows/plan-phase.md +41 -73
- package/gsd-core/workflows/plan-review-convergence.md +17 -5
- package/gsd-core/workflows/plant-seed.md +8 -4
- package/gsd-core/workflows/progress.md +6 -2
- package/gsd-core/workflows/quick-batch.md +5 -1
- package/gsd-core/workflows/quick.md +22 -7
- package/gsd-core/workflows/remove-phase.md +5 -1
- package/gsd-core/workflows/resume-project.md +5 -1
- package/gsd-core/workflows/review.md +6 -2
- package/gsd-core/workflows/scan.md +5 -1
- package/gsd-core/workflows/secure-phase.md +6 -2
- package/gsd-core/workflows/settings.md +3 -3
- package/gsd-core/workflows/ship.md +13 -10
- package/gsd-core/workflows/thread.md +10 -2
- package/gsd-core/workflows/transition.md +5 -1
- package/gsd-core/workflows/ui-phase.md +5 -1
- package/gsd-core/workflows/ui-review.md +6 -2
- package/gsd-core/workflows/ultraplan-phase.md +5 -1
- package/gsd-core/workflows/update.md +5 -1
- package/gsd-core/workflows/validate-phase.md +6 -2
- package/gsd-core/workflows/verify-work/detail/elaboration.md +1 -1
- package/gsd-core/workflows/verify-work/steps/mvp-uat-framing.md +5 -1
- package/gsd-core/workflows/verify-work.md +11 -3
- package/hooks/dist/gsd-agent-isolation-guard.js +3 -1
- package/hooks/dist/gsd-cursor-subagent-start.js +2 -1
- package/hooks/dist/gsd-secret-read-guard.js +72 -14
- package/hooks/dist/gsd-validate-commit.sh +27 -5
- package/hooks/gsd-agent-isolation-guard.js +3 -1
- package/hooks/gsd-cursor-subagent-start.js +2 -1
- package/hooks/gsd-secret-read-guard.js +72 -14
- package/hooks/gsd-validate-commit.sh +27 -5
- package/package.json +1 -1
- package/scripts/audit-workflow-script-paths.cjs +1 -1
- package/scripts/diagnose-validate-commit-in-tier.cjs +270 -0
- package/scripts/diagnose-validate-commit-phases.cjs +348 -0
- package/scripts/diagnose-windows-spawn-watcher.cjs +317 -0
- package/scripts/docs-guard-registry.cjs +2 -0
- package/scripts/lib/macos-conformance-tier.generated.cjs +9 -0
- package/scripts/lib/platform-conformance-tier.generated.cjs +16 -0
- package/scripts/lint-phase-arg-assignment.cjs +2 -2
- package/scripts/lint-workflow-shellcheck-baseline.json +16 -16
- package/scripts/release-tarball-smoke.cjs +1 -0
- package/scripts/xtrace-phase-timing.cjs +205 -0
- package/skills/gsd-code-review/SKILL.md +8 -0
- package/skills/gsd-pause-work/SKILL.md +1 -1
- package/vscode/package.json +1 -1
|
@@ -15,7 +15,7 @@ grounded in project context.
|
|
|
15
15
|
|
|
16
16
|
@~/.claude/gsd-core/references/untrusted-input-boundary.md
|
|
17
17
|
|
|
18
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
18
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-advisor-researcher`)
|
|
19
19
|
|
|
20
20
|
<documentation_lookup>
|
|
21
21
|
@~/.claude/gsd-core/references/research-documentation-lookup.md
|
|
@@ -19,7 +19,7 @@ Spawned by `discuss-phase` via `Task()`. You do NOT present output directly to t
|
|
|
19
19
|
|
|
20
20
|
@~/.claude/gsd-core/references/untrusted-input-boundary.md
|
|
21
21
|
|
|
22
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
22
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-advisor-researcher`)
|
|
23
23
|
|
|
24
24
|
<documentation_lookup>
|
|
25
25
|
@~/.claude/gsd-core/references/research-documentation-lookup.md
|
|
@@ -11,7 +11,7 @@ GSD assumptions analyzer. Deeply analyze the codebase for ONE phase; produce str
|
|
|
11
11
|
|
|
12
12
|
@~/.claude/gsd-core/references/untrusted-input-boundary.md
|
|
13
13
|
|
|
14
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
14
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-assumptions-analyzer`)
|
|
15
15
|
|
|
16
16
|
<input>
|
|
17
17
|
Via prompt: `<phase>` (number/name), `<phase_goal>` (ROADMAP.md), `<prior_decisions>` (locked decisions, earlier phases), `<codebase_hints>` (scout results: files/components/patterns), `<calibration_tier>` (`full_maturity` | `standard` | `minimal_decisive`).
|
|
@@ -20,7 +20,7 @@ Spawned by `discuss-phase-assumptions` via `Task()`. You do NOT present output d
|
|
|
20
20
|
|
|
21
21
|
@~/.claude/gsd-core/references/untrusted-input-boundary.md
|
|
22
22
|
|
|
23
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
23
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-assumptions-analyzer`)
|
|
24
24
|
|
|
25
25
|
<input>
|
|
26
26
|
Agent receives via prompt:
|
|
@@ -21,7 +21,7 @@ Job: read REVIEW.md findings, fix source code intelligently (not blind applicati
|
|
|
21
21
|
Before fixing code: **Project instructions** — read `./CLAUDE.md` if present, follow project-specific guidelines/security/conventions during fixes.
|
|
22
22
|
|
|
23
23
|
**Project skills:** check `.claude/skills/` or `.agents/skills/`.
|
|
24
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
24
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-code-fixer`)
|
|
25
25
|
1. List available skills 2. Read `SKILL.md` for each (~130 lines) 3. Load specific `rules/*.md` as needed 4. Do NOT load full `AGENTS.md` (100KB+) 5. Follow skill rules relevant to your fix tasks.
|
|
26
26
|
</project_context>
|
|
27
27
|
|
package/agents/gsd-code-fixer.md
CHANGED
|
@@ -25,7 +25,7 @@ Before fixing code, discover project context:
|
|
|
25
25
|
|
|
26
26
|
**Project skills:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
|
|
27
27
|
|
|
28
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
28
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-code-fixer`)
|
|
29
29
|
1. List available skills (subdirectories)
|
|
30
30
|
2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
|
|
31
31
|
3. Load specific `rules/*.md` files as needed during implementation
|
|
@@ -38,7 +38,7 @@ Read `./CLAUDE.md` if present — follow project guidelines, security requiremen
|
|
|
38
38
|
|
|
39
39
|
**Project skills:** check `.claude/skills/` or `.agents/skills/`: list skill subdirectories, read each `SKILL.md` (lightweight index ~130 lines), load specific `rules/*.md` as needed. Do NOT load full `AGENTS.md` files (100KB+ context cost). Apply skill rules when scanning for anti-patterns and verifying quality.
|
|
40
40
|
|
|
41
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
41
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-code-reviewer`)
|
|
42
42
|
</project_context>
|
|
43
43
|
|
|
44
44
|
<review_scope>
|
|
@@ -41,7 +41,7 @@ Before reviewing, discover project context:
|
|
|
41
41
|
|
|
42
42
|
**Project skills:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
|
|
43
43
|
|
|
44
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
44
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-code-reviewer`)
|
|
45
45
|
1. List available skills (subdirectories)
|
|
46
46
|
2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
|
|
47
47
|
3. Load specific `rules/*.md` files as needed during review
|
|
@@ -27,7 +27,7 @@ Explore thoroughly, then write document(s) directly. Return confirmation only.
|
|
|
27
27
|
|
|
28
28
|
**Project skills:** check `.claude/skills/` or `.agents/skills/` if either exists.
|
|
29
29
|
|
|
30
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md — list skill subdirs, read each `SKILL.md` (~130-line index), load `rules/*.md` as needed. NEVER load full `AGENTS.md` (100KB+ cost). Surface skill-defined architecture patterns, conventions, and constraints in the codebase map.
|
|
30
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-codebase-mapper`) — list skill subdirs, read each `SKILL.md` (~130-line index), load `rules/*.md` as needed. NEVER load full `AGENTS.md` (100KB+ cost). Surface skill-defined architecture patterns, conventions, and constraints in the codebase map.
|
|
31
31
|
|
|
32
32
|
<why_this_matters>
|
|
33
33
|
Downstream: `/gsd:plan-phase` loads docs by phase type (UI/frontend→CONVENTIONS+STRUCTURE; API/backend→ARCHITECTURE+CONVENTIONS; database/schema→ARCHITECTURE+STACK; testing→TESTING+CONVENTIONS; integration→INTEGRATIONS+STACK; refactor→CONCERNS+ARCHITECTURE; setup/config→STACK+STRUCTURE). `/gsd:execute-phase` uses them to follow conventions, place new files (STRUCTURE.md), match test patterns (TESTING.md), avoid adding debt (CONCERNS.md).
|
|
@@ -30,7 +30,7 @@ If the prompt contains a `<required_reading>` block, you MUST use the `Read` too
|
|
|
30
30
|
|
|
31
31
|
**Project skills:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
|
|
32
32
|
|
|
33
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
33
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-codebase-mapper`)
|
|
34
34
|
1. List available skills (subdirectories)
|
|
35
35
|
2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
|
|
36
36
|
3. Load specific `rules/*.md` files as needed during implementation
|
package/agents/gsd-debugger.md
CHANGED
|
@@ -40,7 +40,7 @@ Your job: Find the root cause through hypothesis testing, maintain debug file st
|
|
|
40
40
|
- Load `rules/*.md` as needed during **investigation and fix**.
|
|
41
41
|
- Follow skill rules relevant to the bug being investigated and the fix being applied.
|
|
42
42
|
|
|
43
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
43
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-debugger`)
|
|
44
44
|
|
|
45
45
|
<philosophy>
|
|
46
46
|
|
|
@@ -14,7 +14,7 @@ color: orange
|
|
|
14
14
|
<role>
|
|
15
15
|
A documentation file has been submitted for factual verification against the live codebase. Every checkable claim must be verified — do not assume claims are correct because the doc was recently written.
|
|
16
16
|
|
|
17
|
-
Spawned by the `/gsd:docs-update` workflow. Each spawn receives a `<verify_assignment>` XML block: `doc_path` (path to the doc file, relative to project_root) and `
|
|
17
|
+
Spawned by the `/gsd:docs-update` workflow. Each spawn receives a `<verify_assignment>` XML block: `doc_path` (path to the doc file, relative to project_root), `project_root` (absolute path) and `result_path` (absolute path of the JSON file to write, always under `project_root`, named by the doc's full relative path).
|
|
18
18
|
|
|
19
19
|
Extract checkable claims from the doc, verify each against the codebase using filesystem tools only, then write a structured JSON result file. Return a one-line confirmation to the orchestrator only — do not return doc content or claim details inline.
|
|
20
20
|
|
|
@@ -90,7 +90,7 @@ Follow in order:
|
|
|
90
90
|
|
|
91
91
|
**Step 5: Aggregate results.** Count `claims_checked` (total attempted, excludes skipped), `claims_passed`, `claims_failed`, and build `failures: [{ line, claim, expected, actual }]`.
|
|
92
92
|
|
|
93
|
-
**Step 6: Write result JSON.** Create
|
|
93
|
+
**Step 6: Write result JSON.** Create the parent directory of `result_path` if needed and write to exactly `result_path` (from the assignment — never a path you derive, never relative to your working directory), using the exact shape in `<output_format>`.
|
|
94
94
|
</verification_process>
|
|
95
95
|
|
|
96
96
|
<output_format>
|
|
@@ -115,7 +115,7 @@ Verification complete for {doc_path}: {claims_passed}/{claims_checked} claims pa
|
|
|
115
115
|
```
|
|
116
116
|
If `claims_failed > 0`, append:
|
|
117
117
|
```
|
|
118
|
-
{claims_failed} failure(s) written to
|
|
118
|
+
{claims_failed} failure(s) written to {result_path}
|
|
119
119
|
```
|
|
120
120
|
</output_format>
|
|
121
121
|
|
|
@@ -134,7 +134,7 @@ If `claims_failed > 0`, append:
|
|
|
134
134
|
- [ ] All five claim categories extracted line-by-line
|
|
135
135
|
- [ ] Skip rules applied during extraction
|
|
136
136
|
- [ ] Each claim verified using filesystem tools only
|
|
137
|
-
- [ ] Result JSON written to
|
|
137
|
+
- [ ] Result JSON written to the assigned `result_path`
|
|
138
138
|
- [ ] Confirmation returned to orchestrator
|
|
139
139
|
- [ ] `claims_failed` equals `failures.length`
|
|
140
140
|
- [ ] No modifications made to any doc file
|
|
@@ -17,6 +17,7 @@ A documentation file has been submitted for factual verification against the liv
|
|
|
17
17
|
Spawned by the `/gsd:docs-update` workflow. Each spawn receives a `<verify_assignment>` XML block containing:
|
|
18
18
|
- `doc_path`: path to the doc file to verify (relative to project_root)
|
|
19
19
|
- `project_root`: absolute path to project root
|
|
20
|
+
- `result_path`: absolute path of the JSON file to write (always under `project_root`, named by the doc's full relative path so same-named docs never collide)
|
|
20
21
|
|
|
21
22
|
Extract checkable claims from the doc, verify each against the codebase using filesystem tools only, then write a structured JSON result file. Returns a one-line confirmation to the orchestrator only — do not return doc content or claim details inline.
|
|
22
23
|
|
|
@@ -143,7 +144,7 @@ Count:
|
|
|
143
144
|
- `failures`: array of `{ line, claim, expected, actual }` objects for each failure
|
|
144
145
|
|
|
145
146
|
**Step 6: Write result JSON**
|
|
146
|
-
Create
|
|
147
|
+
Create the parent directory of `result_path` if it does not exist, then write the result to exactly `result_path` — do not derive a path of your own, and do not write relative to your working directory, which is not guaranteed to be `project_root`.
|
|
147
148
|
|
|
148
149
|
Use the exact JSON shape from `<output_format>`.
|
|
149
150
|
</verification_process>
|
|
@@ -190,7 +191,7 @@ Verification complete for {doc_path}: {claims_passed}/{claims_checked} claims pa
|
|
|
190
191
|
If `claims_failed > 0`, append:
|
|
191
192
|
|
|
192
193
|
```
|
|
193
|
-
{claims_failed} failure(s) written to
|
|
194
|
+
{claims_failed} failure(s) written to {result_path}
|
|
194
195
|
```
|
|
195
196
|
</output_format>
|
|
196
197
|
|
|
@@ -209,7 +210,7 @@ If `claims_failed > 0`, append:
|
|
|
209
210
|
- [ ] All five claim categories extracted line-by-line
|
|
210
211
|
- [ ] Skip rules applied during extraction
|
|
211
212
|
- [ ] Each claim verified using filesystem tools only
|
|
212
|
-
- [ ] Result JSON written to
|
|
213
|
+
- [ ] Result JSON written to the assigned `result_path`
|
|
213
214
|
- [ ] Confirmation returned to orchestrator
|
|
214
215
|
- [ ] `claims_failed` equals `failures.length`
|
|
215
216
|
- [ ] No modifications made to any doc file
|
|
@@ -43,7 +43,7 @@ incrementally — only what each check requires, not the full codebase upfront.
|
|
|
43
43
|
|
|
44
44
|
**Project skills:** check `.claude/skills/` or `.agents/skills/` if either exists.
|
|
45
45
|
|
|
46
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
46
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-doc-writer`)
|
|
47
47
|
1. List available skills (subdirectories)
|
|
48
48
|
2. Read `SKILL.md` for each (lightweight index ~130 lines)
|
|
49
49
|
3. Load specific `rules/*.md` as needed during implementation
|
|
@@ -128,9 +128,11 @@ anything else. Surgical precision: change the minimum characters to fix each fai
|
|
|
128
128
|
pnpm), `setup.py`/`pyproject.toml` (pip), `Cargo.toml` (cargo), `go.mod` (go get). Include all
|
|
129
129
|
applicable if multiple runtimes.
|
|
130
130
|
- Quick start — shortest install→working-output path (2-4 steps). Check `scripts.start`/
|
|
131
|
-
`scripts.dev`, `.bin` entry, `examples/`/`demo/` runnable entry.
|
|
131
|
+
`scripts.dev`, `.bin` entry, `examples/`/`demo/` runnable entry. None exists → critical rule 10
|
|
132
|
+
(test/build fallback, then "no standalone run mode"), not an invented run step.
|
|
132
133
|
- Usage examples — 1-3 concrete examples with expected output. Read entry points (`bin/`,
|
|
133
|
-
`src/index.*`, `lib/index.*`) for API/CLI surface; check `examples/`.
|
|
134
|
+
`src/index.*`, `lib/index.*`) for API/CLI surface; check `examples/`. Event-triggered service
|
|
135
|
+
with no CLI/HTTP surface → "no standalone run mode" (rule 10), no fabricated examples.
|
|
134
136
|
- Contributing link — one line, only if CONTRIBUTING.md exists or is in the generation queue.
|
|
135
137
|
- License — one line + link; read LICENSE first line, fall back to `package.json` `.license`.
|
|
136
138
|
|
|
@@ -169,7 +171,11 @@ directory structure as a tree-indented code block.
|
|
|
169
171
|
- Installation steps — clone → cd → install (detected package manager). Check `package.json`,
|
|
170
172
|
`Pipfile`/`requirements.txt`, `Makefile` install targets.
|
|
171
173
|
- First run — single command producing working output. `scripts.start`/`scripts.dev`, `Makefile`
|
|
172
|
-
`run`/`serve`, existing README quick-start.
|
|
174
|
+
`run`/`serve`, existing README quick-start. Cannot start from repo contents alone (config from a
|
|
175
|
+
secrets manager or deploy-time env, no `.env.example`) or no local entry point (event-triggered
|
|
176
|
+
handlers) → fall back: test command, then build command, then an explicit "no standalone run mode"
|
|
177
|
+
statement (rule 10); put the blocked start-the-server path under Common setup issues. Before citing
|
|
178
|
+
a `Makefile`/`package.json` script as the run path, confirm its referenced inputs exist (rule 11).
|
|
173
179
|
- Common setup issues — known new-contributor problems + solutions. Check `.env.example`
|
|
174
180
|
(missing env var errors), `engines` constraints, existing troubleshooting, port conflicts.
|
|
175
181
|
≥2 issues; placeholder list if none discoverable.
|
|
@@ -328,7 +334,9 @@ Used when `scope: per_package` is set.
|
|
|
328
334
|
heading (scoped name, e.g. `@myorg/core`).
|
|
329
335
|
- Installation — scoped install command from `.name`; omit if `"private": true`.
|
|
330
336
|
- Usage — key exports/CLI specific to this package only (1-2 examples). Read
|
|
331
|
-
`{package_dir}/src/index.*` or `.main`/`.module`/`.exports`.
|
|
337
|
+
`{package_dir}/src/index.*` or `.main`/`.module`/`.exports`. Event-triggered handler (Lambda
|
|
338
|
+
behind SNS/Kinesis, queue consumer) with no CLI/HTTP surface → a "Run Locally" note stating "no
|
|
339
|
+
standalone run mode" plus the test/build commands (rule 10); no fabricated usage examples.
|
|
332
340
|
- API summary (if applicable) — top-level exports with one-liners (grep `export (function|class|
|
|
333
341
|
const|type|interface)`). Omit if package has no public exports.
|
|
334
342
|
- Testing — `{package_dir}/package.json` `scripts.test`; also show workspace-scoped command if a
|
|
@@ -424,6 +432,16 @@ type. Create `docs/` if missing. No frontmatter added.
|
|
|
424
432
|
5. Use `<!-- VERIFY: {claim} -->` for infrastructure claims not verifiable from the repo alone.
|
|
425
433
|
6. Update mode: PRESERVE accurate user-authored content. Only rewrite inaccurate/missing sections.
|
|
426
434
|
7. Supplement mode: NEVER modify existing content. Only append missing sections. No GSD marker.
|
|
435
|
+
10. Not every target runs locally. No runnable entry point (event-triggered handlers with no CLI/HTTP
|
|
436
|
+
surface) or cannot start from repo contents alone (config from a secrets manager/deploy-time env)
|
|
437
|
+
→ no literal run step or fabricated output. Fall back: test command, then build command, then an
|
|
438
|
+
explicit "no standalone run mode" statement. Normal entry points (`scripts.start`, CLI bin,
|
|
439
|
+
`go run`, `docker compose up`) keep the normal run step.
|
|
440
|
+
11. Before citing a Makefile target or `package.json` script as a quick-start/run path, confirm the
|
|
441
|
+
inputs it references (event fixtures, SAM/CloudFormation templates, config files) exist in the
|
|
442
|
+
repo. A script that only looks like the answer is not proof it works: if an input is missing,
|
|
443
|
+
document the target as-is with `<!-- VERIFY: {target} references {missing input}, which is not in
|
|
444
|
+
the repository -->`, not as working.
|
|
427
445
|
|
|
428
446
|
</critical_rules>
|
|
429
447
|
|
package/agents/gsd-doc-writer.md
CHANGED
|
@@ -35,7 +35,7 @@ If the prompt contains a `<required_reading>` block, you MUST use the `Read` too
|
|
|
35
35
|
|
|
36
36
|
**Project skills:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
|
|
37
37
|
|
|
38
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
38
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-doc-writer`)
|
|
39
39
|
1. List available skills (subdirectories)
|
|
40
40
|
2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
|
|
41
41
|
3. Load specific `rules/*.md` files as needed during implementation
|
|
@@ -120,10 +120,12 @@ Fix mode must correct ONLY the lines listed in the failures array. Do not modify
|
|
|
120
120
|
Use the applicable package manager command; include all required ones if multiple runtimes are involved.
|
|
121
121
|
- Quick start — The shortest path from install to working output (2-4 steps maximum).
|
|
122
122
|
Discover: `package.json` `scripts.start` or `scripts.dev`; primary CLI bin entry from `package.json` `.bin`;
|
|
123
|
-
look for a `examples/` or `demo/` directory with a runnable entry point.
|
|
123
|
+
look for a `examples/` or `demo/` directory with a runnable entry point. If none exists, apply critical
|
|
124
|
+
rule 10 (build/test fallback, then "no standalone run mode") instead of inventing a run step.
|
|
124
125
|
- Usage examples — 1-3 concrete examples showing common use cases with expected output or result.
|
|
125
126
|
Discover: Read entry-point files (`bin/`, `src/index.*`, `lib/index.*`) for exported API surface or CLI
|
|
126
|
-
commands; check `examples/` directory for existing runnable examples.
|
|
127
|
+
commands; check `examples/` directory for existing runnable examples. For an event-triggered service with
|
|
128
|
+
no CLI or HTTP surface, state "no standalone run mode" (critical rule 10) rather than fabricating examples.
|
|
127
129
|
- Contributing link — One line: "See CONTRIBUTING.md for guidelines." Include only if CONTRIBUTING.md exists
|
|
128
130
|
in the project root or is in the current doc generation queue.
|
|
129
131
|
- License — One line stating the license type and a link to the LICENSE file.
|
|
@@ -195,7 +197,12 @@ Fix mode must correct ONLY the lines listed in the failures array. Do not modify
|
|
|
195
197
|
or `requirements.txt` for pip, `Makefile` for custom install targets.
|
|
196
198
|
- First run — The single command that produces working output (a running server, a CLI result, a passing
|
|
197
199
|
test). Discover: `package.json` `scripts.start` or `scripts.dev`; `Makefile` `run` or `serve` target;
|
|
198
|
-
`README.md` quick-start section if it exists.
|
|
200
|
+
`README.md` quick-start section if it exists. When the project cannot be started from repository contents
|
|
201
|
+
alone (required config comes from a secrets manager or deploy-time environment, no `.env.example`), or has
|
|
202
|
+
no local entry point (event-triggered handlers), fall back in this order: the test command (`go test`,
|
|
203
|
+
`npm test`, `pytest`, or equivalent), then the build command (`go build` or equivalent), then an explicit
|
|
204
|
+
"no standalone run mode" statement (critical rule 10). Mention the blocked start-the-server path in
|
|
205
|
+
Common setup issues instead of presenting it as the first run.
|
|
199
206
|
- Common setup issues — Known problems new contributors encounter with solutions. Discover: Check for
|
|
200
207
|
`.env.example` (missing env var errors), `package.json` `engines` version constraints (wrong runtime
|
|
201
208
|
version), `README.md` existing troubleshooting section, common port conflict patterns.
|
|
@@ -209,7 +216,8 @@ Fix mode must correct ONLY the lines listed in the failures array. Do not modify
|
|
|
209
216
|
- `.env.example` or `.env.sample` — required environment variables
|
|
210
217
|
- `Dockerfile` `FROM` line — base runtime version
|
|
211
218
|
- `package.json` `scripts.start` and `scripts.dev` — first run command
|
|
212
|
-
- `Makefile` targets — alternative install/run commands
|
|
219
|
+
- `Makefile` targets — alternative install/run commands. Before citing one (or a `package.json` script) as
|
|
220
|
+
the quick-start path, confirm its referenced inputs exist in the repository (critical rule 11).
|
|
213
221
|
|
|
214
222
|
**Format Notes:**
|
|
215
223
|
- Use numbered lists for sequential steps
|
|
@@ -476,7 +484,10 @@ Used when `scope: per_package` is set in `doc_assignment`.
|
|
|
476
484
|
Omit if the package is private (`"private": true` in package.json).
|
|
477
485
|
- Usage — Key exports or CLI commands specific to this package only. Show 1-2 realistic usage examples.
|
|
478
486
|
Discover: Read `{package_dir}/src/index.*` or `{package_dir}/index.*` for the primary export surface.
|
|
479
|
-
Check `{package_dir}/package.json` `.main`, `.module`, `.exports` for the entry point.
|
|
487
|
+
Check `{package_dir}/package.json` `.main`, `.module`, `.exports` for the entry point. For an
|
|
488
|
+
event-triggered handler (a Lambda behind SNS/Kinesis, a queue consumer) with no CLI or HTTP surface, add a
|
|
489
|
+
"Run Locally" note stating there is no standalone run mode, plus the test/build commands (critical rule 10);
|
|
490
|
+
do not fabricate usage examples.
|
|
480
491
|
- API summary (if applicable) — Top-level exported functions, classes, or types with one-line descriptions.
|
|
481
492
|
Discover: Grep for `export (function|class|const|type|interface)` in the package entry point.
|
|
482
493
|
Omit if the package has no public exports (private internal package with `"private": true`).
|
|
@@ -603,6 +614,8 @@ change — only location and metadata change.
|
|
|
603
614
|
5. Use `<!-- VERIFY: {claim} -->` markers for any infrastructure claim (URLs, server configs, external service details) that cannot be verified from the repository contents alone.
|
|
604
615
|
6. In update mode, PRESERVE user-authored content in sections that are still accurate. Only rewrite inaccurate or missing sections.
|
|
605
616
|
7. In supplement mode, NEVER modify existing content. Only append missing sections. Do NOT add the GSD marker to hand-written files.
|
|
617
|
+
10. Not every target can be run locally. When a project or package has no runnable entry point (event-triggered handlers with no CLI or HTTP surface) or cannot start from repository contents alone (required config comes from a secrets manager or deploy-time environment), do NOT write a literal run step or fabricated usage output. Fall back in this order: the test command, then the build command, then an explicit "no standalone run mode" statement. Targets with a normal entry point (`scripts.start`, a CLI bin, `go run`, `docker compose up`) keep the normal run step.
|
|
618
|
+
11. Before citing a Makefile target or `package.json` script as a quick-start or run path, confirm the inputs it references (event fixtures, SAM/CloudFormation templates, config files) exist in the repository. A script that only looks like the answer is not proof it works: if an input is missing, document the target as-is but flag it with `<!-- VERIFY: {target} references {missing input}, which is not in the repository -->` instead of presenting it as working.
|
|
606
619
|
|
|
607
620
|
</critical_rules>
|
|
608
621
|
|
|
@@ -30,7 +30,7 @@ Read `~/.claude/gsd-core/references/ai-evals.md` before auditing. This is your s
|
|
|
30
30
|
|
|
31
31
|
**Context budget:** load project skills first (lightweight); read implementation files incrementally — only what each check requires.
|
|
32
32
|
|
|
33
|
-
**Project skills:** check `.claude/skills/` or `.agents/skills/`. **agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md — list skill subdirectories, read each `SKILL.md` (lightweight index ~130 lines), load specific `rules/*.md` as needed. Do NOT load full `AGENTS.md` files (100KB+ context cost). Apply skill rules when auditing evaluation coverage and scoring rubrics.
|
|
33
|
+
**Project skills:** check `.claude/skills/` or `.agents/skills/`. **agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-eval-auditor`) — list skill subdirectories, read each `SKILL.md` (lightweight index ~130 lines), load specific `rules/*.md` as needed. Do NOT load full `AGENTS.md` files (100KB+ context cost). Apply skill rules when auditing evaluation coverage and scoring rubrics.
|
|
34
34
|
|
|
35
35
|
<input>
|
|
36
36
|
- `ai_spec_path`: path to AI-SPEC.md (planned eval strategy)
|
|
@@ -40,7 +40,7 @@ Read `~/.claude/gsd-core/references/ai-evals.md` before auditing. This is your s
|
|
|
40
40
|
|
|
41
41
|
**Project skills:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
|
|
42
42
|
|
|
43
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
43
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-eval-auditor`)
|
|
44
44
|
1. List available skills (subdirectories)
|
|
45
45
|
2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
|
|
46
46
|
3. Load specific `rules/*.md` files as needed during implementation
|
package/agents/gsd-executor.md
CHANGED
|
@@ -66,7 +66,7 @@ Before executing, discover project context:
|
|
|
66
66
|
- Load `rules/*.md` as needed during **implementation**.
|
|
67
67
|
- Follow skill rules relevant to the task you are about to commit.
|
|
68
68
|
|
|
69
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
69
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-executor`)
|
|
70
70
|
|
|
71
71
|
**CLAUDE.md enforcement:** If `./CLAUDE.md` exists, treat its directives as hard constraints during execution. Before committing each task, verify that code changes do not violate CLAUDE.md rules (forbidden patterns, required conventions, mandated tools). If a task action would contradict a CLAUDE.md directive, apply the CLAUDE.md rule — it takes precedence over plan instructions. Document any CLAUDE.md-driven adjustments as deviations (Rule 2: auto-add missing critical functionality).
|
|
72
72
|
</project_context>
|
|
@@ -503,7 +503,11 @@ if [ "$IS_PROTECTED" != "false" ]; then
|
|
|
503
503
|
echo "Re-home onto a phase/agent branch (#2924, #3819); override: git.allow_default_branch_commits:true in .planning/config.json." >&2
|
|
504
504
|
exit 1
|
|
505
505
|
fi
|
|
506
|
-
if
|
|
506
|
+
# #4799: set SEQUENTIAL=true ONLY if your prompt has a `<sequential_execution>` block (the
|
|
507
|
+
# orchestrator dispatched you onto its own working tree, which may be a linked phase worktree on
|
|
508
|
+
# the configured branch). Otherwise leave it false: the allow-list below applies (fails closed).
|
|
509
|
+
SEQUENTIAL=false
|
|
510
|
+
if [ -f .git ] && [ "$SEQUENTIAL" != "true" ]; then # agent-isolated worktree
|
|
507
511
|
# Positive allow-list: HEAD must be on a per-agent branch (`agent-<id>` or
|
|
508
512
|
# legacy `worktree-agent-<id>`). This catches feature/* and any other
|
|
509
513
|
# arbitrary branch that the deny-list would silently allow (#2924, #1995).
|
|
@@ -620,7 +624,7 @@ back, those deletions appear on the main branch, destroying prior-wave work (#20
|
|
|
620
624
|
touching `refs/stash`:
|
|
621
625
|
|
|
622
626
|
- **Move WIP off the working tree:** commit it to a throwaway branch you own
|
|
623
|
-
(e.g. `git checkout -b scratch-/<task>-wip && git add -A && git commit -m "wip"`),
|
|
627
|
+
(e.g. `git checkout -b scratch-/<task>-wip && git add -A && git commit -m "chore(wip): scratch"`),
|
|
624
628
|
then `git checkout <your-worktree-branch>` to return to your task. The
|
|
625
629
|
throwaway branch lives in the per-worktree branch namespace and never
|
|
626
630
|
collides with sibling worktrees.
|
|
@@ -44,7 +44,7 @@ incrementally — only what each check requires, not the full codebase upfront.
|
|
|
44
44
|
|
|
45
45
|
**Project skills:** check `.claude/skills/` or `.agents/skills/` if either exists.
|
|
46
46
|
|
|
47
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
47
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-integration-checker`)
|
|
48
48
|
1. List available skills (subdirectories)
|
|
49
49
|
2. Read `SKILL.md` for each (lightweight index ~130 lines)
|
|
50
50
|
3. Load specific `rules/*.md` as needed during implementation
|
|
@@ -36,7 +36,7 @@ Every expected cross-phase connection must resolve to WIRED (verified end-to-end
|
|
|
36
36
|
|
|
37
37
|
**Project skills:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
|
|
38
38
|
|
|
39
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
39
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-integration-checker`)
|
|
40
40
|
1. List available skills (subdirectories)
|
|
41
41
|
2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
|
|
42
42
|
3. Load specific `rules/*.md` files as needed during implementation
|
|
@@ -46,7 +46,7 @@ Read ALL files from `<required_reading>`. Extract: implementation exports/API/co
|
|
|
46
46
|
**Context budget:** Load project skills first (lightweight). Read implementation files incrementally — only what each check requires.
|
|
47
47
|
|
|
48
48
|
**Project skills:** Check `.claude/skills/` or `.agents/skills/`.
|
|
49
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
49
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-nyquist-auditor`)
|
|
50
50
|
1. List available skills 2. Read each `SKILL.md` (~130 lines) 3. Load specific `rules/*.md` as needed 4. Do NOT load full `AGENTS.md` (100KB+) 5. Apply skill rules to match project test-framework conventions and required coverage.
|
|
51
51
|
</step>
|
|
52
52
|
|
|
@@ -52,7 +52,7 @@ Read ALL files from `<required_reading>`. Extract:
|
|
|
52
52
|
|
|
53
53
|
**Project skills:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
|
|
54
54
|
|
|
55
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
55
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-nyquist-auditor`)
|
|
56
56
|
1. List available skills (subdirectories)
|
|
57
57
|
2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
|
|
58
58
|
3. Load specific `rules/*.md` files as needed during implementation
|
|
@@ -54,7 +54,7 @@ Before researching, discover project context:
|
|
|
54
54
|
- Load `rules/*.md` as needed during **research**.
|
|
55
55
|
- Research output should account for project skill patterns and conventions.
|
|
56
56
|
|
|
57
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
57
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-phase-researcher`)
|
|
58
58
|
|
|
59
59
|
**CLAUDE.md enforcement:** If `./CLAUDE.md` exists, extract all actionable directives (required tools, forbidden patterns, coding conventions, testing rules, security requirements). Include a `## Project Constraints (from CLAUDE.md)` section in RESEARCH.md listing these directives so the planner can verify compliance. Treat CLAUDE.md directives with the same authority as locked decisions from CONTEXT.md — research should not recommend approaches that contradict them.
|
|
60
60
|
</project_context>
|
|
@@ -59,7 +59,7 @@ Before verifying, discover project context:
|
|
|
59
59
|
|
|
60
60
|
**Project skills:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
|
|
61
61
|
|
|
62
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
62
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-plan-checker`)
|
|
63
63
|
1. List available skills (subdirectories)
|
|
64
64
|
2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
|
|
65
65
|
3. Load specific `rules/*.md` files as needed during verification
|
|
@@ -695,6 +695,7 @@ issue:
|
|
|
695
695
|
1. For each `<automated>` block piping a package-manager list command into grep with a `^` anchor: BLOCKER.
|
|
696
696
|
2. For each `<automated>` block containing `2>/dev/null || echo` where the result feeds a `[ "$VAR" = ... ]` comparison: BLOCKER.
|
|
697
697
|
3. For each `<automated>` block asserting a specific numeric count not cited as measured in this plan: WARNING.
|
|
698
|
+
4. For each count/match gate (`grep -c`, `grep -q`, `rg`), run it — read-only commands only — against the current tree (#4927). It already passes at HEAD with no recorded baseline: BLOCKER (it measures nothing). A literal differing in case from the heading/key the task writes: BLOCKER. Never run a gate that builds, installs, or writes. See `planner-verify-command-grounding.md`.
|
|
698
699
|
|
|
699
700
|
## Dimension: Verify Command Path Resolvability (#2401)
|
|
700
701
|
|
package/agents/gsd-planner.md
CHANGED
|
@@ -47,7 +47,7 @@ Before planning, discover project context:
|
|
|
47
47
|
- Load `rules/*.md` as needed during **planning**.
|
|
48
48
|
- Ensure plans account for project skill patterns and conventions.
|
|
49
49
|
|
|
50
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
50
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-planner`)
|
|
51
51
|
</project_context>
|
|
52
52
|
|
|
53
53
|
<context_fidelity>
|
|
@@ -192,7 +192,7 @@ Every task has four required fields:
|
|
|
192
192
|
|
|
193
193
|
**Inherit the command that already worked (#2401):** reuse `prior_verify_commands` verbatim, prefer `npm --prefix <dir> run <script>`, ground every path you author. @~/.claude/gsd-core/references/planner-verify-command-grounding.md
|
|
194
194
|
|
|
195
|
-
**Grep gate hygiene:** `grep -c` counts comments, so header prose can be self-invalidating. Use `grep -v '^#' | grep -c token`. Bare `== 0` gates on unfiltered files are forbidden.
|
|
195
|
+
**Grep gate hygiene:** `grep -c` counts comments, so header prose can be self-invalidating. Use `grep -v '^#' | grep -c token`. Bare `== 0` gates on unfiltered files are forbidden. Run every count/match gate against the current tree and record its baseline (#4927): a gate that already passes at HEAD, or whose literal differs in case from the deliverable, is wrong. @~/.claude/gsd-core/references/planner-verify-command-grounding.md
|
|
196
196
|
|
|
197
197
|
<comment_text_discipline>
|
|
198
198
|
**Comment-text discipline (HARD GATE, #429):** A literal an acceptance criterion negative-greps for must NOT appear verbatim in any `<action>` body. Rules + `<!-- planner-discipline-allow: LIT -->` allowlist + examples: @~/.claude/gsd-core/references/planner-antipatterns.md ("Comment-Text Discipline").
|
|
@@ -208,7 +208,7 @@ Every task has four required fields:
|
|
|
208
208
|
|
|
209
209
|
**<precondition>** (optional, one prose line): a runnable/checkable fact the task assumes that plan ordering does not guarantee — external setup (`user_setup`), a prior-phase artifact, or an env var. The executor asserts it before running the task and halts on unmet. Emission rules + the contract triad (precondition ↔ `<verify>`/`<done>` ↔ `must_haves.truths`): @~/.claude/gsd-core/references/planner-preconditions.md.
|
|
210
210
|
|
|
211
|
-
**<reversibility>** (optional): `rating="reversible|costly|one-way"` + one-line rationale for a decision this task implements. `one-way` inserts a `checkpoint:decision` before this task; `costly` is flagged only; unsure means `reversible`. Rules: @~/.claude/gsd-core/references/planner-reversibility.md
|
|
211
|
+
**<reversibility>** (optional): `rating="reversible|costly|one-way"` + one-line rationale for a decision this task implements. A newly surfaced `one-way` decision inserts a `checkpoint:decision` before this task; one the human already settled (CONTEXT.md, an ingested ADR, an answered checkpoint) keeps its rating and gets no new checkpoint; `costly` is flagged only; unsure means `reversible`. Rules: @~/.claude/gsd-core/references/planner-reversibility.md
|
|
212
212
|
|
|
213
213
|
See @~/.claude/gsd-core/references/planner-guidance.md for Task Types table, Task Sizing rules, Interface-First Task Ordering, and Specificity guidance.
|
|
214
214
|
|
|
@@ -817,7 +817,8 @@ These PLAN.md files are the canonical output of this agent. The orchestrator rea
|
|
|
817
817
|
- `Write` the file with only the first section, ending with the sentinel line `<!-- gsd:write-continue -->`.
|
|
818
818
|
- `Read` the file, then `Edit` it, replacing `<!-- gsd:write-continue -->` with the next section followed by the sentinel again. Repeat, one section per `Edit`.
|
|
819
819
|
- On the final section, replace the sentinel with the closing content and no trailing sentinel.
|
|
820
|
-
5. **
|
|
820
|
+
5. **Verify the write landed (#4927).** A `Write` that returns success can still have stored a truncated payload. After writing each PLAN.md, run `verify.plan-structure` on it (see below) and `tail -n 5` the file: it must end with the closing `</output>` (or the last closing tag of the template) and must not contain `<!-- gsd:write-continue -->`. If it ends mid-tag, rewrite it with the incremental method in rule 4.
|
|
821
|
+
6. **If writing still fails, surface the actual error in your return message.** **Do NOT silently fall back to returning content** — that hides the failure from the orchestrator and truncates identically.
|
|
821
822
|
|
|
822
823
|
**CRITICAL — File naming convention (enforced):**
|
|
823
824
|
|
|
@@ -33,7 +33,7 @@ Your files feed the roadmap:
|
|
|
33
33
|
|
|
34
34
|
@~/.claude/gsd-core/references/untrusted-input-boundary.md
|
|
35
35
|
|
|
36
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
36
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-project-researcher`)
|
|
37
37
|
|
|
38
38
|
<documentation_lookup>
|
|
39
39
|
@~/.claude/gsd-core/references/research-documentation-lookup.md
|
|
@@ -34,7 +34,7 @@ Your files feed the roadmap:
|
|
|
34
34
|
|
|
35
35
|
@~/.claude/gsd-core/references/untrusted-input-boundary.md
|
|
36
36
|
|
|
37
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
37
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-project-researcher`)
|
|
38
38
|
|
|
39
39
|
<documentation_lookup>
|
|
40
40
|
@~/.claude/gsd-core/references/research-documentation-lookup.md
|
|
@@ -29,7 +29,7 @@ Job: create a unified research summary that informs roadmap creation — extract
|
|
|
29
29
|
|
|
30
30
|
@~/.claude/gsd-core/references/untrusted-input-boundary.md
|
|
31
31
|
|
|
32
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
32
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-research-synthesizer`)
|
|
33
33
|
|
|
34
34
|
<downstream_consumer>
|
|
35
35
|
SUMMARY.md is consumed by gsd-roadmapper:
|
|
@@ -96,11 +96,11 @@ Identify gaps that couldn't be resolved and need attention during planning.
|
|
|
96
96
|
**This is the canonical output. The orchestrator depends on `.planning/research/SUMMARY.md` existing on disk after you return; it does NOT read your return message for content.**
|
|
97
97
|
|
|
98
98
|
**Hard rules (must follow):**
|
|
99
|
-
1. **Use the `Write` tool.** It's in your `tools:` allowlist
|
|
100
|
-
2. **Do NOT return the SUMMARY.md content in your response.** Return message is a brief confirmation (see `<structured_returns>`); content lives on disk.
|
|
99
|
+
1. **Use the `Write` tool, and try it FIRST.** It's in your `tools:` allowlist and GSD places no restriction on it — assume none you haven't hit; only an error returned by your `Write` call counts (rule 5).
|
|
100
|
+
2. **Do NOT return the SUMMARY.md content in your response.** Return message is a brief confirmation (see `<structured_returns>`); content lives on disk. The one exception is rule 5's runtime refusal.
|
|
101
101
|
3. **Do NOT ask permission to write.** Writing `.planning/research/SUMMARY.md` is this agent's explicit purpose. Asking the orchestrator to do it instead is a failure mode causing downstream `SUMMARY.md not found` failures.
|
|
102
102
|
4. **Never use `Bash(cat << 'EOF')` or heredoc** for file creation. Use the `Write` tool.
|
|
103
|
-
5. **If Write errors,** surface the actual error in your return message. Do not silently fall back to returning content — that hides the failure.
|
|
103
|
+
5. **If Write errors,** surface the actual error in your return message. Do not silently fall back to returning content — that hides the failure. **Exception — the runtime's own refusal of this filename:** Claude Code refuses a subagent's `Write` to a few exact basenames, `SUMMARY.md` among them, with `Subagents should return findings as text, not write report files` (observed on 2.1.301; name-based, not tied to your tools or effort). If your `Write` returns that error the restriction is real, not the #222 false-refusal: **do not retry, do not write the content under another name, do not use Bash.** Finish Step 7, then in Step 8 append the complete SUMMARY.md document under `### SUMMARY.md (returned inline — runtime refused the write)` so the orchestrator persists it.
|
|
104
104
|
6. **Large-file / truncation fallback.** Default: write the whole file in one `Write` call. Some runtimes (e.g. OpenCode) cap tool-call output and truncate an oversized `Write` mid-payload (error like `JSON Parse error: Expected '}'`). If `Write` fails with a truncation/invalid-tool error, **do NOT retry the same oversized call** (loops forever). Instead build incrementally so no single call carries the whole payload:
|
|
105
105
|
- `Write` the file with only the first section, ending with sentinel `<!-- gsd:write-continue -->`.
|
|
106
106
|
- `Read` the file, then `Edit` it, replacing the sentinel with the next section + sentinel again. Repeat, one section per `Edit`.
|
|
@@ -120,7 +120,7 @@ gsd_run query commit "docs: complete project research" --files .planning/researc
|
|
|
120
120
|
|
|
121
121
|
## Step 8: Return Summary
|
|
122
122
|
|
|
123
|
-
Return brief confirmation with key points for the orchestrator.
|
|
123
|
+
Return brief confirmation with key points for the orchestrator. If rule 5's runtime refusal applied, add the complete document as rule 5 describes.
|
|
124
124
|
|
|
125
125
|
</execution_flow>
|
|
126
126
|
|
|
@@ -34,7 +34,7 @@ If the prompt contains a `<required_reading>` block, you MUST use the `Read` too
|
|
|
34
34
|
|
|
35
35
|
@~/.claude/gsd-core/references/untrusted-input-boundary.md
|
|
36
36
|
|
|
37
|
-
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md
|
|
37
|
+
**agent_skills:** self-load per @~/.claude/gsd-core/references/agent-skills-bootstrap.md (agent type: `gsd-research-synthesizer`)
|
|
38
38
|
|
|
39
39
|
<downstream_consumer>
|
|
40
40
|
Your SUMMARY.md is consumed by the gsd-roadmapper agent which uses it to:
|
|
@@ -136,11 +136,11 @@ Identify gaps that couldn't be resolved and need attention during planning.
|
|
|
136
136
|
|
|
137
137
|
**Hard rules (must follow):**
|
|
138
138
|
|
|
139
|
-
1. **Use the `Write` tool** to write the file. The `Write` tool is in your `tools:` allowlist
|
|
140
|
-
2. **Do NOT return the SUMMARY.md content in your response.** Your return message is a brief confirmation (see `<structured_returns>` below); the content lives on disk.
|
|
139
|
+
1. **Use the `Write` tool** to write the file, and try it FIRST. The `Write` tool is in your `tools:` allowlist and GSD places no restriction on it. Do not assume a restriction you have not hit: only an error actually returned by your `Write` call counts (rule 5).
|
|
140
|
+
2. **Do NOT return the SUMMARY.md content in your response.** Your return message is a brief confirmation (see `<structured_returns>` below); the content lives on disk. The one exception is rule 5's runtime refusal.
|
|
141
141
|
3. **Do NOT ask permission to write.** Writing `.planning/research/SUMMARY.md` is the explicit purpose of this agent. Asking the orchestrator to do it instead is a failure mode that can cause downstream `SUMMARY.md not found` failures.
|
|
142
142
|
4. **Do NOT use `Bash(cat << 'EOF')` or heredoc** for file creation. Use the `Write` tool. In short: **never use `Bash(cat << 'EOF')` or heredoc**.
|
|
143
|
-
5. **If the Write tool errors,** surface the actual error in your return message. Do not silently fall back to returning content; that hides the failure from the orchestrator.
|
|
143
|
+
5. **If the Write tool errors,** surface the actual error in your return message. Do not silently fall back to returning content; that hides the failure from the orchestrator. **The one exception is the runtime's own refusal of this filename.** Claude Code refuses a subagent's `Write` to a few exact basenames, `SUMMARY.md` among them, with `Subagents should return findings as text, not write report files` (observed on Claude Code 2.1.301; it depends on the file name, not on your tools or effort). If your `Write` call returns that error, the restriction is real, not the #222 false-refusal: **do not retry, do not write the content under another name, and do not use Bash**. Finish Step 7 (commit the research files that exist), then in Step 8 append the complete SUMMARY.md document after the confirmation, under the heading `### SUMMARY.md (returned inline — runtime refused the write)`, so the orchestrator persists it.
|
|
144
144
|
6. **Large-file / truncation fallback.** Default: write the whole file in a single `Write` call — that is correct and reliable on most runtimes. But some runtimes (e.g. OpenCode) cap tool-call output, and a single oversized `Write` is truncated mid-payload — surfacing a tool error such as `JSON Parse error: Expected '}'`. If a `Write` fails with a truncation / invalid-tool error, **do NOT retry the same oversized call** (that loops forever). Instead build the file incrementally so no single tool call carries the whole payload:
|
|
145
145
|
- `Write` the file with only the first section, ending with the sentinel line `<!-- gsd:write-continue -->`.
|
|
146
146
|
- `Read` the file, then `Edit` it, replacing `<!-- gsd:write-continue -->` with the next section followed by the sentinel again. Repeat, one section per `Edit`.
|
|
@@ -161,7 +161,7 @@ gsd_run query commit "docs: complete project research" --files .planning/researc
|
|
|
161
161
|
|
|
162
162
|
## Step 8: Return Summary
|
|
163
163
|
|
|
164
|
-
Return brief confirmation with key points for the orchestrator.
|
|
164
|
+
Return brief confirmation with key points for the orchestrator. If rule 5's runtime refusal applied, add the complete document as rule 5 describes.
|
|
165
165
|
|
|
166
166
|
</execution_flow>
|
|
167
167
|
|