@arimakouyou/spec-workflow-mcp 2.2.7

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 (472) hide show
  1. package/.claude-plugin/.mcp.json +8 -0
  2. package/.claude-plugin/agents/code-simplifier.md +80 -0
  3. package/.claude-plugin/agents/integ-test-auditor.md +91 -0
  4. package/.claude-plugin/agents/integ-test-worker.md +73 -0
  5. package/.claude-plugin/agents/parallel-worker.md +136 -0
  6. package/.claude-plugin/agents/review-worker.md +279 -0
  7. package/.claude-plugin/agents/unit-test-engineer.md +148 -0
  8. package/.claude-plugin/agents/wave-harness-worker.md +158 -0
  9. package/.claude-plugin/hooks/hooks.json +16 -0
  10. package/.claude-plugin/hooks/tasks-read-guard.sh +17 -0
  11. package/.claude-plugin/marketplace.json +33 -0
  12. package/.claude-plugin/plugin.json +11 -0
  13. package/.claude-plugin/rules/axum.md +154 -0
  14. package/.claude-plugin/rules/cargo-toml.md +63 -0
  15. package/.claude-plugin/rules/context7.md +17 -0
  16. package/.claude-plugin/rules/design-conformance.md +82 -0
  17. package/.claude-plugin/rules/design-principles.md +53 -0
  18. package/.claude-plugin/rules/diesel.md +176 -0
  19. package/.claude-plugin/rules/feedback-loop.md +33 -0
  20. package/.claude-plugin/rules/leptos.md +319 -0
  21. package/.claude-plugin/rules/project-architecture.md +134 -0
  22. package/.claude-plugin/rules/quality-checks.md +265 -0
  23. package/.claude-plugin/rules/rust-style.md +242 -0
  24. package/.claude-plugin/rules/security.md +67 -0
  25. package/.claude-plugin/rules/spec-workflow-enforcement.md +47 -0
  26. package/.claude-plugin/rules/valkey.md +167 -0
  27. package/.claude-plugin/skills/integration-test/SKILL.md +230 -0
  28. package/.claude-plugin/skills/integration-test/references/auditor-prompt.md +78 -0
  29. package/.claude-plugin/skills/integration-test/references/external-api-mock.md +98 -0
  30. package/.claude-plugin/skills/integration-test/references/fixture-catalog.md +155 -0
  31. package/.claude-plugin/skills/integration-test/references/parallel-execution.md +124 -0
  32. package/.claude-plugin/skills/integration-test/references/quality-gate.md +80 -0
  33. package/.claude-plugin/skills/integration-test/references/test-case-design.md +88 -0
  34. package/.claude-plugin/skills/integration-test/references/test-patterns.md +215 -0
  35. package/.claude-plugin/skills/integration-test/references/whiteboard-template.md +81 -0
  36. package/.claude-plugin/skills/integration-test/references/worker-prompt.md +70 -0
  37. package/.claude-plugin/skills/knowhow-capture/SKILL.md +143 -0
  38. package/.claude-plugin/skills/phase-review-team/SKILL.md +380 -0
  39. package/.claude-plugin/skills/spec-design/SKILL.md +282 -0
  40. package/.claude-plugin/skills/spec-e2e-implement/SKILL.md +259 -0
  41. package/.claude-plugin/skills/spec-impl-code/SKILL.md +101 -0
  42. package/.claude-plugin/skills/spec-impl-review/SKILL.md +115 -0
  43. package/.claude-plugin/skills/spec-impl-test-run/SKILL.md +98 -0
  44. package/.claude-plugin/skills/spec-impl-test-write/SKILL.md +121 -0
  45. package/.claude-plugin/skills/spec-implement/SKILL.md +822 -0
  46. package/.claude-plugin/skills/spec-requirements/SKILL.md +130 -0
  47. package/.claude-plugin/skills/spec-review/SKILL.md +274 -0
  48. package/.claude-plugin/skills/spec-tasks/SKILL.md +372 -0
  49. package/.claude-plugin/skills/spec-test-design/SKILL.md +233 -0
  50. package/.claude-plugin/skills/tdd-skills/SKILL.md +95 -0
  51. package/.claude-plugin/skills/tdd-skills/references/advanced-techniques.md +49 -0
  52. package/.claude-plugin/skills/tdd-skills/references/green-strategies.md +70 -0
  53. package/.claude-plugin/skills/tdd-skills/references/tdd-and-design.md +48 -0
  54. package/.claude-plugin/skills/tdd-skills/references/test-design.md +43 -0
  55. package/.claude-plugin/skills/tdd-skills/references/test-doubles.md +53 -0
  56. package/.claude-plugin/skills/tdd-skills/references/test-patterns.md +40 -0
  57. package/.claude-plugin/skills/tdd-skills-rust/SKILL.md +128 -0
  58. package/.claude-plugin/skills/tdd-skills-rust/references/advanced-techniques.md +205 -0
  59. package/.claude-plugin/skills/tdd-skills-rust/references/green-strategies.md +166 -0
  60. package/.claude-plugin/skills/tdd-skills-rust/references/tdd-and-design.md +215 -0
  61. package/.claude-plugin/skills/tdd-skills-rust/references/test-design.md +128 -0
  62. package/.claude-plugin/skills/tdd-skills-rust/references/test-doubles.md +208 -0
  63. package/.claude-plugin/skills/tdd-skills-rust/references/test-patterns.md +223 -0
  64. package/.claude-plugin/with-dashboard/.mcp.json +8 -0
  65. package/.claude-plugin/with-dashboard/plugin.json +10 -0
  66. package/CHANGELOG.md +1007 -0
  67. package/LICENSE +674 -0
  68. package/README.ja.md +380 -0
  69. package/README.md +437 -0
  70. package/dist/__tests__/config.test.d.ts +2 -0
  71. package/dist/__tests__/config.test.d.ts.map +1 -0
  72. package/dist/__tests__/config.test.js +264 -0
  73. package/dist/__tests__/config.test.js.map +1 -0
  74. package/dist/__tests__/index-args.test.d.ts +2 -0
  75. package/dist/__tests__/index-args.test.d.ts.map +1 -0
  76. package/dist/__tests__/index-args.test.js +43 -0
  77. package/dist/__tests__/index-args.test.js.map +1 -0
  78. package/dist/__tests__/index-entrypoint.test.d.ts +2 -0
  79. package/dist/__tests__/index-entrypoint.test.d.ts.map +1 -0
  80. package/dist/__tests__/index-entrypoint.test.js +23 -0
  81. package/dist/__tests__/index-entrypoint.test.js.map +1 -0
  82. package/dist/config.d.ts +26 -0
  83. package/dist/config.d.ts.map +1 -0
  84. package/dist/config.js +188 -0
  85. package/dist/config.js.map +1 -0
  86. package/dist/core/__tests__/git-utils.test.d.ts +2 -0
  87. package/dist/core/__tests__/git-utils.test.d.ts.map +1 -0
  88. package/dist/core/__tests__/git-utils.test.js +179 -0
  89. package/dist/core/__tests__/git-utils.test.js.map +1 -0
  90. package/dist/core/__tests__/mdx-validator.test.d.ts +2 -0
  91. package/dist/core/__tests__/mdx-validator.test.d.ts.map +1 -0
  92. package/dist/core/__tests__/mdx-validator.test.js +42 -0
  93. package/dist/core/__tests__/mdx-validator.test.js.map +1 -0
  94. package/dist/core/__tests__/path-utils.test.d.ts +2 -0
  95. package/dist/core/__tests__/path-utils.test.d.ts.map +1 -0
  96. package/dist/core/__tests__/path-utils.test.js +342 -0
  97. package/dist/core/__tests__/path-utils.test.js.map +1 -0
  98. package/dist/core/__tests__/project-registry.test.d.ts +2 -0
  99. package/dist/core/__tests__/project-registry.test.d.ts.map +1 -0
  100. package/dist/core/__tests__/project-registry.test.js +62 -0
  101. package/dist/core/__tests__/project-registry.test.js.map +1 -0
  102. package/dist/core/__tests__/security-utils.test.d.ts +2 -0
  103. package/dist/core/__tests__/security-utils.test.d.ts.map +1 -0
  104. package/dist/core/__tests__/security-utils.test.js +657 -0
  105. package/dist/core/__tests__/security-utils.test.js.map +1 -0
  106. package/dist/core/__tests__/task-parser.test.d.ts +2 -0
  107. package/dist/core/__tests__/task-parser.test.d.ts.map +1 -0
  108. package/dist/core/__tests__/task-parser.test.js +222 -0
  109. package/dist/core/__tests__/task-parser.test.js.map +1 -0
  110. package/dist/core/__tests__/task-validator.test.d.ts +2 -0
  111. package/dist/core/__tests__/task-validator.test.d.ts.map +1 -0
  112. package/dist/core/__tests__/task-validator.test.js +308 -0
  113. package/dist/core/__tests__/task-validator.test.js.map +1 -0
  114. package/dist/core/archive-service.d.ts +10 -0
  115. package/dist/core/archive-service.d.ts.map +1 -0
  116. package/dist/core/archive-service.js +99 -0
  117. package/dist/core/archive-service.js.map +1 -0
  118. package/dist/core/dashboard-session.d.ts +49 -0
  119. package/dist/core/dashboard-session.d.ts.map +1 -0
  120. package/dist/core/dashboard-session.js +132 -0
  121. package/dist/core/dashboard-session.js.map +1 -0
  122. package/dist/core/git-utils.d.ts +25 -0
  123. package/dist/core/git-utils.d.ts.map +1 -0
  124. package/dist/core/git-utils.js +87 -0
  125. package/dist/core/git-utils.js.map +1 -0
  126. package/dist/core/global-dir.d.ts +44 -0
  127. package/dist/core/global-dir.d.ts.map +1 -0
  128. package/dist/core/global-dir.js +74 -0
  129. package/dist/core/global-dir.js.map +1 -0
  130. package/dist/core/implementation-log-migrator.d.ts +41 -0
  131. package/dist/core/implementation-log-migrator.d.ts.map +1 -0
  132. package/dist/core/implementation-log-migrator.js +258 -0
  133. package/dist/core/implementation-log-migrator.js.map +1 -0
  134. package/dist/core/mdx-validator.d.ts +14 -0
  135. package/dist/core/mdx-validator.d.ts.map +1 -0
  136. package/dist/core/mdx-validator.js +34 -0
  137. package/dist/core/mdx-validator.js.map +1 -0
  138. package/dist/core/parser.d.ts +11 -0
  139. package/dist/core/parser.d.ts.map +1 -0
  140. package/dist/core/parser.js +128 -0
  141. package/dist/core/parser.js.map +1 -0
  142. package/dist/core/path-utils.d.ts +68 -0
  143. package/dist/core/path-utils.d.ts.map +1 -0
  144. package/dist/core/path-utils.js +302 -0
  145. package/dist/core/path-utils.js.map +1 -0
  146. package/dist/core/project-registry.d.ts +94 -0
  147. package/dist/core/project-registry.d.ts.map +1 -0
  148. package/dist/core/project-registry.js +297 -0
  149. package/dist/core/project-registry.js.map +1 -0
  150. package/dist/core/security-utils.d.ts +99 -0
  151. package/dist/core/security-utils.d.ts.map +1 -0
  152. package/dist/core/security-utils.js +275 -0
  153. package/dist/core/security-utils.js.map +1 -0
  154. package/dist/core/task-parser.d.ts +90 -0
  155. package/dist/core/task-parser.d.ts.map +1 -0
  156. package/dist/core/task-parser.js +477 -0
  157. package/dist/core/task-parser.js.map +1 -0
  158. package/dist/core/task-validator.d.ts +37 -0
  159. package/dist/core/task-validator.d.ts.map +1 -0
  160. package/dist/core/task-validator.js +499 -0
  161. package/dist/core/task-validator.js.map +1 -0
  162. package/dist/core/workspace-initializer.d.ts +16 -0
  163. package/dist/core/workspace-initializer.d.ts.map +1 -0
  164. package/dist/core/workspace-initializer.js +168 -0
  165. package/dist/core/workspace-initializer.js.map +1 -0
  166. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts +2 -0
  167. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts.map +1 -0
  168. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js +78 -0
  169. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js.map +1 -0
  170. package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts +2 -0
  171. package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts.map +1 -0
  172. package/dist/dashboard/__tests__/multi-server-approvals-content.test.js +115 -0
  173. package/dist/dashboard/__tests__/multi-server-approvals-content.test.js.map +1 -0
  174. package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts +2 -0
  175. package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts.map +1 -0
  176. package/dist/dashboard/__tests__/watcher-error-handling.test.js +118 -0
  177. package/dist/dashboard/__tests__/watcher-error-handling.test.js.map +1 -0
  178. package/dist/dashboard/approval-storage.d.ts +139 -0
  179. package/dist/dashboard/approval-storage.d.ts.map +1 -0
  180. package/dist/dashboard/approval-storage.js +608 -0
  181. package/dist/dashboard/approval-storage.js.map +1 -0
  182. package/dist/dashboard/execution-history-manager.d.ts +52 -0
  183. package/dist/dashboard/execution-history-manager.d.ts.map +1 -0
  184. package/dist/dashboard/execution-history-manager.js +161 -0
  185. package/dist/dashboard/execution-history-manager.js.map +1 -0
  186. package/dist/dashboard/implementation-log-manager.d.ts +97 -0
  187. package/dist/dashboard/implementation-log-manager.d.ts.map +1 -0
  188. package/dist/dashboard/implementation-log-manager.js +617 -0
  189. package/dist/dashboard/implementation-log-manager.js.map +1 -0
  190. package/dist/dashboard/job-scheduler.d.ts +91 -0
  191. package/dist/dashboard/job-scheduler.d.ts.map +1 -0
  192. package/dist/dashboard/job-scheduler.js +321 -0
  193. package/dist/dashboard/job-scheduler.js.map +1 -0
  194. package/dist/dashboard/multi-server.d.ts +42 -0
  195. package/dist/dashboard/multi-server.d.ts.map +1 -0
  196. package/dist/dashboard/multi-server.js +1460 -0
  197. package/dist/dashboard/multi-server.js.map +1 -0
  198. package/dist/dashboard/parser.d.ts +18 -0
  199. package/dist/dashboard/parser.d.ts.map +1 -0
  200. package/dist/dashboard/parser.js +269 -0
  201. package/dist/dashboard/parser.js.map +1 -0
  202. package/dist/dashboard/project-manager.d.ts +82 -0
  203. package/dist/dashboard/project-manager.d.ts.map +1 -0
  204. package/dist/dashboard/project-manager.js +257 -0
  205. package/dist/dashboard/project-manager.js.map +1 -0
  206. package/dist/dashboard/public/assets/Inter-Bold-CD3Pr7BX.woff2 +0 -0
  207. package/dist/dashboard/public/assets/Inter-Medium-B_8v_WHh.woff2 +0 -0
  208. package/dist/dashboard/public/assets/Inter-Regular-DRVdRqcI.woff2 +0 -0
  209. package/dist/dashboard/public/assets/Inter-SemiBold-CtskMddL.woff2 +0 -0
  210. package/dist/dashboard/public/assets/JetBrainsMono-Bold-D4WEaHbo.woff2 +0 -0
  211. package/dist/dashboard/public/assets/JetBrainsMono-Medium-3S3k2nMz.woff2 +0 -0
  212. package/dist/dashboard/public/assets/JetBrainsMono-Regular-BQaDgvhP.woff2 +0 -0
  213. package/dist/dashboard/public/assets/Tableau10-B-NsZVaP.js +1 -0
  214. package/dist/dashboard/public/assets/apl-B4CMkyY2.js +1 -0
  215. package/dist/dashboard/public/assets/arc-a5wW942W.js +1 -0
  216. package/dist/dashboard/public/assets/array-BKyUJesY.js +1 -0
  217. package/dist/dashboard/public/assets/asciiarmor-Df11BRmG.js +1 -0
  218. package/dist/dashboard/public/assets/asn1-EdZsLKOL.js +1 -0
  219. package/dist/dashboard/public/assets/asterisk-B-8jnY81.js +1 -0
  220. package/dist/dashboard/public/assets/blockDiagram-c4efeb88-CvjTuK-w.js +118 -0
  221. package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
  222. package/dist/dashboard/public/assets/c4Diagram-c83219d4-NwVQo5kf.js +10 -0
  223. package/dist/dashboard/public/assets/channel-Bi16YZhk.js +1 -0
  224. package/dist/dashboard/public/assets/classDiagram-beda092f-BmSeXDdU.js +2 -0
  225. package/dist/dashboard/public/assets/classDiagram-v2-2358418a-D7GvvuPr.js +2 -0
  226. package/dist/dashboard/public/assets/clike-B9uivgTg.js +1 -0
  227. package/dist/dashboard/public/assets/clojure-BMjYHr_A.js +1 -0
  228. package/dist/dashboard/public/assets/clone-BpKTiq7P.js +1 -0
  229. package/dist/dashboard/public/assets/cmake-BQqOBYOt.js +1 -0
  230. package/dist/dashboard/public/assets/cobol-CWcv1MsR.js +1 -0
  231. package/dist/dashboard/public/assets/coffeescript-S37ZYGWr.js +1 -0
  232. package/dist/dashboard/public/assets/commonlisp-DBKNyK5s.js +1 -0
  233. package/dist/dashboard/public/assets/createText-1719965b-qASbqHUP.js +7 -0
  234. package/dist/dashboard/public/assets/crystal-SjHAIU92.js +1 -0
  235. package/dist/dashboard/public/assets/css-BnMrqG3P.js +1 -0
  236. package/dist/dashboard/public/assets/cypher-C_CwsFkJ.js +1 -0
  237. package/dist/dashboard/public/assets/d-pRatUO7H.js +1 -0
  238. package/dist/dashboard/public/assets/diff-DbItnlRl.js +1 -0
  239. package/dist/dashboard/public/assets/dockerfile-BKs6k2Af.js +1 -0
  240. package/dist/dashboard/public/assets/dtd-DF_7sFjM.js +1 -0
  241. package/dist/dashboard/public/assets/dylan-DwRh75JA.js +1 -0
  242. package/dist/dashboard/public/assets/ebnf-CDyGwa7X.js +1 -0
  243. package/dist/dashboard/public/assets/ecl-Cabwm37j.js +1 -0
  244. package/dist/dashboard/public/assets/edges-96097737-BItTSnH7.js +4 -0
  245. package/dist/dashboard/public/assets/eiffel-CnydiIhH.js +1 -0
  246. package/dist/dashboard/public/assets/elm-vLlmbW-K.js +1 -0
  247. package/dist/dashboard/public/assets/erDiagram-0228fc6a-DT224olg.js +51 -0
  248. package/dist/dashboard/public/assets/erlang-BNw1qcRV.js +1 -0
  249. package/dist/dashboard/public/assets/factor-kuTfRLto.js +1 -0
  250. package/dist/dashboard/public/assets/fcl-Kvtd6kyn.js +1 -0
  251. package/dist/dashboard/public/assets/flowDb-c6c81e3f-D9_ukKtv.js +10 -0
  252. package/dist/dashboard/public/assets/flowDiagram-50d868cf-CylE8siG.js +4 -0
  253. package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-B2O3JN7Y.js +1 -0
  254. package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-BCaqFKf3.js +139 -0
  255. package/dist/dashboard/public/assets/forth-Ffai-XNe.js +1 -0
  256. package/dist/dashboard/public/assets/fortran-DYz_wnZ1.js +1 -0
  257. package/dist/dashboard/public/assets/ganttDiagram-a2739b55-WQUL1QW_.js +257 -0
  258. package/dist/dashboard/public/assets/gas-Bneqetm1.js +1 -0
  259. package/dist/dashboard/public/assets/gherkin-heZmZLOM.js +1 -0
  260. package/dist/dashboard/public/assets/gitGraphDiagram-82fe8481-CttZrdmr.js +70 -0
  261. package/dist/dashboard/public/assets/graph-Ch-rVueN.js +1 -0
  262. package/dist/dashboard/public/assets/groovy-D9Dt4D0W.js +1 -0
  263. package/dist/dashboard/public/assets/haskell-Cw1EW3IL.js +1 -0
  264. package/dist/dashboard/public/assets/haxe-H-WmDvRZ.js +1 -0
  265. package/dist/dashboard/public/assets/http-DBlCnlav.js +1 -0
  266. package/dist/dashboard/public/assets/idl-BEugSyMb.js +1 -0
  267. package/dist/dashboard/public/assets/index--kbPpDKv.js +1 -0
  268. package/dist/dashboard/public/assets/index-3scDwWm6.js +1 -0
  269. package/dist/dashboard/public/assets/index-5325376f-BL2zVOJU.js +1 -0
  270. package/dist/dashboard/public/assets/index-BZdjbO25.js +1 -0
  271. package/dist/dashboard/public/assets/index-BmA_batZ.js +1 -0
  272. package/dist/dashboard/public/assets/index-Bu0u99kF.js +2 -0
  273. package/dist/dashboard/public/assets/index-Ch-lr7F4.js +1 -0
  274. package/dist/dashboard/public/assets/index-ClgWbdoq.js +1 -0
  275. package/dist/dashboard/public/assets/index-CzLwOMQ_.js +3 -0
  276. package/dist/dashboard/public/assets/index-DAOEjGO7.js +1 -0
  277. package/dist/dashboard/public/assets/index-DXqf0B9c.js +1 -0
  278. package/dist/dashboard/public/assets/index-DegWdR16.js +1 -0
  279. package/dist/dashboard/public/assets/index-DiHyYGim.js +1 -0
  280. package/dist/dashboard/public/assets/index-DlZtG7I5.js +1 -0
  281. package/dist/dashboard/public/assets/index-DmhGE2M8.js +1 -0
  282. package/dist/dashboard/public/assets/index-QEGvld4x.js +1 -0
  283. package/dist/dashboard/public/assets/index-RfZPGAJu.js +1 -0
  284. package/dist/dashboard/public/assets/index-UybBj_7u.js +319 -0
  285. package/dist/dashboard/public/assets/index-bVekzPnl.js +7 -0
  286. package/dist/dashboard/public/assets/index-f5bysQzW.css +1 -0
  287. package/dist/dashboard/public/assets/infoDiagram-8eee0895-DjzkkE3o.js +7 -0
  288. package/dist/dashboard/public/assets/init-Gi6I4Gst.js +1 -0
  289. package/dist/dashboard/public/assets/javascript-iXu5QeM3.js +1 -0
  290. package/dist/dashboard/public/assets/journeyDiagram-c64418c1-CxPZkNdB.js +139 -0
  291. package/dist/dashboard/public/assets/julia-DuME0IfC.js +1 -0
  292. package/dist/dashboard/public/assets/katex-XbL3y5x-.js +261 -0
  293. package/dist/dashboard/public/assets/layout-DX7DNTRm.js +1 -0
  294. package/dist/dashboard/public/assets/line-DfvpmKOn.js +1 -0
  295. package/dist/dashboard/public/assets/linear-gQbBPHO5.js +1 -0
  296. package/dist/dashboard/public/assets/livescript-BwQOo05w.js +1 -0
  297. package/dist/dashboard/public/assets/lua-BgMRiT3U.js +1 -0
  298. package/dist/dashboard/public/assets/mathematica-DTrFuWx2.js +1 -0
  299. package/dist/dashboard/public/assets/mbox-CNhZ1qSd.js +1 -0
  300. package/dist/dashboard/public/assets/mindmap-definition-8da855dc-CNxmpyG6.js +415 -0
  301. package/dist/dashboard/public/assets/mirc-CjQqDB4T.js +1 -0
  302. package/dist/dashboard/public/assets/mllike-CXdrOF99.js +1 -0
  303. package/dist/dashboard/public/assets/modelica-Dc1JOy9r.js +1 -0
  304. package/dist/dashboard/public/assets/mscgen-BA5vi2Kp.js +1 -0
  305. package/dist/dashboard/public/assets/mumps-BT43cFF4.js +1 -0
  306. package/dist/dashboard/public/assets/nginx-DdIZxoE0.js +1 -0
  307. package/dist/dashboard/public/assets/nsis-LdVXkNf5.js +1 -0
  308. package/dist/dashboard/public/assets/ntriples-BfvgReVJ.js +1 -0
  309. package/dist/dashboard/public/assets/octave-Ck1zUtKM.js +1 -0
  310. package/dist/dashboard/public/assets/ordinal-Cboi1Yqb.js +1 -0
  311. package/dist/dashboard/public/assets/oz-BzwKVEFT.js +1 -0
  312. package/dist/dashboard/public/assets/pascal--L3eBynH.js +1 -0
  313. package/dist/dashboard/public/assets/path-CbwjOpE9.js +1 -0
  314. package/dist/dashboard/public/assets/perl-CdXCOZ3F.js +1 -0
  315. package/dist/dashboard/public/assets/pieDiagram-a8764435-D-xy_NSA.js +35 -0
  316. package/dist/dashboard/public/assets/pig-CevX1Tat.js +1 -0
  317. package/dist/dashboard/public/assets/powershell-CFHJl5sT.js +1 -0
  318. package/dist/dashboard/public/assets/properties-C78fOPTZ.js +1 -0
  319. package/dist/dashboard/public/assets/protobuf-ChK-085T.js +1 -0
  320. package/dist/dashboard/public/assets/pug-DeIclll2.js +1 -0
  321. package/dist/dashboard/public/assets/puppet-DMA9R1ak.js +1 -0
  322. package/dist/dashboard/public/assets/python-BuPzkPfP.js +1 -0
  323. package/dist/dashboard/public/assets/q-pXgVlZs6.js +1 -0
  324. package/dist/dashboard/public/assets/quadrantDiagram-1e28029f-BoL2wzz0.js +7 -0
  325. package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
  326. package/dist/dashboard/public/assets/requirementDiagram-08caed73-BujFz0q1.js +52 -0
  327. package/dist/dashboard/public/assets/rpm-CTu-6PCP.js +1 -0
  328. package/dist/dashboard/public/assets/ruby-B2Rjki9n.js +1 -0
  329. package/dist/dashboard/public/assets/sankeyDiagram-a04cb91d-D03_NARm.js +8 -0
  330. package/dist/dashboard/public/assets/sas-B4kiWyti.js +1 -0
  331. package/dist/dashboard/public/assets/scheme-C41bIUwD.js +1 -0
  332. package/dist/dashboard/public/assets/sequenceDiagram-c5b8d532-B65eFcaT.js +122 -0
  333. package/dist/dashboard/public/assets/shell-CjFT_Tl9.js +1 -0
  334. package/dist/dashboard/public/assets/sieve-C3Gn_uJK.js +1 -0
  335. package/dist/dashboard/public/assets/simple-mode-GW_nhZxv.js +1 -0
  336. package/dist/dashboard/public/assets/smalltalk-CnHTOXQT.js +1 -0
  337. package/dist/dashboard/public/assets/solr-DehyRSwq.js +1 -0
  338. package/dist/dashboard/public/assets/sparql-DkYu6x3z.js +1 -0
  339. package/dist/dashboard/public/assets/spreadsheet-BCZA_wO0.js +1 -0
  340. package/dist/dashboard/public/assets/sql-D0XecflT.js +1 -0
  341. package/dist/dashboard/public/assets/stateDiagram-1ecb1508-BDbqu0Vl.js +1 -0
  342. package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-CBHvk4b8.js +1 -0
  343. package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
  344. package/dist/dashboard/public/assets/styles-b4e223ce-CELsPqaO.js +160 -0
  345. package/dist/dashboard/public/assets/styles-ca3715f6-BRqMqT6F.js +207 -0
  346. package/dist/dashboard/public/assets/styles-d45a18b0-e8N-oLPy.js +116 -0
  347. package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
  348. package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-vNDtmQc-.js +1 -0
  349. package/dist/dashboard/public/assets/swift-BzpIVaGY.js +1 -0
  350. package/dist/dashboard/public/assets/tcl-DVfN8rqt.js +1 -0
  351. package/dist/dashboard/public/assets/textile-CnDTJFAw.js +1 -0
  352. package/dist/dashboard/public/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  353. package/dist/dashboard/public/assets/tiki-DGYXhP31.js +1 -0
  354. package/dist/dashboard/public/assets/timeline-definition-faaaa080-Dh2_A5VU.js +61 -0
  355. package/dist/dashboard/public/assets/toml-Bm5Em-hy.js +1 -0
  356. package/dist/dashboard/public/assets/troff-wAsdV37c.js +1 -0
  357. package/dist/dashboard/public/assets/ttcn-CfJYG6tj.js +1 -0
  358. package/dist/dashboard/public/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  359. package/dist/dashboard/public/assets/turtle-B1tBg_DP.js +1 -0
  360. package/dist/dashboard/public/assets/vb-CmGdzxic.js +1 -0
  361. package/dist/dashboard/public/assets/vbscript-BuJXcnF6.js +1 -0
  362. package/dist/dashboard/public/assets/velocity-D8B20fx6.js +1 -0
  363. package/dist/dashboard/public/assets/verilog-C6RDOZhf.js +1 -0
  364. package/dist/dashboard/public/assets/vhdl-lSbBsy5d.js +1 -0
  365. package/dist/dashboard/public/assets/webidl-ZXfAyPTL.js +1 -0
  366. package/dist/dashboard/public/assets/xquery-DzFWVndE.js +1 -0
  367. package/dist/dashboard/public/assets/xychartDiagram-f5964ef8-B76v1AVF.js +7 -0
  368. package/dist/dashboard/public/assets/yacas-BJ4BC0dw.js +1 -0
  369. package/dist/dashboard/public/assets/z80-Hz9HOZM7.js +1 -0
  370. package/dist/dashboard/public/claude-icon-dark.svg +1 -0
  371. package/dist/dashboard/public/claude-icon.svg +1 -0
  372. package/dist/dashboard/public/index.html +16 -0
  373. package/dist/dashboard/settings-manager.d.ts +47 -0
  374. package/dist/dashboard/settings-manager.d.ts.map +1 -0
  375. package/dist/dashboard/settings-manager.js +180 -0
  376. package/dist/dashboard/settings-manager.js.map +1 -0
  377. package/dist/dashboard/utils.d.ts +31 -0
  378. package/dist/dashboard/utils.d.ts.map +1 -0
  379. package/dist/dashboard/utils.js +102 -0
  380. package/dist/dashboard/utils.js.map +1 -0
  381. package/dist/dashboard/watcher.d.ts +32 -0
  382. package/dist/dashboard/watcher.d.ts.map +1 -0
  383. package/dist/dashboard/watcher.js +173 -0
  384. package/dist/dashboard/watcher.js.map +1 -0
  385. package/dist/index.d.ts +13 -0
  386. package/dist/index.d.ts.map +1 -0
  387. package/dist/index.js +380 -0
  388. package/dist/index.js.map +1 -0
  389. package/dist/markdown/templates/design-template.md +126 -0
  390. package/dist/markdown/templates/product-template.md +51 -0
  391. package/dist/markdown/templates/requirements-template.md +50 -0
  392. package/dist/markdown/templates/structure-template.md +145 -0
  393. package/dist/markdown/templates/tasks-template.md +100 -0
  394. package/dist/markdown/templates/tech-template.md +99 -0
  395. package/dist/markdown/templates/test-design-template.md +221 -0
  396. package/dist/prompts/create-spec.d.ts +3 -0
  397. package/dist/prompts/create-spec.d.ts.map +1 -0
  398. package/dist/prompts/create-spec.js +97 -0
  399. package/dist/prompts/create-spec.js.map +1 -0
  400. package/dist/prompts/create-steering-doc.d.ts +3 -0
  401. package/dist/prompts/create-steering-doc.d.ts.map +1 -0
  402. package/dist/prompts/create-steering-doc.js +75 -0
  403. package/dist/prompts/create-steering-doc.js.map +1 -0
  404. package/dist/prompts/implement-task.d.ts +3 -0
  405. package/dist/prompts/implement-task.d.ts.map +1 -0
  406. package/dist/prompts/implement-task.js +174 -0
  407. package/dist/prompts/implement-task.js.map +1 -0
  408. package/dist/prompts/index.d.ts +20 -0
  409. package/dist/prompts/index.d.ts.map +1 -0
  410. package/dist/prompts/index.js +103 -0
  411. package/dist/prompts/index.js.map +1 -0
  412. package/dist/prompts/inject-spec-workflow-guide.d.ts +3 -0
  413. package/dist/prompts/inject-spec-workflow-guide.d.ts.map +1 -0
  414. package/dist/prompts/inject-spec-workflow-guide.js +60 -0
  415. package/dist/prompts/inject-spec-workflow-guide.js.map +1 -0
  416. package/dist/prompts/inject-steering-guide.d.ts +3 -0
  417. package/dist/prompts/inject-steering-guide.d.ts.map +1 -0
  418. package/dist/prompts/inject-steering-guide.js +64 -0
  419. package/dist/prompts/inject-steering-guide.js.map +1 -0
  420. package/dist/prompts/refresh-tasks.d.ts +3 -0
  421. package/dist/prompts/refresh-tasks.d.ts.map +1 -0
  422. package/dist/prompts/refresh-tasks.js +237 -0
  423. package/dist/prompts/refresh-tasks.js.map +1 -0
  424. package/dist/prompts/spec-status.d.ts +3 -0
  425. package/dist/prompts/spec-status.d.ts.map +1 -0
  426. package/dist/prompts/spec-status.js +77 -0
  427. package/dist/prompts/spec-status.js.map +1 -0
  428. package/dist/prompts/types.d.ts +13 -0
  429. package/dist/prompts/types.d.ts.map +1 -0
  430. package/dist/prompts/types.js +2 -0
  431. package/dist/prompts/types.js.map +1 -0
  432. package/dist/server.d.ts +17 -0
  433. package/dist/server.d.ts.map +1 -0
  434. package/dist/server.js +175 -0
  435. package/dist/server.js.map +1 -0
  436. package/dist/tools/__tests__/log-implementation-review-process.test.d.ts +2 -0
  437. package/dist/tools/__tests__/log-implementation-review-process.test.d.ts.map +1 -0
  438. package/dist/tools/__tests__/log-implementation-review-process.test.js +190 -0
  439. package/dist/tools/__tests__/log-implementation-review-process.test.js.map +1 -0
  440. package/dist/tools/__tests__/projectPath.test.d.ts +2 -0
  441. package/dist/tools/__tests__/projectPath.test.d.ts.map +1 -0
  442. package/dist/tools/__tests__/projectPath.test.js +187 -0
  443. package/dist/tools/__tests__/projectPath.test.js.map +1 -0
  444. package/dist/tools/approvals.d.ts +14 -0
  445. package/dist/tools/approvals.d.ts.map +1 -0
  446. package/dist/tools/approvals.js +505 -0
  447. package/dist/tools/approvals.js.map +1 -0
  448. package/dist/tools/index.d.ts +5 -0
  449. package/dist/tools/index.d.ts.map +1 -0
  450. package/dist/tools/index.js +52 -0
  451. package/dist/tools/index.js.map +1 -0
  452. package/dist/tools/log-implementation.d.ts +5 -0
  453. package/dist/tools/log-implementation.d.ts.map +1 -0
  454. package/dist/tools/log-implementation.js +498 -0
  455. package/dist/tools/log-implementation.js.map +1 -0
  456. package/dist/tools/spec-status.d.ts +5 -0
  457. package/dist/tools/spec-status.d.ts.map +1 -0
  458. package/dist/tools/spec-status.js +192 -0
  459. package/dist/tools/spec-status.js.map +1 -0
  460. package/dist/tools/spec-workflow-guide.d.ts +5 -0
  461. package/dist/tools/spec-workflow-guide.d.ts.map +1 -0
  462. package/dist/tools/spec-workflow-guide.js +116 -0
  463. package/dist/tools/spec-workflow-guide.js.map +1 -0
  464. package/dist/tools/steering-guide.d.ts +5 -0
  465. package/dist/tools/steering-guide.d.ts.map +1 -0
  466. package/dist/tools/steering-guide.js +192 -0
  467. package/dist/tools/steering-guide.js.map +1 -0
  468. package/dist/types.d.ts +183 -0
  469. package/dist/types.d.ts.map +1 -0
  470. package/dist/types.js +13 -0
  471. package/dist/types.js.map +1 -0
  472. package/package.json +106 -0
@@ -0,0 +1,130 @@
1
+ ---
2
+ name: spec-requirements
3
+ description: "Phase 1 of spec-driven development: create a requirements document for a feature. Use this skill when the user wants to start a new spec, define requirements, or begin the spec workflow for a feature. Triggers on: 'create requirements', 'new spec for X', 'start spec workflow', 'define what to build', or any request to create a requirements.md document."
4
+ ---
5
+
6
+ # Spec Requirements (Phase 1)
7
+
8
+ Create a requirements document that defines **what** to build based on user needs. This is the first phase of the spec-driven development workflow (Requirements -> Design -> Tasks -> Implementation).
9
+
10
+ ## Inputs
11
+
12
+ You need a **spec name** in kebab-case (e.g., `user-authentication`, `data-export`). Ask the user if they haven't provided one.
13
+
14
+ ## Process
15
+
16
+ ### 1. Gather Context
17
+
18
+ Read steering documents if they exist — these contain project-level guidance that should inform your requirements:
19
+
20
+ ```
21
+ .spec-workflow/steering/product.md
22
+ .spec-workflow/steering/tech.md
23
+ .spec-workflow/steering/structure.md
24
+ ```
25
+
26
+ ### 2. Load the Template
27
+
28
+ Check for a custom template first. If none exists, fall back to the default:
29
+
30
+ 1. `.spec-workflow/user-templates/requirements-template.md` (custom)
31
+ 2. `.spec-workflow/templates/requirements-template.md` (default)
32
+
33
+ Follow the template structure exactly for consistency across the project.
34
+
35
+ ### 3. Research and Write
36
+
37
+ - If web search is available, research current market expectations and best practices
38
+ - Generate requirements as user stories using EARS criteria (Event, Action, Response, State)
39
+ - Cover all functional and non-functional requirements
40
+ - Be comprehensive — the design phase depends on complete requirements
41
+
42
+ ### 4. Create the Document
43
+
44
+ Write the file to:
45
+ ```
46
+ .spec-workflow/specs/{spec-name}/requirements.md
47
+ ```
48
+
49
+ ### 5. Self-Review via Subagent (before approval)
50
+
51
+ Validate the document in **2 stages** before requesting approval.
52
+
53
+ #### Step A: fix (automated mechanical corrections)
54
+
55
+ Auto-fix placeholders, formatting, and typos. Do not add or change content:
56
+
57
+ ```
58
+ Agent({
59
+ subagent_type: "general-purpose",
60
+ description: "Fix requirements spec (auto-fix)",
61
+ prompt: "You are a spec document reviewer. Auto-fix minor issues in the document at:
62
+ {project-path}/.spec-workflow/specs/{spec-name}/requirements.md
63
+
64
+ Document type: requirements
65
+
66
+ Auto-fix targets (you may directly modify the file):
67
+ - Remove placeholder text ([describe...], TODO, TBD)
68
+ - Fix markdown formatting (table alignment, heading levels, etc.)
69
+ - Fix obvious typos
70
+
71
+ Not auto-fix targets (report as issues only):
72
+ - Adding or removing sections
73
+ - Adding or changing content (requirements, Acceptance Criteria, etc.)
74
+
75
+ Mode: fix — Return a structured report (auto-fixed items + remaining issues)."
76
+ })
77
+ ```
78
+
79
+ #### Step B: check (content validation)
80
+
81
+ After fix is complete, detect content issues. Do not modify the file:
82
+
83
+ ```
84
+ Agent({
85
+ subagent_type: "general-purpose",
86
+ description: "Review requirements spec (check)",
87
+ prompt: "You are a spec document reviewer. Review the document (do NOT modify the file) at:
88
+ {project-path}/.spec-workflow/specs/{spec-name}/requirements.md
89
+
90
+ Document type: requirements
91
+ Template: {project-path}/.spec-workflow/templates/requirements-template.md
92
+
93
+ Checks:
94
+ 1. TEMPLATE: Every section from the template must exist with real content (no [describe...] or TODO)
95
+ 2. Every requirement needs User Story ('As a [role]...') and EARS Acceptance Criteria (WHEN/IF...THEN...SHALL)
96
+ 3. Non-Functional Requirements must cover: Code Architecture, Performance, Security, Reliability, Usability
97
+ 4. Requirements should be uniquely identified (REQ-1, REQ-2, etc.)
98
+
99
+ Mode: check — DO NOT modify the file. List all issues with location and suggested fix.
100
+ Return a structured report (PASS/FAIL with issues list)."
101
+ })
102
+ ```
103
+
104
+ If check returns FAIL, fix the issues yourself and re-run check (up to 3 times). Once PASS, proceed to approval.
105
+
106
+ ### 6. Approval Workflow
107
+
108
+ This is a strict, automated process. Verbal approval from the user is never accepted — only dashboard or VS Code extension approval counts.
109
+
110
+ 1. **Request approval**: Use the `approvals` MCP tool with `action: 'request'`. Pass `filePath` only — never include content in the request.
111
+
112
+ 2. **Poll for status**: Use `approvals` with `action: 'status'`. Keep polling until the status changes from `pending`.
113
+
114
+ 3. **Handle the result**:
115
+ - **needs-revision**: Read the reviewer's comments, update the document accordingly, spawn the review subagent again, then submit a NEW approval request. Do not proceed to design.
116
+ - **approved**: Move to cleanup.
117
+
118
+ 4. **Cleanup**: Use `approvals` with `action: 'delete'`. This must succeed before proceeding.
119
+ - If delete fails: STOP. Return to polling. Never proceed without successful cleanup.
120
+
121
+ 5. **Next phase**: Only after cleanup succeeds, proceed to Phase 2 (Design). Use the `/spec-design` skill.
122
+
123
+ ## Rules
124
+
125
+ - Feature names use kebab-case (e.g., `user-authentication`)
126
+ - One spec at a time
127
+ - Approval requests: filePath only, never content
128
+ - Never accept verbal approval — dashboard/VS Code extension only
129
+ - Never proceed if approval delete fails
130
+ - Must have approved status AND successful cleanup before moving to design
@@ -0,0 +1,274 @@
1
+ ---
2
+ name: spec-review
3
+ description: "Self-review a specification document before requesting user approval. This skill is designed to run as a subagent — spawn it with the Agent tool to keep review details out of the main context. Use automatically after creating or updating any spec document (requirements.md, design.md, tasks.md) and BEFORE requesting approval. Triggers on: any spec document creation, before approval requests, 'review spec', 'check spec quality'."
4
+ ---
5
+
6
+ # Spec Review (Subagent)
7
+
8
+ This skill is designed to run as a **subagent** via the Agent tool. It has two modes.
9
+
10
+ ## Mode: check (default — review before Approval)
11
+
12
+ **Do not modify the file.** Only detect and return a list of issues. The caller reviews the issues and makes corrections themselves, then runs check again. Do not add or change content (the reviewer must not "invent" content).
13
+
14
+ ```javascript
15
+ Agent({
16
+ subagent_type: "general-purpose",
17
+ description: "Review spec document (check)",
18
+ prompt: `You are a spec document reviewer. Check the document at:
19
+ {project-path}/.spec-workflow/specs/{spec-name}/{doc-type}.md
20
+
21
+ Document type: {doc-type}
22
+ Spec name: {spec-name}
23
+ Mode: check
24
+
25
+ Follow the /spec-review skill instructions below:
26
+
27
+ 1. TEMPLATE COMPLIANCE: Re-read the template at .spec-workflow/templates/{doc-type}-template.md
28
+ and verify every section is present with substantive content (no placeholders like [describe...] or TODO).
29
+
30
+ 2. CROSS-REFERENCE CHECK:
31
+ - For design.md: verify every requirement in requirements.md has a design solution
32
+ - For tasks.md: verify every requirement has a task, every design component has a task,
33
+ _Requirements references match actual IDs, task ordering respects dependencies
34
+
35
+ 3. QUALITY CHECK: No placeholder text, no duplicates, consistent naming, testable acceptance criteria,
36
+ realistic error scenarios, task descriptions specific enough for AI implementation.
37
+
38
+ 4. DO NOT modify the file. List all issues found with their location and suggested fix.
39
+
40
+ 5. Return a structured report (see Output Format below).`
41
+ })
42
+ ```
43
+
44
+ Caller flow:
45
+ 1. Run spec-review in check mode
46
+ 2. If issues = 0 → proceed to Approval
47
+ 3. If issues >= 1 → caller reviews issues and corrects design.md/tasks.md
48
+ 4. Run check mode again (repeat until issues = 0, up to 3 times)
49
+
50
+ ## Mode: fix (minor automated fixes only)
51
+
52
+ Performs **only mechanical fixes** such as removing placeholder text and fixing formatting. Does not add or change content (adding sections, requirements, error codes, etc.) — those are reported as issues.
53
+
54
+ ```javascript
55
+ Agent({
56
+ subagent_type: "general-purpose",
57
+ description: "Review spec document (fix)",
58
+ prompt: `You are a spec document reviewer. Check and auto-fix minor issues in the document at:
59
+ {project-path}/.spec-workflow/specs/{spec-name}/{doc-type}.md
60
+
61
+ Document type: {doc-type}
62
+ Spec name: {spec-name}
63
+ Mode: fix
64
+
65
+ Items eligible for auto-fix (may directly modify the file):
66
+ - Remove placeholder text ([describe...], TODO, TBD)
67
+ - Fix markdown formatting (table alignment, heading levels, etc.)
68
+ - Obvious typos
69
+
70
+ Items NOT eligible for auto-fix (report as issues only):
71
+ - Adding or removing sections
72
+ - Adding or changing content (requirements, design components, error codes, etc.)
73
+ - Traceability inconsistencies
74
+
75
+ Return a structured report with auto-fixed items and remaining issues.`
76
+ })
77
+ ```
78
+
79
+ ## Review Checklist by Document Type
80
+
81
+ ### Requirements (`requirements.md`)
82
+
83
+ **Template compliance:**
84
+ - Introduction section with clear feature overview
85
+ - Alignment with Product Vision section (references steering docs if they exist)
86
+ - Every requirement has User Story: "As a [role], I want [feature], so that [benefit]"
87
+ - Every requirement has Acceptance Criteria using EARS pattern (WHEN/IF...THEN...SHALL)
88
+ - Non-Functional Requirements: Code Architecture, Performance, Security, Reliability, Usability
89
+
90
+ **Quality:**
91
+ - No placeholder text (`[describe...]`, `TODO`, `TBD`)
92
+ - Acceptance criteria are testable and specific
93
+ - Requirements are uniquely identified (REQ-1, REQ-2, etc.)
94
+
95
+ ### Design (`design.md`)
96
+
97
+ **Template compliance:**
98
+ - Overview with architectural description
99
+ - Steering Document Alignment (tech.md, structure.md)
100
+ - Code Reuse Analysis (see dedicated check below)
101
+ - Architecture section with diagram
102
+ - Components/Interfaces: Purpose, Interfaces, Dependencies, Reuses
103
+ - Data Models with concrete field definitions
104
+ - Error Handling with specific scenarios
105
+ - Requirements Traceability Matrix (see dedicated check below)
106
+
107
+ **Code Reuse Analysis (concrete paths required):**
108
+ - Is the table format listing "Reuse target / Path / Usage" present?
109
+ - Are paths concrete file paths (e.g., `src/middleware/auth.rs`) rather than abstract descriptions (e.g., "leverage existing middleware")?
110
+ - Do the paths actually exist in the codebase?
111
+ - Is the granularity fine enough to be copied directly into each task's `_Leverage` field in Phase 3?
112
+
113
+ **Requirements Traceability Matrix:**
114
+ - Are all requirement IDs (REQ-1, REQ-2, ...) included in the matrix?
115
+ - Is the corresponding design component listed for each requirement?
116
+ - Reverse check: are there any design components with no backing requirement?
117
+ - Testing Strategy: Unit, Integration, E2E
118
+
119
+ **Cross-reference (read requirements.md):**
120
+ - Every requirement has a corresponding design solution
121
+ - No design component without a backing requirement
122
+ - Data models cover all entities from requirements
123
+
124
+ **DB Schema review (strictly validated to prevent post-approval changes):**
125
+ - Every table lists column names, types, and constraints (NOT NULL, UNIQUE, DEFAULT, etc.)
126
+ - Primary keys, foreign keys, and indexes are defined
127
+ - **Each FK explicitly specifies `ON DELETE` behavior (CASCADE / RESTRICT / SET NULL)** — leaving it unspecified is not allowed; this is a design decision directly tied to business logic and must always be explicit
128
+ - Relationships between tables (1:1, 1:N, N:M) and cardinality are clear
129
+ - Migration strategy is documented (column add/drop order, data migration if needed)
130
+ - Normalization level is appropriate (no unnecessary redundancy; denormalization for performance must have justification)
131
+ - **The meaning of nullable columns is clear** (why NULL is allowed; if a DEFAULT value exists, its meaning is documented)
132
+ - Timestamp columns (created_at, updated_at) are present
133
+ - Soft-delete vs. hard-delete policy is explicitly stated (where applicable)
134
+
135
+ **API Design review (strictly validated to prevent post-approval changes):**
136
+ - All endpoints list HTTP method, path, and description
137
+ - Each endpoint defines request body / query parameter types, required/optional status, and validation rules
138
+ - Each endpoint defines response types (success + error) and HTTP status codes
139
+ - Error response format is consistent (e.g., `{ "error": { "code": "...", "message": "..." } }`)
140
+ - **Error codes are defined in a table** (columns: error code name, HTTP Status, trigger condition). Must be exhaustive to prevent undeclared error codes from being added during implementation
141
+ - Authentication/authorization requirements are specified per endpoint
142
+ - Pagination, filtering, and sorting parameter design is documented (where applicable)
143
+ - RESTful conventions are followed (plural resource names, appropriate HTTP methods)
144
+
145
+ **Data Model review (strictly validated to prevent post-approval changes):**
146
+ - DB Model (e.g., Queryable) and DTOs (request/response types) are defined separately
147
+ - DTO fields match the request/response definitions in the API Design
148
+ - Fields that must not be exposed (e.g., password_hash) are excluded in the Model → DTO conversion
149
+ - Validation rules are defined in request DTOs
150
+ - Enum values (status, role, etc.) are exhaustive
151
+
152
+ **Quality:**
153
+ - No placeholder text
154
+ - Consistent component naming
155
+ - Error scenarios cover realistic failure modes
156
+ - DB Schema / API / Data Model are concrete enough that implementers have minimal room to interpret the design
157
+
158
+ ### Test Design (`test-design.md`)
159
+
160
+ **Template compliance:**
161
+ - Test Strategy Overview section with overall test approach and Test Pyramid
162
+ - Unit Test Specifications for every component in design.md
163
+ - Integration Test Specifications for significant component interactions
164
+ - E2E Test Specifications derived from user stories in requirements.md
165
+ - Requirements-Test Traceability Matrix covering all Requirement IDs
166
+ - Test Data Requirements section with shared fixtures and generation strategy
167
+ - E2E Test Infrastructure section with project type, container setup, and test runner
168
+
169
+ **UT Coverage:**
170
+ - Every component in design.md has corresponding UT specifications
171
+ - Each component's UT specs cover applicable categories (Happy Path / Boundary Values / Error Handling / Edge Cases)
172
+ - Test case IDs follow naming convention (UT-N.M)
173
+ - design.md Error Handling table entries have corresponding error handling test cases
174
+
175
+ **IT/E2E Coverage:**
176
+ - Every significant component interaction in design.md Architecture has an IT specification (IT-N)
177
+ - Every user story in requirements.md has at least one E2E specification (E2E-N)
178
+ - IT/E2E Technology fields are consistent with design.md Container Architecture
179
+
180
+ **Cross-reference (read requirements.md and design.md):**
181
+ - Every Requirement ID has at least one UT and one IT or E2E in the Traceability Matrix
182
+ - E2E scenarios trace back to specific user stories and acceptance criteria
183
+ - Container test setup aligns with design.md Container Architecture (if present)
184
+
185
+ **Quality:**
186
+ - No placeholder text in Input / Expected Output / Verification fields
187
+ - Test cases are specific and concrete (not abstract like "verify success")
188
+ - Test data is realistic and covers the necessary scenarios
189
+ - Naming conventions are consistent (UT-N.M, IT-N, E2E-N)
190
+
191
+ ### Tasks (`tasks.md`)
192
+
193
+ **Template compliance:**
194
+ - Every task has `- [ ]` checkbox marker
195
+ - Every task specifies target file path(s)
196
+ - Every implementation task has `_Leverage` field (Phase 0 setup tasks, PhaseReview tasks, and IT/E2E test tasks may omit it)
197
+ - Every task has `_Requirements` field
198
+ - Every task has `_Prompt` field with: Role, Task, Restrictions, Success
199
+ - `_Prompt` contains Role, Task, Restrictions, Success fields in the format "Role: ... | Task: ... | Restrictions: ... | Success: ..."
200
+ - Tasks are atomic (1-3 files each)
201
+
202
+ **Cross-reference (read requirements.md and design.md):**
203
+ - Every requirement has at least one implementing task
204
+ - Every design component has at least one creating task
205
+ - `_Requirements` IDs match actual requirement IDs
206
+ - `_Leverage` paths are plausible (match paths in the design.md Code Reuse Analysis table)
207
+ - Task ordering respects dependencies (interfaces before implementations, models before services)
208
+
209
+ **Traceability Matrix back-fill validation (read design.md):**
210
+ - Are all rows in the Requirements Traceability Matrix in design.md filled in with a "Target Task ID"?
211
+ - Do the "Target Task ID" values match actual task IDs that exist in tasks.md?
212
+ - If any component row is empty, a task must be added to tasks.md and the matrix must be updated
213
+
214
+ **`_TDDSkip` and Interface-only task validation:**
215
+ - Is `_TDDSkip: true` applied appropriately (only to tasks that cannot be tested in isolation)?
216
+ - OK: project initialization, Dockerfile, migrations, config files (tasks that are self-contained)
217
+ - NG: tasks that only define a trait/struct (not self-contained → should be merged into an implementation task)
218
+ - If an interface-only task is detected (`_TestFocus` all "N/A" + Success is only "compiles" + no `_TDDSkip`):
219
+ - Either add `_TDDSkip: true`, or merge into the first task that references it via `_Leverage`
220
+ - Decision rule: "Is this task self-contained?" → Yes: `_TDDSkip`, No: merge
221
+
222
+ **`_TestFocus` format validation:**
223
+ - Does every non-PhaseReview task's `_TestFocus` use the 4-category structure (Happy Path / Boundary Values / Error Handling / Edge Cases)?
224
+ - Is free-form text being used instead (e.g., "CRUD success/failure, validation boundaries")?
225
+ - Are categories that do not apply explicitly marked as "N/A" (not omitted)?
226
+ - Is each category's content specific (not abstract like "Happy Path: success path" but rather "Happy Path: all CRUD operation success paths")?
227
+
228
+ **Single responsibility validation:**
229
+ - Does the `_Prompt` Task field join multiple behaviors with "and"?
230
+ - Can the task be described in a single sentence? (If multiple sentences are needed → consider splitting)
231
+ - Do the Success criteria contain multiple independent conditions? (e.g., "A compiles and B validates and C works" → split into 3 tasks)
232
+ - If a task needs splitting, split it and update tasks.md
233
+
234
+ **Quality:**
235
+ - No placeholder text
236
+ - Task descriptions specific enough for AI agent implementation
237
+ - No duplicate tasks
238
+
239
+ ## Output Format
240
+
241
+ ### check mode
242
+
243
+ ```
244
+ ## Spec Review: {spec-name}/{doc-type}.md (check)
245
+
246
+ ### Checks Performed
247
+ - Template compliance: {PASS / N issues}
248
+ - Cross-references: {PASS / N issues / N/A for requirements}
249
+ - Quality: {PASS / N issues}
250
+
251
+ ### Issues (caller must fix)
252
+ 1. [category: Template/CrossRef/Quality] {description of issue} — location: {section name or line number} — suggested fix: {concrete suggestion}
253
+ 2. ...
254
+
255
+ ### Items for User Attention
256
+ - [any gaps requiring human judgment, if any]
257
+
258
+ ### Result: {PASS (issues 0) / FAIL (issues N)}
259
+ ```
260
+
261
+ ### fix mode
262
+
263
+ ```
264
+ ## Spec Review: {spec-name}/{doc-type}.md (fix)
265
+
266
+ ### Auto-Fixed
267
+ - [list of auto-fixed items with before/after]
268
+
269
+ ### Remaining Issues (caller must fix)
270
+ 1. [category] {description of issue} — location: {section name} — suggested fix: {suggestion}
271
+ 2. ...
272
+
273
+ ### Result: {PASS (remaining 0) / FAIL (remaining N)}
274
+ ```