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.
Files changed (153) hide show
  1. package/README.md +15 -3
  2. package/agents/gsd-code-fixer.md +9 -8
  3. package/agents/gsd-codebase-mapper.md +1 -1
  4. package/agents/gsd-debug-session-manager.md +1 -1
  5. package/agents/gsd-debugger.md +8 -85
  6. package/agents/gsd-executor.md +23 -30
  7. package/agents/gsd-intel-updater.md +26 -17
  8. package/agents/gsd-pattern-mapper.md +16 -0
  9. package/agents/gsd-phase-researcher.md +7 -13
  10. package/agents/gsd-plan-checker.md +9 -9
  11. package/agents/gsd-planner.md +31 -43
  12. package/agents/gsd-project-researcher.md +1 -1
  13. package/agents/gsd-research-synthesizer.md +2 -2
  14. package/agents/gsd-ui-checker.md +9 -0
  15. package/agents/gsd-ui-researcher.md +1 -1
  16. package/agents/gsd-verifier.md +13 -19
  17. package/bin/install.js +149 -38
  18. package/commands/gsd/add-backlog.md +13 -10
  19. package/commands/gsd/autonomous.md +1 -1
  20. package/commands/gsd/code-review-fix.md +1 -1
  21. package/commands/gsd/code-review.md +1 -1
  22. package/commands/gsd/debug.md +3 -3
  23. package/commands/gsd/discuss-phase.md +3 -3
  24. package/commands/gsd/execute-phase.md +1 -1
  25. package/commands/gsd/from-gsd2.md +2 -0
  26. package/commands/gsd/graphify.md +2 -0
  27. package/commands/gsd/inbox.md +38 -0
  28. package/commands/gsd/intel.md +9 -9
  29. package/commands/gsd/manager.md +1 -1
  30. package/commands/gsd/progress.md +2 -1
  31. package/commands/gsd/quick.md +3 -3
  32. package/commands/gsd/research-phase.md +3 -3
  33. package/commands/gsd/review-backlog.md +2 -2
  34. package/commands/gsd/set-profile.md +1 -1
  35. package/commands/gsd/sketch-wrap-up.md +31 -0
  36. package/commands/gsd/sketch.md +45 -0
  37. package/commands/gsd/spec-phase.md +62 -0
  38. package/commands/gsd/spike-wrap-up.md +31 -0
  39. package/commands/gsd/spike.md +41 -0
  40. package/commands/gsd/thread.md +10 -10
  41. package/commands/gsd/workstreams.md +7 -7
  42. package/get-shit-done/bin/gsd-tools.cjs +100 -3
  43. package/get-shit-done/bin/lib/commands.cjs +7 -5
  44. package/get-shit-done/bin/lib/config.cjs +12 -0
  45. package/get-shit-done/bin/lib/core.cjs +96 -0
  46. package/get-shit-done/bin/lib/graphify.cjs +5 -5
  47. package/get-shit-done/bin/lib/init.cjs +222 -58
  48. package/get-shit-done/bin/lib/intel.cjs +10 -31
  49. package/get-shit-done/bin/lib/phase.cjs +6 -4
  50. package/get-shit-done/bin/lib/profile-output.cjs +2 -2
  51. package/get-shit-done/bin/lib/uat.cjs +2 -1
  52. package/get-shit-done/references/artifact-types.md +18 -0
  53. package/get-shit-done/references/autonomous-smart-discuss.md +277 -0
  54. package/get-shit-done/references/continuation-format.md +11 -7
  55. package/get-shit-done/references/debugger-philosophy.md +76 -0
  56. package/get-shit-done/references/decimal-phase-calculation.md +5 -5
  57. package/get-shit-done/references/git-integration.md +4 -4
  58. package/get-shit-done/references/git-planning-commit.md +6 -4
  59. package/get-shit-done/references/mandatory-initial-read.md +2 -0
  60. package/get-shit-done/references/phase-argument-parsing.md +3 -3
  61. package/get-shit-done/references/planner-revision.md +1 -1
  62. package/get-shit-done/references/planning-config.md +6 -6
  63. package/get-shit-done/references/project-skills-discovery.md +19 -0
  64. package/get-shit-done/references/sketch-interactivity.md +41 -0
  65. package/get-shit-done/references/sketch-theme-system.md +94 -0
  66. package/get-shit-done/references/sketch-tooling.md +45 -0
  67. package/get-shit-done/references/sketch-variant-patterns.md +81 -0
  68. package/get-shit-done/references/workstream-flag.md +11 -11
  69. package/get-shit-done/templates/spec.md +307 -0
  70. package/get-shit-done/workflows/add-phase.md +5 -5
  71. package/get-shit-done/workflows/add-tests.md +3 -3
  72. package/get-shit-done/workflows/add-todo.md +3 -3
  73. package/get-shit-done/workflows/ai-integration-phase.md +7 -7
  74. package/get-shit-done/workflows/audit-fix.md +1 -1
  75. package/get-shit-done/workflows/audit-milestone.md +9 -9
  76. package/get-shit-done/workflows/audit-uat.md +1 -1
  77. package/get-shit-done/workflows/autonomous.md +18 -288
  78. package/get-shit-done/workflows/check-todos.md +2 -2
  79. package/get-shit-done/workflows/cleanup.md +1 -1
  80. package/get-shit-done/workflows/code-review-fix.md +3 -3
  81. package/get-shit-done/workflows/code-review.md +5 -5
  82. package/get-shit-done/workflows/complete-milestone.md +14 -12
  83. package/get-shit-done/workflows/diagnose-issues.md +3 -3
  84. package/get-shit-done/workflows/discuss-phase-assumptions.md +11 -11
  85. package/get-shit-done/workflows/discuss-phase.md +105 -19
  86. package/get-shit-done/workflows/do.md +6 -2
  87. package/get-shit-done/workflows/docs-update.md +3 -3
  88. package/get-shit-done/workflows/eval-review.md +2 -2
  89. package/get-shit-done/workflows/execute-phase.md +41 -39
  90. package/get-shit-done/workflows/execute-plan.md +21 -25
  91. package/get-shit-done/workflows/explore.md +3 -1
  92. package/get-shit-done/workflows/extract_learnings.md +2 -2
  93. package/get-shit-done/workflows/forensics.md +3 -3
  94. package/get-shit-done/workflows/health.md +2 -2
  95. package/get-shit-done/workflows/help.md +58 -0
  96. package/get-shit-done/workflows/import.md +1 -1
  97. package/get-shit-done/workflows/insert-phase.md +4 -4
  98. package/get-shit-done/workflows/list-workspaces.md +1 -1
  99. package/get-shit-done/workflows/manager.md +3 -3
  100. package/get-shit-done/workflows/map-codebase.md +19 -5
  101. package/get-shit-done/workflows/milestone-summary.md +6 -6
  102. package/get-shit-done/workflows/new-milestone.md +9 -9
  103. package/get-shit-done/workflows/new-project.md +124 -22
  104. package/get-shit-done/workflows/new-workspace.md +1 -1
  105. package/get-shit-done/workflows/next.md +26 -3
  106. package/get-shit-done/workflows/pause-work.md +11 -7
  107. package/get-shit-done/workflows/plan-milestone-gaps.md +3 -3
  108. package/get-shit-done/workflows/plan-phase.md +41 -35
  109. package/get-shit-done/workflows/plant-seed.md +1 -1
  110. package/get-shit-done/workflows/profile-user.md +11 -11
  111. package/get-shit-done/workflows/progress.md +133 -21
  112. package/get-shit-done/workflows/quick.md +49 -23
  113. package/get-shit-done/workflows/remove-phase.md +8 -8
  114. package/get-shit-done/workflows/remove-workspace.md +1 -1
  115. package/get-shit-done/workflows/research-phase.md +3 -3
  116. package/get-shit-done/workflows/resume-project.md +3 -3
  117. package/get-shit-done/workflows/review.md +14 -13
  118. package/get-shit-done/workflows/scan.md +1 -1
  119. package/get-shit-done/workflows/secure-phase.md +5 -5
  120. package/get-shit-done/workflows/settings.md +7 -5
  121. package/get-shit-done/workflows/ship.md +8 -8
  122. package/get-shit-done/workflows/sketch-wrap-up.md +283 -0
  123. package/get-shit-done/workflows/sketch.md +263 -0
  124. package/get-shit-done/workflows/spec-phase.md +262 -0
  125. package/get-shit-done/workflows/spike-wrap-up.md +273 -0
  126. package/get-shit-done/workflows/spike.md +270 -0
  127. package/get-shit-done/workflows/stats.md +1 -1
  128. package/get-shit-done/workflows/transition.md +12 -12
  129. package/get-shit-done/workflows/ui-phase.md +23 -10
  130. package/get-shit-done/workflows/ui-review.md +4 -4
  131. package/get-shit-done/workflows/undo.md +1 -1
  132. package/get-shit-done/workflows/update.md +101 -1
  133. package/get-shit-done/workflows/validate-phase.md +5 -5
  134. package/get-shit-done/workflows/verify-phase.md +10 -10
  135. package/get-shit-done/workflows/verify-work.md +10 -8
  136. package/hooks/dist/gsd-check-update-worker.js +108 -0
  137. package/hooks/dist/gsd-check-update.js +13 -91
  138. package/hooks/dist/gsd-phase-boundary.sh +1 -0
  139. package/hooks/dist/gsd-read-guard.js +2 -2
  140. package/hooks/dist/gsd-session-state.sh +1 -0
  141. package/hooks/dist/gsd-statusline.js +9 -3
  142. package/hooks/dist/gsd-validate-commit.sh +1 -0
  143. package/hooks/gsd-check-update-worker.js +108 -0
  144. package/hooks/gsd-check-update.js +13 -91
  145. package/hooks/gsd-phase-boundary.sh +1 -0
  146. package/hooks/gsd-read-guard.js +2 -2
  147. package/hooks/gsd-read-injection-scanner.js +153 -0
  148. package/hooks/gsd-session-state.sh +1 -0
  149. package/hooks/gsd-statusline.js +9 -3
  150. package/hooks/gsd-validate-commit.sh +1 -0
  151. package/package.json +1 -1
  152. package/scripts/build-hooks.js +1 -0
  153. 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 (`skills/gsd-*/SKILL.md`). Older Claude Code versions use `commands/gsd/`. Cline uses `.clinerules` for configuration. The installer handles all formats automatically.
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` (Claude Code 2.1.88+) or `~/.claude/commands/gsd/` (legacy)
822
- - For Codex, verify skills exist in `~/.codex/skills/gsd-*/SKILL.md` (global) or `./.codex/skills/gsd-*/SKILL.md` (local)
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
@@ -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, multiple files in `--files` list)
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-tools commit command with conventional format:
311
+ Use `gsd-sdk query commit` with conventional format (message first, then every staged file path):
312
312
  ```bash
313
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit \
313
+ gsd-sdk query commit \
314
314
  "fix({padded_phase}): {finding_id} {short_description}" \
315
- --files {all_modified_files}
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 in `--files` (space-separated):
322
+ **Multiple files:** List ALL modified files after the message (space-separated):
323
323
  ```bash
324
- --files src/api/auth.ts src/types/user.ts tests/auth.test.ts
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 files in `--files` argument.
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 in each commit's `--files` argument (multi-file fix support)
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 current date
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=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" resolve-model gsd-debugger --raw)
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
@@ -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
- **CRITICAL: Mandatory Initial Read**
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:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
41
- 1. List available skills (subdirectories)
42
- 2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
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
- ## User = Reporter, Claude = Investigator
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=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state load)
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs: resolve debug {slug}" --files .planning/debug/resolved/{slug}.md
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs: update debug knowledge base with {slug}" --files .planning/debug/knowledge-base.md
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.
@@ -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
- **CRITICAL: Mandatory Initial Read**
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:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
58
- 1. List available skills (subdirectories)
59
- 2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
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=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" init execute-phase "${PHASE}")
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=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
252
- AUTO_CFG=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
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
- node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit-to-subrepo "{type}({phase}-{plan}): {concise task description}" --files file1 file2 ...
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-tools:
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state advance-plan
516
+ gsd-sdk query state.advance-plan
523
517
 
524
518
  # Recalculate progress bar from disk state
525
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state update-progress
519
+ gsd-sdk query state.update-progress
526
520
 
527
- # Record execution metrics
528
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state record-metric \
529
- --phase "${PHASE}" --plan "${PLAN}" --duration "${DURATION}" \
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state add-decision \
535
- --phase "${PHASE}" --summary "${decision}"
527
+ gsd-sdk query state.add-decision "${decision}"
536
528
  done
537
529
 
538
- # Update session info
539
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state record-session \
540
- --stopped-at "Completed ${PHASE}-${PLAN}-PLAN.md"
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" roadmap update-plan-progress "${PHASE_NUMBER}"
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" requirements mark-complete ${REQ_IDS}
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state add-blocker "Blocker description"
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md .planning/REQUIREMENTS.md
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 `node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs intel` CLI calls.
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
- When analyzing this project, use ONLY canonical source locations:
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
- - `agents/*.md` -- Agent instruction files
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")` for agent count.
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 `node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs intel extract-exports <file>` to get accurate exports.
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
- node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs intel patch-meta .planning/intel/stack.json --cwd <project_root>
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
- node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs intel patch-meta .planning/intel/files.json --cwd <project_root>
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
- node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs intel patch-meta .planning/intel/apis.json --cwd <project_root>
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
- node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs intel patch-meta .planning/intel/deps.json --cwd <project_root>
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: `node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs intel validate --cwd <project_root>`
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: `node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs intel snapshot --cwd <project_root>`
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
- **CRITICAL: Mandatory Initial Read**
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:** Check `.claude/skills/` or `.agents/skills/` directory if either exists:
66
- 1. List available skills (subdirectories)
67
- 2. Read `SKILL.md` for each skill (lightweight index ~130 lines)
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" websearch "your query" --limit 10
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=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" init phase-op "${PHASE}")
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs($PHASE): research phase domain" --files "$PHASE_DIR/$PADDED_PHASE-RESEARCH.md"
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=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" init phase-op "${PHASE_ARG}")
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
- node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase "$phase_number"
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-tools to validate plan structure:
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=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" verify plan-structure "$plan")
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-tools:
673
+ Extract must_haves from each plan using `gsd-sdk query`:
674
674
 
675
675
  ```bash
676
- MUST_HAVES=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" frontmatter get "$PLAN_PATH" --field 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 gsd-tools plan-structure verification (already run in Step 2):
718
+ Use `verify.plan-structure` (already run in Step 2):
719
719
 
720
720
  ```bash
721
- PLAN_STRUCTURE=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" verify plan-structure "$PLAN_PATH")
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** (gsd-tools checks structure, not content quality):
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
  ```