@bhargavvc/sdd-cc 1.30.1 → 1.35.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.
Files changed (242) hide show
  1. package/README.ja-JP.md +144 -110
  2. package/README.ko-KR.md +143 -107
  3. package/README.md +183 -112
  4. package/README.pt-BR.md +90 -52
  5. package/README.zh-CN.md +141 -101
  6. package/agents/sdd-advisor-researcher.md +23 -0
  7. package/agents/sdd-ai-researcher.md +133 -0
  8. package/agents/sdd-code-fixer.md +516 -0
  9. package/agents/sdd-code-reviewer.md +355 -0
  10. package/agents/sdd-codebase-mapper.md +3 -3
  11. package/agents/sdd-debugger.md +17 -5
  12. package/agents/sdd-doc-verifier.md +201 -0
  13. package/agents/sdd-doc-writer.md +602 -0
  14. package/agents/sdd-domain-researcher.md +153 -0
  15. package/agents/sdd-eval-auditor.md +164 -0
  16. package/agents/sdd-eval-planner.md +154 -0
  17. package/agents/sdd-executor.md +87 -4
  18. package/agents/sdd-framework-selector.md +160 -0
  19. package/agents/sdd-intel-updater.md +314 -0
  20. package/agents/sdd-nyquist-auditor.md +1 -1
  21. package/agents/sdd-phase-researcher.md +71 -4
  22. package/agents/sdd-plan-checker.md +100 -6
  23. package/agents/sdd-planner.md +145 -206
  24. package/agents/sdd-project-researcher.md +25 -2
  25. package/agents/sdd-research-synthesizer.md +3 -3
  26. package/agents/sdd-roadmapper.md +6 -6
  27. package/agents/sdd-security-auditor.md +128 -0
  28. package/agents/sdd-ui-auditor.md +43 -3
  29. package/agents/sdd-ui-checker.md +5 -5
  30. package/agents/sdd-ui-researcher.md +27 -4
  31. package/agents/sdd-user-profiler.md +2 -2
  32. package/agents/sdd-verifier.md +142 -22
  33. package/bin/install.js +2145 -545
  34. package/commands/sdd/add-backlog.md +5 -5
  35. package/commands/sdd/add-tests.md +2 -2
  36. package/commands/sdd/ai-integration-phase.md +36 -0
  37. package/commands/sdd/analyze-dependencies.md +34 -0
  38. package/commands/sdd/audit-fix.md +33 -0
  39. package/commands/sdd/autonomous.md +7 -2
  40. package/commands/sdd/cleanup.md +5 -0
  41. package/commands/sdd/code-review-fix.md +52 -0
  42. package/commands/sdd/code-review.md +55 -0
  43. package/commands/sdd/complete-milestone.md +6 -6
  44. package/commands/sdd/debug.md +22 -9
  45. package/commands/sdd/discuss-phase.md +7 -2
  46. package/commands/sdd/do.md +1 -1
  47. package/commands/sdd/docs-update.md +48 -0
  48. package/commands/sdd/eval-review.md +32 -0
  49. package/commands/sdd/execute-phase.md +4 -0
  50. package/commands/sdd/explore.md +27 -0
  51. package/commands/sdd/fast.md +2 -2
  52. package/commands/sdd/from-sdd2.md +45 -0
  53. package/commands/sdd/help.md +2 -0
  54. package/commands/sdd/import.md +36 -0
  55. package/commands/sdd/intel.md +179 -0
  56. package/commands/sdd/join-discord.md +2 -1
  57. package/commands/sdd/manager.md +1 -0
  58. package/commands/sdd/map-codebase.md +3 -3
  59. package/commands/sdd/new-milestone.md +1 -1
  60. package/commands/sdd/new-project.md +5 -1
  61. package/commands/sdd/new-workspace.md +1 -1
  62. package/commands/sdd/next.md +2 -0
  63. package/commands/sdd/plan-milestone-gaps.md +2 -2
  64. package/commands/sdd/plan-phase.md +6 -1
  65. package/commands/sdd/plant-seed.md +1 -1
  66. package/commands/sdd/profile-user.md +1 -1
  67. package/commands/sdd/quick.md +5 -3
  68. package/commands/sdd/reapply-patches.md +230 -42
  69. package/commands/sdd/research-phase.md +3 -3
  70. package/commands/sdd/review-backlog.md +1 -0
  71. package/commands/sdd/review.md +6 -3
  72. package/commands/sdd/scan.md +26 -0
  73. package/commands/sdd/secure-phase.md +35 -0
  74. package/commands/sdd/ship.md +1 -1
  75. package/commands/sdd/thread.md +5 -5
  76. package/commands/sdd/undo.md +34 -0
  77. package/commands/sdd/verify-work.md +1 -1
  78. package/commands/sdd/workstreams.md +17 -11
  79. package/hooks/dist/sdd-check-update.js +33 -8
  80. package/hooks/dist/sdd-context-monitor.js +17 -8
  81. package/hooks/dist/sdd-phase-boundary.sh +27 -0
  82. package/hooks/dist/sdd-prompt-guard.js +1 -0
  83. package/hooks/dist/sdd-read-guard.js +82 -0
  84. package/hooks/dist/sdd-session-state.sh +33 -0
  85. package/hooks/dist/sdd-statusline.js +137 -15
  86. package/hooks/dist/sdd-validate-commit.sh +47 -0
  87. package/hooks/dist/sdd-workflow-guard.js +4 -4
  88. package/hooks/sdd-check-update.js +139 -0
  89. package/hooks/sdd-context-monitor.js +165 -0
  90. package/hooks/sdd-phase-boundary.sh +27 -0
  91. package/hooks/sdd-prompt-guard.js +97 -0
  92. package/hooks/sdd-read-guard.js +82 -0
  93. package/hooks/sdd-session-state.sh +33 -0
  94. package/hooks/sdd-statusline.js +241 -0
  95. package/hooks/sdd-validate-commit.sh +47 -0
  96. package/hooks/sdd-workflow-guard.js +94 -0
  97. package/package.json +3 -3
  98. package/scripts/build-hooks.js +18 -7
  99. package/scripts/prompt-injection-scan.sh +1 -0
  100. package/scripts/rebrand-gsd-to-sdd.sh +221 -220
  101. package/scripts/run-tests.cjs +5 -1
  102. package/scripts/sync-upstream.sh +1 -1
  103. package/sdd/bin/lib/commands.cjs +79 -17
  104. package/sdd/bin/lib/config.cjs +90 -48
  105. package/sdd/bin/lib/core.cjs +452 -87
  106. package/sdd/bin/lib/docs.cjs +267 -0
  107. package/sdd/bin/lib/frontmatter.cjs +381 -336
  108. package/sdd/bin/lib/init.cjs +110 -16
  109. package/sdd/bin/lib/intel.cjs +660 -0
  110. package/sdd/bin/lib/learnings.cjs +378 -0
  111. package/sdd/bin/lib/milestone.cjs +42 -11
  112. package/sdd/bin/lib/model-profiles.cjs +17 -15
  113. package/sdd/bin/lib/phase.cjs +367 -288
  114. package/sdd/bin/lib/profile-output.cjs +106 -10
  115. package/sdd/bin/lib/roadmap.cjs +146 -115
  116. package/sdd/bin/lib/schema-detect.cjs +238 -0
  117. package/sdd/bin/lib/sdd2-import.cjs +511 -0
  118. package/sdd/bin/lib/security.cjs +124 -3
  119. package/sdd/bin/lib/state.cjs +648 -264
  120. package/sdd/bin/lib/template.cjs +8 -4
  121. package/sdd/bin/lib/verify.cjs +209 -28
  122. package/sdd/bin/lib/workstream.cjs +7 -3
  123. package/sdd/bin/sdd-tools.cjs +184 -12
  124. package/sdd/contexts/dev.md +21 -0
  125. package/sdd/contexts/research.md +22 -0
  126. package/sdd/contexts/review.md +22 -0
  127. package/sdd/references/agent-contracts.md +79 -0
  128. package/sdd/references/ai-evals.md +156 -0
  129. package/sdd/references/ai-frameworks.md +186 -0
  130. package/sdd/references/artifact-types.md +113 -0
  131. package/sdd/references/common-bug-patterns.md +114 -0
  132. package/sdd/references/context-budget.md +49 -0
  133. package/sdd/references/continuation-format.md +25 -25
  134. package/sdd/references/domain-probes.md +125 -0
  135. package/sdd/references/few-shot-examples/plan-checker.md +73 -0
  136. package/sdd/references/few-shot-examples/verifier.md +109 -0
  137. package/sdd/references/gate-prompts.md +100 -0
  138. package/sdd/references/gates.md +70 -0
  139. package/sdd/references/git-integration.md +1 -1
  140. package/sdd/references/ios-scaffold.md +123 -0
  141. package/sdd/references/model-profile-resolution.md +2 -0
  142. package/sdd/references/model-profiles.md +24 -18
  143. package/sdd/references/planner-gap-closure.md +62 -0
  144. package/sdd/references/planner-reviews.md +39 -0
  145. package/sdd/references/planner-revision.md +87 -0
  146. package/sdd/references/planning-config.md +252 -0
  147. package/sdd/references/revision-loop.md +97 -0
  148. package/sdd/references/thinking-models-debug.md +44 -0
  149. package/sdd/references/thinking-models-execution.md +50 -0
  150. package/sdd/references/thinking-models-planning.md +62 -0
  151. package/sdd/references/thinking-models-research.md +50 -0
  152. package/sdd/references/thinking-models-verification.md +55 -0
  153. package/sdd/references/thinking-partner.md +96 -0
  154. package/sdd/references/ui-brand.md +4 -4
  155. package/sdd/references/universal-anti-patterns.md +63 -0
  156. package/sdd/references/verification-overrides.md +227 -0
  157. package/sdd/references/workstream-flag.md +56 -3
  158. package/sdd/templates/AI-SPEC.md +246 -0
  159. package/sdd/templates/DEBUG.md +1 -1
  160. package/sdd/templates/SECURITY.md +61 -0
  161. package/sdd/templates/UAT.md +4 -4
  162. package/sdd/templates/VALIDATION.md +4 -4
  163. package/sdd/templates/claude-md.md +32 -9
  164. package/sdd/templates/config.json +4 -0
  165. package/sdd/templates/debug-subagent-prompt.md +1 -1
  166. package/sdd/templates/dev-preferences.md +1 -1
  167. package/sdd/templates/discovery.md +2 -2
  168. package/sdd/templates/phase-prompt.md +1 -1
  169. package/sdd/templates/planner-subagent-prompt.md +3 -3
  170. package/sdd/templates/project.md +1 -1
  171. package/sdd/templates/research.md +1 -1
  172. package/sdd/templates/state.md +2 -2
  173. package/sdd/workflows/add-phase.md +8 -8
  174. package/sdd/workflows/add-tests.md +12 -9
  175. package/sdd/workflows/add-todo.md +5 -3
  176. package/sdd/workflows/ai-integration-phase.md +284 -0
  177. package/sdd/workflows/analyze-dependencies.md +96 -0
  178. package/sdd/workflows/audit-fix.md +157 -0
  179. package/sdd/workflows/audit-milestone.md +11 -11
  180. package/sdd/workflows/audit-uat.md +2 -2
  181. package/sdd/workflows/autonomous.md +195 -27
  182. package/sdd/workflows/check-todos.md +12 -10
  183. package/sdd/workflows/cleanup.md +2 -0
  184. package/sdd/workflows/code-review-fix.md +497 -0
  185. package/sdd/workflows/code-review.md +515 -0
  186. package/sdd/workflows/complete-milestone.md +56 -22
  187. package/sdd/workflows/diagnose-issues.md +10 -3
  188. package/sdd/workflows/discovery-phase.md +5 -3
  189. package/sdd/workflows/discuss-phase-assumptions.md +24 -6
  190. package/sdd/workflows/discuss-phase-power.md +291 -0
  191. package/sdd/workflows/discuss-phase.md +173 -21
  192. package/sdd/workflows/do.md +23 -21
  193. package/sdd/workflows/docs-update.md +1155 -0
  194. package/sdd/workflows/eval-review.md +155 -0
  195. package/sdd/workflows/execute-phase.md +594 -38
  196. package/sdd/workflows/execute-plan.md +67 -96
  197. package/sdd/workflows/explore.md +139 -0
  198. package/sdd/workflows/fast.md +5 -5
  199. package/sdd/workflows/forensics.md +2 -2
  200. package/sdd/workflows/health.md +4 -4
  201. package/sdd/workflows/help.md +122 -119
  202. package/sdd/workflows/import.md +276 -0
  203. package/sdd/workflows/inbox.md +387 -0
  204. package/sdd/workflows/insert-phase.md +7 -7
  205. package/sdd/workflows/list-phase-assumptions.md +4 -4
  206. package/sdd/workflows/list-workspaces.md +2 -2
  207. package/sdd/workflows/manager.md +35 -32
  208. package/sdd/workflows/map-codebase.md +7 -5
  209. package/sdd/workflows/milestone-summary.md +2 -2
  210. package/sdd/workflows/new-milestone.md +17 -9
  211. package/sdd/workflows/new-project.md +50 -25
  212. package/sdd/workflows/new-workspace.md +7 -5
  213. package/sdd/workflows/next.md +67 -11
  214. package/sdd/workflows/note.md +9 -7
  215. package/sdd/workflows/pause-work.md +75 -12
  216. package/sdd/workflows/plan-milestone-gaps.md +8 -8
  217. package/sdd/workflows/plan-phase.md +294 -42
  218. package/sdd/workflows/plant-seed.md +6 -3
  219. package/sdd/workflows/pr-branch.md +42 -14
  220. package/sdd/workflows/profile-user.md +9 -7
  221. package/sdd/workflows/progress.md +45 -45
  222. package/sdd/workflows/quick.md +195 -47
  223. package/sdd/workflows/remove-phase.md +6 -6
  224. package/sdd/workflows/remove-workspace.md +3 -1
  225. package/sdd/workflows/research-phase.md +2 -2
  226. package/sdd/workflows/resume-project.md +12 -12
  227. package/sdd/workflows/review.md +109 -9
  228. package/sdd/workflows/scan.md +102 -0
  229. package/sdd/workflows/secure-phase.md +166 -0
  230. package/sdd/workflows/session-report.md +2 -2
  231. package/sdd/workflows/settings.md +38 -12
  232. package/sdd/workflows/ship.md +21 -9
  233. package/sdd/workflows/stats.md +1 -1
  234. package/sdd/workflows/transition.md +23 -23
  235. package/sdd/workflows/ui-phase.md +15 -7
  236. package/sdd/workflows/ui-review.md +29 -4
  237. package/sdd/workflows/undo.md +314 -0
  238. package/sdd/workflows/update.md +171 -20
  239. package/sdd/workflows/validate-phase.md +6 -4
  240. package/sdd/workflows/verify-phase.md +210 -6
  241. package/sdd/workflows/verify-work.md +83 -9
  242. package/sdd/commands/sdd/workstreams.md +0 -63
@@ -18,12 +18,20 @@ Check which AI CLIs are available on the system:
18
18
  command -v gemini >/dev/null 2>&1 && echo "gemini:available" || echo "gemini:missing"
19
19
  command -v claude >/dev/null 2>&1 && echo "claude:available" || echo "claude:missing"
20
20
  command -v codex >/dev/null 2>&1 && echo "codex:available" || echo "codex:missing"
21
+ command -v coderabbit >/dev/null 2>&1 && echo "coderabbit:available" || echo "coderabbit:missing"
22
+ command -v opencode >/dev/null 2>&1 && echo "opencode:available" || echo "opencode:missing"
23
+ command -v qwen >/dev/null 2>&1 && echo "qwen:available" || echo "qwen:missing"
24
+ command -v cursor >/dev/null 2>&1 && echo "cursor:available" || echo "cursor:missing"
21
25
  ```
22
26
 
23
27
  Parse flags from `$ARGUMENTS`:
24
28
  - `--gemini` → include Gemini
25
29
  - `--claude` → include Claude
26
30
  - `--codex` → include Codex
31
+ - `--coderabbit` → include CodeRabbit
32
+ - `--opencode` → include OpenCode
33
+ - `--qwen` → include Qwen Code
34
+ - `--cursor` → include Cursor
27
35
  - `--all` → include all available
28
36
  - No flags → include all available
29
37
 
@@ -33,13 +41,36 @@ No external AI CLIs found. Install at least one:
33
41
  - gemini: https://github.com/google-gemini/gemini-cli
34
42
  - codex: https://github.com/openai/codex
35
43
  - claude: https://github.com/anthropics/claude-code
44
+ - opencode: https://opencode.ai (leverages GitHub Copilot subscription models)
45
+ - qwen: https://github.com/nicepkg/qwen-code (Alibaba Qwen models)
46
+ - cursor: https://cursor.com (Cursor IDE agent mode)
36
47
 
37
- Then run /sdd:review again.
48
+ Then run /sdd-review again.
38
49
  ```
39
50
  Exit.
40
51
 
41
- If only one CLI is the current runtime (e.g. running inside Claude), skip it for the review
42
- to ensure independence. At least one DIFFERENT CLI must be available.
52
+ Determine which CLI to skip based on the current runtime environment:
53
+
54
+ ```bash
55
+ # Environment-based runtime detection (priority order)
56
+ if [ "$ANTIGRAVITY_AGENT" = "1" ]; then
57
+ # Antigravity is a separate client — all CLIs are external, skip none
58
+ SELF_CLI="none"
59
+ elif [ -n "$CLAUDE_CODE_ENTRYPOINT" ]; then
60
+ # Running inside Claude Code CLI — skip claude for independence
61
+ SELF_CLI="claude"
62
+ else
63
+ # Other environments (Gemini CLI, Codex CLI, etc.)
64
+ # Fall back to AI self-identification to decide which CLI to skip
65
+ SELF_CLI="auto"
66
+ fi
67
+ ```
68
+
69
+ Rules:
70
+ - If `SELF_CLI="none"` → invoke ALL available CLIs (no skip)
71
+ - If `SELF_CLI="claude"` → skip claude, use gemini/codex
72
+ - If `SELF_CLI="auto"` → the executing AI identifies itself and skips its own CLI
73
+ - At least one DIFFERENT CLI must be available for the review to proceed.
43
74
  </step>
44
75
 
45
76
  <step name="gather_context">
@@ -114,21 +145,78 @@ Write to a temp file: `/tmp/sdd-review-prompt-{phase}.md`
114
145
  </step>
115
146
 
116
147
  <step name="invoke_reviewers">
148
+ Read model preferences from planning config. Null/missing values fall back to CLI defaults.
149
+
150
+ ```bash
151
+ GEMINI_MODEL=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" config-get review.models.gemini --raw 2>/dev/null || true)
152
+ CLAUDE_MODEL=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" config-get review.models.claude --raw 2>/dev/null || true)
153
+ CODEX_MODEL=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" config-get review.models.codex --raw 2>/dev/null || true)
154
+ OPENCODE_MODEL=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" config-get review.models.opencode --raw 2>/dev/null || true)
155
+ ```
156
+
117
157
  For each selected CLI, invoke in sequence (not parallel — avoid rate limits):
118
158
 
119
159
  **Gemini:**
120
160
  ```bash
121
- gemini -p "$(cat /tmp/sdd-review-prompt-{phase}.md)" 2>/dev/null > /tmp/sdd-review-gemini-{phase}.md
161
+ if [ -n "$GEMINI_MODEL" ] && [ "$GEMINI_MODEL" != "null" ]; then
162
+ gemini -m "$GEMINI_MODEL" -p "$(cat /tmp/sdd-review-prompt-{phase}.md)" 2>/dev/null > /tmp/sdd-review-gemini-{phase}.md
163
+ else
164
+ gemini -p "$(cat /tmp/sdd-review-prompt-{phase}.md)" 2>/dev/null > /tmp/sdd-review-gemini-{phase}.md
165
+ fi
122
166
  ```
123
167
 
124
168
  **Claude (separate session):**
125
169
  ```bash
126
- claude -p "$(cat /tmp/sdd-review-prompt-{phase}.md)" --no-input 2>/dev/null > /tmp/sdd-review-claude-{phase}.md
170
+ if [ -n "$CLAUDE_MODEL" ] && [ "$CLAUDE_MODEL" != "null" ]; then
171
+ claude --model "$CLAUDE_MODEL" -p "$(cat /tmp/sdd-review-prompt-{phase}.md)" 2>/dev/null > /tmp/sdd-review-claude-{phase}.md
172
+ else
173
+ claude -p "$(cat /tmp/sdd-review-prompt-{phase}.md)" 2>/dev/null > /tmp/sdd-review-claude-{phase}.md
174
+ fi
127
175
  ```
128
176
 
129
177
  **Codex:**
130
178
  ```bash
131
- codex exec --skip-git-repo-check "$(cat /tmp/sdd-review-prompt-{phase}.md)" 2>/dev/null > /tmp/sdd-review-codex-{phase}.md
179
+ if [ -n "$CODEX_MODEL" ] && [ "$CODEX_MODEL" != "null" ]; then
180
+ codex exec --model "$CODEX_MODEL" --skip-git-repo-check "$(cat /tmp/sdd-review-prompt-{phase}.md)" 2>/dev/null > /tmp/sdd-review-codex-{phase}.md
181
+ else
182
+ codex exec --skip-git-repo-check "$(cat /tmp/sdd-review-prompt-{phase}.md)" 2>/dev/null > /tmp/sdd-review-codex-{phase}.md
183
+ fi
184
+ ```
185
+
186
+ **CodeRabbit:**
187
+
188
+ Note: CodeRabbit reviews the current git diff/working tree — it does not accept a prompt or model flag. It may take up to 5 minutes. Use `timeout: 360000` on the Bash tool call.
189
+
190
+ ```bash
191
+ coderabbit review --prompt-only 2>/dev/null > /tmp/sdd-review-coderabbit-{phase}.md
192
+ ```
193
+
194
+ **OpenCode (via GitHub Copilot):**
195
+ ```bash
196
+ if [ -n "$OPENCODE_MODEL" ] && [ "$OPENCODE_MODEL" != "null" ]; then
197
+ cat /tmp/sdd-review-prompt-{phase}.md | opencode run --model "$OPENCODE_MODEL" - 2>/dev/null > /tmp/sdd-review-opencode-{phase}.md
198
+ else
199
+ cat /tmp/sdd-review-prompt-{phase}.md | opencode run - 2>/dev/null > /tmp/sdd-review-opencode-{phase}.md
200
+ fi
201
+ if [ ! -s /tmp/sdd-review-opencode-{phase}.md ]; then
202
+ echo "OpenCode review failed or returned empty output." > /tmp/sdd-review-opencode-{phase}.md
203
+ fi
204
+ ```
205
+
206
+ **Qwen Code:**
207
+ ```bash
208
+ qwen "$(cat /tmp/sdd-review-prompt-{phase}.md)" 2>/dev/null > /tmp/sdd-review-qwen-{phase}.md
209
+ if [ ! -s /tmp/sdd-review-qwen-{phase}.md ]; then
210
+ echo "Qwen review failed or returned empty output." > /tmp/sdd-review-qwen-{phase}.md
211
+ fi
212
+ ```
213
+
214
+ **Cursor:**
215
+ ```bash
216
+ cat /tmp/sdd-review-prompt-{phase}.md | cursor agent -p --mode ask --trust 2>/dev/null > /tmp/sdd-review-cursor-{phase}.md
217
+ if [ ! -s /tmp/sdd-review-cursor-{phase}.md ]; then
218
+ echo "Cursor review failed or returned empty output." > /tmp/sdd-review-cursor-{phase}.md
219
+ fi
132
220
  ```
133
221
 
134
222
  If a CLI fails, log the error and continue with remaining CLIs.
@@ -150,7 +238,7 @@ Combine all review responses into `{phase_dir}/{padded_phase}-REVIEWS.md`:
150
238
  ```markdown
151
239
  ---
152
240
  phase: {N}
153
- reviewers: [gemini, claude, codex]
241
+ reviewers: [gemini, claude, codex, coderabbit, opencode, qwen, cursor]
154
242
  reviewed_at: {ISO timestamp}
155
243
  plans_reviewed: [{list of PLAN.md files}]
156
244
  ---
@@ -175,6 +263,18 @@ plans_reviewed: [{list of PLAN.md files}]
175
263
 
176
264
  ---
177
265
 
266
+ ## CodeRabbit Review
267
+
268
+ {coderabbit review content}
269
+
270
+ ---
271
+
272
+ ## OpenCode Review
273
+
274
+ {opencode review content}
275
+
276
+ ---
277
+
178
278
  ## Consensus Summary
179
279
 
180
280
  {synthesize common concerns across all reviewers}
@@ -211,7 +311,7 @@ Consensus concerns:
211
311
  Full review: {padded_phase}-REVIEWS.md
212
312
 
213
313
  To incorporate feedback into planning:
214
- /sdd:plan-phase {N} --reviews
314
+ /sdd-plan-phase {N} --reviews
215
315
  ```
216
316
 
217
317
  Clean up temp files.
@@ -224,5 +324,5 @@ Clean up temp files.
224
324
  - [ ] REVIEWS.md written with structured feedback
225
325
  - [ ] Consensus summary synthesized from multiple reviewers
226
326
  - [ ] Temp files cleaned up
227
- - [ ] User knows how to use feedback (/sdd:plan-phase --reviews)
327
+ - [ ] User knows how to use feedback (/sdd-plan-phase --reviews)
228
328
  </success_criteria>
@@ -0,0 +1,102 @@
1
+ <purpose>
2
+ Lightweight codebase assessment. Spawns a single sdd-codebase-mapper agent for one focus area,
3
+ producing targeted documents in `.planning/codebase/`.
4
+ </purpose>
5
+
6
+ <required_reading>
7
+ Read all files referenced by the invoking prompt's execution_context before starting.
8
+ </required_reading>
9
+
10
+ <available_agent_types>
11
+ Valid SDD subagent types (use exact names — do not fall back to 'general-purpose'):
12
+ - sdd-codebase-mapper — Maps project structure and dependencies
13
+ </available_agent_types>
14
+
15
+ <process>
16
+
17
+ ## Focus-to-Document Mapping
18
+
19
+ | Focus | Documents Produced |
20
+ |-------|-------------------|
21
+ | `tech` | STACK.md, INTEGRATIONS.md |
22
+ | `arch` | ARCHITECTURE.md, STRUCTURE.md |
23
+ | `quality` | CONVENTIONS.md, TESTING.md |
24
+ | `concerns` | CONCERNS.md |
25
+ | `tech+arch` | STACK.md, INTEGRATIONS.md, ARCHITECTURE.md, STRUCTURE.md |
26
+
27
+ ## Step 1: Parse arguments and resolve focus
28
+
29
+ Parse the user's input for `--focus <area>`. Default to `tech+arch` if not specified.
30
+
31
+ Validate that the focus is one of: `tech`, `arch`, `quality`, `concerns`, `tech+arch`.
32
+
33
+ If invalid:
34
+ ```
35
+ Unknown focus area: "{input}". Valid options: tech, arch, quality, concerns, tech+arch
36
+ ```
37
+ Exit.
38
+
39
+ ## Step 2: Check for existing documents
40
+
41
+ ```bash
42
+ INIT=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" init map-codebase 2>/dev/null || echo "{}")
43
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
44
+ ```
45
+
46
+ Look up which documents would be produced for the selected focus (from the mapping table above).
47
+
48
+ For each target document, check if it already exists in `.planning/codebase/`:
49
+ ```bash
50
+ ls -la .planning/codebase/{DOCUMENT}.md 2>/dev/null
51
+ ```
52
+
53
+ If any exist, show their modification dates and ask:
54
+ ```
55
+ Existing documents found:
56
+ - STACK.md (modified 2026-04-03)
57
+ - INTEGRATIONS.md (modified 2026-04-01)
58
+
59
+ Overwrite with fresh scan? [y/N]
60
+ ```
61
+
62
+ If user says no, exit.
63
+
64
+ ## Step 3: Create output directory
65
+
66
+ ```bash
67
+ mkdir -p .planning/codebase
68
+ ```
69
+
70
+ ## Step 4: Spawn mapper agent
71
+
72
+ Spawn a single `sdd-codebase-mapper` agent with the selected focus area:
73
+
74
+ ```
75
+ Task(
76
+ prompt="Scan this codebase with focus: {focus}. Write results to .planning/codebase/. Produce only: {document_list}",
77
+ subagent_type="sdd-codebase-mapper",
78
+ model="{resolved_model}"
79
+ )
80
+ ```
81
+
82
+ ## Step 5: Report
83
+
84
+ ```
85
+ ## Scan Complete
86
+
87
+ **Focus:** {focus}
88
+ **Documents produced:**
89
+ {list of documents written with line counts}
90
+
91
+ Use `/sdd-map-codebase` for a comprehensive 4-area parallel scan.
92
+ ```
93
+
94
+ </process>
95
+
96
+ <success_criteria>
97
+ - [ ] Focus area correctly parsed (default: tech+arch)
98
+ - [ ] Existing documents detected with modification dates shown
99
+ - [ ] User prompted before overwriting
100
+ - [ ] Single mapper agent spawned with correct focus
101
+ - [ ] Output documents written to .planning/codebase/
102
+ </success_criteria>
@@ -0,0 +1,166 @@
1
+ <purpose>
2
+ Verify threat mitigations for a completed phase. Confirm PLAN.md threat register dispositions are resolved. Update SECURITY.md.
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ @~/.claude/sdd/references/ui-brand.md
7
+ </required_reading>
8
+
9
+ <available_agent_types>
10
+ Valid SDD subagent types (use exact names — do not fall back to 'general-purpose'):
11
+ - sdd-security-auditor — Verifies threat mitigation coverage
12
+ </available_agent_types>
13
+
14
+ <process>
15
+
16
+ ## 0. Initialize
17
+
18
+ ```bash
19
+ INIT=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" init phase-op "${PHASE_ARG}")
20
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
21
+ AGENT_SKILLS_AUDITOR=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" agent-skills sdd-security-auditor 2>/dev/null)
22
+ ```
23
+
24
+ Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`.
25
+
26
+ ```bash
27
+ AUDITOR_MODEL=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" resolve-model sdd-security-auditor --raw)
28
+ SECURITY_CFG=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" config-get workflow.security_enforcement --raw 2>/dev/null || echo "true")
29
+ ```
30
+
31
+ If `SECURITY_CFG` is `false`: exit with "Security enforcement disabled. Enable via /sdd-settings."
32
+
33
+ Display banner: `SDD > SECURE PHASE {N}: {name}`
34
+
35
+ ## 1. Detect Input State
36
+
37
+ ```bash
38
+ SECURITY_FILE=$(ls "${PHASE_DIR}"/*-SECURITY.md 2>/dev/null | head -1)
39
+ PLAN_FILES=$(ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null)
40
+ SUMMARY_FILES=$(ls "${PHASE_DIR}"/*-SUMMARY.md 2>/dev/null)
41
+ ```
42
+
43
+ - **State A** (`SECURITY_FILE` non-empty): Audit existing
44
+ - **State B** (`SECURITY_FILE` empty, `PLAN_FILES` and `SUMMARY_FILES` non-empty): Run from artifacts
45
+ - **State C** (`SUMMARY_FILES` empty): Exit — "Phase {N} not executed. Run /sdd-execute-phase {N} first."
46
+
47
+ ## 2. Discovery
48
+
49
+ ### 2a. Read Phase Artifacts
50
+
51
+ Read PLAN.md — extract `<threat_model>` block: trust boundaries, STRIDE register (`threat_id`, `category`, `component`, `disposition`, `mitigation_plan`).
52
+
53
+ ### 2b. Read Summary Threat Flags
54
+
55
+ Read SUMMARY.md — extract `## Threat Flags` entries.
56
+
57
+ ### 2c. Build Threat Register
58
+
59
+ Per threat: `{ threat_id, category, component, disposition, mitigation_pattern, files_to_check }`
60
+
61
+ ## 3. Threat Classification
62
+
63
+ Classify each threat:
64
+
65
+ | Status | Criteria |
66
+ |--------|----------|
67
+ | CLOSED | mitigation found OR accepted risk documented in SECURITY.md OR transfer documented |
68
+ | OPEN | none of the above |
69
+
70
+ Build: `{ threat_id, category, component, disposition, status, evidence }`
71
+
72
+ If `threats_open: 0` → skip to Step 6 directly.
73
+
74
+ ## 4. Present Threat Plan
75
+
76
+
77
+ **Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
78
+ Call AskUserQuestion with threat table and options:
79
+ 1. "Verify all open threats" → Step 5
80
+ 2. "Accept all open — document in accepted risks log" → add to SECURITY.md accepted risks, set all CLOSED, Step 6
81
+ 3. "Cancel" → exit
82
+
83
+ ## 5. Spawn sdd-security-auditor
84
+
85
+ ```
86
+ Task(
87
+ prompt="Read ~/.claude/agents/sdd-security-auditor.md for instructions.\n\n" +
88
+ "<files_to_read>{PLAN, SUMMARY, impl files, SECURITY.md}</files_to_read>" +
89
+ "<threat_register>{threat register}</threat_register>" +
90
+ "<config>asvs_level: {SECURITY_ASVS}, block_on: {SECURITY_BLOCK_ON}</config>" +
91
+ "<constraints>Never modify implementation files. Verify mitigations exist — do not scan for new threats. Escalate implementation gaps.</constraints>" +
92
+ "${AGENT_SKILLS_AUDITOR}",
93
+ subagent_type="sdd-security-auditor",
94
+ model="{AUDITOR_MODEL}",
95
+ description="Verify threat mitigations for Phase {N}"
96
+ )
97
+ ```
98
+
99
+ Handle return:
100
+ - `## SECURED` → record closures → Step 6
101
+ - `## OPEN_THREATS` → record closed + open, present user with accept/block choice → Step 6
102
+ - `## ESCALATE` → present to user → Step 6
103
+
104
+ ## 6. Write/Update SECURITY.md
105
+
106
+ **State B (create):**
107
+ 1. Read template from `~/.claude/sdd/templates/SECURITY.md`
108
+ 2. Fill: frontmatter, threat register, accepted risks, audit trail
109
+ 3. Write to `${PHASE_DIR}/${PADDED_PHASE}-SECURITY.md`
110
+
111
+ **State A (update):**
112
+ 1. Update threat register statuses, append to audit trail:
113
+
114
+ ```markdown
115
+ ## Security Audit {date}
116
+ | Metric | Count |
117
+ |--------|-------|
118
+ | Threats found | {N} |
119
+ | Closed | {M} |
120
+ | Open | {K} |
121
+ ```
122
+
123
+ **ENFORCING GATE:** If `threats_open > 0` after all options exhausted (user did not accept, not all verified closed):
124
+
125
+ ```
126
+ SDD > PHASE {N} SECURITY BLOCKED
127
+ {K} threats open — phase advancement blocked until threats_open: 0
128
+ ▶ Fix mitigations then re-run: /sdd-secure-phase {N}
129
+ ▶ Or document accepted risks in SECURITY.md and re-run.
130
+ ```
131
+
132
+ Do NOT emit next-phase routing. Stop here.
133
+
134
+ ## 7. Commit
135
+
136
+ ```bash
137
+ node "$HOME/.claude/sdd/bin/sdd-tools.cjs" commit "docs(phase-${PHASE}): add/update security threat verification"
138
+ ```
139
+
140
+ ## 8. Results + Routing
141
+
142
+ **Secured (threats_open: 0):**
143
+ ```
144
+ SDD > PHASE {N} THREAT-SECURE
145
+ threats_open: 0 — all threats have dispositions.
146
+ ▶ /sdd-validate-phase {N} validate test coverage
147
+ ▶ /sdd-verify-work {N} run UAT
148
+ ```
149
+
150
+ Display `/clear` reminder.
151
+
152
+ </process>
153
+
154
+ <success_criteria>
155
+ - [ ] Security enforcement checked — exit if false
156
+ - [ ] Input state detected (A/B/C) — state C exits cleanly
157
+ - [ ] PLAN.md threat model parsed, register built
158
+ - [ ] SUMMARY.md threat flags incorporated
159
+ - [ ] threats_open: 0 → skip directly to Step 6
160
+ - [ ] User gate with threat table presented
161
+ - [ ] Auditor spawned with complete context
162
+ - [ ] All three return formats (SECURED/OPEN_THREATS/ESCALATE) handled
163
+ - [ ] SECURITY.md created or updated
164
+ - [ ] threats_open > 0 BLOCKS advancement (no next-phase routing emitted)
165
+ - [ ] Results with routing presented on success
166
+ </success_criteria>
@@ -110,7 +110,7 @@ Write `.planning/reports/SESSION_REPORT.md` (or `.planning/reports/YYYYMMDD-sess
110
110
 
111
111
  ---
112
112
 
113
- *Generated by `/sdd:session-report`*
113
+ *Generated by `/sdd-session-report`*
114
114
  ```
115
115
  </step>
116
116
 
@@ -131,7 +131,7 @@ Show the user:
131
131
 
132
132
  If this is the first report, mention:
133
133
  ```
134
- 💡 Run `/sdd:session-report` at the end of each session to build a history of project activity.
134
+ 💡 Run `/sdd-session-report` at the end of each session to build a history of project activity.
135
135
  ```
136
136
  </step>
137
137
 
@@ -31,12 +31,16 @@ Parse current values (default to `true` if not present):
31
31
  - `workflow.verifier` — spawn verifier during execute-phase
32
32
  - `workflow.nyquist_validation` — validation architecture research during plan-phase (default: true if absent)
33
33
  - `workflow.ui_phase` — generate UI-SPEC.md design contracts for frontend phases (default: true if absent)
34
- - `workflow.ui_safety_gate` — prompt to run /sdd:ui-phase before planning frontend phases (default: true if absent)
34
+ - `workflow.ui_safety_gate` — prompt to run /sdd-ui-phase before planning frontend phases (default: true if absent)
35
+ - `workflow.ai_integration_phase` — framework selection + eval strategy for AI phases (default: true if absent)
35
36
  - `model_profile` — which model each agent uses (default: `balanced`)
36
37
  - `git.branching_strategy` — branching approach (default: `"none"`)
38
+ - `workflow.use_worktrees` — whether parallel executor agents run in worktree isolation (default: `true`)
37
39
  </step>
38
40
 
39
41
  <step name="present_settings">
42
+
43
+ **Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
40
44
  Use AskUserQuestion with current values pre-selected:
41
45
 
42
46
  ```
@@ -109,14 +113,23 @@ AskUserQuestion([
109
113
  ]
110
114
  },
111
115
  {
112
- question: "Enable UI Safety Gate? (prompts to run /sdd:ui-phase before planning frontend phases)",
116
+ question: "Enable UI Safety Gate? (prompts to run /sdd-ui-phase before planning frontend phases)",
113
117
  header: "UI Gate",
114
118
  multiSelect: false,
115
119
  options: [
116
- { label: "Yes (Recommended)", description: "plan-phase asks to run /sdd:ui-phase first when frontend indicators detected." },
120
+ { label: "Yes (Recommended)", description: "plan-phase asks to run /sdd-ui-phase first when frontend indicators detected." },
117
121
  { label: "No", description: "No prompt — plan-phase proceeds without UI-SPEC check." }
118
122
  ]
119
123
  },
124
+ {
125
+ question: "Enable AI Phase? (framework selection + eval strategy for AI phases)",
126
+ header: "AI Phase",
127
+ multiSelect: false,
128
+ options: [
129
+ { label: "Yes (Recommended)", description: "Run /sdd-ai-phase before planning AI system phases. Surfaces the right framework, researches its docs, and designs the evaluation strategy." },
130
+ { label: "No", description: "Skip AI design contract. Good for non-AI phases or when framework is already decided." }
131
+ ]
132
+ },
120
133
  {
121
134
  question: "Git branching strategy?",
122
135
  header: "Branching",
@@ -151,7 +164,16 @@ AskUserQuestion([
151
164
  multiSelect: false,
152
165
  options: [
153
166
  { label: "No (Recommended)", description: "Run smart discuss before each phase — surfaces gray areas and captures decisions." },
154
- { label: "Yes", description: "Skip discuss in /sdd:autonomous — chain directly to plan. Best for backend/pipeline work where phase descriptions are the spec." }
167
+ { label: "Yes", description: "Skip discuss in /sdd-autonomous — chain directly to plan. Best for backend/pipeline work where phase descriptions are the spec." }
168
+ ]
169
+ },
170
+ {
171
+ question: "Use git worktrees for parallel agent isolation?",
172
+ header: "Worktrees",
173
+ multiSelect: false,
174
+ options: [
175
+ { label: "Yes (Recommended)", description: "Each parallel executor runs in its own worktree branch — no conflicts between agents." },
176
+ { label: "No", description: "Disable worktree isolation. Agents run sequentially on the main working tree. Use if EnterWorktree creates branches from wrong base (known cross-platform issue)." }
155
177
  ]
156
178
  }
157
179
  ])
@@ -164,7 +186,7 @@ Merge new settings into existing config.json:
164
186
  ```json
165
187
  {
166
188
  ...existing_config,
167
- "model_profile": "quality" | "balanced" | "budget" | "inherit",
189
+ "model_profile": "quality" | "balanced" | "budget" | "adaptive" | "inherit",
168
190
  "workflow": {
169
191
  "research": true/false,
170
192
  "plan_check": true/false,
@@ -173,10 +195,12 @@ Merge new settings into existing config.json:
173
195
  "nyquist_validation": true/false,
174
196
  "ui_phase": true/false,
175
197
  "ui_safety_gate": true/false,
198
+ "ai_integration_phase": true/false,
176
199
  "text_mode": true/false,
177
200
  "research_before_questions": true/false,
178
201
  "discuss_mode": "discuss" | "assumptions",
179
- "skip_discuss": true/false
202
+ "skip_discuss": true/false,
203
+ "use_worktrees": true/false
180
204
  },
181
205
  "git": {
182
206
  "branching_strategy": "none" | "phase" | "milestone",
@@ -233,6 +257,7 @@ Write `~/.sdd/defaults.json` with:
233
257
  "nyquist_validation": <current>,
234
258
  "ui_phase": <current>,
235
259
  "ui_safety_gate": <current>,
260
+ "ai_integration_phase": <current>,
236
261
  "skip_discuss": <current>
237
262
  }
238
263
  }
@@ -257,18 +282,19 @@ Display:
257
282
  | Nyquist Validation | {On/Off} |
258
283
  | UI Phase | {On/Off} |
259
284
  | UI Safety Gate | {On/Off} |
285
+ | AI Integration Phase | {On/Off} |
260
286
  | Git Branching | {None/Per Phase/Per Milestone} |
261
287
  | Skip Discuss | {On/Off} |
262
288
  | Context Warnings | {On/Off} |
263
289
  | Saved as Defaults | {Yes/No} |
264
290
 
265
- These settings apply to future /sdd:plan-phase and /sdd:execute-phase runs.
291
+ These settings apply to future /sdd-plan-phase and /sdd-execute-phase runs.
266
292
 
267
293
  Quick commands:
268
- - /sdd:set-profile <profile> — switch model profile
269
- - /sdd:plan-phase --research — force research
270
- - /sdd:plan-phase --skip-research — skip research
271
- - /sdd:plan-phase --skip-verify — skip plan check
294
+ - /sdd-set-profile <profile> — switch model profile
295
+ - /sdd-plan-phase --research — force research
296
+ - /sdd-plan-phase --skip-research — skip research
297
+ - /sdd-plan-phase --skip-verify — skip plan check
272
298
  ```
273
299
  </step>
274
300
 
@@ -276,7 +302,7 @@ Quick commands:
276
302
 
277
303
  <success_criteria>
278
304
  - [ ] Current config read
279
- - [ ] User presented with 10 settings (profile + 8 workflow toggles + git branching)
305
+ - [ ] User presented with 14 settings (profile + 11 workflow toggles + git branching + ctx warnings)
280
306
  - [ ] Config updated with model_profile, workflow, and git sections
281
307
  - [ ] User offered to save as global defaults (~/.sdd/defaults.json)
282
308
  - [ ] Changes confirmed to user
@@ -24,6 +24,15 @@ CONFIG=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" state load)
24
24
  ```
25
25
 
26
26
  Extract: `branching_strategy`, `branch_name`.
27
+
28
+ Detect base branch for PRs and merges:
29
+ ```bash
30
+ BASE_BRANCH=$(node "$HOME/.claude/sdd/bin/sdd-tools.cjs" config-get git.base_branch 2>/dev/null || echo "")
31
+ if [ -z "$BASE_BRANCH" ] || [ "$BASE_BRANCH" = "null" ]; then
32
+ BASE_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|^refs/remotes/origin/||')
33
+ BASE_BRANCH="${BASE_BRANCH:-main}"
34
+ fi
35
+ ```
27
36
  </step>
28
37
 
29
38
  <step name="preflight_checks">
@@ -46,7 +55,7 @@ Verify the work is ready to ship:
46
55
  ```bash
47
56
  CURRENT_BRANCH=$(git branch --show-current)
48
57
  ```
49
- If on `main`/`master`: warn — should be on a feature branch.
58
+ If on `${BASE_BRANCH}`: warn — should be on a feature branch.
50
59
  If branching_strategy is `none`: offer to create a branch now.
51
60
 
52
61
  4. **Remote configured?**
@@ -74,7 +83,7 @@ If push fails (e.g., no upstream): set upstream:
74
83
  git push --set-upstream origin ${CURRENT_BRANCH} 2>&1
75
84
  ```
76
85
 
77
- Report: "Pushed `{branch}` to origin ({commit_count} commits ahead of main)"
86
+ Report: "Pushed `{branch}` to origin ({commit_count} commits ahead of ${BASE_BRANCH})"
78
87
  </step>
79
88
 
80
89
  <step name="generate_pr_body">
@@ -141,7 +150,7 @@ Create the PR using the generated body:
141
150
  gh pr create \
142
151
  --title "Phase ${PHASE_NUMBER}: ${PHASE_NAME}" \
143
152
  --body "${PR_BODY}" \
144
- --base main
153
+ --base ${BASE_BRANCH}
145
154
  ```
146
155
 
147
156
  If `--draft` flag was passed: add `--draft`.
@@ -152,6 +161,9 @@ Report: "PR #{number} created: {url}"
152
161
  <step name="optional_review">
153
162
  Ask if user wants to trigger a code review:
154
163
 
164
+
165
+ **Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
166
+
155
167
  ```
156
168
  AskUserQuestion:
157
169
  question: "PR created. Run a code review before merge?"
@@ -194,7 +206,7 @@ node "$HOME/.claude/sdd/bin/sdd-tools.cjs" commit "docs(${padded_phase}): ship p
194
206
  ## ✓ Phase {X}: {Name} — Shipped
195
207
 
196
208
  PR: #{number} ({url})
197
- Branch: {branch} → main
209
+ Branch: {branch} → ${BASE_BRANCH}
198
210
  Commits: {count}
199
211
  Verification: ✓ Passed
200
212
  Requirements: {N} REQ-IDs addressed
@@ -202,8 +214,8 @@ Requirements: {N} REQ-IDs addressed
202
214
  Next steps:
203
215
  - Review/approve PR
204
216
  - Merge when CI passes
205
- - /sdd:complete-milestone (if last phase in milestone)
206
- - /sdd:progress (to see what's next)
217
+ - /sdd-complete-milestone (if last phase in milestone)
218
+ - /sdd-progress (to see what's next)
207
219
 
208
220
  ───────────────────────────────────────────────────────────────
209
221
  ```
@@ -214,9 +226,9 @@ Next steps:
214
226
  <offer_next>
215
227
  After shipping:
216
228
 
217
- - /sdd:complete-milestone — if all phases in milestone are done
218
- - /sdd:progress — see overall project state
219
- - /sdd:execute-phase {next} — continue to next phase
229
+ - /sdd-complete-milestone — if all phases in milestone are done
230
+ - /sdd-progress — see overall project state
231
+ - /sdd-execute-phase {next} — continue to next phase
220
232
  </offer_next>
221
233
 
222
234
  <success_criteria>