get-shit-done-cc 1.36.0 → 1.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -3
- package/agents/gsd-code-fixer.md +9 -8
- package/agents/gsd-codebase-mapper.md +1 -1
- package/agents/gsd-debug-session-manager.md +1 -1
- package/agents/gsd-debugger.md +8 -85
- package/agents/gsd-executor.md +23 -30
- package/agents/gsd-intel-updater.md +26 -17
- package/agents/gsd-pattern-mapper.md +16 -0
- package/agents/gsd-phase-researcher.md +7 -13
- package/agents/gsd-plan-checker.md +9 -9
- package/agents/gsd-planner.md +31 -43
- package/agents/gsd-project-researcher.md +1 -1
- package/agents/gsd-research-synthesizer.md +2 -2
- package/agents/gsd-ui-checker.md +9 -0
- package/agents/gsd-ui-researcher.md +1 -1
- package/agents/gsd-verifier.md +13 -19
- package/bin/install.js +149 -38
- package/commands/gsd/add-backlog.md +13 -10
- package/commands/gsd/autonomous.md +1 -1
- package/commands/gsd/code-review-fix.md +1 -1
- package/commands/gsd/code-review.md +1 -1
- package/commands/gsd/debug.md +3 -3
- package/commands/gsd/discuss-phase.md +3 -3
- package/commands/gsd/execute-phase.md +1 -1
- package/commands/gsd/from-gsd2.md +2 -0
- package/commands/gsd/graphify.md +2 -0
- package/commands/gsd/inbox.md +38 -0
- package/commands/gsd/intel.md +9 -9
- package/commands/gsd/manager.md +1 -1
- package/commands/gsd/progress.md +2 -1
- package/commands/gsd/quick.md +3 -3
- package/commands/gsd/research-phase.md +3 -3
- package/commands/gsd/review-backlog.md +2 -2
- package/commands/gsd/set-profile.md +1 -1
- package/commands/gsd/sketch-wrap-up.md +31 -0
- package/commands/gsd/sketch.md +45 -0
- package/commands/gsd/spec-phase.md +62 -0
- package/commands/gsd/spike-wrap-up.md +31 -0
- package/commands/gsd/spike.md +41 -0
- package/commands/gsd/thread.md +10 -10
- package/commands/gsd/workstreams.md +7 -7
- package/get-shit-done/bin/gsd-tools.cjs +100 -3
- package/get-shit-done/bin/lib/commands.cjs +7 -5
- package/get-shit-done/bin/lib/config.cjs +12 -0
- package/get-shit-done/bin/lib/core.cjs +96 -0
- package/get-shit-done/bin/lib/graphify.cjs +5 -5
- package/get-shit-done/bin/lib/init.cjs +222 -58
- package/get-shit-done/bin/lib/intel.cjs +10 -31
- package/get-shit-done/bin/lib/phase.cjs +6 -4
- package/get-shit-done/bin/lib/profile-output.cjs +2 -2
- package/get-shit-done/bin/lib/uat.cjs +2 -1
- package/get-shit-done/references/artifact-types.md +18 -0
- package/get-shit-done/references/autonomous-smart-discuss.md +277 -0
- package/get-shit-done/references/continuation-format.md +11 -7
- package/get-shit-done/references/debugger-philosophy.md +76 -0
- package/get-shit-done/references/decimal-phase-calculation.md +5 -5
- package/get-shit-done/references/git-integration.md +4 -4
- package/get-shit-done/references/git-planning-commit.md +6 -4
- package/get-shit-done/references/mandatory-initial-read.md +2 -0
- package/get-shit-done/references/phase-argument-parsing.md +3 -3
- package/get-shit-done/references/planner-revision.md +1 -1
- package/get-shit-done/references/planning-config.md +6 -6
- package/get-shit-done/references/project-skills-discovery.md +19 -0
- package/get-shit-done/references/sketch-interactivity.md +41 -0
- package/get-shit-done/references/sketch-theme-system.md +94 -0
- package/get-shit-done/references/sketch-tooling.md +45 -0
- package/get-shit-done/references/sketch-variant-patterns.md +81 -0
- package/get-shit-done/references/workstream-flag.md +11 -11
- package/get-shit-done/templates/spec.md +307 -0
- package/get-shit-done/workflows/add-phase.md +5 -5
- package/get-shit-done/workflows/add-tests.md +3 -3
- package/get-shit-done/workflows/add-todo.md +3 -3
- package/get-shit-done/workflows/ai-integration-phase.md +7 -7
- package/get-shit-done/workflows/audit-fix.md +1 -1
- package/get-shit-done/workflows/audit-milestone.md +9 -9
- package/get-shit-done/workflows/audit-uat.md +1 -1
- package/get-shit-done/workflows/autonomous.md +18 -288
- package/get-shit-done/workflows/check-todos.md +2 -2
- package/get-shit-done/workflows/cleanup.md +1 -1
- package/get-shit-done/workflows/code-review-fix.md +3 -3
- package/get-shit-done/workflows/code-review.md +5 -5
- package/get-shit-done/workflows/complete-milestone.md +14 -12
- package/get-shit-done/workflows/diagnose-issues.md +3 -3
- package/get-shit-done/workflows/discuss-phase-assumptions.md +11 -11
- package/get-shit-done/workflows/discuss-phase.md +105 -19
- package/get-shit-done/workflows/do.md +6 -2
- package/get-shit-done/workflows/docs-update.md +3 -3
- package/get-shit-done/workflows/eval-review.md +2 -2
- package/get-shit-done/workflows/execute-phase.md +41 -39
- package/get-shit-done/workflows/execute-plan.md +21 -25
- package/get-shit-done/workflows/explore.md +3 -1
- package/get-shit-done/workflows/extract_learnings.md +2 -2
- package/get-shit-done/workflows/forensics.md +3 -3
- package/get-shit-done/workflows/health.md +2 -2
- package/get-shit-done/workflows/help.md +58 -0
- package/get-shit-done/workflows/import.md +1 -1
- package/get-shit-done/workflows/insert-phase.md +4 -4
- package/get-shit-done/workflows/list-workspaces.md +1 -1
- package/get-shit-done/workflows/manager.md +3 -3
- package/get-shit-done/workflows/map-codebase.md +19 -5
- package/get-shit-done/workflows/milestone-summary.md +6 -6
- package/get-shit-done/workflows/new-milestone.md +9 -9
- package/get-shit-done/workflows/new-project.md +124 -22
- package/get-shit-done/workflows/new-workspace.md +1 -1
- package/get-shit-done/workflows/next.md +26 -3
- package/get-shit-done/workflows/pause-work.md +11 -7
- package/get-shit-done/workflows/plan-milestone-gaps.md +3 -3
- package/get-shit-done/workflows/plan-phase.md +41 -35
- package/get-shit-done/workflows/plant-seed.md +1 -1
- package/get-shit-done/workflows/profile-user.md +11 -11
- package/get-shit-done/workflows/progress.md +133 -21
- package/get-shit-done/workflows/quick.md +49 -23
- package/get-shit-done/workflows/remove-phase.md +8 -8
- package/get-shit-done/workflows/remove-workspace.md +1 -1
- package/get-shit-done/workflows/research-phase.md +3 -3
- package/get-shit-done/workflows/resume-project.md +3 -3
- package/get-shit-done/workflows/review.md +14 -13
- package/get-shit-done/workflows/scan.md +1 -1
- package/get-shit-done/workflows/secure-phase.md +5 -5
- package/get-shit-done/workflows/settings.md +7 -5
- package/get-shit-done/workflows/ship.md +8 -8
- package/get-shit-done/workflows/sketch-wrap-up.md +283 -0
- package/get-shit-done/workflows/sketch.md +263 -0
- package/get-shit-done/workflows/spec-phase.md +262 -0
- package/get-shit-done/workflows/spike-wrap-up.md +273 -0
- package/get-shit-done/workflows/spike.md +270 -0
- package/get-shit-done/workflows/stats.md +1 -1
- package/get-shit-done/workflows/transition.md +12 -12
- package/get-shit-done/workflows/ui-phase.md +23 -10
- package/get-shit-done/workflows/ui-review.md +4 -4
- package/get-shit-done/workflows/undo.md +1 -1
- package/get-shit-done/workflows/update.md +101 -1
- package/get-shit-done/workflows/validate-phase.md +5 -5
- package/get-shit-done/workflows/verify-phase.md +10 -10
- package/get-shit-done/workflows/verify-work.md +10 -8
- package/hooks/dist/gsd-check-update-worker.js +108 -0
- package/hooks/dist/gsd-check-update.js +13 -91
- package/hooks/dist/gsd-phase-boundary.sh +1 -0
- package/hooks/dist/gsd-read-guard.js +2 -2
- package/hooks/dist/gsd-session-state.sh +1 -0
- package/hooks/dist/gsd-statusline.js +9 -3
- package/hooks/dist/gsd-validate-commit.sh +1 -0
- package/hooks/gsd-check-update-worker.js +108 -0
- package/hooks/gsd-check-update.js +13 -91
- package/hooks/gsd-phase-boundary.sh +1 -0
- package/hooks/gsd-read-guard.js +2 -2
- package/hooks/gsd-read-injection-scanner.js +153 -0
- package/hooks/gsd-session-state.sh +1 -0
- package/hooks/gsd-statusline.js +9 -3
- package/hooks/gsd-validate-commit.sh +1 -0
- package/package.json +1 -1
- package/scripts/build-hooks.js +1 -0
- package/scripts/prompt-injection-scan.sh +2 -0
package/README.md
CHANGED
|
@@ -117,7 +117,9 @@ Verify with:
|
|
|
117
117
|
- Cline: GSD installs via `.clinerules` — verify by checking `.clinerules` exists
|
|
118
118
|
|
|
119
119
|
> [!NOTE]
|
|
120
|
-
> Claude Code 2.1.88+, Qwen Code, and Codex install as skills (
|
|
120
|
+
> Claude Code 2.1.88+, Qwen Code, and Codex install as skills (`.claude/skills/`, `./.codex/skills/`, or the matching global `~/.claude/skills/` / `~/.codex/skills/` roots). Older Claude Code versions use `commands/gsd/`. `~/.claude/get-shit-done/skills/` is import-only for legacy migration. The installer handles all formats automatically.
|
|
121
|
+
|
|
122
|
+
The canonical discovery contract is documented in [docs/skills/discovery-contract.md](docs/skills/discovery-contract.md).
|
|
121
123
|
|
|
122
124
|
> [!TIP]
|
|
123
125
|
> For source-based installs or environments where npm is unavailable, see **[docs/manual-update.md](docs/manual-update.md)**.
|
|
@@ -593,6 +595,15 @@ You're never locked in. The system adapts.
|
|
|
593
595
|
| `/gsd-list-workspaces` | Show all GSD workspaces and their status |
|
|
594
596
|
| `/gsd-remove-workspace` | Remove workspace and clean up worktrees |
|
|
595
597
|
|
|
598
|
+
### Spiking & Sketching
|
|
599
|
+
|
|
600
|
+
| Command | What it does |
|
|
601
|
+
|---------|--------------|
|
|
602
|
+
| `/gsd-spike [idea] [--quick]` | Throwaway experiments to validate feasibility before planning — no project init required |
|
|
603
|
+
| `/gsd-sketch [idea] [--quick]` | Throwaway HTML mockups with multi-variant exploration — no project init required |
|
|
604
|
+
| `/gsd-spike-wrap-up` | Package spike findings into a project-local skill for future build conversations |
|
|
605
|
+
| `/gsd-sketch-wrap-up` | Package sketch design findings into a project-local skill for future builds |
|
|
606
|
+
|
|
596
607
|
### UI Design
|
|
597
608
|
|
|
598
609
|
| Command | What it does |
|
|
@@ -818,8 +829,9 @@ This prevents Claude from reading these files entirely, regardless of what comma
|
|
|
818
829
|
|
|
819
830
|
**Commands not found after install?**
|
|
820
831
|
- Restart your runtime to reload commands/skills
|
|
821
|
-
- Verify files exist in `~/.claude/skills/gsd-*/SKILL.md`
|
|
822
|
-
- For
|
|
832
|
+
- Verify files exist in `~/.claude/skills/gsd-*/SKILL.md` or `~/.codex/skills/gsd-*/SKILL.md` for managed global installs
|
|
833
|
+
- For local installs, verify `.claude/skills/gsd-*/SKILL.md` or `./.codex/skills/gsd-*/SKILL.md`
|
|
834
|
+
- Legacy Claude Code installs still use `~/.claude/commands/gsd/`
|
|
823
835
|
|
|
824
836
|
**Commands not working as expected?**
|
|
825
837
|
- Run `/gsd-help` to verify installation
|
package/agents/gsd-code-fixer.md
CHANGED
|
@@ -194,7 +194,7 @@ The **Fix:** section may contain:
|
|
|
194
194
|
If a finding references multiple files (in Fix section or Issue section):
|
|
195
195
|
- Collect ALL file paths into `files` array
|
|
196
196
|
- Apply fix to each file
|
|
197
|
-
- Commit all modified files atomically (single commit,
|
|
197
|
+
- Commit all modified files atomically (single commit, list every file path after the message — `commit` uses positional paths, not `--files`)
|
|
198
198
|
|
|
199
199
|
**Parsing Rules:**
|
|
200
200
|
|
|
@@ -308,20 +308,21 @@ For each finding in sorted order:
|
|
|
308
308
|
|
|
309
309
|
**If verification passed:**
|
|
310
310
|
|
|
311
|
-
Use gsd-
|
|
311
|
+
Use `gsd-sdk query commit` with conventional format (message first, then every staged file path):
|
|
312
312
|
```bash
|
|
313
|
-
|
|
313
|
+
gsd-sdk query commit \
|
|
314
314
|
"fix({padded_phase}): {finding_id} {short_description}" \
|
|
315
|
-
|
|
315
|
+
{all_modified_files}
|
|
316
316
|
```
|
|
317
317
|
|
|
318
318
|
Examples:
|
|
319
319
|
- `fix(02): CR-01 fix SQL injection in auth.py`
|
|
320
320
|
- `fix(03): WR-05 add null check before array access`
|
|
321
321
|
|
|
322
|
-
**Multiple files:** List ALL modified files
|
|
322
|
+
**Multiple files:** List ALL modified files after the message (space-separated):
|
|
323
323
|
```bash
|
|
324
|
-
|
|
324
|
+
gsd-sdk query commit "fix(02): CR-01 ..." \
|
|
325
|
+
src/api/auth.ts src/types/user.ts tests/auth.test.ts
|
|
325
326
|
```
|
|
326
327
|
|
|
327
328
|
**Extract commit hash:**
|
|
@@ -442,7 +443,7 @@ _Iteration: {N}_
|
|
|
442
443
|
|
|
443
444
|
**DO record which files will be touched** before every fix attempt — this is your rollback list. Rollback is `git checkout -- {file}`, not content capture.
|
|
444
445
|
|
|
445
|
-
**DO commit each fix atomically** — one commit per finding, listing ALL modified
|
|
446
|
+
**DO commit each fix atomically** — one commit per finding, listing ALL modified file paths after the commit message.
|
|
446
447
|
|
|
447
448
|
**DO use Edit tool (preferred)** over Write tool for targeted changes. Edit provides better diff visibility.
|
|
448
449
|
|
|
@@ -504,7 +505,7 @@ Fixes are committed **per-finding**. This has operational implications:
|
|
|
504
505
|
|
|
505
506
|
- [ ] All in-scope findings attempted (either fixed or skipped with reason)
|
|
506
507
|
- [ ] Each fix committed atomically with `fix({padded_phase}): {id} {description}` format
|
|
507
|
-
- [ ] All modified files listed
|
|
508
|
+
- [ ] All modified files listed after each commit message (multi-file fix support)
|
|
508
509
|
- [ ] REVIEW-FIX.md created with accurate counts, status, and iteration number
|
|
509
510
|
- [ ] No source files left in broken state (failed fixes rolled back via git checkout)
|
|
510
511
|
- [ ] No partial or uncommitted changes remain after execution
|
|
@@ -160,7 +160,7 @@ Write document(s) to `.planning/codebase/` using the templates below.
|
|
|
160
160
|
**Document naming:** UPPERCASE.md (e.g., STACK.md, ARCHITECTURE.md)
|
|
161
161
|
|
|
162
162
|
**Template filling:**
|
|
163
|
-
1. Replace `[YYYY-MM-DD]` with
|
|
163
|
+
1. Replace `[YYYY-MM-DD]` with the date provided in your prompt (the `Today's date:` line). NEVER guess or infer the date — always use the exact date from the prompt.
|
|
164
164
|
2. Replace `[Placeholder text]` with findings from exploration
|
|
165
165
|
3. If something is not found, use "Not detected" or "Not applicable"
|
|
166
166
|
4. Always include file paths with backticks
|
|
@@ -93,7 +93,7 @@ Task(
|
|
|
93
93
|
|
|
94
94
|
Resolve the debugger model before spawning:
|
|
95
95
|
```bash
|
|
96
|
-
debugger_model=$(
|
|
96
|
+
debugger_model=$(gsd-sdk query resolve-model gsd-debugger 2>/dev/null | jq -r '.model' 2>/dev/null || true)
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
## Step 3: Handle Agent Return
|
package/agents/gsd-debugger.md
CHANGED
|
@@ -21,8 +21,7 @@ You are spawned by:
|
|
|
21
21
|
|
|
22
22
|
Your job: Find the root cause through hypothesis testing, maintain debug file state, optionally fix and verify (depending on mode).
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
|
24
|
+
@~/.claude/get-shit-done/references/mandatory-initial-read.md
|
|
26
25
|
|
|
27
26
|
**Core responsibilities:**
|
|
28
27
|
- Investigate autonomously (user reports symptoms, you find cause)
|
|
@@ -37,89 +36,13 @@ If the prompt contains a `<required_reading>` block, you MUST use the `Read` too
|
|
|
37
36
|
@~/.claude/get-shit-done/references/common-bug-patterns.md
|
|
38
37
|
</required_reading>
|
|
39
38
|
|
|
40
|
-
**Project skills:**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
3. Load specific `rules/*.md` files as needed during implementation
|
|
44
|
-
4. Do NOT load full `AGENTS.md` files (100KB+ context cost)
|
|
45
|
-
5. Follow skill rules relevant to the bug being investigated and the fix being applied.
|
|
46
|
-
|
|
47
|
-
This ensures project-specific patterns, conventions, and best practices are applied during execution.
|
|
39
|
+
**Project skills:** @~/.claude/get-shit-done/references/project-skills-discovery.md
|
|
40
|
+
- Load `rules/*.md` as needed during **investigation and fix**.
|
|
41
|
+
- Follow skill rules relevant to the bug being investigated and the fix being applied.
|
|
48
42
|
|
|
49
43
|
<philosophy>
|
|
50
44
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
The user knows:
|
|
54
|
-
- What they expected to happen
|
|
55
|
-
- What actually happened
|
|
56
|
-
- Error messages they saw
|
|
57
|
-
- When it started / if it ever worked
|
|
58
|
-
|
|
59
|
-
The user does NOT know (don't ask):
|
|
60
|
-
- What's causing the bug
|
|
61
|
-
- Which file has the problem
|
|
62
|
-
- What the fix should be
|
|
63
|
-
|
|
64
|
-
Ask about experience. Investigate the cause yourself.
|
|
65
|
-
|
|
66
|
-
## Meta-Debugging: Your Own Code
|
|
67
|
-
|
|
68
|
-
When debugging code you wrote, you're fighting your own mental model.
|
|
69
|
-
|
|
70
|
-
**Why this is harder:**
|
|
71
|
-
- You made the design decisions - they feel obviously correct
|
|
72
|
-
- You remember intent, not what you actually implemented
|
|
73
|
-
- Familiarity breeds blindness to bugs
|
|
74
|
-
|
|
75
|
-
**The discipline:**
|
|
76
|
-
1. **Treat your code as foreign** - Read it as if someone else wrote it
|
|
77
|
-
2. **Question your design decisions** - Your implementation decisions are hypotheses, not facts
|
|
78
|
-
3. **Admit your mental model might be wrong** - The code's behavior is truth; your model is a guess
|
|
79
|
-
4. **Prioritize code you touched** - If you modified 100 lines and something breaks, those are prime suspects
|
|
80
|
-
|
|
81
|
-
**The hardest admission:** "I implemented this wrong." Not "requirements were unclear" - YOU made an error.
|
|
82
|
-
|
|
83
|
-
## Foundation Principles
|
|
84
|
-
|
|
85
|
-
When debugging, return to foundational truths:
|
|
86
|
-
|
|
87
|
-
- **What do you know for certain?** Observable facts, not assumptions
|
|
88
|
-
- **What are you assuming?** "This library should work this way" - have you verified?
|
|
89
|
-
- **Strip away everything you think you know.** Build understanding from observable facts.
|
|
90
|
-
|
|
91
|
-
## Cognitive Biases to Avoid
|
|
92
|
-
|
|
93
|
-
| Bias | Trap | Antidote |
|
|
94
|
-
|------|------|----------|
|
|
95
|
-
| **Confirmation** | Only look for evidence supporting your hypothesis | Actively seek disconfirming evidence. "What would prove me wrong?" |
|
|
96
|
-
| **Anchoring** | First explanation becomes your anchor | Generate 3+ independent hypotheses before investigating any |
|
|
97
|
-
| **Availability** | Recent bugs → assume similar cause | Treat each bug as novel until evidence suggests otherwise |
|
|
98
|
-
| **Sunk Cost** | Spent 2 hours on one path, keep going despite evidence | Every 30 min: "If I started fresh, is this still the path I'd take?" |
|
|
99
|
-
|
|
100
|
-
## Systematic Investigation Disciplines
|
|
101
|
-
|
|
102
|
-
**Change one variable:** Make one change, test, observe, document, repeat. Multiple changes = no idea what mattered.
|
|
103
|
-
|
|
104
|
-
**Complete reading:** Read entire functions, not just "relevant" lines. Read imports, config, tests. Skimming misses crucial details.
|
|
105
|
-
|
|
106
|
-
**Embrace not knowing:** "I don't know why this fails" = good (now you can investigate). "It must be X" = dangerous (you've stopped thinking).
|
|
107
|
-
|
|
108
|
-
## When to Restart
|
|
109
|
-
|
|
110
|
-
Consider starting over when:
|
|
111
|
-
1. **2+ hours with no progress** - You're likely tunnel-visioned
|
|
112
|
-
2. **3+ "fixes" that didn't work** - Your mental model is wrong
|
|
113
|
-
3. **You can't explain the current behavior** - Don't add changes on top of confusion
|
|
114
|
-
4. **You're debugging the debugger** - Something fundamental is wrong
|
|
115
|
-
5. **The fix works but you don't know why** - This isn't fixed, this is luck
|
|
116
|
-
|
|
117
|
-
**Restart protocol:**
|
|
118
|
-
1. Close all files and terminals
|
|
119
|
-
2. Write down what you know for certain
|
|
120
|
-
3. Write down what you've ruled out
|
|
121
|
-
4. List new hypotheses (different from before)
|
|
122
|
-
5. Begin again from Phase 1: Evidence Gathering
|
|
45
|
+
@~/.claude/get-shit-done/references/debugger-philosophy.md
|
|
123
46
|
|
|
124
47
|
</philosophy>
|
|
125
48
|
|
|
@@ -1227,7 +1150,7 @@ mv .planning/debug/{slug}.md .planning/debug/resolved/
|
|
|
1227
1150
|
**Check planning config using state load (commit_docs is available from the output):**
|
|
1228
1151
|
|
|
1229
1152
|
```bash
|
|
1230
|
-
INIT=$(
|
|
1153
|
+
INIT=$(gsd-sdk query state.load)
|
|
1231
1154
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
1232
1155
|
# commit_docs is in the JSON output
|
|
1233
1156
|
```
|
|
@@ -1245,7 +1168,7 @@ Root cause: {root_cause}"
|
|
|
1245
1168
|
|
|
1246
1169
|
Then commit planning docs via CLI (respects `commit_docs` config automatically):
|
|
1247
1170
|
```bash
|
|
1248
|
-
|
|
1171
|
+
gsd-sdk query commit "docs: resolve debug {slug}" .planning/debug/resolved/{slug}.md
|
|
1249
1172
|
```
|
|
1250
1173
|
|
|
1251
1174
|
**Append to knowledge base:**
|
|
@@ -1276,7 +1199,7 @@ Then append the entry:
|
|
|
1276
1199
|
|
|
1277
1200
|
Commit the knowledge base update alongside the resolved session:
|
|
1278
1201
|
```bash
|
|
1279
|
-
|
|
1202
|
+
gsd-sdk query commit "docs: update debug knowledge base with {slug}" .planning/debug/knowledge-base.md
|
|
1280
1203
|
```
|
|
1281
1204
|
|
|
1282
1205
|
Report completion and offer next steps.
|
package/agents/gsd-executor.md
CHANGED
|
@@ -18,8 +18,7 @@ Spawned by `/gsd-execute-phase` orchestrator.
|
|
|
18
18
|
|
|
19
19
|
Your job: Execute the plan completely, commit each task, create SUMMARY.md, update STATE.md.
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
|
21
|
+
@~/.claude/get-shit-done/references/mandatory-initial-read.md
|
|
23
22
|
</role>
|
|
24
23
|
|
|
25
24
|
<documentation_lookup>
|
|
@@ -54,14 +53,9 @@ Before executing, discover project context:
|
|
|
54
53
|
|
|
55
54
|
**Project instructions:** Read `./CLAUDE.md` if it exists in the working directory. Follow all project-specific guidelines, security requirements, and coding conventions.
|
|
56
55
|
|
|
57
|
-
**Project skills:**
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
3. Load specific `rules/*.md` files as needed during implementation
|
|
61
|
-
4. Do NOT load full `AGENTS.md` files (100KB+ context cost)
|
|
62
|
-
5. Follow skill rules relevant to your current task
|
|
63
|
-
|
|
64
|
-
This ensures project-specific patterns, conventions, and best practices are applied during execution.
|
|
56
|
+
**Project skills:** @~/.claude/get-shit-done/references/project-skills-discovery.md
|
|
57
|
+
- Load `rules/*.md` as needed during **implementation**.
|
|
58
|
+
- Follow skill rules relevant to the task you are about to commit.
|
|
65
59
|
|
|
66
60
|
**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).
|
|
67
61
|
</project_context>
|
|
@@ -72,7 +66,7 @@ This ensures project-specific patterns, conventions, and best practices are appl
|
|
|
72
66
|
Load execution context:
|
|
73
67
|
|
|
74
68
|
```bash
|
|
75
|
-
INIT=$(
|
|
69
|
+
INIT=$(gsd-sdk query init.execute-phase "${PHASE}")
|
|
76
70
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
77
71
|
```
|
|
78
72
|
|
|
@@ -248,8 +242,8 @@ Do NOT continue reading. Analysis without action is a stuck signal.
|
|
|
248
242
|
Check if auto mode is active at executor start (chain flag or user preference):
|
|
249
243
|
|
|
250
244
|
```bash
|
|
251
|
-
AUTO_CHAIN=$(
|
|
252
|
-
AUTO_CFG=$(
|
|
245
|
+
AUTO_CHAIN=$(gsd-sdk query config-get workflow._auto_chain_active 2>/dev/null || echo "false")
|
|
246
|
+
AUTO_CFG=$(gsd-sdk query config-get workflow.auto_advance 2>/dev/null || echo "false")
|
|
253
247
|
```
|
|
254
248
|
|
|
255
249
|
Auto mode is active if either `AUTO_CHAIN` or `AUTO_CFG` is `"true"`. Store the result for checkpoint handling below.
|
|
@@ -388,7 +382,7 @@ git add src/types/user.ts
|
|
|
388
382
|
|
|
389
383
|
**If `sub_repos` is configured (non-empty array from init context):** Use `commit-to-subrepo` to route files to their correct sub-repo:
|
|
390
384
|
```bash
|
|
391
|
-
|
|
385
|
+
gsd-sdk query commit-to-subrepo "{type}({phase}-{plan}): {concise task description}" --files file1 file2 ...
|
|
392
386
|
```
|
|
393
387
|
Returns JSON with per-repo commit hashes: `{ committed: true, repos: { "backend": { hash: "abc", files: [...] }, ... } }`. Record all hashes for SUMMARY.
|
|
394
388
|
|
|
@@ -515,38 +509,36 @@ Do NOT skip. Do NOT proceed to state updates if self-check fails.
|
|
|
515
509
|
</self_check>
|
|
516
510
|
|
|
517
511
|
<state_updates>
|
|
518
|
-
After SUMMARY.md, update STATE.md using gsd-
|
|
512
|
+
After SUMMARY.md, update STATE.md using `gsd-sdk query` state handlers (positional args; see `sdk/src/query/QUERY-HANDLERS.md`):
|
|
519
513
|
|
|
520
514
|
```bash
|
|
521
515
|
# Advance plan counter (handles edge cases automatically)
|
|
522
|
-
|
|
516
|
+
gsd-sdk query state.advance-plan
|
|
523
517
|
|
|
524
518
|
# Recalculate progress bar from disk state
|
|
525
|
-
|
|
519
|
+
gsd-sdk query state.update-progress
|
|
526
520
|
|
|
527
|
-
# Record execution metrics
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
--tasks "${TASK_COUNT}" --files "${FILE_COUNT}"
|
|
521
|
+
# Record execution metrics (phase, plan, duration, tasks, files)
|
|
522
|
+
gsd-sdk query state.record-metric \
|
|
523
|
+
"${PHASE}" "${PLAN}" "${DURATION}" "${TASK_COUNT}" "${FILE_COUNT}"
|
|
531
524
|
|
|
532
525
|
# Add decisions (extract from SUMMARY.md key-decisions)
|
|
533
526
|
for decision in "${DECISIONS[@]}"; do
|
|
534
|
-
|
|
535
|
-
--phase "${PHASE}" --summary "${decision}"
|
|
527
|
+
gsd-sdk query state.add-decision "${decision}"
|
|
536
528
|
done
|
|
537
529
|
|
|
538
|
-
# Update session info
|
|
539
|
-
|
|
540
|
-
|
|
530
|
+
# Update session info (timestamp, stopped-at, resume-file)
|
|
531
|
+
gsd-sdk query state.record-session \
|
|
532
|
+
"" "Completed ${PHASE}-${PLAN}-PLAN.md" "None"
|
|
541
533
|
```
|
|
542
534
|
|
|
543
535
|
```bash
|
|
544
536
|
# Update ROADMAP.md progress for this phase (plan counts, status)
|
|
545
|
-
|
|
537
|
+
gsd-sdk query roadmap.update-plan-progress "${PHASE_NUMBER}"
|
|
546
538
|
|
|
547
539
|
# Mark completed requirements from PLAN.md frontmatter
|
|
548
540
|
# Extract the `requirements` array from the plan's frontmatter, then mark each complete
|
|
549
|
-
|
|
541
|
+
gsd-sdk query requirements.mark-complete ${REQ_IDS}
|
|
550
542
|
```
|
|
551
543
|
|
|
552
544
|
**Requirement IDs:** Extract from the PLAN.md frontmatter `requirements:` field (e.g., `requirements: [AUTH-01, AUTH-02]`). Pass all IDs to `requirements mark-complete`. If the plan has no requirements field, skip this step.
|
|
@@ -564,13 +556,14 @@ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" requirements mark-complete
|
|
|
564
556
|
|
|
565
557
|
**For blockers found during execution:**
|
|
566
558
|
```bash
|
|
567
|
-
|
|
559
|
+
gsd-sdk query state.add-blocker "Blocker description"
|
|
568
560
|
```
|
|
569
561
|
</state_updates>
|
|
570
562
|
|
|
571
563
|
<final_commit>
|
|
572
564
|
```bash
|
|
573
|
-
|
|
565
|
+
gsd-sdk query commit "docs({phase}-{plan}): complete [plan-name] plan" \
|
|
566
|
+
.planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md .planning/REQUIREMENTS.md
|
|
574
567
|
```
|
|
575
568
|
|
|
576
569
|
Separate from per-task commits — captures execution results only.
|
|
@@ -37,7 +37,7 @@ Write machine-parseable, evidence-based intelligence. Every claim references act
|
|
|
37
37
|
- **Always include file paths.** Every claim must reference the actual code location.
|
|
38
38
|
- **Write current state only.** No temporal language ("recently added", "will be changed").
|
|
39
39
|
- **Evidence-based.** Read the actual files. Do not guess from file names or directory structures.
|
|
40
|
-
- **Cross-platform.** Use Glob, Read, and Grep tools -- not Bash `ls`, `find`, or `cat`. Bash file commands fail on Windows. Only use Bash for `
|
|
40
|
+
- **Cross-platform.** Use Glob, Read, and Grep tools -- not Bash `ls`, `find`, or `cat`. Bash file commands fail on Windows. Only use Bash for `gsd-sdk query intel` CLI calls.
|
|
41
41
|
- **ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation.
|
|
42
42
|
</role>
|
|
43
43
|
|
|
@@ -57,14 +57,23 @@ The /gsd-intel command has already confirmed that intel.enabled is true before s
|
|
|
57
57
|
|
|
58
58
|
## Project Scope
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
**Runtime layout detection (do this first):** Check which runtime root exists by running:
|
|
61
|
+
```bash
|
|
62
|
+
ls -d .kilo 2>/dev/null && echo "kilo" || (ls -d .claude/get-shit-done 2>/dev/null && echo "claude") || echo "unknown"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Use the detected root to resolve all canonical paths below:
|
|
66
|
+
|
|
67
|
+
| Source type | Standard `.claude` layout | `.kilo` layout |
|
|
68
|
+
|-------------|--------------------------|----------------|
|
|
69
|
+
| Agent files | `agents/*.md` | `.kilo/agents/*.md` |
|
|
70
|
+
| Command files | `commands/gsd/*.md` | `.kilo/command/*.md` |
|
|
71
|
+
| CLI tooling | `get-shit-done/bin/` | `.kilo/get-shit-done/bin/` |
|
|
72
|
+
| Workflow files | `get-shit-done/workflows/` | `.kilo/get-shit-done/workflows/` |
|
|
73
|
+
| Reference docs | `get-shit-done/references/` | `.kilo/get-shit-done/references/` |
|
|
74
|
+
| Hook files | `hooks/*.js` | `.kilo/hooks/*.js` |
|
|
61
75
|
|
|
62
|
-
|
|
63
|
-
- `commands/gsd/*.md` -- Command files
|
|
64
|
-
- `get-shit-done/bin/` -- CLI tooling
|
|
65
|
-
- `get-shit-done/workflows/` -- Workflow files
|
|
66
|
-
- `get-shit-done/references/` -- Reference docs
|
|
67
|
-
- `hooks/*.js` -- Git hooks
|
|
76
|
+
When analyzing this project, use ONLY the canonical source locations matching the detected layout. Do not fall back to the standard layout paths if the `.kilo` root is detected — those paths will be empty and produce semantically empty intel.
|
|
68
77
|
|
|
69
78
|
EXCLUDE from counts and analysis:
|
|
70
79
|
|
|
@@ -72,8 +81,8 @@ EXCLUDE from counts and analysis:
|
|
|
72
81
|
- `node_modules/`, `dist/`, `build/`, `.git/`
|
|
73
82
|
|
|
74
83
|
**Count accuracy:** When reporting component counts in stack.json or arch.md, always derive
|
|
75
|
-
counts by running Glob on canonical locations above, not from memory or CLAUDE.md.
|
|
76
|
-
Example: `Glob("agents/*.md")
|
|
84
|
+
counts by running Glob on the layout-resolved canonical locations above, not from memory or CLAUDE.md.
|
|
85
|
+
Example (standard layout): `Glob("agents/*.md")`. Example (kilo): `Glob(".kilo/agents/*.md")`.
|
|
77
86
|
|
|
78
87
|
## Forbidden Files
|
|
79
88
|
|
|
@@ -106,7 +115,7 @@ All JSON files include a `_meta` object with `updated_at` (ISO timestamp) and `v
|
|
|
106
115
|
}
|
|
107
116
|
```
|
|
108
117
|
|
|
109
|
-
**exports constraint:** Array of ACTUAL exported symbol names extracted from `module.exports` or `export` statements. MUST be real identifiers (e.g., `"configLoad"`, `"stateUpdate"`), NOT descriptions (e.g., `"config operations"`). If an export string contains a space, it is wrong -- extract the actual symbol name instead. Use `
|
|
118
|
+
**exports constraint:** Array of ACTUAL exported symbol names extracted from `module.exports` or `export` statements. MUST be real identifiers (e.g., `"configLoad"`, `"stateUpdate"`), NOT descriptions (e.g., `"config operations"`). If an export string contains a space, it is wrong -- extract the actual symbol name instead. Use `gsd-sdk query intel.extract-exports <file>` to get accurate exports.
|
|
110
119
|
|
|
111
120
|
Types: `entry-point`, `module`, `config`, `test`, `script`, `type-def`, `style`, `template`, `data`.
|
|
112
121
|
|
|
@@ -202,7 +211,7 @@ Glob for project structure indicators:
|
|
|
202
211
|
|
|
203
212
|
Read package.json, configs, and build files. Write `stack.json`. Then patch its timestamp:
|
|
204
213
|
```bash
|
|
205
|
-
|
|
214
|
+
gsd-sdk query intel.patch-meta .planning/intel/stack.json --cwd <project_root>
|
|
206
215
|
```
|
|
207
216
|
|
|
208
217
|
### Step 3: File Graph
|
|
@@ -211,7 +220,7 @@ Glob source files (`**/*.ts`, `**/*.js`, `**/*.py`, etc., excluding node_modules
|
|
|
211
220
|
Read key files (entry points, configs, core modules) for imports/exports.
|
|
212
221
|
Write `files.json`. Then patch its timestamp:
|
|
213
222
|
```bash
|
|
214
|
-
|
|
223
|
+
gsd-sdk query intel.patch-meta .planning/intel/files.json --cwd <project_root>
|
|
215
224
|
```
|
|
216
225
|
|
|
217
226
|
Focus on files that matter -- entry points, core modules, configs. Skip test files and generated code unless they reveal architecture.
|
|
@@ -222,7 +231,7 @@ Grep for route definitions, endpoint declarations, CLI command registrations.
|
|
|
222
231
|
Patterns to search: `app.get(`, `router.post(`, `@GetMapping`, `def route`, express route patterns.
|
|
223
232
|
Write `apis.json`. If no API endpoints found, write an empty entries object. Then patch its timestamp:
|
|
224
233
|
```bash
|
|
225
|
-
|
|
234
|
+
gsd-sdk query intel.patch-meta .planning/intel/apis.json --cwd <project_root>
|
|
226
235
|
```
|
|
227
236
|
|
|
228
237
|
### Step 5: Dependencies
|
|
@@ -231,7 +240,7 @@ Read package.json (dependencies, devDependencies), requirements.txt, go.mod, Car
|
|
|
231
240
|
Cross-reference with actual imports to populate `used_by`.
|
|
232
241
|
Write `deps.json`. Then patch its timestamp:
|
|
233
242
|
```bash
|
|
234
|
-
|
|
243
|
+
gsd-sdk query intel.patch-meta .planning/intel/deps.json --cwd <project_root>
|
|
235
244
|
```
|
|
236
245
|
|
|
237
246
|
### Step 6: Architecture
|
|
@@ -241,7 +250,7 @@ Write `arch.md`.
|
|
|
241
250
|
|
|
242
251
|
### Step 6.5: Self-Check
|
|
243
252
|
|
|
244
|
-
Run: `
|
|
253
|
+
Run: `gsd-sdk query intel.validate --cwd <project_root>`
|
|
245
254
|
|
|
246
255
|
Review the output:
|
|
247
256
|
|
|
@@ -253,7 +262,7 @@ This step is MANDATORY -- do not skip it.
|
|
|
253
262
|
|
|
254
263
|
### Step 7: Snapshot
|
|
255
264
|
|
|
256
|
-
Run: `
|
|
265
|
+
Run: `gsd-sdk query intel.snapshot --cwd <project_root>`
|
|
257
266
|
|
|
258
267
|
This writes `.last-refresh.json` with accurate timestamps and hashes. Do NOT write `.last-refresh.json` manually.
|
|
259
268
|
</execution_flow>
|
|
@@ -118,6 +118,12 @@ Grep("router\.(get|post|put|delete)", type: "ts")
|
|
|
118
118
|
|
|
119
119
|
## Step 4: Extract Patterns from Analogs
|
|
120
120
|
|
|
121
|
+
**Never re-read the same range.** For small files (≤ 2,000 lines), one `Read` call is enough — extract everything in that pass. For large files, multiple non-overlapping targeted reads are fine; what is forbidden is re-reading a range already in context.
|
|
122
|
+
|
|
123
|
+
**Large file strategy:** For files > 2,000 lines, use `Grep` first to locate the relevant line numbers, then `Read` with `offset`/`limit` for each distinct section (imports, core pattern, error handling). Use non-overlapping ranges. Do not load the whole file.
|
|
124
|
+
|
|
125
|
+
**Early stopping:** Stop analog search once you have 3–5 strong matches. There is no benefit to finding a 10th analog.
|
|
126
|
+
|
|
121
127
|
For each analog file, Read it and extract:
|
|
122
128
|
|
|
123
129
|
| Pattern Category | What to Extract |
|
|
@@ -297,6 +303,16 @@ Pattern mapping complete. Planner can now reference analog patterns in PLAN.md f
|
|
|
297
303
|
|
|
298
304
|
</structured_returns>
|
|
299
305
|
|
|
306
|
+
<critical_rules>
|
|
307
|
+
|
|
308
|
+
- **No re-reads:** Never re-read a range already in context. Small files: one Read call, extract everything. Large files: multiple non-overlapping targeted reads are fine; duplicate ranges are not.
|
|
309
|
+
- **Large files (> 2,000 lines):** Use Grep to find the line range first, then Read with offset/limit. Never load the whole file when a targeted section suffices.
|
|
310
|
+
- **Stop at 3–5 analogs:** Once you have enough strong matches, write PATTERNS.md. Broader search produces diminishing returns and wastes tokens.
|
|
311
|
+
- **No source edits:** PATTERNS.md is the only file you write. All other file access is read-only.
|
|
312
|
+
- **No heredoc writes:** Always use the Write tool, never `Bash(cat << 'EOF')`.
|
|
313
|
+
|
|
314
|
+
</critical_rules>
|
|
315
|
+
|
|
300
316
|
<success_criteria>
|
|
301
317
|
|
|
302
318
|
Pattern mapping is complete when:
|
|
@@ -16,8 +16,7 @@ You are a GSD phase researcher. You answer "What do I need to know to PLAN this
|
|
|
16
16
|
|
|
17
17
|
Spawned by `/gsd-plan-phase` (integrated) or `/gsd-research-phase` (standalone).
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
|
19
|
+
@~/.claude/get-shit-done/references/mandatory-initial-read.md
|
|
21
20
|
|
|
22
21
|
**Core responsibilities:**
|
|
23
22
|
- Investigate the phase's technical domain
|
|
@@ -62,14 +61,9 @@ Before researching, discover project context:
|
|
|
62
61
|
|
|
63
62
|
**Project instructions:** Read `./CLAUDE.md` if it exists in the working directory. Follow all project-specific guidelines, security requirements, and coding conventions.
|
|
64
63
|
|
|
65
|
-
**Project skills:**
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
3. Load specific `rules/*.md` files as needed during research
|
|
69
|
-
4. Do NOT load full `AGENTS.md` files (100KB+ context cost)
|
|
70
|
-
5. Research should account for project skill patterns
|
|
71
|
-
|
|
72
|
-
This ensures research aligns with project-specific conventions and libraries.
|
|
64
|
+
**Project skills:** @~/.claude/get-shit-done/references/project-skills-discovery.md
|
|
65
|
+
- Load `rules/*.md` as needed during **research**.
|
|
66
|
+
- Research output should account for project skill patterns and conventions.
|
|
73
67
|
|
|
74
68
|
**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.
|
|
75
69
|
</project_context>
|
|
@@ -158,7 +152,7 @@ When researching "best library for X": find what the ecosystem actually uses, do
|
|
|
158
152
|
Check `brave_search` from init context. If `true`, use Brave Search for higher quality results:
|
|
159
153
|
|
|
160
154
|
```bash
|
|
161
|
-
|
|
155
|
+
gsd-sdk query websearch "your query" --limit 10
|
|
162
156
|
```
|
|
163
157
|
|
|
164
158
|
**Options:**
|
|
@@ -514,7 +508,7 @@ Orchestrator provides: phase number/name, description/goal, requirements, constr
|
|
|
514
508
|
|
|
515
509
|
Load phase context using init command:
|
|
516
510
|
```bash
|
|
517
|
-
INIT=$(
|
|
511
|
+
INIT=$(gsd-sdk query init.phase-op "${PHASE}")
|
|
518
512
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
519
513
|
```
|
|
520
514
|
|
|
@@ -761,7 +755,7 @@ Write to: `$PHASE_DIR/$PADDED_PHASE-RESEARCH.md`
|
|
|
761
755
|
## Step 7: Commit Research (optional)
|
|
762
756
|
|
|
763
757
|
```bash
|
|
764
|
-
|
|
758
|
+
gsd-sdk query commit "docs($PHASE): research phase domain" "$PHASE_DIR/$PADDED_PHASE-RESEARCH.md"
|
|
765
759
|
```
|
|
766
760
|
|
|
767
761
|
## Step 8: Return Structured Result
|
|
@@ -630,7 +630,7 @@ issue:
|
|
|
630
630
|
|
|
631
631
|
Load phase operation context:
|
|
632
632
|
```bash
|
|
633
|
-
INIT=$(
|
|
633
|
+
INIT=$(gsd-sdk query init.phase-op "${PHASE_ARG}")
|
|
634
634
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
635
635
|
```
|
|
636
636
|
|
|
@@ -642,7 +642,7 @@ Orchestrator provides CONTEXT.md content in the verification prompt. If provided
|
|
|
642
642
|
ls "$phase_dir"/*-PLAN.md 2>/dev/null
|
|
643
643
|
# Read research for Nyquist validation data
|
|
644
644
|
cat "$phase_dir"/*-RESEARCH.md 2>/dev/null
|
|
645
|
-
|
|
645
|
+
gsd-sdk query roadmap.get-phase "$phase_number"
|
|
646
646
|
ls "$phase_dir"/*-BRIEF.md 2>/dev/null
|
|
647
647
|
```
|
|
648
648
|
|
|
@@ -650,12 +650,12 @@ ls "$phase_dir"/*-BRIEF.md 2>/dev/null
|
|
|
650
650
|
|
|
651
651
|
## Step 2: Load All Plans
|
|
652
652
|
|
|
653
|
-
Use gsd-
|
|
653
|
+
Use `gsd-sdk query` to validate plan structure:
|
|
654
654
|
|
|
655
655
|
```bash
|
|
656
656
|
for plan in "$PHASE_DIR"/*-PLAN.md; do
|
|
657
657
|
echo "=== $plan ==="
|
|
658
|
-
PLAN_STRUCTURE=$(
|
|
658
|
+
PLAN_STRUCTURE=$(gsd-sdk query verify.plan-structure "$plan")
|
|
659
659
|
echo "$PLAN_STRUCTURE"
|
|
660
660
|
done
|
|
661
661
|
```
|
|
@@ -670,10 +670,10 @@ Map errors/warnings to verification dimensions:
|
|
|
670
670
|
|
|
671
671
|
## Step 3: Parse must_haves
|
|
672
672
|
|
|
673
|
-
Extract must_haves from each plan using gsd-
|
|
673
|
+
Extract must_haves from each plan using `gsd-sdk query`:
|
|
674
674
|
|
|
675
675
|
```bash
|
|
676
|
-
MUST_HAVES=$(
|
|
676
|
+
MUST_HAVES=$(gsd-sdk query frontmatter.get "$PLAN_PATH" must_haves)
|
|
677
677
|
```
|
|
678
678
|
|
|
679
679
|
Returns JSON: `{ truths: [...], artifacts: [...], key_links: [...] }`
|
|
@@ -715,10 +715,10 @@ For each requirement: find covering task(s), verify action is specific, flag gap
|
|
|
715
715
|
|
|
716
716
|
## Step 5: Validate Task Structure
|
|
717
717
|
|
|
718
|
-
Use
|
|
718
|
+
Use `verify.plan-structure` (already run in Step 2):
|
|
719
719
|
|
|
720
720
|
```bash
|
|
721
|
-
PLAN_STRUCTURE=$(
|
|
721
|
+
PLAN_STRUCTURE=$(gsd-sdk query verify.plan-structure "$PLAN_PATH")
|
|
722
722
|
```
|
|
723
723
|
|
|
724
724
|
The `tasks` array in the result shows each task's completeness:
|
|
@@ -729,7 +729,7 @@ The `tasks` array in the result shows each task's completeness:
|
|
|
729
729
|
|
|
730
730
|
**Check:** valid task type (auto, checkpoint:*, tdd), auto tasks have files/action/verify/done, action is specific, verify is runnable, done is measurable.
|
|
731
731
|
|
|
732
|
-
**For manual validation of specificity** (
|
|
732
|
+
**For manual validation of specificity** (`verify.plan-structure` checks structure, not content quality):
|
|
733
733
|
```bash
|
|
734
734
|
grep -B5 "</task>" "$PHASE_DIR"/*-PLAN.md | grep -v "<verify>"
|
|
735
735
|
```
|