@lbruton/specflow 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +955 -0
- package/LICENSE +674 -0
- package/README.ar.md +314 -0
- package/README.de.md +314 -0
- package/README.es.md +314 -0
- package/README.fr.md +314 -0
- package/README.it.md +314 -0
- package/README.ja.md +316 -0
- package/README.ko.md +314 -0
- package/README.md +239 -0
- package/README.pt.md +314 -0
- package/README.ru.md +314 -0
- package/README.zh.md +314 -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 +344 -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 +643 -0
- package/dist/core/__tests__/security-utils.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 +237 -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 +12 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +144 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/path-utils.d.ts +63 -0
- package/dist/core/path-utils.d.ts.map +1 -0
- package/dist/core/path-utils.js +288 -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 +293 -0
- package/dist/core/project-registry.js.map +1 -0
- package/dist/core/security-utils.d.ts +97 -0
- package/dist/core/security-utils.d.ts.map +1 -0
- package/dist/core/security-utils.js +264 -0
- package/dist/core/security-utils.js.map +1 -0
- package/dist/core/task-parser.d.ts +63 -0
- package/dist/core/task-parser.d.ts.map +1 -0
- package/dist/core/task-parser.js +332 -0
- package/dist/core/task-parser.js.map +1 -0
- package/dist/core/task-validator.d.ts +35 -0
- package/dist/core/task-validator.d.ts.map +1 -0
- package/dist/core/task-validator.js +236 -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 +69 -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 +116 -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 +586 -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 +625 -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 +1304 -0
- package/dist/dashboard/multi-server.js.map +1 -0
- package/dist/dashboard/parser.d.ts +19 -0
- package/dist/dashboard/parser.d.ts.map +1 -0
- package/dist/dashboard/parser.js +290 -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-CtYZ6WTd.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-CzEvDZI5.js +118 -0
- package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/dist/dashboard/public/assets/c4Diagram-c83219d4-CuPd1dkK.js +10 -0
- package/dist/dashboard/public/assets/channel-kGGkJUti.js +1 -0
- package/dist/dashboard/public/assets/classDiagram-beda092f-CDTLUu9K.js +2 -0
- package/dist/dashboard/public/assets/classDiagram-v2-2358418a-BlHqrcgN.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-CHdfA33T.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-B3cTooQ1.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-CbHatH6o.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-MYCicRH6.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-DDm9aBGx.js +10 -0
- package/dist/dashboard/public/assets/flowDiagram-50d868cf-zb-JtJG0.js +4 -0
- package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-DRD7GAtr.js +1 -0
- package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-D5TGPnG-.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-Cqst4HhR.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-C8JWqtTx.js +70 -0
- package/dist/dashboard/public/assets/graph-Lpyd8dqZ.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--_-9KDkB.js +1 -0
- package/dist/dashboard/public/assets/index-5325376f-Ngqm3jj1.js +1 -0
- package/dist/dashboard/public/assets/index-7POr4IQt.js +1 -0
- package/dist/dashboard/public/assets/index-B2wloU4M.js +7 -0
- package/dist/dashboard/public/assets/index-BB9i8dPx.js +329 -0
- package/dist/dashboard/public/assets/index-BHCmvfMN.js +1 -0
- package/dist/dashboard/public/assets/index-BWvyG2sq.js +1 -0
- package/dist/dashboard/public/assets/index-BhwV70vC.js +2 -0
- package/dist/dashboard/public/assets/index-Bqk8CAAy.js +1 -0
- package/dist/dashboard/public/assets/index-CUP35nar.js +1 -0
- package/dist/dashboard/public/assets/index-CYy3mVaI.js +1 -0
- package/dist/dashboard/public/assets/index-Cqbzr5qD.js +3 -0
- package/dist/dashboard/public/assets/index-Cv_FT1Rp.css +1 -0
- package/dist/dashboard/public/assets/index-D4J257wx.js +1 -0
- package/dist/dashboard/public/assets/index-D9fDAa7f.js +1 -0
- package/dist/dashboard/public/assets/index-DFN4bEYo.js +1 -0
- package/dist/dashboard/public/assets/index-DQ2Aap_e.js +1 -0
- package/dist/dashboard/public/assets/index-Djo38KZb.js +1 -0
- package/dist/dashboard/public/assets/index-RZXsuDxo.js +1 -0
- package/dist/dashboard/public/assets/index-m5SRqxVX.js +1 -0
- package/dist/dashboard/public/assets/infoDiagram-8eee0895-DYMb32US.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-BgL0JuAb.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-DP9fJAz2.js +1 -0
- package/dist/dashboard/public/assets/line-N_NGiB5u.js +1 -0
- package/dist/dashboard/public/assets/linear-B1Bl-FQE.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-DuejFf1j.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-fJ2uKW1i.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-Dowa1iq5.js +7 -0
- package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
- package/dist/dashboard/public/assets/requirementDiagram-08caed73-1PKeJnUu.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-C3Nu91E8.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-BbyYeaFb.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-BVkb4gIE.js +1 -0
- package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-Bm7qug6Q.js +1 -0
- package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
- package/dist/dashboard/public/assets/styles-b4e223ce-BuqydlKk.js +160 -0
- package/dist/dashboard/public/assets/styles-ca3715f6-C8L7peEM.js +207 -0
- package/dist/dashboard/public/assets/styles-d45a18b0-BbrCCPkQ.js +116 -0
- package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
- package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-DQZAHvSt.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-YPoIuE--.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-BnI4pVWV.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/code-quality-reviewer-template.md +76 -0
- package/dist/markdown/templates/design-template.md +141 -0
- package/dist/markdown/templates/implementer-prompt-template.md +122 -0
- package/dist/markdown/templates/product-template.md +51 -0
- package/dist/markdown/templates/requirements-template.md +73 -0
- package/dist/markdown/templates/spec-reviewer-template.md +58 -0
- package/dist/markdown/templates/structure-template.md +145 -0
- package/dist/markdown/templates/tasks-template.md +182 -0
- package/dist/markdown/templates/tech-template.md +99 -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 +93 -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 +73 -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 +189 -0
- package/dist/prompts/implement-task.js.map +1 -0
- package/dist/prompts/index.d.ts +15 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +49 -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 +47 -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 +51 -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 +224 -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 +75 -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__/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 +501 -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 +57 -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 +446 -0
- package/dist/tools/log-implementation.js.map +1 -0
- package/dist/tools/spec-list.d.ts +5 -0
- package/dist/tools/spec-list.d.ts.map +1 -0
- package/dist/tools/spec-list.js +144 -0
- package/dist/tools/spec-list.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 +238 -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 +580 -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 +186 -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 +105 -0
|
@@ -0,0 +1,580 @@
|
|
|
1
|
+
export const specWorkflowGuideTool = {
|
|
2
|
+
name: 'spec-workflow-guide',
|
|
3
|
+
description: `Load essential spec workflow instructions to guide feature development from idea to implementation.
|
|
4
|
+
|
|
5
|
+
# Instructions
|
|
6
|
+
Call this tool FIRST when users request spec creation, feature development, or mention specifications. This provides the complete workflow sequence (Requirements → Design → Tasks → Implementation) that must be followed. Always load before any other spec tools to ensure proper workflow understanding. Its important that you follow this workflow exactly to avoid errors.`,
|
|
7
|
+
inputSchema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {},
|
|
10
|
+
additionalProperties: false
|
|
11
|
+
},
|
|
12
|
+
annotations: {
|
|
13
|
+
title: 'Spec Workflow Guide',
|
|
14
|
+
readOnlyHint: true,
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
export async function specWorkflowGuideHandler(args, context) {
|
|
18
|
+
// Dashboard URL is populated from registry in server.ts
|
|
19
|
+
const dashboardMessage = context.dashboardUrl ?
|
|
20
|
+
`Monitor progress on dashboard: ${context.dashboardUrl}` :
|
|
21
|
+
'Please start the dashboard with: spec-workflow-mcp --dashboard';
|
|
22
|
+
return {
|
|
23
|
+
success: true,
|
|
24
|
+
message: 'Complete spec workflow guide loaded - follow this workflow exactly',
|
|
25
|
+
data: {
|
|
26
|
+
guide: getSpecWorkflowGuide(),
|
|
27
|
+
dashboardUrl: context.dashboardUrl,
|
|
28
|
+
dashboardAvailable: !!context.dashboardUrl
|
|
29
|
+
},
|
|
30
|
+
nextSteps: [
|
|
31
|
+
'Follow sequence: Requirements → Design → Tasks → Implementation',
|
|
32
|
+
'Load templates with get-template-context first',
|
|
33
|
+
'Request approval after each document',
|
|
34
|
+
'Use MCP tools only',
|
|
35
|
+
dashboardMessage
|
|
36
|
+
]
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function getSpecWorkflowGuide() {
|
|
40
|
+
const currentYear = new Date().getFullYear();
|
|
41
|
+
return `# Spec Development Workflow
|
|
42
|
+
|
|
43
|
+
## Overview
|
|
44
|
+
|
|
45
|
+
You guide users through spec-driven development using MCP tools. Transform rough ideas into detailed specifications through Requirements → Design → Tasks → Implementation phases. Use web search when available for current best practices (current year: ${currentYear}). Its important that you follow this workflow exactly to avoid errors.
|
|
46
|
+
Spec names MUST use issue prefix: {ISSUE-ID}-{kebab-title} (e.g., STAK-123-user-authentication). An issue is REQUIRED — specs without one cannot be created. Create ONE spec at a time.
|
|
47
|
+
|
|
48
|
+
## Workflow Diagram
|
|
49
|
+
\`\`\`mermaid
|
|
50
|
+
flowchart TD
|
|
51
|
+
Start([Start: User requests feature]) --> CheckSteering{Steering docs exist?}
|
|
52
|
+
CheckSteering -->|Yes| P1_Load[Read steering docs:<br/>.spec-workflow/steering/*.md]
|
|
53
|
+
CheckSteering -->|No| P1_Template
|
|
54
|
+
|
|
55
|
+
%% Phase 1: Requirements
|
|
56
|
+
P1_Load --> P1_Template[Check user-templates first,<br/>then read template:<br/>requirements-template.md]
|
|
57
|
+
P1_Template --> P1_Research[Web search if available]
|
|
58
|
+
P1_Research --> P1_Create[Create file:<br/>.spec-workflow/specs/{name}/<br/>requirements.md]
|
|
59
|
+
P1_Create --> P1_Approve[approvals<br/>action: request<br/>filePath only]
|
|
60
|
+
P1_Approve --> P1_Status[approvals<br/>action: status<br/>poll status]
|
|
61
|
+
P1_Status --> P1_Check{Status?}
|
|
62
|
+
P1_Check -->|needs-revision| P1_Update[Update document using user comments as guidance]
|
|
63
|
+
P1_Update --> P1_Create
|
|
64
|
+
P1_Check -->|approved| P1_Clean[approvals<br/>action: delete]
|
|
65
|
+
P1_Clean -->|failed| P1_Status
|
|
66
|
+
|
|
67
|
+
%% Phase 2: Design
|
|
68
|
+
P1_Clean -->|success| P2_Template[Check user-templates first,<br/>then read template:<br/>design-template.md]
|
|
69
|
+
P2_Template --> P2_Analyze[Analyze codebase patterns]
|
|
70
|
+
P2_Analyze --> P2_Create[Create file:<br/>.spec-workflow/specs/{name}/<br/>design.md]
|
|
71
|
+
P2_Create --> P2_Approve[approvals<br/>action: request<br/>filePath only]
|
|
72
|
+
P2_Approve --> P2_Status[approvals<br/>action: status<br/>poll status]
|
|
73
|
+
P2_Status --> P2_Check{Status?}
|
|
74
|
+
P2_Check -->|needs-revision| P2_Update[Update document using user comments as guidance]
|
|
75
|
+
P2_Update --> P2_Create
|
|
76
|
+
P2_Check -->|approved| P2_Clean[approvals<br/>action: delete]
|
|
77
|
+
P2_Clean -->|failed| P2_Status
|
|
78
|
+
|
|
79
|
+
%% Phase 3: Tasks
|
|
80
|
+
P2_Clean -->|success| P3_Template[Check user-templates first,<br/>then read template:<br/>tasks-template.md]
|
|
81
|
+
P3_Template --> P3_Break[Convert design to tasks]
|
|
82
|
+
P3_Break --> P3_Create[Create file:<br/>.spec-workflow/specs/{name}/<br/>tasks.md]
|
|
83
|
+
P3_Create --> P3_Approve[approvals<br/>action: request<br/>filePath only]
|
|
84
|
+
P3_Approve --> P3_Status[approvals<br/>action: status<br/>poll status]
|
|
85
|
+
P3_Status --> P3_Check{Status?}
|
|
86
|
+
P3_Check -->|needs-revision| P3_Update[Update document using user comments as guidance]
|
|
87
|
+
P3_Update --> P3_Create
|
|
88
|
+
P3_Check -->|approved| P3_Clean[approvals<br/>action: delete]
|
|
89
|
+
P3_Clean -->|failed| P3_Status
|
|
90
|
+
|
|
91
|
+
%% Phase 3.5: Visual Prototype Gate (conditional)
|
|
92
|
+
P3_Clean -->|success| P35_Check{design.md declares<br/>UI changes?}
|
|
93
|
+
P35_Check -->|No| IRG_Run
|
|
94
|
+
P35_Check -->|Yes| P35_Mockup[Tasks 0.1-0.3:<br/>Stitch mockup +<br/>Playground prototype]
|
|
95
|
+
P35_Mockup --> P35_Approve{User approves<br/>visual design?}
|
|
96
|
+
P35_Approve -->|No| P35_Revise[Revise mockup/<br/>prototype]
|
|
97
|
+
P35_Revise --> P35_Mockup
|
|
98
|
+
P35_Approve -->|Yes| P35_Update[Update design.md<br/>Prototype Artifacts]
|
|
99
|
+
P35_Update --> IRG_Run
|
|
100
|
+
|
|
101
|
+
%% Phase 3.9: Implementation Readiness Gate
|
|
102
|
+
IRG_Run[Cross-validate:<br/>requirements + design + tasks<br/>Save readiness-report.md] --> IRG_Approve[approvals<br/>action: request<br/>readiness-report.md]
|
|
103
|
+
IRG_Approve --> IRG_Status[approvals<br/>action: status<br/>poll status]
|
|
104
|
+
IRG_Status --> IRG_Result{Dashboard<br/>decision?}
|
|
105
|
+
IRG_Result -->|approved| IRG_Clean[approvals<br/>action: delete]
|
|
106
|
+
IRG_Clean -->|success| P4_Ready[Spec complete.<br/>Ready to implement?]
|
|
107
|
+
IRG_Clean -->|failed| IRG_Status
|
|
108
|
+
IRG_Result -->|concerns| IRG_Log[Log concerns to<br/>tasks.md then<br/>delete approval]
|
|
109
|
+
IRG_Log --> P4_Ready
|
|
110
|
+
IRG_Result -->|rejected| IRG_Fix[Fix spec documents<br/>to resolve<br/>misalignment]
|
|
111
|
+
IRG_Fix --> IRG_Run
|
|
112
|
+
|
|
113
|
+
%% Phase 4: Implementation
|
|
114
|
+
P4_Ready -->|Yes| P4_Status[spec-status]
|
|
115
|
+
P4_Status --> P4_Task[Edit tasks.md:<br/>Change [ ] to [-]<br/>for in-progress]
|
|
116
|
+
P4_Task --> P4_Code[Dispatch subagent:<br/>Implement code]
|
|
117
|
+
P4_Code --> P4_SpecReview{Spec compliance<br/>review?}
|
|
118
|
+
P4_SpecReview -->|pass| P4_QualityReview{Code quality<br/>review?}
|
|
119
|
+
P4_SpecReview -->|fail| P4_Code
|
|
120
|
+
P4_QualityReview -->|pass| P4_Log[log-implementation<br/>Record implementation<br/>details]
|
|
121
|
+
P4_QualityReview -->|fail| P4_Code
|
|
122
|
+
P4_Log --> P4_Complete[Edit tasks.md:<br/>Change [-] to [x]<br/>for completed]
|
|
123
|
+
P4_Complete --> P4_More{More tasks?}
|
|
124
|
+
P4_More -->|Yes| P4_Task
|
|
125
|
+
P4_More -->|No| P5_Start[Phase 5.1:<br/>Automated E2E]
|
|
126
|
+
P5_Start --> P5_E2E[/bb-test:<br/>Browserbase/Stagehand E2E<br/>against PR preview URL]
|
|
127
|
+
P5_E2E --> P5_Check{Tests pass?}
|
|
128
|
+
P5_Check -->|fail| P5_Fix[Fix failing tests<br/>before QA]
|
|
129
|
+
P5_Fix --> P5_E2E
|
|
130
|
+
P5_Check -->|pass| P5_QA[Phase 5.2:<br/>User QA Session]
|
|
131
|
+
P5_QA --> P5_QA_Present[Present preview URL<br/>Wait for user]
|
|
132
|
+
P5_QA_Present --> P5_QA_Check{User reports<br/>issues?}
|
|
133
|
+
P5_QA_Check -->|Yes| P5_QA_Fix[Fix issue<br/>commit + push<br/>wait for rebuild]
|
|
134
|
+
P5_QA_Fix --> P5_QA_Present
|
|
135
|
+
P5_QA_Check -->|QA complete| P5_Final[Phase 5.3:<br/>Docs + PR Finalization]
|
|
136
|
+
P5_Final --> P5_Docs[/vault-update:<br/>Update DocVault pages<br/>on final post-QA code]
|
|
137
|
+
P5_Docs --> P5_Issues[Close linked issues]
|
|
138
|
+
P5_Issues --> P5_Ready[Mark PR<br/>ready for review]
|
|
139
|
+
P5_Ready --> Done([Spec Complete:<br/>Hand off to /pr-resolve])
|
|
140
|
+
|
|
141
|
+
style Start fill:#e1f5e1
|
|
142
|
+
style Done fill:#e1f5e1
|
|
143
|
+
style P5_Start fill:#e3f2fd
|
|
144
|
+
style P5_Check fill:#fff4e6
|
|
145
|
+
style P5_QA fill:#e8f5e9
|
|
146
|
+
style P5_QA_Check fill:#fff4e6
|
|
147
|
+
style P5_Final fill:#e3f2fd
|
|
148
|
+
style P1_Check fill:#ffe6e6
|
|
149
|
+
style P2_Check fill:#ffe6e6
|
|
150
|
+
style P3_Check fill:#ffe6e6
|
|
151
|
+
style P4_SpecReview fill:#ffe6e6
|
|
152
|
+
style P4_QualityReview fill:#ffe6e6
|
|
153
|
+
style CheckSteering fill:#fff4e6
|
|
154
|
+
style P4_More fill:#fff4e6
|
|
155
|
+
style P35_Check fill:#fff4e6
|
|
156
|
+
style P35_Approve fill:#ffe6e6
|
|
157
|
+
style P35_Mockup fill:#e8f5e9
|
|
158
|
+
style P35_Update fill:#e3f2fd
|
|
159
|
+
style IRG_Run fill:#f3e5f5
|
|
160
|
+
style IRG_Approve fill:#e3f2fd
|
|
161
|
+
style IRG_Result fill:#ffe6e6
|
|
162
|
+
style IRG_Clean fill:#e3f2fd
|
|
163
|
+
style IRG_Log fill:#fff4e6
|
|
164
|
+
style IRG_Fix fill:#ffe6e6
|
|
165
|
+
style P4_Log fill:#e3f2fd
|
|
166
|
+
\`\`\`
|
|
167
|
+
|
|
168
|
+
## Spec Workflow
|
|
169
|
+
|
|
170
|
+
### Phase 1: Requirements
|
|
171
|
+
**Purpose**: Define what to build based on user needs.
|
|
172
|
+
|
|
173
|
+
**File Operations**:
|
|
174
|
+
- Read steering docs: \`.spec-workflow/steering/*.md\` (if they exist)
|
|
175
|
+
- Check for custom template: \`.spec-workflow/user-templates/requirements-template.md\`
|
|
176
|
+
- Read template: \`.spec-workflow/templates/requirements-template.md\` (if no custom template)
|
|
177
|
+
- Create document: \`.spec-workflow/specs/{issue-id}-{kebab-title}/requirements.md\`
|
|
178
|
+
|
|
179
|
+
**Tools**:
|
|
180
|
+
- approvals: Manage approval workflow (actions: request, status, delete)
|
|
181
|
+
|
|
182
|
+
**Process**:
|
|
183
|
+
1. Check if \`.spec-workflow/steering/\` exists (if yes, read product.md, tech.md, structure.md)
|
|
184
|
+
2. Check for custom template at \`.spec-workflow/user-templates/requirements-template.md\`
|
|
185
|
+
3. If no custom template, read from \`.spec-workflow/templates/requirements-template.md\`
|
|
186
|
+
4. Research market/user expectations (if web search available, current year: ${currentYear})
|
|
187
|
+
5. Generate requirements as user stories with EARS criteria6. Create \`requirements.md\` at \`.spec-workflow/specs/{issue-id}-{kebab-title}/requirements.md\`
|
|
188
|
+
7. Request approval using approvals tool with action:'request' (filePath only, never content)
|
|
189
|
+
8. Poll status using approvals with action:'status' until approved/needs-revision (NEVER accept verbal approval)
|
|
190
|
+
9. If needs-revision: update document using comments, create NEW approval, do NOT proceed
|
|
191
|
+
10. Once approved: use approvals with action:'delete' (must succeed) before proceeding
|
|
192
|
+
11. If delete fails: STOP - return to polling
|
|
193
|
+
|
|
194
|
+
### Phase 2: Design
|
|
195
|
+
**Purpose**: Create technical design addressing all requirements.
|
|
196
|
+
|
|
197
|
+
**File Operations**:
|
|
198
|
+
- Check for custom template: \`.spec-workflow/user-templates/design-template.md\`
|
|
199
|
+
- Read template: \`.spec-workflow/templates/design-template.md\` (if no custom template)
|
|
200
|
+
- Create document: \`.spec-workflow/specs/{issue-id}-{kebab-title}/design.md\`
|
|
201
|
+
|
|
202
|
+
**Tools**:
|
|
203
|
+
- approvals: Manage approval workflow (actions: request, status, delete)
|
|
204
|
+
|
|
205
|
+
**Process**:
|
|
206
|
+
1. Check for custom template at \`.spec-workflow/user-templates/design-template.md\`
|
|
207
|
+
2. If no custom template, read from \`.spec-workflow/templates/design-template.md\`
|
|
208
|
+
3. Analyze codebase for patterns to reuse
|
|
209
|
+
4. Research technology choices (if web search available, current year: ${currentYear})
|
|
210
|
+
5. Generate design with all template sections6. Create \`design.md\` at \`.spec-workflow/specs/{issue-id}-{kebab-title}/design.md\`
|
|
211
|
+
7. Request approval using approvals tool with action:'request'
|
|
212
|
+
8. Poll status using approvals with action:'status' until approved/needs-revision
|
|
213
|
+
9. If needs-revision: update document using comments, create NEW approval, do NOT proceed
|
|
214
|
+
10. Once approved: use approvals with action:'delete' (must succeed) before proceeding
|
|
215
|
+
11. If delete fails: STOP - return to polling
|
|
216
|
+
|
|
217
|
+
### Phase 3: Tasks
|
|
218
|
+
**Purpose**: Break design into atomic implementation tasks.
|
|
219
|
+
|
|
220
|
+
**File Operations**:
|
|
221
|
+
- Check for custom template: \`.spec-workflow/user-templates/tasks-template.md\`
|
|
222
|
+
- Read template: \`.spec-workflow/templates/tasks-template.md\` (if no custom template)
|
|
223
|
+
- Create document: \`.spec-workflow/specs/{issue-id}-{kebab-title}/tasks.md\`
|
|
224
|
+
|
|
225
|
+
**Tools**:
|
|
226
|
+
- approvals: Manage approval workflow (actions: request, status, delete)
|
|
227
|
+
|
|
228
|
+
**Process**:
|
|
229
|
+
1. Check for custom template at \`.spec-workflow/user-templates/tasks-template.md\`
|
|
230
|
+
2. If no custom template, read from \`.spec-workflow/templates/tasks-template.md\`
|
|
231
|
+
3. Convert design into atomic tasks (1-3 files each)
|
|
232
|
+
4. Include file paths and requirement references
|
|
233
|
+
5. **IMPORTANT**: Generate a _Prompt field for each task with:
|
|
234
|
+
- Role: specialized developer role for the task
|
|
235
|
+
- Task: clear description with context references
|
|
236
|
+
- Restrictions: what not to do, constraints to follow
|
|
237
|
+
- _Leverage: files/utilities to use
|
|
238
|
+
- _Requirements: requirements that the task implements
|
|
239
|
+
- Success: specific completion criteria
|
|
240
|
+
- Instructions related to setting the task in progress in tasks.md, logging the implementation with log-implementation tool after completion, and then marking it as complete when the task is complete.
|
|
241
|
+
- Start the prompt with "Implement the task for spec {issue-id}-{kebab-title}, first run spec-workflow-guide to get the workflow guide then implement the task:"
|
|
242
|
+
6. (Optional) Add a **Recommended Agent** field to each task: Claude, Codex, Gemini, or Human
|
|
243
|
+
7. Include a **File Touch Map** at the top of tasks.md listing all files the spec will CREATE, MODIFY, or TEST with brief scope notes
|
|
244
|
+
8. Create \`tasks.md\` at \`.spec-workflow/specs/{issue-id}-{kebab-title}/tasks.md\`
|
|
245
|
+
7. Request approval using approvals tool with action:'request'
|
|
246
|
+
8. Poll status using approvals with action:'status' until approved/needs-revision
|
|
247
|
+
9. If needs-revision: update document using comments, create NEW approval, do NOT proceed
|
|
248
|
+
10. Once approved: use approvals with action:'delete' (must succeed) before proceeding
|
|
249
|
+
11. If delete fails: STOP - return to polling
|
|
250
|
+
12. After successful cleanup: "Spec complete. Ready to implement?"
|
|
251
|
+
|
|
252
|
+
### Phase 3.5: Visual Prototype Gate (conditional)
|
|
253
|
+
**Purpose**: Ensure UI changes have visual approval before any implementation code is written.
|
|
254
|
+
|
|
255
|
+
**Trigger**: This phase fires automatically if design.md contains \`Has UI Changes: Yes\` AND \`Prototype Required: Yes\` in the UI Impact Assessment section.
|
|
256
|
+
|
|
257
|
+
**Skip condition**: If \`Has UI Changes: No\` or \`Prototype Required: No\`, skip directly to Phase 4.
|
|
258
|
+
|
|
259
|
+
**Process**:
|
|
260
|
+
1. Read design.md and check the \`UI Impact Assessment\` section
|
|
261
|
+
2. If UI changes are declared with prototype required:
|
|
262
|
+
- Execute tasks 0.1–0.3 from tasks.md (these are the prototype gate tasks)
|
|
263
|
+
- Task 0.1: Create visual mockup via \`ui-mockup\` skill (Stitch) or \`frontend-design\` skill
|
|
264
|
+
- Task 0.2: Build interactive prototype via \`playground\` skill — **save to \`.spec-workflow/specs/{spec-name}/artifacts/playground.html\`**
|
|
265
|
+
- Task 0.3: Present to user, collect explicit visual approval
|
|
266
|
+
3. If a reference HTML/mockup file path is listed in design.md, the prototype MUST use it as the baseline — do not ignore provided prototypes
|
|
267
|
+
4. **Save all visual artifacts** (playground HTML, mockup screenshots, Stitch exports) to the spec's \`artifacts/\` folder
|
|
268
|
+
5. Update design.md \`Prototype Artifacts\` section with paths pointing to the \`artifacts/\` folder
|
|
269
|
+
6. **BLOCKING**: No task tagged \`ui:true\` may begin until visual approval is recorded
|
|
270
|
+
7. Proceed to Phase 4
|
|
271
|
+
|
|
272
|
+
**CRITICAL — Prototype is Source of Truth**: The approved prototype in the \`artifacts/\` folder defines the visual design for implementation. Implementers MUST source their DOM structure, class names, spacing, and layout from the prototype — not from their own interpretation of the text requirements or earlier spec documents. The spec compliance reviewer will compare implementation against the prototype file. Ignoring an approved prototype is a spec compliance failure.
|
|
273
|
+
|
|
274
|
+
### Phase 3.9: Implementation Readiness Gate
|
|
275
|
+
**Purpose**: Cross-validate all spec documents for internal consistency before any code is written.
|
|
276
|
+
|
|
277
|
+
**Trigger**: This phase fires automatically after Phase 3 approval (and Phase 3.5 if applicable). It runs on EVERY spec — it is not conditional.
|
|
278
|
+
|
|
279
|
+
**File Operations**:
|
|
280
|
+
- Read specs: \`.spec-workflow/specs/{issue-id}-{kebab-title}/requirements.md\`, \`design.md\`, \`tasks.md\`
|
|
281
|
+
- Create report: \`.spec-workflow/specs/{issue-id}-{kebab-title}/readiness-report.md\`
|
|
282
|
+
|
|
283
|
+
**Tools**:
|
|
284
|
+
- approvals: Submit readiness report for dashboard review (actions: request, status, delete)
|
|
285
|
+
|
|
286
|
+
**Process**:
|
|
287
|
+
1. Read all three spec documents: \`requirements.md\`, \`design.md\`, \`tasks.md\`
|
|
288
|
+
2. Perform cross-validation checks:
|
|
289
|
+
- **Requirement coverage**: Every requirement/user story in requirements.md has at least one corresponding task in tasks.md. Flag orphaned requirements.
|
|
290
|
+
- **Task traceability**: Every task in tasks.md references valid requirements via its \`_Requirements\` field. Flag tasks with no requirement linkage.
|
|
291
|
+
- **Design-task alignment**: Design decisions (components, data model, API changes) in design.md are reflected in the task structure. Flag design elements with no implementing task.
|
|
292
|
+
- **No contradictions**: Check for conflicting statements between documents (e.g., design says "modal" but tasks say "inline panel").
|
|
293
|
+
- **Prototype consistency**: If design.md references a prototype HTML file, verify it appears in task 0.1-0.3 artifacts and/or task \`_Leverage\` fields.
|
|
294
|
+
- **File touch map validation**: Verify the File Touch Map in tasks.md covers all files mentioned in individual tasks.
|
|
295
|
+
3. Save the report as \`readiness-report.md\` in the spec folder using the output format below.
|
|
296
|
+
4. Request dashboard approval using approvals tool with action:'request', filePath pointing to readiness-report.md
|
|
297
|
+
5. Poll status using approvals with action:'status' until responded — the user has THREE options on the dashboard:
|
|
298
|
+
- **Approve (PASS)**: All checks satisfied. Proceed to Phase 4.
|
|
299
|
+
- **Concerns**: Minor gaps acknowledged. Agent proceeds to Phase 4 but MUST append a \`## Readiness Concerns\` section to tasks.md with the user's noted concerns.
|
|
300
|
+
- **Reject (FAIL)**: Critical misalignment. Agent fixes the spec documents and re-runs the readiness check from step 1.
|
|
301
|
+
6. Once approved or concerns-acknowledged: use approvals with action:'delete' (must succeed) before proceeding.
|
|
302
|
+
7. If delete fails: STOP - return to polling.
|
|
303
|
+
|
|
304
|
+
**Report format** (saved to readiness-report.md):
|
|
305
|
+
\`\`\`markdown
|
|
306
|
+
# Implementation Readiness Report
|
|
307
|
+
- **Spec**: {spec-name}
|
|
308
|
+
- **Generated**: {timestamp}
|
|
309
|
+
- **Recommendation**: PASS | CONCERNS | FAIL
|
|
310
|
+
|
|
311
|
+
## Requirement Coverage (X/Y mapped)
|
|
312
|
+
- REQ-1.1: Task 2, Task 3 ✓
|
|
313
|
+
- REQ-2.1: [MISSING] ✗
|
|
314
|
+
|
|
315
|
+
## Design-Task Alignment
|
|
316
|
+
- Component X: Task 4 ✓
|
|
317
|
+
- Data model change Y: [NO IMPLEMENTING TASK] ✗
|
|
318
|
+
|
|
319
|
+
## Contradictions
|
|
320
|
+
- None found | List of conflicts
|
|
321
|
+
|
|
322
|
+
## Prototype Consistency
|
|
323
|
+
- N/A | Verified | [MISSING from task leverage]
|
|
324
|
+
|
|
325
|
+
## File Touch Map
|
|
326
|
+
- Consistent | [Task 5 touches foo.js but File Touch Map omits it]
|
|
327
|
+
|
|
328
|
+
## Agent Recommendation
|
|
329
|
+
{Brief explanation of the recommendation — why PASS/CONCERNS/FAIL}
|
|
330
|
+
\`\`\`
|
|
331
|
+
|
|
332
|
+
**CRITICAL**: This gate catches the #1 cause of spec implementation failures — tasks that drift from requirements during the design-to-tasks translation. Running this check takes 30 seconds and prevents hours of rework.
|
|
333
|
+
**CRITICAL**: The readiness report MUST be submitted to the dashboard for human review. Verbal approval is NOT accepted. The agent's recommendation (PASS/CONCERNS/FAIL) is advisory — the human makes the final call via the dashboard.
|
|
334
|
+
|
|
335
|
+
### Phase 4: Implementation
|
|
336
|
+
**Purpose**: Execute tasks systematically.
|
|
337
|
+
|
|
338
|
+
**File Operations**:
|
|
339
|
+
- Read specs: \`.spec-workflow/specs/{issue-id}-{kebab-title}/*.md\` (if returning to work)
|
|
340
|
+
- Edit tasks.md to update status:
|
|
341
|
+
- \`- [ ]\` = Pending task
|
|
342
|
+
- \`- [-]\` = In-progress task
|
|
343
|
+
- \`- [x]\` = Completed task
|
|
344
|
+
|
|
345
|
+
**Tools**:
|
|
346
|
+
- spec-status: Check overall progress
|
|
347
|
+
- Bash (grep/ripgrep): CRITICAL - Search existing code before implementing (step 3)
|
|
348
|
+
- Read: Examine implementation log files directly
|
|
349
|
+
- implement-task prompt: Guide for implementing tasks
|
|
350
|
+
- log-implementation: Record implementation details with artifacts after task completion (step 5)
|
|
351
|
+
- Direct editing: Mark tasks as in-progress [-] or complete [x] in tasks.md
|
|
352
|
+
|
|
353
|
+
**Process**:
|
|
354
|
+
1. Check current status with spec-status
|
|
355
|
+
2. Read \`tasks.md\` to see all tasks
|
|
356
|
+
3. For each task:
|
|
357
|
+
- **UI GATE CHECK**: Before dispatching any task that creates or modifies UI components, verify:
|
|
358
|
+
- Read design.md \`UI Impact Assessment\` section
|
|
359
|
+
- If \`Prototype Required: Yes\`, confirm tasks 0.1–0.3 are marked \`[x]\` and \`Prototype Artifacts\` in design.md are populated
|
|
360
|
+
- If prototype gate is incomplete, STOP — complete Phase 3.5 first
|
|
361
|
+
- **MANDATORY**: Include the playground file path (e.g., \`.spec-workflow/specs/{spec-name}/artifacts/playground.html\`) in the subagent prompt so the implementer has the approved visual reference
|
|
362
|
+
- Tell the implementer explicitly: "Source your visual design from the prototype file. Do NOT re-read earlier spec documents and reinvent the design. The prototype IS the approved design."
|
|
363
|
+
- The spec compliance reviewer (Stage 1) will compare implementation against the prototype — visual deviations are a FAIL
|
|
364
|
+
- Edit tasks.md: Change \`[ ]\` to \`[-]\` for the task you're starting
|
|
365
|
+
- **CRITICAL: BEFORE implementing, search existing implementation logs**:
|
|
366
|
+
- Implementation logs are in: \`.spec-workflow/specs/{issue-id}-{kebab-title}/Implementation Logs/\`
|
|
367
|
+
- **Option 1: Use grep for fast searches**:
|
|
368
|
+
- \`grep -r "api\|endpoint" .spec-workflow/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find API endpoints
|
|
369
|
+
- \`grep -r "component" .spec-workflow/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find UI components
|
|
370
|
+
- \`grep -r "function" .spec-workflow/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find utility functions
|
|
371
|
+
- \`grep -r "integration" .spec-workflow/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find integration patterns
|
|
372
|
+
- **Option 2: Read markdown files directly** - Use Read tool to examine specific log files
|
|
373
|
+
- Best practice: Search 2-3 different terms to discover comprehensively
|
|
374
|
+
- This prevents: duplicate endpoints, reimplemented components, broken integrations
|
|
375
|
+
- Reuse existing code that already solves part of the task
|
|
376
|
+
- **Read the _Prompt field** for guidance on role, approach, and success criteria
|
|
377
|
+
- Follow _Leverage fields to use existing code/utilities
|
|
378
|
+
- Implement the code according to the task description
|
|
379
|
+
- **Test your implementation — tests MUST be run, not just written**:
|
|
380
|
+
- Run all tests relevant to this task (unit, integration, E2E as appropriate)
|
|
381
|
+
- Record actual execution results (pass/fail counts, framework, duration)
|
|
382
|
+
- If tests fail, fix them before proceeding — do NOT log failing tests as "passed"
|
|
383
|
+
- If no automated tests exist for this task, at minimum verify the feature manually and log as framework: "manual"
|
|
384
|
+
- A task logged with 0 total tests is a red flag — every task should have some form of validation
|
|
385
|
+
- **MANDATORY: Log implementation BEFORE marking task complete** using log-implementation tool:
|
|
386
|
+
- ⚠️ Do NOT change [-] to [x] until log-implementation returns success
|
|
387
|
+
- A task without an implementation log is NOT complete — this is the most commonly skipped step
|
|
388
|
+
- Provide taskId and clear summary of what was implemented (1-2 sentences)
|
|
389
|
+
- Include files modified/created and code statistics (lines added/removed)
|
|
390
|
+
- **REQUIRED: Include artifacts field with structured implementation data**:
|
|
391
|
+
- apiEndpoints: All API routes created/modified (method, path, purpose, formats, location)
|
|
392
|
+
- components: All UI components created (name, type, purpose, location, props)
|
|
393
|
+
- functions: All utility functions created (name, signature, location)
|
|
394
|
+
- classes: All classes created (name, methods, location)
|
|
395
|
+
- integrations: Frontend-backend connections with data flow description
|
|
396
|
+
- tests: All tests run (name, type, framework, location, status, pass/fail counts, linked userStories from spec requirements)
|
|
397
|
+
- Example: "Created API GET /api/todos/:id endpoint and TodoDetail React component with WebSocket real-time updates. E2E tests: 12/12 passed covering user stories 1.1, 1.2, 2.1"
|
|
398
|
+
- This creates a searchable knowledge base for future AI agents to discover existing code
|
|
399
|
+
- Prevents implementation details from being lost in chat history
|
|
400
|
+
- **Only after log-implementation succeeds**: Edit tasks.md: Change \`[-]\` to \`[x]\`
|
|
401
|
+
4. Continue until all tasks show \`[x]\`
|
|
402
|
+
|
|
403
|
+
#### Execution Strategy
|
|
404
|
+
|
|
405
|
+
Choose ONE approach per session:
|
|
406
|
+
|
|
407
|
+
**Same-Session Subagents (default)** — Dispatch a fresh Agent (subagent) per task. The main conversation context stays clean for orchestration — tracking progress, dispatching agents, reviewing results, making architectural decisions. All coding, file editing, testing, and codebase searching happens inside subagents.
|
|
408
|
+
|
|
409
|
+
Never write implementation code in the main context — dispatch a subagent instead.
|
|
410
|
+
|
|
411
|
+
**Parallel Session** — If the plan has 10+ tasks, split into session-sized batches. Each session handles ~3-4 batches of 3 tasks. Use a handoff mechanism between sessions to relay context (spec name, completed tasks, next task).
|
|
412
|
+
|
|
413
|
+
**Implementer template**: See \`.spec-workflow/templates/implementer-prompt-template.md\` for the subagent dispatch template. Paste the full task text into the subagent prompt — don't make the subagent read the plan file.
|
|
414
|
+
|
|
415
|
+
#### Two-Stage Review (after each task, BEFORE marking [x])
|
|
416
|
+
|
|
417
|
+
After the implementer subagent reports back, run two review stages before logging and marking complete:
|
|
418
|
+
|
|
419
|
+
**Stage 1 — Spec Compliance Review:**
|
|
420
|
+
Dispatch a reviewer subagent to verify the implementer built what was requested — nothing more, nothing less.
|
|
421
|
+
- Compare actual code to task requirements line by line
|
|
422
|
+
- Check for missing requirements, extra/unneeded work, misunderstandings
|
|
423
|
+
- ✅ Pass = proceed to Stage 2
|
|
424
|
+
- ❌ Fail = implementer fixes issues → dispatch reviewer again
|
|
425
|
+
- Template: \`.spec-workflow/templates/spec-reviewer-template.md\`
|
|
426
|
+
|
|
427
|
+
**Stage 2 — Code Quality Review:**
|
|
428
|
+
Only dispatch AFTER Stage 1 passes. Verify the code is well-built and production-ready.
|
|
429
|
+
- Check: architecture, error handling, testing, security, performance
|
|
430
|
+
- Categorize issues: Critical (must fix) / Important (should fix) / Minor (nice to have)
|
|
431
|
+
- ✅ Approved = proceed to log-implementation → mark [x]
|
|
432
|
+
- Issues found = implementer fixes → dispatch reviewer again
|
|
433
|
+
- Template: \`.spec-workflow/templates/code-quality-reviewer-template.md\`
|
|
434
|
+
|
|
435
|
+
**Review loop:** If either reviewer finds issues, the implementer subagent fixes them, then the reviewer re-reviews. Repeat until approved. Never skip re-review — "it should be fine now" is not verification.
|
|
436
|
+
|
|
437
|
+
#### Context Budget
|
|
438
|
+
|
|
439
|
+
- Session budget: ~800k tokens (~80-100 task dispatches with reviews on 1M context models)
|
|
440
|
+
- After 60+ agent dispatches or 70% context usage: suggest handoff to a fresh session
|
|
441
|
+
- Save handoff context: spec name, completed task list, in-progress state, next task ID
|
|
442
|
+
- NEVER wait for auto-compaction — it loses context silently
|
|
443
|
+
|
|
444
|
+
#### Main Context vs Subagent Responsibilities
|
|
445
|
+
|
|
446
|
+
| Main Context (orchestrator) | Subagents (workers) |
|
|
447
|
+
|----------------------------|---------------------|
|
|
448
|
+
| Read plan, extract tasks | Write code, edit files |
|
|
449
|
+
| Dispatch agents with context | Run tests, verify output |
|
|
450
|
+
| Review agent summaries | Read large files |
|
|
451
|
+
| Make architectural decisions | Debug and fix issues |
|
|
452
|
+
| Track progress (task list) | Search codebase |
|
|
453
|
+
| Approve/reject agent work | Generate new files |
|
|
454
|
+
|
|
455
|
+
### Phase 5: Post-Implementation (E2E + QA + Docs + PR Finalization)
|
|
456
|
+
**Purpose**: Verify the feature, QA with the user, update documentation on final code, and finalize the PR.
|
|
457
|
+
|
|
458
|
+
Phase 5 has three stages. The spec is NOT complete until all three are done.
|
|
459
|
+
|
|
460
|
+
#### Phase 5.1: Automated E2E
|
|
461
|
+
|
|
462
|
+
**Tools**:
|
|
463
|
+
- Skill \`bb-test\`: Browserbase/Stagehand cloud E2E tests — **primary E2E tool for all specs**
|
|
464
|
+
|
|
465
|
+
**⚠️ Do NOT use browserless or /smoke-test for spec E2E** — browserless is unreliable. All E2E testing uses Browserbase/Stagehand.
|
|
466
|
+
|
|
467
|
+
**Process**:
|
|
468
|
+
1. **Get the PR preview URL** before running E2E — do not test against staktrakr.pages.dev (main):
|
|
469
|
+
\`\`\`bash
|
|
470
|
+
# Get Cloudflare Pages preview URL from the draft PR
|
|
471
|
+
gh pr checks <PR_NUMBER> --json name,state,targetUrl \\
|
|
472
|
+
| python3 -c "import sys,json; checks=json.load(sys.stdin); [print(c['targetUrl']) for c in checks if 'pages.dev' in c.get('targetUrl','')]"
|
|
473
|
+
\`\`\`
|
|
474
|
+
Wait for the Cloudflare Pages check to complete (green) before proceeding.
|
|
475
|
+
2. Run \`/bb-test\` with the preview URL — Browserbase/Stagehand against the PR preview deployment. Session has a **10-minute hard timeout**: if any individual test step has not returned a result within 10 minutes, skip it, log a warning, and move on.
|
|
476
|
+
3. If E2E tests fail: fix the failures before proceeding to QA. Do not skip to 5.2 with known test failures.
|
|
477
|
+
|
|
478
|
+
#### Phase 5.2: User QA Session
|
|
479
|
+
|
|
480
|
+
**Purpose**: The user manually tests the feature on the preview deployment. This is where spec gaps, visual polish issues, and edge cases get caught. Automated tests passing does NOT mean the feature is done — user QA is the final quality gate before the PR leaves draft.
|
|
481
|
+
|
|
482
|
+
**CRITICAL behavioral rules for the agent during QA:**
|
|
483
|
+
- **Present the preview URL and wait.** Do not suggest merging, do not suggest the work is done.
|
|
484
|
+
- **The agent is in service mode during QA** — the user drives, the agent fixes. This is collaborative, not adversarial.
|
|
485
|
+
- **Do not push back on QA findings.** If the user reports an issue, fix it. Do not argue that it "works as specced" or "passes tests." The user is the final arbiter of quality.
|
|
486
|
+
- **After each fix:** commit, push, wait for the preview to rebuild, then tell the user it's ready to re-check.
|
|
487
|
+
- **Do not ask "anything else?" after every fix** — just report what you fixed and wait. The user will tell you when they're done.
|
|
488
|
+
- **Exit condition:** The user explicitly says QA is complete (e.g., "QA complete", "looks good", "ready to go"). No other signal ends this phase.
|
|
489
|
+
- **For trivial non-UI patches** (config, typo, docs-only): the user may say "skip QA" to proceed directly to 5.3.
|
|
490
|
+
|
|
491
|
+
**Process**:
|
|
492
|
+
1. Present the preview URL: "Preview is live at {URL}. Ready for your QA pass — take your time, I'll fix anything you find."
|
|
493
|
+
2. Wait for user input. Do not proceed unprompted.
|
|
494
|
+
3. For each issue the user reports:
|
|
495
|
+
a. Acknowledge the issue
|
|
496
|
+
b. Fix it in code
|
|
497
|
+
c. Commit and push
|
|
498
|
+
d. Wait for preview rebuild (check Cloudflare Pages deploy status)
|
|
499
|
+
e. Report: "Fixed — {brief description}. Preview should rebuild in ~1 min."
|
|
500
|
+
4. Repeat until the user signals QA is complete.
|
|
501
|
+
5. Only then proceed to Phase 5.3.
|
|
502
|
+
|
|
503
|
+
#### Phase 5.3: Docs + PR Finalization
|
|
504
|
+
|
|
505
|
+
**Purpose**: Update documentation on final post-QA code, close linked issues, mark PR ready for review, and hand off to the \`/pr-resolve\` workflow.
|
|
506
|
+
|
|
507
|
+
**Tools**:
|
|
508
|
+
- Skill \`vault-update\`: Updates DocVault documentation pages affected by the spec's changed files. DocVault is the central Obsidian vault at \`/Volumes/DATA/GitHub/DocVault/\` — it is the single source of truth for project and infrastructure documentation.
|
|
509
|
+
|
|
510
|
+
**Why docs run here (after QA, not before):** QA fixes change code that documentation describes. Running docs before QA means updates become stale as soon as you fix the first QA bug. Running docs after QA means it captures the final state of the code.
|
|
511
|
+
|
|
512
|
+
**Process**:
|
|
513
|
+
1. Run \`/vault-update\` — updates DocVault pages affected by the spec's changed files. Commit DocVault changes (DocVault commits go direct to main, not to the feature branch).
|
|
514
|
+
2. **Close all linked issues:**
|
|
515
|
+
- **Vault**: Mark each linked vault issue as Done (update status in the issue markdown file)
|
|
516
|
+
- **GitHub**: Run \`gh issue close <number>\` for each linked GitHub issue (if scope: user-facing)
|
|
517
|
+
- Verify closure: \`gh issue view <number> --json state\` should show "CLOSED"
|
|
518
|
+
- A spec with open issues is NOT complete — this is the most commonly forgotten step
|
|
519
|
+
2. **Mark the PR ready for review:**
|
|
520
|
+
\`\`\`bash
|
|
521
|
+
gh pr ready <PR_NUMBER>
|
|
522
|
+
\`\`\`
|
|
523
|
+
3. **Spec is complete.** The finish line is the PR being marked ready for review. What happens next (\`/pr-resolve\`, Copilot review, merge to dev) is a separate workflow — typically in a new session.
|
|
524
|
+
|
|
525
|
+
## Workflow Rules
|
|
526
|
+
|
|
527
|
+
- Create documents directly at specified file paths
|
|
528
|
+
- Read templates from \`.spec-workflow/templates/\` directory
|
|
529
|
+
- Follow exact template structures
|
|
530
|
+
- Get explicit user approval between phases (using approvals tool with action:'request')
|
|
531
|
+
- Complete phases in sequence (no skipping)
|
|
532
|
+
- Phase 5 has three stages: 5.1 (automated E2E), 5.2 (user QA session), 5.3 (docs + PR finalization) — all three are mandatory. Docs run AFTER QA so documentation captures final post-QA code
|
|
533
|
+
- Phase 5 E2E always uses Browserbase/Stagehand (/bb-test) against the PR preview URL — never browserless/smoke-test
|
|
534
|
+
- CRITICAL: During Phase 5.2 (User QA), the agent MUST NOT suggest merging, declare the work done, or push back on findings. The user drives QA, the agent fixes. QA ends ONLY when the user says so
|
|
535
|
+
- CRITICAL: The spec finish line is marking the PR ready for review (Phase 5.3), NOT passing automated tests. Automated tests passing = ready for QA, not ready to merge
|
|
536
|
+
- One spec at a time
|
|
537
|
+
- Spec names use issue prefix: {ISSUE-ID}-{kebab-title}
|
|
538
|
+
- Approval requests: provide filePath only, never content
|
|
539
|
+
- BLOCKING: Never proceed if approval delete fails
|
|
540
|
+
- CRITICAL: Must have approved status AND successful cleanup before next phase
|
|
541
|
+
- CRITICAL: Every task marked [x] MUST have a corresponding implementation log — call log-implementation BEFORE changing [-] to [x]
|
|
542
|
+
- CRITICAL: Every completed spec MUST have all linked issues (vault and GitHub) closed — a spec with open issues is NOT done
|
|
543
|
+
- CRITICAL: Specs with UI changes MUST complete Phase 3.5 (visual prototype gate) before any UI implementation task begins
|
|
544
|
+
- CRITICAL: If design.md references a prototype HTML file, implementers MUST source their visual design from it — ignoring a provided prototype is a spec compliance failure
|
|
545
|
+
- CRITICAL: All visual artifacts (playground HTML, screenshots, mockups) MUST be saved to the spec's \`artifacts/\` folder — not to project root or playground/ directories. The artifacts/ folder is the single source of visual truth for the spec
|
|
546
|
+
- CRITICAL: Phase 3.9 (Implementation Readiness Gate) fires on EVERY spec before Phase 4 — generates readiness-report.md, submits to dashboard for review. Three dashboard actions: Approve (proceed), Concerns (proceed with logged risks), Reject (fix and re-run). Verbal approval NOT accepted.
|
|
547
|
+
- CRITICAL: Verbal approval is NEVER accepted - dashboard or VS Code extension only
|
|
548
|
+
- NEVER proceed on user saying "approved" - check system status only
|
|
549
|
+
- Steering docs are optional - only create when explicitly requested
|
|
550
|
+
|
|
551
|
+
## File Structure
|
|
552
|
+
\`\`\`
|
|
553
|
+
.spec-workflow/
|
|
554
|
+
├── templates/ # Auto-populated on server start
|
|
555
|
+
│ ├── requirements-template.md
|
|
556
|
+
│ ├── design-template.md
|
|
557
|
+
│ ├── tasks-template.md
|
|
558
|
+
│ ├── product-template.md
|
|
559
|
+
│ ├── tech-template.md
|
|
560
|
+
│ └── structure-template.md
|
|
561
|
+
├── specs/
|
|
562
|
+
│ └── {ISSUE-ID}-{kebab-title}/
|
|
563
|
+
│ ├── requirements.md
|
|
564
|
+
│ ├── design.md
|
|
565
|
+
│ ├── tasks.md
|
|
566
|
+
│ ├── readiness-report.md # Phase 3.9 — NOT tasks.md
|
|
567
|
+
│ ├── artifacts/ # Visual source of truth for UI specs
|
|
568
|
+
│ │ ├── playground.html # Approved interactive prototype (Phase 3.5)
|
|
569
|
+
│ │ └── *.png # Mockup screenshots / Stitch exports
|
|
570
|
+
│ └── Implementation Logs/ # Created automatically
|
|
571
|
+
│ ├── task-1_timestamp_id.md
|
|
572
|
+
│ ├── task-2_timestamp_id.md
|
|
573
|
+
│ └── ...
|
|
574
|
+
└── steering/
|
|
575
|
+
├── product.md
|
|
576
|
+
├── tech.md
|
|
577
|
+
└── structure.md
|
|
578
|
+
\`\`\``;
|
|
579
|
+
}
|
|
580
|
+
//# sourceMappingURL=spec-workflow-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-workflow-guide.js","sourceRoot":"","sources":["../../src/tools/spec-workflow-guide.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAS;IACzC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE;;;kXAGmW;IAChX,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,KAAK;KAC5B;IACD,WAAW,EAAE;QACX,KAAK,EAAE,qBAAqB;QAC5B,YAAY,EAAE,IAAI;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAS,EAAE,OAAoB;IAC5E,wDAAwD;IACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,kCAAkC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1D,gEAAgE,CAAC;IAEnE,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,oEAAoE;QAC7E,IAAI,EAAE;YACJ,KAAK,EAAE,oBAAoB,EAAE;YAC7B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY;SAC3C;QACD,SAAS,EAAE;YACT,iEAAiE;YACjE,gDAAgD;YAChD,sCAAsC;YACtC,oBAAoB;YACpB,gBAAgB;SACjB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO;;;;6PAIoP,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6IzL,WAAW;;;;;;;;;;;;;;;;;;;;;;;yEAuBjB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiX7E,CAAC;AACR,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { ToolContext, ToolResponse } from '../types.js';
|
|
3
|
+
export declare const steeringGuideTool: Tool;
|
|
4
|
+
export declare function steeringGuideHandler(args: any, context: ToolContext): Promise<ToolResponse>;
|
|
5
|
+
//# sourceMappingURL=steering-guide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steering-guide.d.ts","sourceRoot":"","sources":["../../src/tools/steering-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,eAAO,MAAM,iBAAiB,EAAE,IAe/B,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAgBjG"}
|