@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,282 @@
1
+ ---
2
+ name: spec-design
3
+ description: "Phase 2 of spec-driven development: create a technical design document for a feature. Use this skill after requirements are approved, when the user wants to create a design doc, define architecture, or plan how to build a feature. Triggers on: 'create design', 'design document', 'technical architecture for X', 'how should we build X', or any request to create a design.md document."
4
+ ---
5
+
6
+ # Spec Design (Phase 2)
7
+
8
+ Create a technical design document that defines **how** to build the feature. This phase follows approved requirements and precedes task breakdown.
9
+
10
+ The design document is created in **two stages (Waves)**. Wave 1 aligns the architectural direction with the user before Wave 2 fills in the details, preventing rework caused by misaligned direction.
11
+
12
+ ## Prerequisites Check (MANDATORY — DO NOT SKIP)
13
+
14
+ Before doing anything else, verify the prerequisite file exists:
15
+
16
+ 1. Check `.spec-workflow/specs/{spec-name}/requirements.md` exists
17
+
18
+ If missing — **STOP immediately.** Tell the user: "Cannot start design because requirements.md does not exist. Please run `/spec-requirements` first." Then exit this skill.
19
+
20
+ ---
21
+
22
+ Requirements must be approved and cleaned up (Phase 1 complete). If not, use `/spec-requirements` first.
23
+
24
+ ## Inputs
25
+
26
+ The same **spec name** used in Phase 1 (kebab-case, e.g., `user-authentication`).
27
+
28
+ ## Process
29
+
30
+ ### 1. Load Resources
31
+
32
+ **Template** — prefer custom, fall back to default:
33
+ 1. `.spec-workflow/user-templates/design-template.md` (custom)
34
+ 2. `.spec-workflow/templates/design-template.md` (default)
35
+
36
+ **Steering documents** — load if they exist:
37
+ ```
38
+ .spec-workflow/steering/product.md
39
+ .spec-workflow/steering/tech.md
40
+ .spec-workflow/steering/structure.md
41
+ ```
42
+
43
+ ### 2. Analyze and Research
44
+
45
+ - Read the approved requirements: `.spec-workflow/specs/{spec-name}/requirements.md`
46
+ - Explore the codebase to understand existing patterns and reusable components
47
+ - If web search is available, research best practices for technology choices
48
+ - Confirm that design solutions exist for all requirements
49
+
50
+ ---
51
+
52
+ ## Wave 1: Architecture Skeleton
53
+
54
+ **Goal**: Align the architectural direction with the user before diving into details.
55
+
56
+ ### 3. Create Wave 1 Document
57
+
58
+ Write only the sections listed below and create `.spec-workflow/specs/{spec-name}/design.md`.
59
+ Leave the detail sections (API spec, error handling, traceability, etc.) as `(to be written in Wave 2)` placeholders.
60
+
61
+ **Sections to write in Wave 1:**
62
+
63
+ 1. **Overview** — Summary of the feature and its place in the system
64
+ 2. **Architecture** — Architecture diagram (mermaid) + rationale for the chosen pattern
65
+ 3. **Component List** — Component names with a one-line description of each role only (details in Wave 2)
66
+ 4. **DB Schema** — Table definitions, columns, and constraints (critical decisions that form the implementation foundation)
67
+ 5. **Key Design Decisions** — Technologies and patterns chosen and why (include rejected alternatives)
68
+
69
+ **Wave 1 placeholder examples:**
70
+ ```markdown
71
+ ## Components and Interfaces
72
+ (to be written in Wave 2)
73
+
74
+ ## Data Models
75
+ (to be written in Wave 2)
76
+
77
+ ## API Design
78
+ (to be written in Wave 2)
79
+
80
+ ## Error Handling
81
+ (to be written in Wave 2)
82
+
83
+ ## Requirements Traceability Matrix
84
+ (to be written in Wave 2)
85
+
86
+ ## Code Reuse Analysis
87
+ (to be written in Wave 2)
88
+ ```
89
+
90
+ ### 4. Architecture Confirmation (Present to User)
91
+
92
+ After creating the Wave 1 document, present the following to the user **without using the formal approval tool**:
93
+
94
+ ```
95
+ ## Architecture Confirmation
96
+
97
+ The Wave 1 skeleton is ready. Please review the direction below before proceeding to Wave 2 (detailed writing).
98
+
99
+ **Design Overview**
100
+ {2–3 sentence summary of the Overview}
101
+
102
+ **Chosen Architecture**
103
+ {Architecture diagram or configuration summary}
104
+
105
+ **Key Components**
106
+ {Component list}
107
+
108
+ **Main DB Schema Tables**
109
+ {Table list}
110
+
111
+ **Key Design Decisions**
112
+ {Summary of Key Design Decisions}
113
+
114
+ ---
115
+ If the direction looks good, reply "continue". If changes are needed, please provide specific instructions.
116
+ ```
117
+
118
+ Branch based on user feedback:
119
+
120
+ - **"continue" / approval**: Proceed to Wave 2
121
+ - **Revision instructions**: Update the Wave 1 sections in design.md and present the confirmation again. Once agreed, proceed to Wave 2
122
+
123
+ ---
124
+
125
+ ## Wave 2: Detailed Writing
126
+
127
+ **Goal**: Fill in all details based on the finalized architecture and obtain formal approval.
128
+
129
+ ### 5. Complete Wave 2 Document
130
+
131
+ Fill in all sections left as `(to be written in Wave 2)` from Wave 1.
132
+
133
+ #### Components and Interfaces
134
+
135
+ Describe each component in this format:
136
+ ```markdown
137
+ ### ComponentName
138
+ - **Purpose:** [Responsibility this component owns]
139
+ - **Interfaces:** [Public method / API signatures]
140
+ - **Dependencies:** [Components / external services depended on]
141
+ - **Reuses:** [Existing code to leverage (with concrete paths)]
142
+ ```
143
+
144
+ #### Data Models
145
+
146
+ Describe all entities in type definition or schema format.
147
+
148
+ #### API Design (if applicable)
149
+
150
+ For each endpoint, describe:
151
+ - HTTP method, path, and description
152
+ - Request / response types (fields, types, required / optional)
153
+ - Error responses
154
+
155
+ #### Code Reuse Analysis Format
156
+
157
+ Search the codebase with grep/glob and list existing code to reuse with **concrete file paths**. Because these are copied into the `_Leverage` field in Phase 3, abstract descriptions (e.g., "use the existing auth middleware") are not acceptable.
158
+
159
+ ```markdown
160
+ | Reuse Target | Path | Purpose |
161
+ |-------------|------|---------|
162
+ | Auth middleware | `src/middleware/auth.rs` | Protect endpoints |
163
+ | AppError | `src/error.rs` | Unified error responses |
164
+ | TestContext | `tests/integration/helpers/context.rs` | Test setup |
165
+ ```
166
+
167
+ #### Requirements Traceability Matrix Format
168
+
169
+ Mapping of requirements to design components. **List one component per row** (do not join with `+`). The "Target Task ID" column is filled in retrospectively after Phase 3 (spec-tasks) is complete.
170
+
171
+ ```markdown
172
+ | Requirement ID | Design Component | Target Task ID | Notes |
173
+ |---------------|-----------------|---------------|-------|
174
+ | REQ-1 | UserHandler | (fill in after Phase 3) | CRUD endpoints |
175
+ | REQ-1 | UserRepository | (fill in after Phase 3) | DB access |
176
+ | REQ-2 | AuthMiddleware | (fill in after Phase 3) | Auth check |
177
+ ```
178
+
179
+ #### Error Handling Format
180
+
181
+ List all error codes in table format. Because the design-conformance rule prohibits adding error codes outside this list during implementation, define all anticipated error cases exhaustively.
182
+
183
+ ```markdown
184
+ ## Error Handling
185
+
186
+ Error response format: `{ "error": { "code": "...", "message": "..." } }`
187
+
188
+ | Error Code | HTTP Status | Trigger Condition |
189
+ |-----------|-------------|------------------|
190
+ | NotFound | 404 | Resource does not exist |
191
+ | BadRequest | 400 | Validation failure, invalid input |
192
+ | Unauthorized | 401 | Auth failure, invalid / expired token |
193
+ | Forbidden | 403 | Authorization failure, insufficient permissions |
194
+ | Conflict | 409 | Duplicate key, optimistic lock conflict |
195
+ | Internal | 500 | Unexpected internal error |
196
+ ```
197
+
198
+ ### 6. Self-Review via Subagent (before approval)
199
+
200
+ After Wave 2 is complete, review in **2 steps** before requesting formal approval.
201
+
202
+ #### Step A: fix (automated mechanical corrections)
203
+
204
+ Auto-fix placeholders, formatting, and typos. Do not add or change content:
205
+
206
+ ```
207
+ Agent({
208
+ subagent_type: "general-purpose",
209
+ description: "Fix design spec (auto-fix)",
210
+ prompt: "You are a spec document reviewer. Auto-fix minor issues in the document at:
211
+ {project-path}/.spec-workflow/specs/{spec-name}/design.md
212
+
213
+ Document type: design
214
+
215
+ Auto-fix targets (you may edit the file directly):
216
+ - Remove placeholder text ([describe...], TODO, TBD, '(to be written in Wave 2)', etc.)
217
+ - Fix markdown formatting (table alignment, heading levels, etc.)
218
+ - Obvious typos
219
+
220
+ Do NOT auto-fix (report as issues only):
221
+ - Adding or removing sections
222
+ - Adding or changing content (design components, error codes, DB schema, etc.)
223
+ - Traceability inconsistencies
224
+
225
+ Mode: fix — Return a structured report (auto-fixed items + remaining issues)."
226
+ })
227
+ ```
228
+
229
+ #### Step B: check (content validation)
230
+
231
+ After fix is complete, detect content problems. Do not modify the file:
232
+
233
+ ```
234
+ Agent({
235
+ subagent_type: "general-purpose",
236
+ description: "Review design spec (check)",
237
+ prompt: "You are a spec document reviewer. Review the document (do NOT modify the file) at:
238
+ {project-path}/.spec-workflow/specs/{spec-name}/design.md
239
+
240
+ Document type: design
241
+ Template: {project-path}/.spec-workflow/templates/design-template.md
242
+ Requirements: {project-path}/.spec-workflow/specs/{spec-name}/requirements.md
243
+
244
+ Checks:
245
+ 1. TEMPLATE: Every section from the template must exist with real content (no placeholders or '(to be written in Wave 2)' remaining)
246
+ 2. CROSS-REFERENCE: Read requirements.md — every requirement must have a corresponding design solution.
247
+ No design component should exist without a backing requirement.
248
+ 3. Must include: Overview, Architecture diagram, Component details (Purpose/Interfaces/Dependencies/Reuses),
249
+ Data Models, Error Handling table, Requirements Traceability Matrix, Code Reuse Analysis with concrete paths
250
+ 4. Data models must cover all entities referenced in requirements
251
+ 5. Error Handling must have a complete table (not just scenario descriptions)
252
+
253
+ Mode: check — DO NOT modify the file. List all issues with location and suggested fix.
254
+ Return a structured report (PASS/FAIL with issues list)."
255
+ })
256
+ ```
257
+
258
+ If check returns FAIL, fix the issues yourself and re-run check (up to 3 times). Once PASS, proceed to approval.
259
+
260
+ ### 7. Approval Workflow
261
+
262
+ Formal approval — verbal approval is not accepted.
263
+
264
+ 1. **Request approval**: `approvals` tool, `action: 'request'`, filePath only (do not include content)
265
+ 2. **Poll status**: `approvals` tool, `action: 'status'`, poll until status changes
266
+ 3. **Handle result**:
267
+ - **needs-revision**: Read the review comments, update the document, re-run the subagent review, submit a NEW approval request
268
+ - **approved**: Proceed to cleanup
269
+ 4. **Cleanup**: `approvals` tool, `action: 'delete'` — must succeed
270
+ - If delete fails: STOP, return to polling
271
+ 5. **Next phase**: After successful cleanup, proceed to Phase 3 (Test Design). Use the `/spec-test-design` skill.
272
+
273
+ ## Rules
274
+
275
+ - Feature names use kebab-case
276
+ - One spec at a time
277
+ - **Do not start Wave 2 before Wave 1 is complete** — user confirmation is required
278
+ - **Verbal confirmation is allowed for Wave 1** — formal approval tool not required
279
+ - **Formal approval is required after Wave 2** — verbal approval is not accepted
280
+ - Approval requests: filePath only, never content
281
+ - Never proceed if approval delete fails
282
+ - Must have approved status AND successful cleanup before moving to tasks
@@ -0,0 +1,259 @@
1
+ ---
2
+ name: spec-e2e-implement
3
+ description: "Implement IT/E2E tests independently from main implementation. Uses test-design.md IT/E2E specifications to generate test code with container-based infrastructure (testcontainers, Playwright, docker-compose). Can run in parallel with /spec-implement. Triggers on: 'implement e2e tests', 'create e2e tests', 'e2e for X', 'integration tests for X', '/spec-e2e-implement'."
4
+ user-invokable: true
5
+ argument-hint: "<spec-name> [--scope it|e2e|all] [--spec-id IT-1,E2E-1]"
6
+ ---
7
+
8
+ # E2E Test Implementation (Independent Line)
9
+
10
+ メイン実装(`/spec-implement`)とは独立して、test-design.md の IT/E2E 仕様に基づいてテストコードを生成する。コンテナベースのテストインフラ(testcontainers、docker-compose.test.yml、Playwright)を使用する。
11
+
12
+ ## Prerequisites Check (MANDATORY — DO NOT SKIP)
13
+
14
+ 1. Check `.spec-workflow/specs/{spec-name}/requirements.md` exists
15
+ 2. Check `.spec-workflow/specs/{spec-name}/design.md` exists
16
+ 3. Check `.spec-workflow/specs/{spec-name}/test-design.md` exists
17
+ 4. Check `.spec-workflow/specs/{spec-name}/tasks.md` exists
18
+
19
+ If ANY file is missing — **STOP immediately.** Inform the user which file is missing and which skill to run.
20
+
21
+ | Missing File | Required Skill |
22
+ |-------------|---------------|
23
+ | requirements.md | `/spec-requirements` |
24
+ | design.md | `/spec-design` |
25
+ | test-design.md | `/spec-test-design` |
26
+ | tasks.md | `/spec-tasks` |
27
+
28
+ ## Arguments
29
+
30
+ | Argument | Required | Description |
31
+ |----------|:--------:|-------------|
32
+ | `spec-name` | YES | Spec name in kebab-case |
33
+ | `--scope` | NO | `it` (統合テストのみ), `e2e` (E2E のみ), `all` (デフォルト: 両方) |
34
+ | `--spec-id` | NO | 特定の仕様のみ実装(例: `IT-1,E2E-2`) |
35
+
36
+ ## Process
37
+
38
+ ### 1. Read Test Design
39
+
40
+ 1. Read `.spec-workflow/specs/{spec-name}/test-design.md`
41
+ 2. IT/E2E 仕様を抽出(`--scope` / `--spec-id` でフィルタ)
42
+ 3. **E2E Test Infrastructure** セクションから技術選定を取得:
43
+ - テストランナー(Playwright / reqwest / supertest 等)
44
+ - DB 戦略(testcontainers / docker-compose.test.yml)
45
+ - Container Test Setup 方法
46
+
47
+ ### 2. Check Implementation Readiness
48
+
49
+ IT/E2E テストの対象コンポーネントがメイン実装で実装済みか確認する:
50
+
51
+ ```bash
52
+ # tasks.md で対象タスクの完了状態を確認
53
+ grep -E '\[x\]|\[-\]|\[ \]' .spec-workflow/specs/{spec-name}/tasks.md
54
+ ```
55
+
56
+ | 状態 | アクション |
57
+ |------|----------|
58
+ | 対象コンポーネントが全て `[x]` | テスト実装を開始 |
59
+ | 一部が `[-]` (実装中) | 完了済みコンポーネントの IT のみ実装可。E2E は待機 |
60
+ | 対象が `[ ]` (未着手) | ユーザーに報告: 「対象コンポーネントが未実装です。`/spec-implement` でメイン実装を先に進めてください」 |
61
+
62
+ ### 3. Infrastructure Setup (初回のみ)
63
+
64
+ テストインフラが未セットアップの場合、以下を実行する。`_TDDSkip: true` 相当(テストインフラ自体のテストは不要)。
65
+
66
+ #### 3.1 docker-compose.test.yml の確認
67
+
68
+ ```bash
69
+ # docker-compose.test.yml が存在するか確認
70
+ test -f docker-compose.test.yml && echo "exists" || echo "missing"
71
+ ```
72
+
73
+ - 存在しない場合 → parallel-worker でdocker-compose.test.ymlを作成
74
+ - 存在する場合 → スキップ
75
+
76
+ #### 3.2 テストランナーのセットアップ
77
+
78
+ E2E Test Infrastructure の選定に基づいて:
79
+
80
+ | ランナー | セットアップ |
81
+ |---------|-------------|
82
+ | Playwright | `npm init playwright@latest`、`playwright.config.ts` 生成 |
83
+ | reqwest | `Cargo.toml` に `[dev-dependencies]` 追加 |
84
+ | supertest | `npm install --save-dev supertest @types/supertest` |
85
+ | testcontainers (Rust) | `Cargo.toml` に `testcontainers` 依存追加 |
86
+ | testcontainers (Node) | `npm install --save-dev testcontainers` |
87
+
88
+ #### 3.3 テストヘルパー・共通フィクスチャの作成
89
+
90
+ parallel-worker で以下を作成:
91
+
92
+ - **テスト用 DB ヘルパー**: testcontainers の起動・マイグレーション・シードデータ投入を共通化
93
+ - **テスト用 HTTP クライアント**: 認証トークン付きリクエスト送信のヘルパー
94
+ - **共通フィクスチャ**: test-design.md の Test Data Requirements に基づくシードデータ
95
+
96
+ ### 4. IT Implementation
97
+
98
+ test-design.md の各 IT 仕様に対して parallel-worker でテストコードを生成する。
99
+
100
+ ```javascript
101
+ Agent({
102
+ subagent_type: "parallel-worker",
103
+ description: "IT: Implement integration test IT-{N}",
104
+ prompt: `Implement integration test based on the following specification.
105
+
106
+ Project path: {project-path}
107
+ Spec name: {spec-name}
108
+ Worktree path: {WORKTREE_PATH}
109
+ Branch: {BRANCH}
110
+
111
+ IT Specification (from test-design.md):
112
+ {paste IT-N specification including Technology, Steps, Verification Points}
113
+
114
+ Test design doc path: {project-path}/.spec-workflow/specs/{spec-name}/test-design.md
115
+ Design doc path: {project-path}/.spec-workflow/specs/{spec-name}/design.md
116
+
117
+ Container setup:
118
+ - DB: Use testcontainers to start a clean DB container for each test
119
+ - Apply migrations before test execution
120
+ - Seed test data as defined in Test Data Requirements
121
+
122
+ Important:
123
+ - Always cd {WORKTREE_PATH} before starting
124
+ - Test must be self-contained: start container → migrate → seed → test → cleanup
125
+ - Each test function must clean up its own state
126
+ - Use the test helpers created in step 3.3
127
+
128
+ After implementation, run the test to confirm it passes.`
129
+ })
130
+ ```
131
+
132
+ ### 5. E2E Implementation
133
+
134
+ test-design.md の各 E2E 仕様に対してテストコードを生成する。
135
+
136
+ #### 5.1 API E2E (Test Type: API E2E)
137
+
138
+ ```javascript
139
+ Agent({
140
+ subagent_type: "parallel-worker",
141
+ description: "E2E: Implement API E2E test E2E-{N}",
142
+ prompt: `Implement API E2E test based on the following specification.
143
+
144
+ {same context as IT implementation}
145
+
146
+ E2E Specification (from test-design.md):
147
+ {paste E2E-N specification}
148
+
149
+ Server startup:
150
+ 1. docker-compose -f docker-compose.test.yml up -d
151
+ 2. Wait for health check to pass
152
+ 3. Run test scenarios against the running server
153
+ 4. docker-compose -f docker-compose.test.yml down after tests
154
+
155
+ Use reqwest (Rust) or supertest (Node.js) to send HTTP requests.`
156
+ })
157
+ ```
158
+
159
+ #### 5.2 Browser E2E (Test Type: Browser E2E / Full-Stack E2E)
160
+
161
+ ```javascript
162
+ Agent({
163
+ subagent_type: "parallel-worker",
164
+ description: "E2E: Implement browser E2E test E2E-{N}",
165
+ prompt: `Implement browser E2E test using Playwright based on the following specification.
166
+
167
+ {same context as IT implementation}
168
+
169
+ E2E Specification (from test-design.md):
170
+ {paste E2E-N specification including Scenario Steps}
171
+
172
+ Server startup:
173
+ 1. docker-compose -f docker-compose.test.yml up -d
174
+ 2. Wait for health check + frontend readiness
175
+ 3. Run Playwright tests (Scenario Steps → test code conversion)
176
+ 4. Capture screenshots on failure
177
+ 5. docker-compose -f docker-compose.test.yml down after tests
178
+
179
+ Playwright guidelines:
180
+ - Use page.goto(), page.click(), page.fill() for user interactions
181
+ - Use page.waitForSelector() for dynamic content
182
+ - Use expect(page).toHaveURL() for navigation assertions
183
+ - Use expect(locator).toHaveText() for content assertions`
184
+ })
185
+ ```
186
+
187
+ ### 6. Quality Verification
188
+
189
+ 全 IT/E2E テストを実行し、品質を検証する。
190
+
191
+ ```bash
192
+ # IT テスト実行
193
+ cargo test --tests --quiet # Rust
194
+ npm run test:integration # Node.js
195
+
196
+ # E2E テスト実行
197
+ docker-compose -f docker-compose.test.yml up -d
198
+ npx playwright test # Browser E2E
199
+ cargo test --tests --quiet # Rust API E2E
200
+ npm run test:e2e # Node.js API E2E
201
+ docker-compose -f docker-compose.test.yml down
202
+ ```
203
+
204
+ review-worker でテストコードのレビュー:
205
+ - テストが test-design.md の仕様を正しく反映しているか
206
+ - テストの独立性(他テストへの依存がないか)
207
+ - コンテナの適切なクリーンアップ
208
+ - テストデータの適切な管理
209
+
210
+ ### 7. Report
211
+
212
+ 結果を `.spec-workflow/specs/{spec-name}/reviews/e2e-implementation.md` に保存:
213
+
214
+ ```markdown
215
+ # E2E Test Implementation Report
216
+
217
+ ## Spec: {spec-name}
218
+ ## Date: {date}
219
+ ## Scope: {it|e2e|all}
220
+
221
+ ## IT Tests
222
+ | Spec ID | Test File | Status | Notes |
223
+ |---------|-----------|--------|-------|
224
+ | IT-1 | tests/integration/test_xxx.rs | PASS | |
225
+ | IT-2 | tests/integration/test_yyy.rs | PASS | |
226
+
227
+ ## E2E Tests
228
+ | Spec ID | Test File | Type | Status | Notes |
229
+ |---------|-----------|------|--------|-------|
230
+ | E2E-1 | tests/e2e/test_xxx.rs | API | PASS | |
231
+ | E2E-2 | e2e/journey.spec.ts | Browser | PASS | |
232
+
233
+ ## Infrastructure
234
+ - docker-compose.test.yml: [created|existing]
235
+ - Test helpers: [created|existing]
236
+ - Playwright config: [created|N/A]
237
+
238
+ ## Coverage
239
+ | Spec Type | Total | Implemented | Skipped (not ready) |
240
+ |-----------|-------|-------------|---------------------|
241
+ | IT | {N} | {M} | {K} |
242
+ | E2E | {N} | {M} | {K} |
243
+ ```
244
+
245
+ ## メイン実装との関係
246
+
247
+ - `/spec-implement` と `/spec-e2e-implement` は**独立して実行可能**
248
+ - `/spec-implement` の Final E2E Gate (Step 9) は `/spec-e2e-implement` で作成したテストも自動的に実行する
249
+ - メイン実装の進捗に応じて、実装済みコンポーネントから順次 IT テストを作成できる
250
+ - E2E テストは全コンポーネントが実装済みになってから実行する
251
+
252
+ ## Rules
253
+
254
+ - Feature names use kebab-case
255
+ - テストコードはコンテナベースで実装する(testcontainers / docker-compose.test.yml)
256
+ - テストは自己完結的であること(他テストへの依存禁止)
257
+ - コンテナは必ずクリーンアップすること
258
+ - test-design.md の仕様に忠実に実装すること
259
+ - 口頭承認は不要(テスト実装は承認プロセスなし、Final E2E Gate で検証)
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: spec-impl-code
3
+ description: "TDD GREEN phase for spec-implement workflow. Writes minimal production code to make failing tests pass. Designed to run as a subagent — spawn it with the Agent tool. Triggers on: subagent calls from spec-implement orchestrator only."
4
+ ---
5
+
6
+ # Code Writer — GREEN Phase (Subagent)
7
+
8
+ This skill is designed to run as a **subagent** via the Agent tool. It writes the minimal production code needed to make failing tests pass, following TDD's GREEN phase.
9
+
10
+ ## How the Calling Agent Should Invoke This
11
+
12
+ ```javascript
13
+ Agent({
14
+ subagent_type: "general-purpose",
15
+ description: "GREEN: Implement to pass tests",
16
+ prompt: `You are a TDD implementer. Write minimal code to make the failing tests pass.
17
+
18
+ Project path: {project-path}
19
+ Spec name: {spec-name}
20
+ Task ID: {task-id}
21
+ Task prompt: {task _Prompt content}
22
+ Test files: {test-file-paths}
23
+ Leverage files: {_Leverage file paths}
24
+
25
+ Follow the /spec-impl-code skill instructions.
26
+
27
+ Return the list of files created/modified and implementation approach.`
28
+ })
29
+ ```
30
+
31
+ ## GREEN Phase Rules
32
+
33
+ 1. **Make the tests pass** — that is the only goal
34
+ 2. **Write minimal code** — just enough to satisfy the tests (YAGNI)
35
+ 3. **Do NOT modify test files** — tests are the specification
36
+ 4. **Do NOT add untested features** — if there's no test for it, don't build it
37
+
38
+ ## Execution Steps
39
+
40
+ ### 1. Read and Understand the Tests
41
+
42
+ - Read each test file to understand:
43
+ - What modules/functions are imported (these need to be created)
44
+ - What interfaces are expected (parameters, return types)
45
+ - What behavior is verified (assertions define the contract)
46
+ - What error conditions are tested
47
+
48
+ ### 2. Plan the Implementation
49
+
50
+ From the tests, derive:
51
+ - Which files need to be created
52
+ - What functions/classes/methods are needed
53
+ - What types/interfaces are expected
54
+ - What the input/output contracts are
55
+
56
+ ### 3. Choose a Green Strategy
57
+
58
+ Follow `/tdd-skills` Green Strategies:
59
+
60
+ 1. **Obvious Implementation** (preferred when solution is clear): Implement the real logic directly
61
+ 2. **Fake It** (when uncertain): Return a constant first, then generalize
62
+ 3. **Triangulation** (when multiple cases exist): Generalize from multiple test assertions
63
+
64
+ ### 4. Implement
65
+
66
+ - Read `_Leverage` files to understand existing patterns and utilities
67
+ - Follow the codebase's existing conventions (naming, structure, error handling)
68
+ - Create the modules that tests import
69
+ - Implement functions/classes with the expected signatures
70
+ - Handle all test cases including error scenarios
71
+
72
+ **Key constraint**: Write only what the tests demand. If a test doesn't check for input validation, don't add it. If a test doesn't verify logging, don't add it.
73
+
74
+ ### 5. Verify Locally (Optional Quick Check)
75
+
76
+ If possible, do a quick mental check that:
77
+ - All imported modules now exist
78
+ - All expected exports are present
79
+ - Function signatures match what tests call
80
+ - Return types match what tests assert
81
+
82
+ ## Output Format
83
+
84
+ Return to the calling agent:
85
+
86
+ ```
87
+ ## GREEN Phase Complete
88
+
89
+ ### Files Created
90
+ - {path/to/new-file-1}: {brief description}
91
+ - {path/to/new-file-2}: {brief description}
92
+
93
+ ### Files Modified
94
+ - {path/to/existing-file}: {what was changed}
95
+
96
+ ### Implementation Approach
97
+ {1-3 sentences describing the approach taken and key decisions}
98
+
99
+ ### Green Strategy Used
100
+ {Obvious Implementation / Fake It / Triangulation} — {reason}
101
+ ```