@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,372 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-tasks
|
|
3
|
+
description: "Phase 4 of spec-driven development: break an approved design into atomic implementation tasks. Use this skill after test design is approved, when the user wants to create tasks, plan implementation steps, or break down work into actionable items. Triggers on: 'create tasks', 'break down into tasks', 'implementation plan', 'task breakdown for X', or any request to create a tasks.md document."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Tasks (Phase 4)
|
|
7
|
+
|
|
8
|
+
Break the approved design into atomic, implementable tasks. This phase converts architecture decisions into a concrete action plan.
|
|
9
|
+
|
|
10
|
+
## Prerequisites Check (MANDATORY — DO NOT SKIP)
|
|
11
|
+
|
|
12
|
+
Before doing anything else, verify all prerequisite files exist:
|
|
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
|
+
|
|
18
|
+
If ANY file is missing — **STOP immediately.** Inform the user: "{filename} does not exist; cannot begin task breakdown. Please run {skill-name} first." Then exit this skill.
|
|
19
|
+
|
|
20
|
+
| Missing File | Required Skill |
|
|
21
|
+
|-------------|---------------|
|
|
22
|
+
| requirements.md | `/spec-requirements` |
|
|
23
|
+
| design.md | `/spec-design` |
|
|
24
|
+
| test-design.md | `/spec-test-design` |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
Test design must be approved and cleaned up (Phases 1-3 complete). If not, use `/spec-test-design` first.
|
|
29
|
+
|
|
30
|
+
## Inputs
|
|
31
|
+
|
|
32
|
+
The same **spec name** used in previous phases (kebab-case, e.g., `user-authentication`).
|
|
33
|
+
|
|
34
|
+
## Process
|
|
35
|
+
|
|
36
|
+
### 1. Load the Template
|
|
37
|
+
|
|
38
|
+
Check for a custom template first, then fall back to the default:
|
|
39
|
+
|
|
40
|
+
1. `.spec-workflow/user-templates/tasks-template.md` (custom)
|
|
41
|
+
2. `.spec-workflow/templates/tasks-template.md` (default)
|
|
42
|
+
|
|
43
|
+
### 2. Read Approved Documents
|
|
44
|
+
|
|
45
|
+
- `.spec-workflow/specs/{spec-name}/requirements.md`
|
|
46
|
+
- `.spec-workflow/specs/{spec-name}/design.md`
|
|
47
|
+
- `.spec-workflow/specs/{spec-name}/test-design.md`
|
|
48
|
+
|
|
49
|
+
### 2.5 Detect New Project
|
|
50
|
+
|
|
51
|
+
新規プロジェクトかどうかを検出し、Git 初期化タスクの追加要否を判断する。
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Git リポジトリが存在するか確認
|
|
55
|
+
git -C "{project-path}" rev-parse --is-inside-work-tree 2>/dev/null
|
|
56
|
+
echo $?
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**結果に応じた分岐(終了コード優先):**
|
|
60
|
+
|
|
61
|
+
| 終了コード | `--is-inside-work-tree` の出力 | 判定 | アクション |
|
|
62
|
+
|-----------|-------------------------------|------|-----------|
|
|
63
|
+
| `0` | `true` | 既存リポジトリ(作業ツリーあり) | Git 初期化タスク不要。Phase 0 に含めない |
|
|
64
|
+
| `0` | `false` | 既存リポジトリ(bare repo または `.git` ディレクトリ直下) | Git 初期化タスク不要。必要であれば、bare から通常リポジトリへの移行タスクを別途検討 |
|
|
65
|
+
| `128` | (任意) | 新規プロジェクト(Git未初期化) | Phase 0 の先頭に Git 初期化タスクを追加 |
|
|
66
|
+
| `127` | (任意) | git コマンドが見つからない | ユーザーにエラー報告: 「git がインストールされていません。git をインストールしてから再実行してください。」タスク生成を中断 |
|
|
67
|
+
| その他 | (任意) | パス不正・権限エラー等 | ユーザーにエラー報告: 「プロジェクトパスの確認中にエラーが発生しました(exit code: {N})。パスとアクセス権限を確認してください。」タスク生成を中断 |
|
|
68
|
+
|
|
69
|
+
新規プロジェクト(exit code 128)の場合、Phase 0 の先頭(他のすべてのタスクの前)に以下のタスクを自動追加する:
|
|
70
|
+
|
|
71
|
+
```markdown
|
|
72
|
+
## Phase 0: Project Setup
|
|
73
|
+
|
|
74
|
+
- [ ] 0.0 Initialize Git repository
|
|
75
|
+
- File: .gitignore
|
|
76
|
+
- _TDDSkip: true_
|
|
77
|
+
- _Requirements: REQ-0_
|
|
78
|
+
- _Prompt: Role: DevOps Engineer | Task: Initialize a Git repository, create an appropriate .gitignore for the project type (Rust: target/, *.swp, .env etc.), and make the initial commit | Restrictions: Do not include secrets or build artifacts in the initial commit. The .gitignore must cover the project's language/framework (e.g., /target for Rust, node_modules for Node.js). Do not configure remote repository (user will do this manually) | Success: `git log` shows the initial commit, `.gitignore` exists and covers the project type_
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**注意:**
|
|
82
|
+
- Git 初期化タスクは常に Phase 0 の最初のタスク(0.0)とする
|
|
83
|
+
- 後続のタスク番号は 0.1 から始める
|
|
84
|
+
- 既存リポジトリの場合、タスク番号は従来通り 0.1 から始まる
|
|
85
|
+
|
|
86
|
+
### 2.6 Detect Container Requirements
|
|
87
|
+
|
|
88
|
+
design.md の Container Architecture セクションを読み、コンテナセットアップタスクの要否を判断する。
|
|
89
|
+
|
|
90
|
+
**検出ロジック:**
|
|
91
|
+
1. design.md に「Container Architecture」セクションが存在するか
|
|
92
|
+
2. Service Dependencies テーブルにサービスが列挙されているか
|
|
93
|
+
|
|
94
|
+
**Container Architecture が存在する場合**、Phase 0 に以下のタスクを追加する(Git 初期化タスクの後、他のセットアップタスクの前):
|
|
95
|
+
|
|
96
|
+
```markdown
|
|
97
|
+
- [ ] 0.1 Create Dockerfile and docker-compose.yml
|
|
98
|
+
- File: Dockerfile, docker-compose.yml, .dockerignore
|
|
99
|
+
- _TDDSkip: true_
|
|
100
|
+
- _Requirements: REQ-0_
|
|
101
|
+
- _Prompt: Role: DevOps Engineer | Task: design.md の Container Architecture に基づいて Dockerfile (multi-stage build) と docker-compose.yml を作成する。Service Dependencies テーブルの全サービスを含める | Restrictions: シークレットを Dockerfile に埋め込まない。.dockerignore で不要ファイルを除外。ポート番号は design.md の定義に従う | Success: `docker-compose up -d` で全サービスが起動する_
|
|
102
|
+
|
|
103
|
+
- [ ] 0.2 Create test container configuration
|
|
104
|
+
- File: docker-compose.test.yml
|
|
105
|
+
- _TDDSkip: true_
|
|
106
|
+
- _DependsOn: 0.1_
|
|
107
|
+
- _Requirements: REQ-0_
|
|
108
|
+
- _Prompt: Role: DevOps Engineer | Task: テスト用の docker-compose.test.yml を作成する。本番用とポートが衝突しないようオフセットする(例: 5432→15432)。DB にはテスト用の初期化スクリプトを含める | Restrictions: 本番用 docker-compose.yml を修正しない。テスト用ボリュームは永続化しない(tmpfs 推奨) | Success: `docker-compose -f docker-compose.test.yml up -d` でテスト用サービスが起動し、本番用と共存できる_
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Container Architecture が存在しない場合**: コンテナタスクを追加しない(従来通り)。
|
|
112
|
+
|
|
113
|
+
**注意:** Git 初期化タスク (0.0) がある場合、コンテナタスクは 0.1, 0.2 とし、他のセットアップタスクは 0.3 から始める。
|
|
114
|
+
|
|
115
|
+
### 3. Create Tasks
|
|
116
|
+
|
|
117
|
+
Convert the design into atomic tasks. Each task should touch 1-3 files and be independently implementable. Include:
|
|
118
|
+
|
|
119
|
+
- File paths that will be created or modified
|
|
120
|
+
- Requirement references (which requirements the task implements)
|
|
121
|
+
- Logical ordering (dependencies between tasks)
|
|
122
|
+
|
|
123
|
+
#### Single Responsibility Criteria
|
|
124
|
+
|
|
125
|
+
Task granularity is determined by the number of **responsibilities**, not just the number of files. 1 task = 1 responsibility.
|
|
126
|
+
|
|
127
|
+
**Decision rules:**
|
|
128
|
+
1. **Can the task be described in a single sentence?** — If multiple behaviors are joined with "and", consider splitting
|
|
129
|
+
2. **Do the Success criteria converge on a single verification target?** — If there are multiple independent Success conditions, split the task
|
|
130
|
+
3. **Does it complete within one TDD cycle?** — All tests written in the RED phase belong to the same module/function
|
|
131
|
+
|
|
132
|
+
**Examples requiring splitting:**
|
|
133
|
+
- "Create model and implement API endpoint" → `create model` + `implement endpoint`
|
|
134
|
+
- "Implement CRUD with validation and caching" → `implement CRUD` + `add validation` + `add caching`
|
|
135
|
+
- "Define DB schema and implement repository" → `create migration` + `implement repository`
|
|
136
|
+
|
|
137
|
+
**Examples that do NOT require splitting (fit within 1 responsibility):**
|
|
138
|
+
- "Create User model with Queryable/Insertable/AsChangeset derives"
|
|
139
|
+
- "Implement GET /users/{id} endpoint returning UserDto"
|
|
140
|
+
- "Add email format validation to CreateUserRequest"
|
|
141
|
+
|
|
142
|
+
### 3.5 Phase-Based Organization
|
|
143
|
+
|
|
144
|
+
Group tasks into phases using `## Phase N: Title` headings. Each phase is a **vertical slice** — a testable, committable increment that delivers end-to-end value.
|
|
145
|
+
|
|
146
|
+
- 1 phase = 2-5 implementation tasks + 1 review task
|
|
147
|
+
- Each phase ends with a `_PhaseReview: true_` task for review and commit
|
|
148
|
+
- Phases are ordered by dependency (core → API → UI → integration)
|
|
149
|
+
|
|
150
|
+
### 3.6 Integration & E2E Test Tasks
|
|
151
|
+
|
|
152
|
+
test-design.md の IT 仕様と E2E 仕様を基に、Phase の適切な位置に IT/E2E テストタスクを配置する。
|
|
153
|
+
|
|
154
|
+
#### IT タスク
|
|
155
|
+
- test-design.md の各 IT 仕様(IT-1, IT-2, ...)に対応するタスクを作成
|
|
156
|
+
- 対象コンポーネントがすべて実装済みの Phase に配置(通常は PhaseReview の直前)
|
|
157
|
+
- `_TestFocus` は test-design.md の IT 仕様を参照し、Verification Points を列挙
|
|
158
|
+
- `_Prompt` の Task に「test-design.md の IT-{N} 仕様に基づいて統合テストを実装する」と明記
|
|
159
|
+
|
|
160
|
+
#### E2E タスク
|
|
161
|
+
- test-design.md の各 E2E 仕様(E2E-1, E2E-2, ...)に対応するタスクを最終 Phase に配置
|
|
162
|
+
- `_TestFocus` は test-design.md の E2E 仕様を参照し、Scenario Steps と Success Criteria を列挙
|
|
163
|
+
- `_Prompt` の Task に「test-design.md の E2E-{N} 仕様に基づいて E2E テストを実装する」と明記
|
|
164
|
+
|
|
165
|
+
### 3.7 TDD Task Design Rules
|
|
166
|
+
|
|
167
|
+
- **No standalone unit test tasks.** TDD handles unit testing automatically in each task's RED phase. However, IT/E2E test tasks (defined in section 3.6) are **allowed and expected** as separate tasks — they implement integration and end-to-end tests from test-design.md specifications.
|
|
168
|
+
- **Each task must be independently testable** — it must produce observable behavior that can be verified.
|
|
169
|
+
- **`_TestFocus` field** — Structured in 4 categories (Happy Path / Boundary Values / Error Handling / Edge Cases) as required by the unit-test-engineer. Free-form text is not allowed. **Must be derived from test-design.md**: reference the corresponding UT spec IDs (e.g., UT-1.1, UT-1.2) and include the concrete test cases defined there.
|
|
170
|
+
|
|
171
|
+
#### Tasks eligible for TDD skip (`_TDDSkip: true`)
|
|
172
|
+
|
|
173
|
+
Tasks with no runtime behavior and nothing to test receive `_TDDSkip: true`. For these tasks, parallel-worker skips the TDD cycle and performs direct implementation + quality checks only.
|
|
174
|
+
|
|
175
|
+
**Tasks where `_TDDSkip: true` applies:**
|
|
176
|
+
- Project initialization (`cargo init`, directory structure creation, `Cargo.toml` dependency additions)
|
|
177
|
+
- Infrastructure/config files (Dockerfile, docker-compose.yml, CI/CD configuration)
|
|
178
|
+
- DB migrations (creating up.sql/down.sql via `diesel migration generate`)
|
|
179
|
+
- Environment config files (`.env.example`, `diesel.toml`, `.cargo/config.toml`)
|
|
180
|
+
|
|
181
|
+
**Tasks where `_TDDSkip: true` does NOT apply (must be merged):**
|
|
182
|
+
- Interface-only tasks (trait/struct/enum definitions only) → merge into the first implementing task
|
|
183
|
+
|
|
184
|
+
Decision rule: "Is this task self-contained?"
|
|
185
|
+
- A Dockerfile is self-contained → `_TDDSkip: true`
|
|
186
|
+
- A trait definition is meaningless without an implementing task → merge
|
|
187
|
+
|
|
188
|
+
`_TDDSkip: true` tasks do not need a `_TestFocus` field (may be omitted).
|
|
189
|
+
|
|
190
|
+
### 4. Generate _Prompt Fields
|
|
191
|
+
|
|
192
|
+
This is critical for implementation quality. Each task needs a `_Prompt` field with structured AI guidance, plus a `_TestFocus` field for TDD:
|
|
193
|
+
|
|
194
|
+
```markdown
|
|
195
|
+
## Phase 0: Project Setup
|
|
196
|
+
|
|
197
|
+
- [ ] 0.1 Initialize project and create Dockerfile
|
|
198
|
+
- File: Cargo.toml, Dockerfile, docker-compose.yml, .env.example
|
|
199
|
+
- _TDDSkip: true_
|
|
200
|
+
- _Requirements: REQ-0_
|
|
201
|
+
- _Prompt: Role: DevOps Engineer | Task: Initialize Cargo project, create Dockerfile and docker-compose.yml for Axum + PostgreSQL + Valkey | Restrictions: Do not include secrets in .env.example | Success: Containers start with docker-compose up_
|
|
202
|
+
|
|
203
|
+
- [ ] 0.2 Create DB migration for users table
|
|
204
|
+
- File: migrations/YYYYMMDD_create_users/up.sql, down.sql
|
|
205
|
+
- _TDDSkip: true_
|
|
206
|
+
- _Requirements: REQ-1_
|
|
207
|
+
- _Prompt: Role: Backend Developer | Task: Create users table migration with diesel migration generate | Restrictions: Strictly follow the DB Schema definition in design.md | Success: diesel migration run succeeds_
|
|
208
|
+
|
|
209
|
+
## Phase 1: Core Models & Repository
|
|
210
|
+
|
|
211
|
+
- [ ] 1.1 Create User model with Diesel derives
|
|
212
|
+
- File: src/models/user.rs, src/schema.rs
|
|
213
|
+
- Implement Queryable, Insertable, AsChangeset
|
|
214
|
+
- _Leverage: src/models/mod.rs_
|
|
215
|
+
- _Requirements: REQ-1_
|
|
216
|
+
- _TestFocus: Happy Path: construction and field access for User/NewUser/UpdateUser | Boundary Values: minimum (1 char) and maximum (255 chars) name length | Error Handling: empty string name, invalid email format | Edge Cases: multi-byte character name_
|
|
217
|
+
- _Prompt: Role: Backend Developer | Task: Create User model with Queryable/Insertable/AsChangeset derives | Restrictions: schema.rs is auto-generated by diesel print-schema — do not edit manually | Success: User, NewUser, UpdateUser structs are defined and the code compiles_
|
|
218
|
+
|
|
219
|
+
- [ ] 1.2 Implement UserRepository with CRUD operations
|
|
220
|
+
- File: src/db/repository/users.rs
|
|
221
|
+
- Implement find_by_id, list, create, update, delete
|
|
222
|
+
- _DependsOn: 1.1_
|
|
223
|
+
- _Leverage: src/db/mod.rs, src/models/user.rs_
|
|
224
|
+
- _Requirements: REQ-1_
|
|
225
|
+
- _TestFocus: Happy Path: success paths for all CRUD operations | Boundary Values: list with 0 / 1 / many records | Error Handling: find with nonexistent ID, create with duplicate key, DB connection error | Edge Cases: concurrent updates_
|
|
226
|
+
- _Prompt: Role: Backend Developer | Task: Implement UserRepository with CRUD operations using diesel-async | Restrictions: All methods must return Result<T, AppError> | Success: All CRUD methods are implemented and tests pass_
|
|
227
|
+
|
|
228
|
+
- [ ] 1.3 Review and commit Phase 1
|
|
229
|
+
- _PhaseReview: true_
|
|
230
|
+
- _Prompt: Role: Code reviewer | Task: Review all Phase 1 changes, run tests, commit | Success: All tests pass, committed_
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Note:** The Task field must focus on a single responsibility. Do not join multiple responsibilities with "and" (e.g., "Create model and implement repository").
|
|
234
|
+
|
|
235
|
+
Also include:
|
|
236
|
+
- `_Leverage`: Existing files/utilities to reuse (copied from the Code Reuse Analysis table in design.md)
|
|
237
|
+
- `_Requirements`: Which requirements this task fulfills (traceability)
|
|
238
|
+
- `_DependsOn`: Same Phase 内で、このタスクが依存する他タスクのID(カンマ区切り)。依存がない場合は省略する。依存があるタスクは、依存先が完了するまで実行されない。Phase 跨ぎの依存は不要(Phase 順序で暗黙保証)。例: `_DependsOn: 1.1, 1.2_`
|
|
239
|
+
- `_TestFocus`: Written in the 4-category structured format (see below)
|
|
240
|
+
|
|
241
|
+
#### _TestFocus Format
|
|
242
|
+
|
|
243
|
+
To align with the unit-test-engineer's required test coverage, use the following 4-category structure. Free-form text is not allowed.
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
_TestFocus: Happy Path: {specific test targets} | Boundary Values: {specific boundaries} | Error Handling: {specific error cases} | Edge Cases: {specific cases}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
If a category does not apply, explicitly write "N/A" (do not omit it).
|
|
250
|
+
- Instructions about marking task status in tasks.md and logging implementation with `log-implementation` tool
|
|
251
|
+
|
|
252
|
+
### 5. Create the Document
|
|
253
|
+
|
|
254
|
+
Write the tasks document to:
|
|
255
|
+
```
|
|
256
|
+
.spec-workflow/specs/{spec-name}/tasks.md
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Task status markers:
|
|
260
|
+
- `- [ ]` = Pending
|
|
261
|
+
- `- [-]` = In progress
|
|
262
|
+
- `- [x]` = Completed
|
|
263
|
+
|
|
264
|
+
### 6. Update Design Traceability Matrix
|
|
265
|
+
|
|
266
|
+
After creating tasks.md, back-fill the "Target Task ID" column in the Requirements Traceability Matrix in design.md. This enables tracing from design components to tasks.
|
|
267
|
+
|
|
268
|
+
1. Read the Traceability Matrix in design.md
|
|
269
|
+
2. Identify the corresponding task ID from tasks.md for each component row
|
|
270
|
+
3. Fill in the "Target Task ID" column
|
|
271
|
+
4. **Verify that every component has an assigned task** — if any component row is unassigned, add a task and update the matrix
|
|
272
|
+
|
|
273
|
+
### 7. Self-Review via Subagent (before approval)
|
|
274
|
+
|
|
275
|
+
Validate the document in **2 stages** before approval.
|
|
276
|
+
|
|
277
|
+
#### Step A: fix (mechanical auto-fixes)
|
|
278
|
+
|
|
279
|
+
Auto-fix placeholders, formatting, and typos. Do not add or change content:
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
Agent({
|
|
283
|
+
subagent_type: "general-purpose",
|
|
284
|
+
description: "Fix tasks spec (auto-fix)",
|
|
285
|
+
prompt: "You are a spec document reviewer. Auto-fix minor issues in the document at:
|
|
286
|
+
{project-path}/.spec-workflow/specs/{spec-name}/tasks.md
|
|
287
|
+
|
|
288
|
+
Document type: tasks
|
|
289
|
+
|
|
290
|
+
Items eligible for auto-fix (may directly modify the file):
|
|
291
|
+
- Remove placeholder text ([describe...], TODO, TBD)
|
|
292
|
+
- Fix markdown formatting (table alignment, heading levels, etc.)
|
|
293
|
+
- Obvious typos
|
|
294
|
+
|
|
295
|
+
Items NOT eligible for auto-fix (report as issues only):
|
|
296
|
+
- Adding, removing, or merging tasks
|
|
297
|
+
- Changing the content of _Prompt, _Leverage, _Requirements, etc.
|
|
298
|
+
- Traceability inconsistencies
|
|
299
|
+
|
|
300
|
+
Mode: fix — Return a structured report (auto-fixed items + remaining issues)."
|
|
301
|
+
})
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
#### Step B: check (content validation)
|
|
305
|
+
|
|
306
|
+
After fix completes, detect content issues. Do not modify the file:
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
Agent({
|
|
310
|
+
subagent_type: "general-purpose",
|
|
311
|
+
description: "Review tasks spec (check)",
|
|
312
|
+
prompt: "You are a spec document reviewer. Review the document (do NOT modify the file) at:
|
|
313
|
+
{project-path}/.spec-workflow/specs/{spec-name}/tasks.md
|
|
314
|
+
|
|
315
|
+
Document type: tasks
|
|
316
|
+
Template: {project-path}/.spec-workflow/templates/tasks-template.md
|
|
317
|
+
Requirements: {project-path}/.spec-workflow/specs/{spec-name}/requirements.md
|
|
318
|
+
Design: {project-path}/.spec-workflow/specs/{spec-name}/design.md
|
|
319
|
+
Test Design: {project-path}/.spec-workflow/specs/{spec-name}/test-design.md
|
|
320
|
+
|
|
321
|
+
Checks:
|
|
322
|
+
1. TEMPLATE: Every task has - [ ] marker, file path(s), _Requirements, _Prompt fields. Every implementation task also has _Leverage (Phase 0 setup tasks, PhaseReview tasks, and IT/E2E test tasks may omit _Leverage)
|
|
323
|
+
2. _Prompt has: Role, Task, Restrictions, Success fields in the format "Role: ... | Task: ... | Restrictions: ... | Success: ..."
|
|
324
|
+
3. CROSS-REFERENCE: Read requirements.md and design.md —
|
|
325
|
+
every requirement must have at least one implementing task,
|
|
326
|
+
every design component must have at least one creating task,
|
|
327
|
+
_Requirements IDs must match actual requirement IDs
|
|
328
|
+
4. TRACEABILITY: Verify that the Target Task ID column is filled in for all components in the Requirements Traceability Matrix in design.md.
|
|
329
|
+
If any component row is empty, add a task to tasks.md and update the matrix in design.md.
|
|
330
|
+
5. Tasks are atomic (1-3 files), in logical dependency order
|
|
331
|
+
6. No placeholder text, descriptions specific enough for AI implementation
|
|
332
|
+
7. PHASE STRUCTURE: Tasks are grouped under ## Phase headings with vertical slices
|
|
333
|
+
8. TDD: No standalone unit test tasks (e.g., 'write tests', 'create unit tests'). IT/E2E test tasks are allowed as separate tasks.
|
|
334
|
+
9. Every non-PhaseReview task has a _TestFocus field
|
|
335
|
+
10. Each phase ends with a _PhaseReview: true_ task
|
|
336
|
+
11. DEPENDENCIES: _DependsOn references point to valid task IDs within the same Phase. No circular dependencies. No self-references. Tasks that use types/models/outputs created by another task declare the dependency.
|
|
337
|
+
12. TEST-DESIGN TRACEABILITY: Read test-design.md —
|
|
338
|
+
every UT spec must have a corresponding task with matching _TestFocus,
|
|
339
|
+
every IT spec must have an integration test task,
|
|
340
|
+
every E2E spec must have an E2E test task
|
|
341
|
+
|
|
342
|
+
Mode: check — DO NOT modify the file. List all issues with location and suggested fix.
|
|
343
|
+
Return a structured report (PASS/FAIL with issues list)."
|
|
344
|
+
})
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
If check returns FAIL, fix the issues yourself and re-run check (up to 3 times). Once PASS, proceed to approval.
|
|
348
|
+
|
|
349
|
+
### 8. Approval Workflow
|
|
350
|
+
|
|
351
|
+
Same strict process — verbal approval is never accepted.
|
|
352
|
+
|
|
353
|
+
1. **Request approval**: `approvals` tool, `action: 'request'`, filePath only
|
|
354
|
+
2. **Poll status**: `approvals` tool, `action: 'status'`, keep polling
|
|
355
|
+
3. **Handle result**:
|
|
356
|
+
- **needs-revision**: Update tasks using reviewer comments, spawn the review subagent again, submit NEW approval
|
|
357
|
+
- **approved**: Move to cleanup
|
|
358
|
+
4. **Cleanup**: `approvals` tool, `action: 'delete'` — must succeed
|
|
359
|
+
- If delete fails: STOP, return to polling
|
|
360
|
+
5. **Spec complete**: After successful cleanup, tell the user:
|
|
361
|
+
> "Spec complete. tasks.md has been approved. To begin implementation, run `/spec-implement`."
|
|
362
|
+
**Stop here.** No automatic startup of any kind until the user personally types `/spec-implement` or an implementation trigger phrase (e.g., "implement task X", "start coding"). Auto-triggering on confirmation responses like "yes" or "go ahead" is also prohibited.
|
|
363
|
+
|
|
364
|
+
## Rules
|
|
365
|
+
|
|
366
|
+
- Feature names use kebab-case
|
|
367
|
+
- One spec at a time
|
|
368
|
+
- Tasks should be atomic (1-3 files each)
|
|
369
|
+
- Every task needs a `_Prompt` field with structured guidance
|
|
370
|
+
- Approval requests: filePath only, never content
|
|
371
|
+
- Never accept verbal approval — dashboard/VS Code extension only
|
|
372
|
+
- Never proceed if approval delete fails
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-test-design
|
|
3
|
+
description: "Phase 3 of spec-driven development: create a test design document that defines UT/IT/E2E test specifications. Use this skill after design is approved, when the user wants to define test strategy, test specifications, or plan testing before task breakdown. Triggers on: 'create test design', 'test specification', 'define test plan for X', 'test-design for X', or any request to create a test-design.md document."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Test Design (Phase 3)
|
|
7
|
+
|
|
8
|
+
Create a test design document that defines **how to test** the feature. This phase follows approved design and precedes task breakdown. The document defines concrete test cases at UT/IT/E2E levels, which subsequent phases reference for test implementation and verification.
|
|
9
|
+
|
|
10
|
+
## Prerequisites Check (MANDATORY — DO NOT SKIP)
|
|
11
|
+
|
|
12
|
+
Before doing anything else, verify all prerequisite files exist:
|
|
13
|
+
|
|
14
|
+
1. Check `.spec-workflow/specs/{spec-name}/requirements.md` exists
|
|
15
|
+
2. Check `.spec-workflow/specs/{spec-name}/design.md` exists
|
|
16
|
+
|
|
17
|
+
If ANY file is missing — **STOP immediately.** Inform the user: "{filename} does not exist; cannot begin test design. Please run {skill-name} first." Then exit this skill.
|
|
18
|
+
|
|
19
|
+
| Missing File | Required Skill |
|
|
20
|
+
|-------------|---------------|
|
|
21
|
+
| requirements.md | `/spec-requirements` |
|
|
22
|
+
| design.md | `/spec-design` |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
Design must be approved and cleaned up (Phases 1-2 complete). If not, use `/spec-design` first.
|
|
27
|
+
|
|
28
|
+
## Inputs
|
|
29
|
+
|
|
30
|
+
The same **spec name** used in previous phases (kebab-case, e.g., `user-authentication`).
|
|
31
|
+
|
|
32
|
+
## Process
|
|
33
|
+
|
|
34
|
+
### 1. Load Resources
|
|
35
|
+
|
|
36
|
+
**Template** — prefer custom, fall back to default; if neither exists, use the structure defined in this skill:
|
|
37
|
+
1. `.spec-workflow/user-templates/test-design-template.md` (custom)
|
|
38
|
+
2. `.spec-workflow/templates/test-design-template.md` (default; may not exist in all environments)
|
|
39
|
+
3. If both files are missing, do **not** fail; instead, construct `test-design.md` directly following the sections and guidance described below.
|
|
40
|
+
|
|
41
|
+
**Steering documents** — load if they exist:
|
|
42
|
+
```
|
|
43
|
+
.spec-workflow/steering/product.md
|
|
44
|
+
.spec-workflow/steering/tech.md
|
|
45
|
+
.spec-workflow/steering/structure.md
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2. Read Approved Documents
|
|
49
|
+
|
|
50
|
+
- `.spec-workflow/specs/{spec-name}/requirements.md`
|
|
51
|
+
- `.spec-workflow/specs/{spec-name}/design.md`
|
|
52
|
+
|
|
53
|
+
### 3. Analyze and Research
|
|
54
|
+
|
|
55
|
+
#### 3.1 UT 仕様の導出
|
|
56
|
+
|
|
57
|
+
design.md の **Components and Interfaces** セクションから、各コンポーネントのユニットテスト仕様を導出する:
|
|
58
|
+
|
|
59
|
+
1. 各コンポーネントの公開インターフェース(メソッド/関数)を列挙
|
|
60
|
+
2. 各インターフェースに対して、4カテゴリ(Happy Path / Boundary Values / Error Handling / Edge Cases)のテストケースを設計
|
|
61
|
+
3. コンポーネントの **Dependencies** からモック対象を特定
|
|
62
|
+
4. design.md の **Error Handling** テーブルから、各エラーコードに対応するエラーハンドリングテストを設計
|
|
63
|
+
|
|
64
|
+
**命名規則**: `UT-{コンポーネント番号}.{テストケース番号}` (例: UT-1.1, UT-1.2, UT-2.1)
|
|
65
|
+
|
|
66
|
+
#### 3.2 IT 仕様の導出
|
|
67
|
+
|
|
68
|
+
design.md の **Architecture** 図と **Components and Interfaces** の Dependencies 記述から、コンポーネント間の重要な相互作用を特定しテストケース化する:
|
|
69
|
+
|
|
70
|
+
1. Architecture 図の矢印(依存関係)ごとに、結合テストシナリオを検討
|
|
71
|
+
2. DB アクセスを伴うコンポーネントには DB 統合テストを設計
|
|
72
|
+
3. 外部 API 連携がある場合はモック/スタブを使った統合テストを設計
|
|
73
|
+
|
|
74
|
+
**命名規則**: `IT-{シナリオ番号}` (例: IT-1, IT-2)
|
|
75
|
+
|
|
76
|
+
#### 3.3 E2E 仕様の導出
|
|
77
|
+
|
|
78
|
+
requirements.md の **ユーザーストーリー** と **Acceptance Criteria** から、ユーザージャーニーレベルのテストシナリオを導出する:
|
|
79
|
+
|
|
80
|
+
1. 各ユーザーストーリーの正常フローを E2E シナリオ化
|
|
81
|
+
2. 重要な失敗シナリオ(認証エラー、権限不足等)も E2E シナリオに含める
|
|
82
|
+
3. design.md の API Design セクションがある場合、API レスポンスの検証ポイントを明記
|
|
83
|
+
|
|
84
|
+
**命名規則**: `E2E-{シナリオ番号}` (例: E2E-1, E2E-2)
|
|
85
|
+
|
|
86
|
+
#### 3.5 コンテナ・テストインフラの技術選定
|
|
87
|
+
|
|
88
|
+
プロジェクトタイプとコンテナ構成を検出し、テスト技術を選定する:
|
|
89
|
+
|
|
90
|
+
1. **コンテナ構成の確認**:
|
|
91
|
+
- design.md の Container Architecture セクションを読む
|
|
92
|
+
- docker-compose.yml / Dockerfile の存在確認
|
|
93
|
+
|
|
94
|
+
2. **DB テスト戦略の決定**:
|
|
95
|
+
- DB 依存あり → testcontainers(デフォルト)
|
|
96
|
+
- docker-compose.test.yml が既存 → それを活用
|
|
97
|
+
- DB なし → 不要
|
|
98
|
+
|
|
99
|
+
3. **E2E テストランナーの決定**:
|
|
100
|
+
- フロントエンドあり(HTML テンプレート、JSX/TSX、Leptos view! マクロ)→ Playwright
|
|
101
|
+
- API のみ → reqwest (Rust) / supertest (Node.js)
|
|
102
|
+
|
|
103
|
+
4. 選定結果を test-design.md の「E2E Test Infrastructure」セクションに記載
|
|
104
|
+
|
|
105
|
+
#### 3.6 既存テストパターンの把握
|
|
106
|
+
|
|
107
|
+
コードベースを探索し、既存のテストフレームワーク・パターン・ヘルパーを把握する:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# テストファイルの構造を確認
|
|
111
|
+
find . -name "*test*" -o -name "*spec*" | head -20
|
|
112
|
+
|
|
113
|
+
# テストフレームワークの確認
|
|
114
|
+
grep -r "mockall\|rstest\|jest\|pytest\|vitest" Cargo.toml package.json 2>/dev/null
|
|
115
|
+
|
|
116
|
+
# 既存のテストヘルパー
|
|
117
|
+
find . -path "*/test*/*helper*" -o -path "*/test*/*fixture*" -o -path "*/test*/*util*" | head -10
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### 4. Create Test Design Document
|
|
121
|
+
|
|
122
|
+
Write the test design document to:
|
|
123
|
+
```
|
|
124
|
+
.spec-workflow/specs/{spec-name}/test-design.md
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**必須セクション:**
|
|
128
|
+
1. **Test Strategy Overview** — テスト全体方針、Test Pyramid、環境要件
|
|
129
|
+
2. **Unit Test Specifications** — design.md の全コンポーネントに対する UT 仕様
|
|
130
|
+
3. **Integration Test Specifications** — コンポーネント間結合の IT 仕様
|
|
131
|
+
4. **E2E Test Specifications** — ユーザージャーニーの E2E 仕様
|
|
132
|
+
5. **Requirements-Test Traceability Matrix** — 全 Requirement ID に UT/IT/E2E が紐づくこと
|
|
133
|
+
6. **Test Data Requirements** — 共有フィクスチャ、テストデータ生成方針
|
|
134
|
+
|
|
135
|
+
**品質基準:**
|
|
136
|
+
- 全 Requirement ID に最低1つの UT と、関連する IT または E2E が紐づいていること
|
|
137
|
+
- design.md の全コンポーネントに対して UT 仕様が存在すること
|
|
138
|
+
- 各 UT は 4カテゴリ(Happy Path / Boundary Values / Error Handling / Edge Cases)のうち、該当するカテゴリを網羅していること
|
|
139
|
+
- テストケースの Input / Expected Output / Verification が具体的であること(プレースホルダー不可)
|
|
140
|
+
|
|
141
|
+
### 5. Self-Review via Subagent (before approval)
|
|
142
|
+
|
|
143
|
+
Validate the document in **2 stages** before approval.
|
|
144
|
+
|
|
145
|
+
#### Step A: fix (mechanical auto-fixes)
|
|
146
|
+
|
|
147
|
+
Auto-fix placeholders, formatting, and typos. Do not add or change content:
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
Agent({
|
|
151
|
+
subagent_type: "general-purpose",
|
|
152
|
+
description: "Fix test-design spec (auto-fix)",
|
|
153
|
+
prompt: "You are a spec document reviewer. Auto-fix minor issues in the document at:
|
|
154
|
+
{project-path}/.spec-workflow/specs/{spec-name}/test-design.md
|
|
155
|
+
|
|
156
|
+
Document type: test-design
|
|
157
|
+
|
|
158
|
+
Items eligible for auto-fix (may directly modify the file):
|
|
159
|
+
- Remove placeholder text ([describe...], TODO, TBD)
|
|
160
|
+
- Fix markdown formatting (table alignment, heading levels, etc.)
|
|
161
|
+
- Obvious typos
|
|
162
|
+
|
|
163
|
+
Items NOT eligible for auto-fix (report as issues only):
|
|
164
|
+
- Adding, removing, or modifying test cases
|
|
165
|
+
- Changing test case content (Input, Expected Output, Verification)
|
|
166
|
+
- Traceability inconsistencies
|
|
167
|
+
|
|
168
|
+
Mode: fix — Return a structured report (auto-fixed items + remaining issues)."
|
|
169
|
+
})
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### Step B: check (content validation)
|
|
173
|
+
|
|
174
|
+
After fix completes, detect content issues. Do not modify the file:
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
Agent({
|
|
178
|
+
subagent_type: "general-purpose",
|
|
179
|
+
description: "Review test-design spec (check)",
|
|
180
|
+
prompt: "You are a spec document reviewer. Review the document (do NOT modify the file) at:
|
|
181
|
+
{project-path}/.spec-workflow/specs/{spec-name}/test-design.md
|
|
182
|
+
|
|
183
|
+
Document type: test-design
|
|
184
|
+
Template: {project-path}/.spec-workflow/templates/test-design-template.md
|
|
185
|
+
Requirements: {project-path}/.spec-workflow/specs/{spec-name}/requirements.md
|
|
186
|
+
Design: {project-path}/.spec-workflow/specs/{spec-name}/design.md
|
|
187
|
+
|
|
188
|
+
Checks:
|
|
189
|
+
1. TEMPLATE: Every section from the template must exist with real content (no placeholders)
|
|
190
|
+
2. UT COVERAGE: Every component in design.md must have corresponding UT specifications
|
|
191
|
+
3. UT CATEGORIES: Each component's UT specs must cover all applicable categories (Happy Path, Boundary Values, Error Handling, Edge Cases)
|
|
192
|
+
4. IT COVERAGE: Every significant component interaction in design.md Architecture must have an IT specification
|
|
193
|
+
5. E2E COVERAGE: Every user story in requirements.md must have at least one E2E specification
|
|
194
|
+
6. TRACEABILITY: Requirements-Test Traceability Matrix must cover ALL Requirement IDs. Every Requirement ID must have at least one UT and one IT or E2E
|
|
195
|
+
7. SPECIFICITY: Test cases must have concrete Input, Expected Output, and Verification (no placeholders or vague descriptions)
|
|
196
|
+
8. NAMING: Test case IDs follow the naming convention (UT-N.M, IT-N, E2E-N)
|
|
197
|
+
9. ERROR HANDLING: design.md Error Handling table entries must have corresponding error handling test cases
|
|
198
|
+
10. TEST DATA: Test Data Requirements section must define shared fixtures and generation strategy
|
|
199
|
+
11. E2E INFRASTRUCTURE: E2E Test Infrastructure section must define project type, container test setup, and test runner
|
|
200
|
+
12. CONTAINER CONSISTENCY: IT/E2E specs Technology fields must be consistent with design.md Container Architecture and E2E Test Infrastructure section
|
|
201
|
+
|
|
202
|
+
Mode: check — DO NOT modify the file. List all issues with location and suggested fix.
|
|
203
|
+
Return a structured report (PASS/FAIL with issues list)."
|
|
204
|
+
})
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
If check returns FAIL, fix the issues yourself and re-run check (up to 3 times). Once PASS, proceed to approval.
|
|
208
|
+
|
|
209
|
+
### 6. Approval Workflow
|
|
210
|
+
|
|
211
|
+
Same strict process — verbal approval is never accepted.
|
|
212
|
+
|
|
213
|
+
1. **Request approval**: `approvals` tool, `action: 'request'`, filePath only
|
|
214
|
+
2. **Poll status**: `approvals` tool, `action: 'status'`, keep polling
|
|
215
|
+
3. **Handle result**:
|
|
216
|
+
- **needs-revision**: Update test-design using reviewer comments, spawn the review subagent again, submit NEW approval
|
|
217
|
+
- **approved**: Move to cleanup
|
|
218
|
+
4. **Cleanup**: `approvals` tool, `action: 'delete'` — must succeed
|
|
219
|
+
- If delete fails: STOP, return to polling
|
|
220
|
+
5. **Spec complete**: After successful cleanup, tell the user:
|
|
221
|
+
> "Spec complete. test-design.md has been approved. To define tasks, run `/spec-tasks`."
|
|
222
|
+
**Stop here.** No automatic startup of any kind until the user personally types `/spec-tasks` or a task breakdown trigger phrase. Auto-triggering on confirmation responses like "yes" or "go ahead" is also prohibited.
|
|
223
|
+
|
|
224
|
+
## Rules
|
|
225
|
+
|
|
226
|
+
- Feature names use kebab-case
|
|
227
|
+
- One spec at a time
|
|
228
|
+
- Every design.md component must have UT specs
|
|
229
|
+
- Every requirement must appear in the Traceability Matrix
|
|
230
|
+
- Test cases must be concrete (no placeholders in Input/Expected Output/Verification)
|
|
231
|
+
- Approval requests: filePath only, never content
|
|
232
|
+
- Never accept verbal approval — dashboard/VS Code extension only
|
|
233
|
+
- Never proceed if approval delete fails
|