@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.
- package/.claude-plugin/.mcp.json +8 -0
- package/.claude-plugin/agents/code-simplifier.md +80 -0
- package/.claude-plugin/agents/integ-test-auditor.md +91 -0
- package/.claude-plugin/agents/integ-test-worker.md +73 -0
- package/.claude-plugin/agents/parallel-worker.md +136 -0
- package/.claude-plugin/agents/review-worker.md +279 -0
- package/.claude-plugin/agents/unit-test-engineer.md +148 -0
- package/.claude-plugin/agents/wave-harness-worker.md +158 -0
- package/.claude-plugin/hooks/hooks.json +16 -0
- package/.claude-plugin/hooks/tasks-read-guard.sh +17 -0
- package/.claude-plugin/marketplace.json +33 -0
- package/.claude-plugin/plugin.json +11 -0
- package/.claude-plugin/rules/axum.md +154 -0
- package/.claude-plugin/rules/cargo-toml.md +63 -0
- package/.claude-plugin/rules/context7.md +17 -0
- package/.claude-plugin/rules/design-conformance.md +82 -0
- package/.claude-plugin/rules/design-principles.md +53 -0
- package/.claude-plugin/rules/diesel.md +176 -0
- package/.claude-plugin/rules/feedback-loop.md +33 -0
- package/.claude-plugin/rules/leptos.md +319 -0
- package/.claude-plugin/rules/project-architecture.md +134 -0
- package/.claude-plugin/rules/quality-checks.md +265 -0
- package/.claude-plugin/rules/rust-style.md +242 -0
- package/.claude-plugin/rules/security.md +67 -0
- package/.claude-plugin/rules/spec-workflow-enforcement.md +47 -0
- package/.claude-plugin/rules/valkey.md +167 -0
- package/.claude-plugin/skills/integration-test/SKILL.md +230 -0
- package/.claude-plugin/skills/integration-test/references/auditor-prompt.md +78 -0
- package/.claude-plugin/skills/integration-test/references/external-api-mock.md +98 -0
- package/.claude-plugin/skills/integration-test/references/fixture-catalog.md +155 -0
- package/.claude-plugin/skills/integration-test/references/parallel-execution.md +124 -0
- package/.claude-plugin/skills/integration-test/references/quality-gate.md +80 -0
- package/.claude-plugin/skills/integration-test/references/test-case-design.md +88 -0
- package/.claude-plugin/skills/integration-test/references/test-patterns.md +215 -0
- package/.claude-plugin/skills/integration-test/references/whiteboard-template.md +81 -0
- package/.claude-plugin/skills/integration-test/references/worker-prompt.md +70 -0
- package/.claude-plugin/skills/knowhow-capture/SKILL.md +143 -0
- package/.claude-plugin/skills/phase-review-team/SKILL.md +380 -0
- package/.claude-plugin/skills/spec-design/SKILL.md +282 -0
- package/.claude-plugin/skills/spec-e2e-implement/SKILL.md +259 -0
- package/.claude-plugin/skills/spec-impl-code/SKILL.md +101 -0
- package/.claude-plugin/skills/spec-impl-review/SKILL.md +115 -0
- package/.claude-plugin/skills/spec-impl-test-run/SKILL.md +98 -0
- package/.claude-plugin/skills/spec-impl-test-write/SKILL.md +121 -0
- package/.claude-plugin/skills/spec-implement/SKILL.md +822 -0
- package/.claude-plugin/skills/spec-requirements/SKILL.md +130 -0
- package/.claude-plugin/skills/spec-review/SKILL.md +274 -0
- package/.claude-plugin/skills/spec-tasks/SKILL.md +372 -0
- package/.claude-plugin/skills/spec-test-design/SKILL.md +233 -0
- package/.claude-plugin/skills/tdd-skills/SKILL.md +95 -0
- package/.claude-plugin/skills/tdd-skills/references/advanced-techniques.md +49 -0
- package/.claude-plugin/skills/tdd-skills/references/green-strategies.md +70 -0
- package/.claude-plugin/skills/tdd-skills/references/tdd-and-design.md +48 -0
- package/.claude-plugin/skills/tdd-skills/references/test-design.md +43 -0
- package/.claude-plugin/skills/tdd-skills/references/test-doubles.md +53 -0
- package/.claude-plugin/skills/tdd-skills/references/test-patterns.md +40 -0
- package/.claude-plugin/skills/tdd-skills-rust/SKILL.md +128 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/advanced-techniques.md +205 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/green-strategies.md +166 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/tdd-and-design.md +215 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/test-design.md +128 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/test-doubles.md +208 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/test-patterns.md +223 -0
- package/.claude-plugin/with-dashboard/.mcp.json +8 -0
- package/.claude-plugin/with-dashboard/plugin.json +10 -0
- package/CHANGELOG.md +1007 -0
- package/LICENSE +674 -0
- package/README.ja.md +380 -0
- package/README.md +437 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +264 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/index-args.test.d.ts +2 -0
- package/dist/__tests__/index-args.test.d.ts.map +1 -0
- package/dist/__tests__/index-args.test.js +43 -0
- package/dist/__tests__/index-args.test.js.map +1 -0
- package/dist/__tests__/index-entrypoint.test.d.ts +2 -0
- package/dist/__tests__/index-entrypoint.test.d.ts.map +1 -0
- package/dist/__tests__/index-entrypoint.test.js +23 -0
- package/dist/__tests__/index-entrypoint.test.js.map +1 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +188 -0
- package/dist/config.js.map +1 -0
- package/dist/core/__tests__/git-utils.test.d.ts +2 -0
- package/dist/core/__tests__/git-utils.test.d.ts.map +1 -0
- package/dist/core/__tests__/git-utils.test.js +179 -0
- package/dist/core/__tests__/git-utils.test.js.map +1 -0
- package/dist/core/__tests__/mdx-validator.test.d.ts +2 -0
- package/dist/core/__tests__/mdx-validator.test.d.ts.map +1 -0
- package/dist/core/__tests__/mdx-validator.test.js +42 -0
- package/dist/core/__tests__/mdx-validator.test.js.map +1 -0
- package/dist/core/__tests__/path-utils.test.d.ts +2 -0
- package/dist/core/__tests__/path-utils.test.d.ts.map +1 -0
- package/dist/core/__tests__/path-utils.test.js +342 -0
- package/dist/core/__tests__/path-utils.test.js.map +1 -0
- package/dist/core/__tests__/project-registry.test.d.ts +2 -0
- package/dist/core/__tests__/project-registry.test.d.ts.map +1 -0
- package/dist/core/__tests__/project-registry.test.js +62 -0
- package/dist/core/__tests__/project-registry.test.js.map +1 -0
- package/dist/core/__tests__/security-utils.test.d.ts +2 -0
- package/dist/core/__tests__/security-utils.test.d.ts.map +1 -0
- package/dist/core/__tests__/security-utils.test.js +657 -0
- package/dist/core/__tests__/security-utils.test.js.map +1 -0
- package/dist/core/__tests__/task-parser.test.d.ts +2 -0
- package/dist/core/__tests__/task-parser.test.d.ts.map +1 -0
- package/dist/core/__tests__/task-parser.test.js +222 -0
- package/dist/core/__tests__/task-parser.test.js.map +1 -0
- package/dist/core/__tests__/task-validator.test.d.ts +2 -0
- package/dist/core/__tests__/task-validator.test.d.ts.map +1 -0
- package/dist/core/__tests__/task-validator.test.js +308 -0
- package/dist/core/__tests__/task-validator.test.js.map +1 -0
- package/dist/core/archive-service.d.ts +10 -0
- package/dist/core/archive-service.d.ts.map +1 -0
- package/dist/core/archive-service.js +99 -0
- package/dist/core/archive-service.js.map +1 -0
- package/dist/core/dashboard-session.d.ts +49 -0
- package/dist/core/dashboard-session.d.ts.map +1 -0
- package/dist/core/dashboard-session.js +132 -0
- package/dist/core/dashboard-session.js.map +1 -0
- package/dist/core/git-utils.d.ts +25 -0
- package/dist/core/git-utils.d.ts.map +1 -0
- package/dist/core/git-utils.js +87 -0
- package/dist/core/git-utils.js.map +1 -0
- package/dist/core/global-dir.d.ts +44 -0
- package/dist/core/global-dir.d.ts.map +1 -0
- package/dist/core/global-dir.js +74 -0
- package/dist/core/global-dir.js.map +1 -0
- package/dist/core/implementation-log-migrator.d.ts +41 -0
- package/dist/core/implementation-log-migrator.d.ts.map +1 -0
- package/dist/core/implementation-log-migrator.js +258 -0
- package/dist/core/implementation-log-migrator.js.map +1 -0
- package/dist/core/mdx-validator.d.ts +14 -0
- package/dist/core/mdx-validator.d.ts.map +1 -0
- package/dist/core/mdx-validator.js +34 -0
- package/dist/core/mdx-validator.js.map +1 -0
- package/dist/core/parser.d.ts +11 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +128 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/path-utils.d.ts +68 -0
- package/dist/core/path-utils.d.ts.map +1 -0
- package/dist/core/path-utils.js +302 -0
- package/dist/core/path-utils.js.map +1 -0
- package/dist/core/project-registry.d.ts +94 -0
- package/dist/core/project-registry.d.ts.map +1 -0
- package/dist/core/project-registry.js +297 -0
- package/dist/core/project-registry.js.map +1 -0
- package/dist/core/security-utils.d.ts +99 -0
- package/dist/core/security-utils.d.ts.map +1 -0
- package/dist/core/security-utils.js +275 -0
- package/dist/core/security-utils.js.map +1 -0
- package/dist/core/task-parser.d.ts +90 -0
- package/dist/core/task-parser.d.ts.map +1 -0
- package/dist/core/task-parser.js +477 -0
- package/dist/core/task-parser.js.map +1 -0
- package/dist/core/task-validator.d.ts +37 -0
- package/dist/core/task-validator.d.ts.map +1 -0
- package/dist/core/task-validator.js +499 -0
- package/dist/core/task-validator.js.map +1 -0
- package/dist/core/workspace-initializer.d.ts +16 -0
- package/dist/core/workspace-initializer.d.ts.map +1 -0
- package/dist/core/workspace-initializer.js +168 -0
- package/dist/core/workspace-initializer.js.map +1 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts +2 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js +78 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js.map +1 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts +2 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.js +115 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.js.map +1 -0
- package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts +2 -0
- package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/watcher-error-handling.test.js +118 -0
- package/dist/dashboard/__tests__/watcher-error-handling.test.js.map +1 -0
- package/dist/dashboard/approval-storage.d.ts +139 -0
- package/dist/dashboard/approval-storage.d.ts.map +1 -0
- package/dist/dashboard/approval-storage.js +608 -0
- package/dist/dashboard/approval-storage.js.map +1 -0
- package/dist/dashboard/execution-history-manager.d.ts +52 -0
- package/dist/dashboard/execution-history-manager.d.ts.map +1 -0
- package/dist/dashboard/execution-history-manager.js +161 -0
- package/dist/dashboard/execution-history-manager.js.map +1 -0
- package/dist/dashboard/implementation-log-manager.d.ts +97 -0
- package/dist/dashboard/implementation-log-manager.d.ts.map +1 -0
- package/dist/dashboard/implementation-log-manager.js +617 -0
- package/dist/dashboard/implementation-log-manager.js.map +1 -0
- package/dist/dashboard/job-scheduler.d.ts +91 -0
- package/dist/dashboard/job-scheduler.d.ts.map +1 -0
- package/dist/dashboard/job-scheduler.js +321 -0
- package/dist/dashboard/job-scheduler.js.map +1 -0
- package/dist/dashboard/multi-server.d.ts +42 -0
- package/dist/dashboard/multi-server.d.ts.map +1 -0
- package/dist/dashboard/multi-server.js +1460 -0
- package/dist/dashboard/multi-server.js.map +1 -0
- package/dist/dashboard/parser.d.ts +18 -0
- package/dist/dashboard/parser.d.ts.map +1 -0
- package/dist/dashboard/parser.js +269 -0
- package/dist/dashboard/parser.js.map +1 -0
- package/dist/dashboard/project-manager.d.ts +82 -0
- package/dist/dashboard/project-manager.d.ts.map +1 -0
- package/dist/dashboard/project-manager.js +257 -0
- package/dist/dashboard/project-manager.js.map +1 -0
- package/dist/dashboard/public/assets/Inter-Bold-CD3Pr7BX.woff2 +0 -0
- package/dist/dashboard/public/assets/Inter-Medium-B_8v_WHh.woff2 +0 -0
- package/dist/dashboard/public/assets/Inter-Regular-DRVdRqcI.woff2 +0 -0
- package/dist/dashboard/public/assets/Inter-SemiBold-CtskMddL.woff2 +0 -0
- package/dist/dashboard/public/assets/JetBrainsMono-Bold-D4WEaHbo.woff2 +0 -0
- package/dist/dashboard/public/assets/JetBrainsMono-Medium-3S3k2nMz.woff2 +0 -0
- package/dist/dashboard/public/assets/JetBrainsMono-Regular-BQaDgvhP.woff2 +0 -0
- package/dist/dashboard/public/assets/Tableau10-B-NsZVaP.js +1 -0
- package/dist/dashboard/public/assets/apl-B4CMkyY2.js +1 -0
- package/dist/dashboard/public/assets/arc-a5wW942W.js +1 -0
- package/dist/dashboard/public/assets/array-BKyUJesY.js +1 -0
- package/dist/dashboard/public/assets/asciiarmor-Df11BRmG.js +1 -0
- package/dist/dashboard/public/assets/asn1-EdZsLKOL.js +1 -0
- package/dist/dashboard/public/assets/asterisk-B-8jnY81.js +1 -0
- package/dist/dashboard/public/assets/blockDiagram-c4efeb88-CvjTuK-w.js +118 -0
- package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/dist/dashboard/public/assets/c4Diagram-c83219d4-NwVQo5kf.js +10 -0
- package/dist/dashboard/public/assets/channel-Bi16YZhk.js +1 -0
- package/dist/dashboard/public/assets/classDiagram-beda092f-BmSeXDdU.js +2 -0
- package/dist/dashboard/public/assets/classDiagram-v2-2358418a-D7GvvuPr.js +2 -0
- package/dist/dashboard/public/assets/clike-B9uivgTg.js +1 -0
- package/dist/dashboard/public/assets/clojure-BMjYHr_A.js +1 -0
- package/dist/dashboard/public/assets/clone-BpKTiq7P.js +1 -0
- package/dist/dashboard/public/assets/cmake-BQqOBYOt.js +1 -0
- package/dist/dashboard/public/assets/cobol-CWcv1MsR.js +1 -0
- package/dist/dashboard/public/assets/coffeescript-S37ZYGWr.js +1 -0
- package/dist/dashboard/public/assets/commonlisp-DBKNyK5s.js +1 -0
- package/dist/dashboard/public/assets/createText-1719965b-qASbqHUP.js +7 -0
- package/dist/dashboard/public/assets/crystal-SjHAIU92.js +1 -0
- package/dist/dashboard/public/assets/css-BnMrqG3P.js +1 -0
- package/dist/dashboard/public/assets/cypher-C_CwsFkJ.js +1 -0
- package/dist/dashboard/public/assets/d-pRatUO7H.js +1 -0
- package/dist/dashboard/public/assets/diff-DbItnlRl.js +1 -0
- package/dist/dashboard/public/assets/dockerfile-BKs6k2Af.js +1 -0
- package/dist/dashboard/public/assets/dtd-DF_7sFjM.js +1 -0
- package/dist/dashboard/public/assets/dylan-DwRh75JA.js +1 -0
- package/dist/dashboard/public/assets/ebnf-CDyGwa7X.js +1 -0
- package/dist/dashboard/public/assets/ecl-Cabwm37j.js +1 -0
- package/dist/dashboard/public/assets/edges-96097737-BItTSnH7.js +4 -0
- package/dist/dashboard/public/assets/eiffel-CnydiIhH.js +1 -0
- package/dist/dashboard/public/assets/elm-vLlmbW-K.js +1 -0
- package/dist/dashboard/public/assets/erDiagram-0228fc6a-DT224olg.js +51 -0
- package/dist/dashboard/public/assets/erlang-BNw1qcRV.js +1 -0
- package/dist/dashboard/public/assets/factor-kuTfRLto.js +1 -0
- package/dist/dashboard/public/assets/fcl-Kvtd6kyn.js +1 -0
- package/dist/dashboard/public/assets/flowDb-c6c81e3f-D9_ukKtv.js +10 -0
- package/dist/dashboard/public/assets/flowDiagram-50d868cf-CylE8siG.js +4 -0
- package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-B2O3JN7Y.js +1 -0
- package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-BCaqFKf3.js +139 -0
- package/dist/dashboard/public/assets/forth-Ffai-XNe.js +1 -0
- package/dist/dashboard/public/assets/fortran-DYz_wnZ1.js +1 -0
- package/dist/dashboard/public/assets/ganttDiagram-a2739b55-WQUL1QW_.js +257 -0
- package/dist/dashboard/public/assets/gas-Bneqetm1.js +1 -0
- package/dist/dashboard/public/assets/gherkin-heZmZLOM.js +1 -0
- package/dist/dashboard/public/assets/gitGraphDiagram-82fe8481-CttZrdmr.js +70 -0
- package/dist/dashboard/public/assets/graph-Ch-rVueN.js +1 -0
- package/dist/dashboard/public/assets/groovy-D9Dt4D0W.js +1 -0
- package/dist/dashboard/public/assets/haskell-Cw1EW3IL.js +1 -0
- package/dist/dashboard/public/assets/haxe-H-WmDvRZ.js +1 -0
- package/dist/dashboard/public/assets/http-DBlCnlav.js +1 -0
- package/dist/dashboard/public/assets/idl-BEugSyMb.js +1 -0
- package/dist/dashboard/public/assets/index--kbPpDKv.js +1 -0
- package/dist/dashboard/public/assets/index-3scDwWm6.js +1 -0
- package/dist/dashboard/public/assets/index-5325376f-BL2zVOJU.js +1 -0
- package/dist/dashboard/public/assets/index-BZdjbO25.js +1 -0
- package/dist/dashboard/public/assets/index-BmA_batZ.js +1 -0
- package/dist/dashboard/public/assets/index-Bu0u99kF.js +2 -0
- package/dist/dashboard/public/assets/index-Ch-lr7F4.js +1 -0
- package/dist/dashboard/public/assets/index-ClgWbdoq.js +1 -0
- package/dist/dashboard/public/assets/index-CzLwOMQ_.js +3 -0
- package/dist/dashboard/public/assets/index-DAOEjGO7.js +1 -0
- package/dist/dashboard/public/assets/index-DXqf0B9c.js +1 -0
- package/dist/dashboard/public/assets/index-DegWdR16.js +1 -0
- package/dist/dashboard/public/assets/index-DiHyYGim.js +1 -0
- package/dist/dashboard/public/assets/index-DlZtG7I5.js +1 -0
- package/dist/dashboard/public/assets/index-DmhGE2M8.js +1 -0
- package/dist/dashboard/public/assets/index-QEGvld4x.js +1 -0
- package/dist/dashboard/public/assets/index-RfZPGAJu.js +1 -0
- package/dist/dashboard/public/assets/index-UybBj_7u.js +319 -0
- package/dist/dashboard/public/assets/index-bVekzPnl.js +7 -0
- package/dist/dashboard/public/assets/index-f5bysQzW.css +1 -0
- package/dist/dashboard/public/assets/infoDiagram-8eee0895-DjzkkE3o.js +7 -0
- package/dist/dashboard/public/assets/init-Gi6I4Gst.js +1 -0
- package/dist/dashboard/public/assets/javascript-iXu5QeM3.js +1 -0
- package/dist/dashboard/public/assets/journeyDiagram-c64418c1-CxPZkNdB.js +139 -0
- package/dist/dashboard/public/assets/julia-DuME0IfC.js +1 -0
- package/dist/dashboard/public/assets/katex-XbL3y5x-.js +261 -0
- package/dist/dashboard/public/assets/layout-DX7DNTRm.js +1 -0
- package/dist/dashboard/public/assets/line-DfvpmKOn.js +1 -0
- package/dist/dashboard/public/assets/linear-gQbBPHO5.js +1 -0
- package/dist/dashboard/public/assets/livescript-BwQOo05w.js +1 -0
- package/dist/dashboard/public/assets/lua-BgMRiT3U.js +1 -0
- package/dist/dashboard/public/assets/mathematica-DTrFuWx2.js +1 -0
- package/dist/dashboard/public/assets/mbox-CNhZ1qSd.js +1 -0
- package/dist/dashboard/public/assets/mindmap-definition-8da855dc-CNxmpyG6.js +415 -0
- package/dist/dashboard/public/assets/mirc-CjQqDB4T.js +1 -0
- package/dist/dashboard/public/assets/mllike-CXdrOF99.js +1 -0
- package/dist/dashboard/public/assets/modelica-Dc1JOy9r.js +1 -0
- package/dist/dashboard/public/assets/mscgen-BA5vi2Kp.js +1 -0
- package/dist/dashboard/public/assets/mumps-BT43cFF4.js +1 -0
- package/dist/dashboard/public/assets/nginx-DdIZxoE0.js +1 -0
- package/dist/dashboard/public/assets/nsis-LdVXkNf5.js +1 -0
- package/dist/dashboard/public/assets/ntriples-BfvgReVJ.js +1 -0
- package/dist/dashboard/public/assets/octave-Ck1zUtKM.js +1 -0
- package/dist/dashboard/public/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/dashboard/public/assets/oz-BzwKVEFT.js +1 -0
- package/dist/dashboard/public/assets/pascal--L3eBynH.js +1 -0
- package/dist/dashboard/public/assets/path-CbwjOpE9.js +1 -0
- package/dist/dashboard/public/assets/perl-CdXCOZ3F.js +1 -0
- package/dist/dashboard/public/assets/pieDiagram-a8764435-D-xy_NSA.js +35 -0
- package/dist/dashboard/public/assets/pig-CevX1Tat.js +1 -0
- package/dist/dashboard/public/assets/powershell-CFHJl5sT.js +1 -0
- package/dist/dashboard/public/assets/properties-C78fOPTZ.js +1 -0
- package/dist/dashboard/public/assets/protobuf-ChK-085T.js +1 -0
- package/dist/dashboard/public/assets/pug-DeIclll2.js +1 -0
- package/dist/dashboard/public/assets/puppet-DMA9R1ak.js +1 -0
- package/dist/dashboard/public/assets/python-BuPzkPfP.js +1 -0
- package/dist/dashboard/public/assets/q-pXgVlZs6.js +1 -0
- package/dist/dashboard/public/assets/quadrantDiagram-1e28029f-BoL2wzz0.js +7 -0
- package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
- package/dist/dashboard/public/assets/requirementDiagram-08caed73-BujFz0q1.js +52 -0
- package/dist/dashboard/public/assets/rpm-CTu-6PCP.js +1 -0
- package/dist/dashboard/public/assets/ruby-B2Rjki9n.js +1 -0
- package/dist/dashboard/public/assets/sankeyDiagram-a04cb91d-D03_NARm.js +8 -0
- package/dist/dashboard/public/assets/sas-B4kiWyti.js +1 -0
- package/dist/dashboard/public/assets/scheme-C41bIUwD.js +1 -0
- package/dist/dashboard/public/assets/sequenceDiagram-c5b8d532-B65eFcaT.js +122 -0
- package/dist/dashboard/public/assets/shell-CjFT_Tl9.js +1 -0
- package/dist/dashboard/public/assets/sieve-C3Gn_uJK.js +1 -0
- package/dist/dashboard/public/assets/simple-mode-GW_nhZxv.js +1 -0
- package/dist/dashboard/public/assets/smalltalk-CnHTOXQT.js +1 -0
- package/dist/dashboard/public/assets/solr-DehyRSwq.js +1 -0
- package/dist/dashboard/public/assets/sparql-DkYu6x3z.js +1 -0
- package/dist/dashboard/public/assets/spreadsheet-BCZA_wO0.js +1 -0
- package/dist/dashboard/public/assets/sql-D0XecflT.js +1 -0
- package/dist/dashboard/public/assets/stateDiagram-1ecb1508-BDbqu0Vl.js +1 -0
- package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-CBHvk4b8.js +1 -0
- package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
- package/dist/dashboard/public/assets/styles-b4e223ce-CELsPqaO.js +160 -0
- package/dist/dashboard/public/assets/styles-ca3715f6-BRqMqT6F.js +207 -0
- package/dist/dashboard/public/assets/styles-d45a18b0-e8N-oLPy.js +116 -0
- package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
- package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-vNDtmQc-.js +1 -0
- package/dist/dashboard/public/assets/swift-BzpIVaGY.js +1 -0
- package/dist/dashboard/public/assets/tcl-DVfN8rqt.js +1 -0
- package/dist/dashboard/public/assets/textile-CnDTJFAw.js +1 -0
- package/dist/dashboard/public/assets/tiddlywiki-DO-Gjzrf.js +1 -0
- package/dist/dashboard/public/assets/tiki-DGYXhP31.js +1 -0
- package/dist/dashboard/public/assets/timeline-definition-faaaa080-Dh2_A5VU.js +61 -0
- package/dist/dashboard/public/assets/toml-Bm5Em-hy.js +1 -0
- package/dist/dashboard/public/assets/troff-wAsdV37c.js +1 -0
- package/dist/dashboard/public/assets/ttcn-CfJYG6tj.js +1 -0
- package/dist/dashboard/public/assets/ttcn-cfg-B9xdYoR4.js +1 -0
- package/dist/dashboard/public/assets/turtle-B1tBg_DP.js +1 -0
- package/dist/dashboard/public/assets/vb-CmGdzxic.js +1 -0
- package/dist/dashboard/public/assets/vbscript-BuJXcnF6.js +1 -0
- package/dist/dashboard/public/assets/velocity-D8B20fx6.js +1 -0
- package/dist/dashboard/public/assets/verilog-C6RDOZhf.js +1 -0
- package/dist/dashboard/public/assets/vhdl-lSbBsy5d.js +1 -0
- package/dist/dashboard/public/assets/webidl-ZXfAyPTL.js +1 -0
- package/dist/dashboard/public/assets/xquery-DzFWVndE.js +1 -0
- package/dist/dashboard/public/assets/xychartDiagram-f5964ef8-B76v1AVF.js +7 -0
- package/dist/dashboard/public/assets/yacas-BJ4BC0dw.js +1 -0
- package/dist/dashboard/public/assets/z80-Hz9HOZM7.js +1 -0
- package/dist/dashboard/public/claude-icon-dark.svg +1 -0
- package/dist/dashboard/public/claude-icon.svg +1 -0
- package/dist/dashboard/public/index.html +16 -0
- package/dist/dashboard/settings-manager.d.ts +47 -0
- package/dist/dashboard/settings-manager.d.ts.map +1 -0
- package/dist/dashboard/settings-manager.js +180 -0
- package/dist/dashboard/settings-manager.js.map +1 -0
- package/dist/dashboard/utils.d.ts +31 -0
- package/dist/dashboard/utils.d.ts.map +1 -0
- package/dist/dashboard/utils.js +102 -0
- package/dist/dashboard/utils.js.map +1 -0
- package/dist/dashboard/watcher.d.ts +32 -0
- package/dist/dashboard/watcher.d.ts.map +1 -0
- package/dist/dashboard/watcher.js +173 -0
- package/dist/dashboard/watcher.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +380 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown/templates/design-template.md +126 -0
- package/dist/markdown/templates/product-template.md +51 -0
- package/dist/markdown/templates/requirements-template.md +50 -0
- package/dist/markdown/templates/structure-template.md +145 -0
- package/dist/markdown/templates/tasks-template.md +100 -0
- package/dist/markdown/templates/tech-template.md +99 -0
- package/dist/markdown/templates/test-design-template.md +221 -0
- package/dist/prompts/create-spec.d.ts +3 -0
- package/dist/prompts/create-spec.d.ts.map +1 -0
- package/dist/prompts/create-spec.js +97 -0
- package/dist/prompts/create-spec.js.map +1 -0
- package/dist/prompts/create-steering-doc.d.ts +3 -0
- package/dist/prompts/create-steering-doc.d.ts.map +1 -0
- package/dist/prompts/create-steering-doc.js +75 -0
- package/dist/prompts/create-steering-doc.js.map +1 -0
- package/dist/prompts/implement-task.d.ts +3 -0
- package/dist/prompts/implement-task.d.ts.map +1 -0
- package/dist/prompts/implement-task.js +174 -0
- package/dist/prompts/implement-task.js.map +1 -0
- package/dist/prompts/index.d.ts +20 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +103 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/inject-spec-workflow-guide.d.ts +3 -0
- package/dist/prompts/inject-spec-workflow-guide.d.ts.map +1 -0
- package/dist/prompts/inject-spec-workflow-guide.js +60 -0
- package/dist/prompts/inject-spec-workflow-guide.js.map +1 -0
- package/dist/prompts/inject-steering-guide.d.ts +3 -0
- package/dist/prompts/inject-steering-guide.d.ts.map +1 -0
- package/dist/prompts/inject-steering-guide.js +64 -0
- package/dist/prompts/inject-steering-guide.js.map +1 -0
- package/dist/prompts/refresh-tasks.d.ts +3 -0
- package/dist/prompts/refresh-tasks.d.ts.map +1 -0
- package/dist/prompts/refresh-tasks.js +237 -0
- package/dist/prompts/refresh-tasks.js.map +1 -0
- package/dist/prompts/spec-status.d.ts +3 -0
- package/dist/prompts/spec-status.d.ts.map +1 -0
- package/dist/prompts/spec-status.js +77 -0
- package/dist/prompts/spec-status.js.map +1 -0
- package/dist/prompts/types.d.ts +13 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/prompts/types.js +2 -0
- package/dist/prompts/types.js.map +1 -0
- package/dist/server.d.ts +17 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +175 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/__tests__/log-implementation-review-process.test.d.ts +2 -0
- package/dist/tools/__tests__/log-implementation-review-process.test.d.ts.map +1 -0
- package/dist/tools/__tests__/log-implementation-review-process.test.js +190 -0
- package/dist/tools/__tests__/log-implementation-review-process.test.js.map +1 -0
- package/dist/tools/__tests__/projectPath.test.d.ts +2 -0
- package/dist/tools/__tests__/projectPath.test.d.ts.map +1 -0
- package/dist/tools/__tests__/projectPath.test.js +187 -0
- package/dist/tools/__tests__/projectPath.test.js.map +1 -0
- package/dist/tools/approvals.d.ts +14 -0
- package/dist/tools/approvals.d.ts.map +1 -0
- package/dist/tools/approvals.js +505 -0
- package/dist/tools/approvals.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/log-implementation.d.ts +5 -0
- package/dist/tools/log-implementation.d.ts.map +1 -0
- package/dist/tools/log-implementation.js +498 -0
- package/dist/tools/log-implementation.js.map +1 -0
- package/dist/tools/spec-status.d.ts +5 -0
- package/dist/tools/spec-status.d.ts.map +1 -0
- package/dist/tools/spec-status.js +192 -0
- package/dist/tools/spec-status.js.map +1 -0
- package/dist/tools/spec-workflow-guide.d.ts +5 -0
- package/dist/tools/spec-workflow-guide.d.ts.map +1 -0
- package/dist/tools/spec-workflow-guide.js +116 -0
- package/dist/tools/spec-workflow-guide.js.map +1 -0
- package/dist/tools/steering-guide.d.ts +5 -0
- package/dist/tools/steering-guide.d.ts.map +1 -0
- package/dist/tools/steering-guide.js +192 -0
- package/dist/tools/steering-guide.js.map +1 -0
- package/dist/types.d.ts +183 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -0
- 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
|
+
```
|