@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,122 @@
|
|
|
1
|
+
# Implementer Subagent Template
|
|
2
|
+
|
|
3
|
+
Use this template when dispatching an implementer subagent for a spec-workflow task. Paste the full task text — don't make the subagent read the file.
|
|
4
|
+
|
|
5
|
+
## Template
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
You are implementing Task {TASK_ID}: {TASK_NAME}
|
|
9
|
+
|
|
10
|
+
## Task Description
|
|
11
|
+
|
|
12
|
+
{FULL TASK TEXT from tasks.md — paste it here}
|
|
13
|
+
|
|
14
|
+
## Context
|
|
15
|
+
|
|
16
|
+
{Where this fits, dependencies, architectural context from design.md}
|
|
17
|
+
|
|
18
|
+
## Before You Begin
|
|
19
|
+
|
|
20
|
+
If you have questions about:
|
|
21
|
+
- The requirements or acceptance criteria
|
|
22
|
+
- The approach or implementation strategy
|
|
23
|
+
- Dependencies or assumptions
|
|
24
|
+
- Anything unclear in the task description
|
|
25
|
+
|
|
26
|
+
**Ask them now.** Raise any concerns before starting work.
|
|
27
|
+
|
|
28
|
+
## Your Job
|
|
29
|
+
|
|
30
|
+
Once you're clear on requirements:
|
|
31
|
+
1. Implement exactly what the task specifies
|
|
32
|
+
2. Follow _Leverage fields to use existing code/utilities
|
|
33
|
+
3. Test your implementation
|
|
34
|
+
4. Commit your work
|
|
35
|
+
5. Self-review (see below)
|
|
36
|
+
6. Log implementation using log-implementation tool
|
|
37
|
+
7. Report back
|
|
38
|
+
|
|
39
|
+
**While you work:** If you encounter something unexpected or unclear, ask questions.
|
|
40
|
+
Don't guess or make assumptions.
|
|
41
|
+
|
|
42
|
+
## Self-Review (before reporting back)
|
|
43
|
+
|
|
44
|
+
Review your work with fresh eyes:
|
|
45
|
+
|
|
46
|
+
**Completeness:**
|
|
47
|
+
- Did I fully implement everything in the spec?
|
|
48
|
+
- Did I miss any requirements?
|
|
49
|
+
- Are there edge cases I didn't handle?
|
|
50
|
+
|
|
51
|
+
**Quality:**
|
|
52
|
+
- Is this my best work?
|
|
53
|
+
- Are names clear and accurate?
|
|
54
|
+
- Is the code clean and maintainable?
|
|
55
|
+
|
|
56
|
+
**Discipline:**
|
|
57
|
+
- Did I avoid overbuilding (YAGNI)?
|
|
58
|
+
- Did I only build what was requested?
|
|
59
|
+
- Did I follow existing patterns in the codebase?
|
|
60
|
+
|
|
61
|
+
**Testing:**
|
|
62
|
+
- Do tests actually verify behavior (not just mocks)?
|
|
63
|
+
- Are tests comprehensive (unit, integration, E2E as appropriate)?
|
|
64
|
+
- Were all tests RUN and did they PASS? (status must be captured in log-implementation)
|
|
65
|
+
- Do tests cover the user stories from the spec requirements?
|
|
66
|
+
|
|
67
|
+
If you find issues during self-review, fix them now.
|
|
68
|
+
|
|
69
|
+
## After Commit: Log Implementation (MANDATORY)
|
|
70
|
+
|
|
71
|
+
Call the log-implementation MCP tool with:
|
|
72
|
+
- **specName**: {SPEC_NAME}
|
|
73
|
+
- **taskId**: {TASK_ID}
|
|
74
|
+
- **summary**: What you implemented (1-2 sentences)
|
|
75
|
+
- **filesModified** / **filesCreated**: Accurate file lists
|
|
76
|
+
- **statistics**: { linesAdded, linesRemoved }
|
|
77
|
+
- **artifacts**: ALL that apply:
|
|
78
|
+
- apiEndpoints, functions, components, classes, integrations
|
|
79
|
+
- **tests**: name, type, framework, location, status, pass/fail counts, userStories (linked requirement IDs)
|
|
80
|
+
|
|
81
|
+
Do not skip this step. Future agents search logs to avoid duplicating work. Tests MUST be run before logging — do not log tests you only wrote but never executed.
|
|
82
|
+
|
|
83
|
+
## Report Format
|
|
84
|
+
|
|
85
|
+
When done, report:
|
|
86
|
+
- What you implemented
|
|
87
|
+
- What you tested and test results
|
|
88
|
+
- Files changed
|
|
89
|
+
- Self-review findings (if any)
|
|
90
|
+
- Any issues or concerns
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Quick Fix / Bug Fix Variant
|
|
96
|
+
|
|
97
|
+
Use this variant when dispatching for an issue fix WITHOUT a full spec. Replace the "Before You Begin" section above with this adversarial pre-implementation challenge.
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
You are fixing {ISSUE_ID}: {ISSUE_TITLE}
|
|
101
|
+
|
|
102
|
+
## Bug Description
|
|
103
|
+
|
|
104
|
+
{Description from issue}
|
|
105
|
+
|
|
106
|
+
## Adversarial Pre-Check (answer BEFORE writing any code)
|
|
107
|
+
|
|
108
|
+
Stop and think critically:
|
|
109
|
+
|
|
110
|
+
1. **What could go wrong?** What side effects might this fix introduce? What other code paths touch the same data/DOM/state?
|
|
111
|
+
2. **What assumptions are you making?** Are you assuming the bug is where it appears to be? Could the root cause be upstream?
|
|
112
|
+
3. **Is this really as simple as you think?** Quick fixes that seem obvious are often masking deeper issues. Have you verified the root cause, or are you patching a symptom?
|
|
113
|
+
4. **What's the blast radius?** List every file and function this change could affect. Are there callers you haven't checked?
|
|
114
|
+
5. **How will you verify it's fixed?** What specific test or manual check will confirm the fix works AND hasn't broken anything else?
|
|
115
|
+
6. **Should this use Ralph Loop?** If the root cause is uncertain AND your answer to Q5 is a runnable test (e.g., `/bb-test sections=NN`, a unit test command, a grep assertion), consider `/ralph-loop` with `--completion-promise` set to the expected pass output. Skip Ralph if the fix is straightforward or there's no testable oracle.
|
|
116
|
+
|
|
117
|
+
Write your answers to these 6 questions, then proceed with implementation. If any answer reveals uncertainty, investigate before coding. If Q6 says yes, start a Ralph Loop instead of coding directly.
|
|
118
|
+
|
|
119
|
+
## Your Job
|
|
120
|
+
|
|
121
|
+
{Same implementation steps as the spec variant above}
|
|
122
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Product Overview
|
|
2
|
+
|
|
3
|
+
## Product Purpose
|
|
4
|
+
[Describe the core purpose of this product/project. What problem does it solve?]
|
|
5
|
+
|
|
6
|
+
## Target Users
|
|
7
|
+
[Who are the primary users of this product? What are their needs and pain points?]
|
|
8
|
+
|
|
9
|
+
## Key Features
|
|
10
|
+
[List the main features that deliver value to users]
|
|
11
|
+
|
|
12
|
+
1. **Feature 1**: [Description]
|
|
13
|
+
2. **Feature 2**: [Description]
|
|
14
|
+
3. **Feature 3**: [Description]
|
|
15
|
+
|
|
16
|
+
## Business Objectives
|
|
17
|
+
[What are the business goals this product aims to achieve?]
|
|
18
|
+
|
|
19
|
+
- [Objective 1]
|
|
20
|
+
- [Objective 2]
|
|
21
|
+
- [Objective 3]
|
|
22
|
+
|
|
23
|
+
## Success Metrics
|
|
24
|
+
[How will we measure the success of this product?]
|
|
25
|
+
|
|
26
|
+
- [Metric 1]: [Target]
|
|
27
|
+
- [Metric 2]: [Target]
|
|
28
|
+
- [Metric 3]: [Target]
|
|
29
|
+
|
|
30
|
+
## Product Principles
|
|
31
|
+
[Core principles that guide product decisions]
|
|
32
|
+
|
|
33
|
+
1. **[Principle 1]**: [Explanation]
|
|
34
|
+
2. **[Principle 2]**: [Explanation]
|
|
35
|
+
3. **[Principle 3]**: [Explanation]
|
|
36
|
+
|
|
37
|
+
## Monitoring & Visibility (if applicable)
|
|
38
|
+
[How do users track progress and monitor the system?]
|
|
39
|
+
|
|
40
|
+
- **Dashboard Type**: [e.g., Web-based, CLI, Desktop app]
|
|
41
|
+
- **Real-time Updates**: [e.g., WebSocket, polling, push notifications]
|
|
42
|
+
- **Key Metrics Displayed**: [What information is most important to surface]
|
|
43
|
+
- **Sharing Capabilities**: [e.g., read-only links, exports, reports]
|
|
44
|
+
|
|
45
|
+
## Future Vision
|
|
46
|
+
[Where do we see this product evolving in the future?]
|
|
47
|
+
|
|
48
|
+
### Potential Enhancements
|
|
49
|
+
- **Remote Access**: [e.g., Tunnel features for sharing dashboards with stakeholders]
|
|
50
|
+
- **Analytics**: [e.g., Historical trends, performance metrics]
|
|
51
|
+
- **Collaboration**: [e.g., Multi-user support, commenting]
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Requirements Document
|
|
2
|
+
|
|
3
|
+
## References
|
|
4
|
+
|
|
5
|
+
- **Issue:** PROJ-XXX
|
|
6
|
+
- **GitHub PR:** [#NNN](https://github.com/owner/repo/pull/NNN)
|
|
7
|
+
- **Spec Path:** `.spec-workflow/specs/{spec-name}/`
|
|
8
|
+
|
|
9
|
+
## Introduction
|
|
10
|
+
|
|
11
|
+
[Provide a brief overview of the feature, its purpose, and its value to users]
|
|
12
|
+
|
|
13
|
+
## Alignment with Product Vision
|
|
14
|
+
|
|
15
|
+
[Explain how this feature supports the goals outlined in product.md]
|
|
16
|
+
|
|
17
|
+
## Requirements
|
|
18
|
+
|
|
19
|
+
### Requirement 1
|
|
20
|
+
|
|
21
|
+
**User Story:** As a [role], I want [feature], so that [benefit]
|
|
22
|
+
|
|
23
|
+
#### Acceptance Criteria
|
|
24
|
+
|
|
25
|
+
1. WHEN [event] THEN [system] SHALL [response]
|
|
26
|
+
2. IF [precondition] THEN [system] SHALL [response]
|
|
27
|
+
3. WHEN [event] AND [condition] THEN [system] SHALL [response]
|
|
28
|
+
|
|
29
|
+
### Requirement 2
|
|
30
|
+
|
|
31
|
+
**User Story:** As a [role], I want [feature], so that [benefit]
|
|
32
|
+
|
|
33
|
+
#### Acceptance Criteria
|
|
34
|
+
|
|
35
|
+
1. WHEN [event] THEN [system] SHALL [response]
|
|
36
|
+
2. IF [precondition] THEN [system] SHALL [response]
|
|
37
|
+
|
|
38
|
+
## Open Questions
|
|
39
|
+
|
|
40
|
+
> **GATE:** All blocking questions must be resolved before this document can be approved.
|
|
41
|
+
> Non-blocking questions may carry forward to the Design phase.
|
|
42
|
+
|
|
43
|
+
### Blocking (must resolve before approval)
|
|
44
|
+
|
|
45
|
+
- [ ] [Question — why it matters]
|
|
46
|
+
|
|
47
|
+
### Non-blocking (can defer to Design)
|
|
48
|
+
|
|
49
|
+
- [ ] [Question — context]
|
|
50
|
+
|
|
51
|
+
### Resolved
|
|
52
|
+
|
|
53
|
+
- [x] ~~[Question]~~ — [Answer, source]
|
|
54
|
+
|
|
55
|
+
## Non-Functional Requirements
|
|
56
|
+
|
|
57
|
+
### Code Architecture and Modularity
|
|
58
|
+
- **Single Responsibility Principle**: Each file should have a single, well-defined purpose
|
|
59
|
+
- **Modular Design**: Components, utilities, and services should be isolated and reusable
|
|
60
|
+
- **Dependency Management**: Minimize interdependencies between modules
|
|
61
|
+
- **Clear Interfaces**: Define clean contracts between components and layers
|
|
62
|
+
|
|
63
|
+
### Performance
|
|
64
|
+
- [Performance requirements]
|
|
65
|
+
|
|
66
|
+
### Security
|
|
67
|
+
- [Security requirements]
|
|
68
|
+
|
|
69
|
+
### Reliability
|
|
70
|
+
- [Reliability requirements]
|
|
71
|
+
|
|
72
|
+
### Usability
|
|
73
|
+
- [Usability requirements]
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Spec Compliance Reviewer
|
|
2
|
+
|
|
3
|
+
You are reviewing whether an implementation matches its specification. Your job is to verify the implementer built what was requested — nothing more, nothing less.
|
|
4
|
+
|
|
5
|
+
## What Was Requested
|
|
6
|
+
|
|
7
|
+
{TASK_REQUIREMENTS}
|
|
8
|
+
|
|
9
|
+
## What Implementer Claims They Built
|
|
10
|
+
|
|
11
|
+
{IMPLEMENTER_REPORT}
|
|
12
|
+
|
|
13
|
+
## CRITICAL: Do Not Trust the Report
|
|
14
|
+
|
|
15
|
+
The implementer may have been optimistic. You MUST verify everything independently by reading the actual code.
|
|
16
|
+
|
|
17
|
+
**DO NOT:**
|
|
18
|
+
- Take their word for what they implemented
|
|
19
|
+
- Trust claims about completeness
|
|
20
|
+
- Accept their interpretation of requirements
|
|
21
|
+
|
|
22
|
+
**DO:**
|
|
23
|
+
- Read the actual code they wrote
|
|
24
|
+
- Compare implementation to requirements line by line
|
|
25
|
+
- Check for missing pieces they claimed to implement
|
|
26
|
+
- Look for extra features they didn't mention
|
|
27
|
+
|
|
28
|
+
## Review Checklist
|
|
29
|
+
|
|
30
|
+
**Missing requirements:**
|
|
31
|
+
- Did they implement everything that was requested?
|
|
32
|
+
- Are there requirements they skipped or missed?
|
|
33
|
+
- Did they claim something works but didn't actually implement it?
|
|
34
|
+
|
|
35
|
+
**Extra/unneeded work:**
|
|
36
|
+
- Did they build things that weren't requested?
|
|
37
|
+
- Did they over-engineer or add unnecessary features?
|
|
38
|
+
- Did they add "nice to haves" that weren't in spec?
|
|
39
|
+
|
|
40
|
+
**Misunderstandings:**
|
|
41
|
+
- Did they interpret requirements differently than intended?
|
|
42
|
+
- Did they solve the wrong problem?
|
|
43
|
+
- Did they implement the right feature the wrong way?
|
|
44
|
+
|
|
45
|
+
## Output
|
|
46
|
+
|
|
47
|
+
Verify by reading code, not by trusting the report.
|
|
48
|
+
|
|
49
|
+
- **Pass:** All requirements met, nothing extra, nothing missing
|
|
50
|
+
- **Fail:** List specifically what's missing or extra, with file:line references
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Spec Compliance: ✅ PASS / ❌ FAIL
|
|
54
|
+
|
|
55
|
+
Issues (if any):
|
|
56
|
+
1. [MISSING/EXTRA/WRONG] — description — file:line
|
|
57
|
+
2. ...
|
|
58
|
+
```
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Project Structure
|
|
2
|
+
|
|
3
|
+
## Directory Organization
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
[Define your project's directory structure. Examples below - adapt to your project type]
|
|
7
|
+
|
|
8
|
+
Example for a library/package:
|
|
9
|
+
project-root/
|
|
10
|
+
├── src/ # Source code
|
|
11
|
+
├── tests/ # Test files
|
|
12
|
+
├── docs/ # Documentation
|
|
13
|
+
├── examples/ # Usage examples
|
|
14
|
+
└── [build/dist/out] # Build output
|
|
15
|
+
|
|
16
|
+
Example for an application:
|
|
17
|
+
project-root/
|
|
18
|
+
├── [src/app/lib] # Main source code
|
|
19
|
+
├── [assets/resources] # Static resources
|
|
20
|
+
├── [config/settings] # Configuration
|
|
21
|
+
├── [scripts/tools] # Build/utility scripts
|
|
22
|
+
└── [tests/spec] # Test files
|
|
23
|
+
|
|
24
|
+
Common patterns:
|
|
25
|
+
- Group by feature/module
|
|
26
|
+
- Group by layer (UI, business logic, data)
|
|
27
|
+
- Group by type (models, controllers, views)
|
|
28
|
+
- Flat structure for simple projects
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Naming Conventions
|
|
32
|
+
|
|
33
|
+
### Files
|
|
34
|
+
- **Components/Modules**: [e.g., `PascalCase`, `snake_case`, `kebab-case`]
|
|
35
|
+
- **Services/Handlers**: [e.g., `UserService`, `user_service`, `user-service`]
|
|
36
|
+
- **Utilities/Helpers**: [e.g., `dateUtils`, `date_utils`, `date-utils`]
|
|
37
|
+
- **Tests**: [e.g., `[filename]_test`, `[filename].test`, `[filename]Test`]
|
|
38
|
+
|
|
39
|
+
### Code
|
|
40
|
+
- **Classes/Types**: [e.g., `PascalCase`, `CamelCase`, `snake_case`]
|
|
41
|
+
- **Functions/Methods**: [e.g., `camelCase`, `snake_case`, `PascalCase`]
|
|
42
|
+
- **Constants**: [e.g., `UPPER_SNAKE_CASE`, `SCREAMING_CASE`, `PascalCase`]
|
|
43
|
+
- **Variables**: [e.g., `camelCase`, `snake_case`, `lowercase`]
|
|
44
|
+
|
|
45
|
+
## Import Patterns
|
|
46
|
+
|
|
47
|
+
### Import Order
|
|
48
|
+
1. External dependencies
|
|
49
|
+
2. Internal modules
|
|
50
|
+
3. Relative imports
|
|
51
|
+
4. Style imports
|
|
52
|
+
|
|
53
|
+
### Module/Package Organization
|
|
54
|
+
```
|
|
55
|
+
[Describe your project's import/include patterns]
|
|
56
|
+
Examples:
|
|
57
|
+
- Absolute imports from project root
|
|
58
|
+
- Relative imports within modules
|
|
59
|
+
- Package/namespace organization
|
|
60
|
+
- Dependency management approach
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Code Structure Patterns
|
|
64
|
+
|
|
65
|
+
[Define common patterns for organizing code within files. Below are examples - choose what applies to your project]
|
|
66
|
+
|
|
67
|
+
### Module/Class Organization
|
|
68
|
+
```
|
|
69
|
+
Example patterns:
|
|
70
|
+
1. Imports/includes/dependencies
|
|
71
|
+
2. Constants and configuration
|
|
72
|
+
3. Type/interface definitions
|
|
73
|
+
4. Main implementation
|
|
74
|
+
5. Helper/utility functions
|
|
75
|
+
6. Exports/public API
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Function/Method Organization
|
|
79
|
+
```
|
|
80
|
+
Example patterns:
|
|
81
|
+
- Input validation first
|
|
82
|
+
- Core logic in the middle
|
|
83
|
+
- Error handling throughout
|
|
84
|
+
- Clear return points
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### File Organization Principles
|
|
88
|
+
```
|
|
89
|
+
Choose what works for your project:
|
|
90
|
+
- One class/module per file
|
|
91
|
+
- Related functionality grouped together
|
|
92
|
+
- Public API at the top/bottom
|
|
93
|
+
- Implementation details hidden
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Code Organization Principles
|
|
97
|
+
|
|
98
|
+
1. **Single Responsibility**: Each file should have one clear purpose
|
|
99
|
+
2. **Modularity**: Code should be organized into reusable modules
|
|
100
|
+
3. **Testability**: Structure code to be easily testable
|
|
101
|
+
4. **Consistency**: Follow patterns established in the codebase
|
|
102
|
+
|
|
103
|
+
## Module Boundaries
|
|
104
|
+
[Define how different parts of your project interact and maintain separation of concerns]
|
|
105
|
+
|
|
106
|
+
Examples of boundary patterns:
|
|
107
|
+
- **Core vs Plugins**: Core functionality vs extensible plugins
|
|
108
|
+
- **Public API vs Internal**: What's exposed vs implementation details
|
|
109
|
+
- **Platform-specific vs Cross-platform**: OS-specific code isolation
|
|
110
|
+
- **Stable vs Experimental**: Production code vs experimental features
|
|
111
|
+
- **Dependencies direction**: Which modules can depend on which
|
|
112
|
+
|
|
113
|
+
## Code Size Guidelines
|
|
114
|
+
[Define your project's guidelines for file and function sizes]
|
|
115
|
+
|
|
116
|
+
Suggested guidelines:
|
|
117
|
+
- **File size**: [Define maximum lines per file]
|
|
118
|
+
- **Function/Method size**: [Define maximum lines per function]
|
|
119
|
+
- **Class/Module complexity**: [Define complexity limits]
|
|
120
|
+
- **Nesting depth**: [Maximum nesting levels]
|
|
121
|
+
|
|
122
|
+
## Dashboard/Monitoring Structure (if applicable)
|
|
123
|
+
[How dashboard or monitoring components are organized]
|
|
124
|
+
|
|
125
|
+
### Example Structure:
|
|
126
|
+
```
|
|
127
|
+
src/
|
|
128
|
+
└── dashboard/ # Self-contained dashboard subsystem
|
|
129
|
+
├── server/ # Backend server components
|
|
130
|
+
├── client/ # Frontend assets
|
|
131
|
+
├── shared/ # Shared types/utilities
|
|
132
|
+
└── public/ # Static assets
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Separation of Concerns
|
|
136
|
+
- Dashboard isolated from core business logic
|
|
137
|
+
- Own CLI entry point for independent operation
|
|
138
|
+
- Minimal dependencies on main application
|
|
139
|
+
- Can be disabled without affecting core functionality
|
|
140
|
+
|
|
141
|
+
## Documentation Standards
|
|
142
|
+
- All public APIs must have documentation
|
|
143
|
+
- Complex logic should include inline comments
|
|
144
|
+
- README files for major modules
|
|
145
|
+
- Follow language-specific documentation conventions
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# Tasks Document
|
|
2
|
+
|
|
3
|
+
## References
|
|
4
|
+
|
|
5
|
+
- **Issue:** PROJ-XXX
|
|
6
|
+
- **GitHub PR:** [#NNN](https://github.com/owner/repo/pull/NNN)
|
|
7
|
+
- **Spec Path:** `.spec-workflow/specs/{spec-name}/`
|
|
8
|
+
|
|
9
|
+
## UI Prototype Gate (conditional — include ONLY if design.md declares `Has UI Changes: Yes` AND `Prototype Required: Yes`)
|
|
10
|
+
|
|
11
|
+
> **BLOCKING:** Tasks 0.1–0.3 MUST be completed and approved before ANY task tagged `ui:true` begins.
|
|
12
|
+
> If the spec has no UI changes, delete this entire section.
|
|
13
|
+
|
|
14
|
+
- [ ] 0.1 Create visual mockup (Stitch or equivalent)
|
|
15
|
+
- Invoke the `ui-mockup` skill (Step 1–4) OR the `frontend-design` skill
|
|
16
|
+
- If design.md references a prototype HTML file, use it as the starting point
|
|
17
|
+
- Generate mockups for all states: populated, loading, empty, error
|
|
18
|
+
- Include light and dark theme variants
|
|
19
|
+
- Purpose: Establish visual direction before writing any UI code
|
|
20
|
+
- _Requirements: All UI-related requirements_
|
|
21
|
+
- _Prompt: Role: UI/UX Designer | Task: Create visual mockups using the ui-mockup skill (Stitch) or frontend-design skill for all new/modified UI components described in design.md. Cover all visual states (populated, loading, empty, error) and theme variants (light, dark). If a reference HTML prototype exists at the path noted in design.md, use it as the baseline. | Restrictions: Do NOT write any production code. Output is mockup artifacts only. | Success: Stitch screen IDs or equivalent visual artifacts are generated and presented to the user for review._
|
|
22
|
+
|
|
23
|
+
- [ ] 0.2 Build interactive prototype (Playground)
|
|
24
|
+
- Invoke the `playground` skill using the approved mockup as spec
|
|
25
|
+
- Must use the project's actual tech stack (Bootstrap 5, CSS variables, data-theme attribute)
|
|
26
|
+
- Include realistic sample data, interactive controls, and all data states
|
|
27
|
+
- Purpose: Validate UX feel and interactions before production code
|
|
28
|
+
- _Requirements: All UI-related requirements_
|
|
29
|
+
- _Prompt: Role: Frontend Prototyper | Task: Build an interactive single-file HTML playground using the playground skill. Source visual design from the approved Stitch mockup (Task 0.1). Use the project's actual CSS framework and theme system. Include realistic data, clickable controls, hover states, and all data states (populated, loading, empty, error). | Restrictions: This is a throwaway prototype — do NOT integrate into the codebase. Must match the project's tech stack. | Success: User can interact with the prototype in a browser, validate layout/UX, and give explicit approval before implementation begins._
|
|
30
|
+
|
|
31
|
+
- [ ] 0.3 Visual approval checkpoint
|
|
32
|
+
- Present prototype to user for explicit approval
|
|
33
|
+
- Update design.md `Prototype Artifacts` section with Stitch IDs and playground file path
|
|
34
|
+
- Purpose: Hard gate — no UI implementation proceeds without visual sign-off
|
|
35
|
+
- _Requirements: All UI-related requirements_
|
|
36
|
+
- _Prompt: Role: Project Coordinator | Task: Present the interactive prototype (Task 0.2) to the user. Ask explicitly - does this look and feel right? Collect approval or revision feedback. If approved, update the UI Impact Assessment section in design.md with the Stitch screen IDs and playground file path. | Restrictions: Do NOT proceed to any ui:true implementation task until the user explicitly approves the prototype. Verbal approval IS accepted for this visual checkpoint (unlike spec phase approvals). | Success: User has approved the visual design. design.md Prototype Artifacts section is populated. Implementation tasks may now begin._
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
- [ ] 1. Create core interfaces in src/types/feature.ts
|
|
41
|
+
- File: src/types/feature.ts
|
|
42
|
+
- Define TypeScript interfaces for feature data structures
|
|
43
|
+
- Extend existing base interfaces from base.ts
|
|
44
|
+
- Purpose: Establish type safety for feature implementation
|
|
45
|
+
- _Leverage: src/types/base.ts_
|
|
46
|
+
- _Requirements: 1.1_
|
|
47
|
+
- _Prompt: Role: TypeScript Developer specializing in type systems and interfaces | Task: Create comprehensive TypeScript interfaces for the feature data structures following requirements 1.1, extending existing base interfaces from src/types/base.ts | Restrictions: Do not modify existing base interfaces, maintain backward compatibility, follow project naming conventions | Success: All interfaces compile without errors, proper inheritance from base types, full type coverage for feature requirements_
|
|
48
|
+
|
|
49
|
+
- [ ] 2. Create base model class in src/models/FeatureModel.ts
|
|
50
|
+
- File: src/models/FeatureModel.ts
|
|
51
|
+
- Implement base model extending BaseModel class
|
|
52
|
+
- Add validation methods using existing validation utilities
|
|
53
|
+
- Purpose: Provide data layer foundation for feature
|
|
54
|
+
- _Leverage: src/models/BaseModel.ts, src/utils/validation.ts_
|
|
55
|
+
- _Requirements: 2.1_
|
|
56
|
+
- _Prompt: Role: Backend Developer with expertise in Node.js and data modeling | Task: Create a base model class extending BaseModel and implementing validation following requirement 2.1, leveraging existing patterns from src/models/BaseModel.ts and src/utils/validation.ts | Restrictions: Must follow existing model patterns, do not bypass validation utilities, maintain consistent error handling | Success: Model extends BaseModel correctly, validation methods implemented and tested, follows project architecture patterns_
|
|
57
|
+
|
|
58
|
+
- [ ] 3. Add specific model methods to FeatureModel.ts
|
|
59
|
+
- File: src/models/FeatureModel.ts (continue from task 2)
|
|
60
|
+
- Implement create, update, delete methods
|
|
61
|
+
- Add relationship handling for foreign keys
|
|
62
|
+
- Purpose: Complete model functionality for CRUD operations
|
|
63
|
+
- _Leverage: src/models/BaseModel.ts_
|
|
64
|
+
- _Requirements: 2.2, 2.3_
|
|
65
|
+
- _Prompt: Role: Backend Developer with expertise in ORM and database operations | Task: Implement CRUD methods and relationship handling in FeatureModel.ts following requirements 2.2 and 2.3, extending patterns from src/models/BaseModel.ts | Restrictions: Must maintain transaction integrity, follow existing relationship patterns, do not duplicate base model functionality | Success: All CRUD operations work correctly, relationships are properly handled, database operations are atomic and efficient_
|
|
66
|
+
|
|
67
|
+
- [ ] 4. Create model unit tests in tests/models/FeatureModel.test.ts
|
|
68
|
+
- File: tests/models/FeatureModel.test.ts
|
|
69
|
+
- Write tests for model validation and CRUD methods
|
|
70
|
+
- Use existing test utilities and fixtures
|
|
71
|
+
- Purpose: Ensure model reliability and catch regressions
|
|
72
|
+
- _Leverage: tests/helpers/testUtils.ts, tests/fixtures/data.ts_
|
|
73
|
+
- _Requirements: 2.1, 2.2_
|
|
74
|
+
- _Prompt: Role: QA Engineer with expertise in unit testing and Jest/Mocha frameworks | Task: Create comprehensive unit tests for FeatureModel validation and CRUD methods covering requirements 2.1 and 2.2, using existing test utilities from tests/helpers/testUtils.ts and fixtures from tests/fixtures/data.ts | Restrictions: Must test both success and failure scenarios, do not test external dependencies directly, maintain test isolation | Success: All model methods are tested with good coverage, edge cases covered, tests run independently and consistently_
|
|
75
|
+
|
|
76
|
+
- [ ] 5. Create service interface in src/services/IFeatureService.ts
|
|
77
|
+
- File: src/services/IFeatureService.ts
|
|
78
|
+
- Define service contract with method signatures
|
|
79
|
+
- Extend base service interface patterns
|
|
80
|
+
- Purpose: Establish service layer contract for dependency injection
|
|
81
|
+
- _Leverage: src/services/IBaseService.ts_
|
|
82
|
+
- _Requirements: 3.1_
|
|
83
|
+
- _Prompt: Role: Software Architect specializing in service-oriented architecture and TypeScript interfaces | Task: Design service interface contract following requirement 3.1, extending base service patterns from src/services/IBaseService.ts for dependency injection | Restrictions: Must maintain interface segregation principle, do not expose internal implementation details, ensure contract compatibility with DI container | Success: Interface is well-defined with clear method signatures, extends base service appropriately, supports all required service operations_
|
|
84
|
+
|
|
85
|
+
- [ ] 6. Implement feature service in src/services/FeatureService.ts
|
|
86
|
+
- File: src/services/FeatureService.ts
|
|
87
|
+
- Create concrete service implementation using FeatureModel
|
|
88
|
+
- Add error handling with existing error utilities
|
|
89
|
+
- Purpose: Provide business logic layer for feature operations
|
|
90
|
+
- _Leverage: src/services/BaseService.ts, src/utils/errorHandler.ts, src/models/FeatureModel.ts_
|
|
91
|
+
- _Requirements: 3.2_
|
|
92
|
+
- _Prompt: Role: Backend Developer with expertise in service layer architecture and business logic | Task: Implement concrete FeatureService following requirement 3.2, using FeatureModel and extending BaseService patterns with proper error handling from src/utils/errorHandler.ts | Restrictions: Must implement interface contract exactly, do not bypass model validation, maintain separation of concerns from data layer | Success: Service implements all interface methods correctly, robust error handling implemented, business logic is well-encapsulated and testable_
|
|
93
|
+
|
|
94
|
+
- [ ] 7. Add service dependency injection in src/utils/di.ts
|
|
95
|
+
- File: src/utils/di.ts (modify existing)
|
|
96
|
+
- Register FeatureService in dependency injection container
|
|
97
|
+
- Configure service lifetime and dependencies
|
|
98
|
+
- Purpose: Enable service injection throughout application
|
|
99
|
+
- _Leverage: existing DI configuration in src/utils/di.ts_
|
|
100
|
+
- _Requirements: 3.1_
|
|
101
|
+
- _Prompt: Role: DevOps Engineer with expertise in dependency injection and IoC containers | Task: Register FeatureService in DI container following requirement 3.1, configuring appropriate lifetime and dependencies using existing patterns from src/utils/di.ts | Restrictions: Must follow existing DI container patterns, do not create circular dependencies, maintain service resolution efficiency | Success: FeatureService is properly registered and resolvable, dependencies are correctly configured, service lifetime is appropriate for use case_
|
|
102
|
+
|
|
103
|
+
- [ ] 8. Create service unit tests in tests/services/FeatureService.test.ts
|
|
104
|
+
- File: tests/services/FeatureService.test.ts
|
|
105
|
+
- Write tests for service methods with mocked dependencies
|
|
106
|
+
- Test error handling scenarios
|
|
107
|
+
- Purpose: Ensure service reliability and proper error handling
|
|
108
|
+
- _Leverage: tests/helpers/testUtils.ts, tests/mocks/modelMocks.ts_
|
|
109
|
+
- _Requirements: 3.2, 3.3_
|
|
110
|
+
- _Prompt: Role: QA Engineer with expertise in service testing and mocking frameworks | Task: Create comprehensive unit tests for FeatureService methods covering requirements 3.2 and 3.3, using mocked dependencies from tests/mocks/modelMocks.ts and test utilities | Restrictions: Must mock all external dependencies, test business logic in isolation, do not test framework code | Success: All service methods tested with proper mocking, error scenarios covered, tests verify business logic correctness and error handling_
|
|
111
|
+
|
|
112
|
+
- [ ] 4. Create API endpoints
|
|
113
|
+
- Design API structure
|
|
114
|
+
- _Leverage: src/api/baseApi.ts, src/utils/apiUtils.ts_
|
|
115
|
+
- _Requirements: 4.0_
|
|
116
|
+
- _Prompt: Role: API Architect specializing in RESTful design and Express.js | Task: Design comprehensive API structure following requirement 4.0, leveraging existing patterns from src/api/baseApi.ts and utilities from src/utils/apiUtils.ts | Restrictions: Must follow REST conventions, maintain API versioning compatibility, do not expose internal data structures directly | Success: API structure is well-designed and documented, follows existing patterns, supports all required operations with proper HTTP methods and status codes_
|
|
117
|
+
|
|
118
|
+
- [ ] 4.1 Set up routing and middleware
|
|
119
|
+
- Configure application routes
|
|
120
|
+
- Add authentication middleware
|
|
121
|
+
- Set up error handling middleware
|
|
122
|
+
- _Leverage: src/middleware/auth.ts, src/middleware/errorHandler.ts_
|
|
123
|
+
- _Requirements: 4.1_
|
|
124
|
+
- _Prompt: Role: Backend Developer with expertise in Express.js middleware and routing | Task: Configure application routes and middleware following requirement 4.1, integrating authentication from src/middleware/auth.ts and error handling from src/middleware/errorHandler.ts | Restrictions: Must maintain middleware order, do not bypass security middleware, ensure proper error propagation | Success: Routes are properly configured with correct middleware chain, authentication works correctly, errors are handled gracefully throughout the request lifecycle_
|
|
125
|
+
|
|
126
|
+
- [ ] 4.2 Implement CRUD endpoints
|
|
127
|
+
- Create API endpoints
|
|
128
|
+
- Add request validation
|
|
129
|
+
- Write API integration tests
|
|
130
|
+
- _Leverage: src/controllers/BaseController.ts, src/utils/validation.ts_
|
|
131
|
+
- _Requirements: 4.2, 4.3_
|
|
132
|
+
- _Prompt: Role: Full-stack Developer with expertise in API development and validation | Task: Implement CRUD endpoints following requirements 4.2 and 4.3, extending BaseController patterns and using validation utilities from src/utils/validation.ts | Restrictions: Must validate all inputs, follow existing controller patterns, ensure proper HTTP status codes and responses | Success: All CRUD operations work correctly, request validation prevents invalid data, integration tests pass and cover all endpoints_
|
|
133
|
+
|
|
134
|
+
- [ ] 5. Add frontend components
|
|
135
|
+
- Plan component architecture
|
|
136
|
+
- _Leverage: src/components/BaseComponent.tsx, src/styles/theme.ts_
|
|
137
|
+
- _Requirements: 5.0_
|
|
138
|
+
- _Prompt: Role: Frontend Architect with expertise in React component design and architecture | Task: Plan comprehensive component architecture following requirement 5.0, leveraging base patterns from src/components/BaseComponent.tsx and theme system from src/styles/theme.ts | Restrictions: Must follow existing component patterns, maintain design system consistency, ensure component reusability | Success: Architecture is well-planned and documented, components are properly organized, follows existing patterns and theme system_
|
|
139
|
+
|
|
140
|
+
- [ ] 5.1 Create base UI components
|
|
141
|
+
- Set up component structure
|
|
142
|
+
- Implement reusable components
|
|
143
|
+
- Add styling and theming
|
|
144
|
+
- _Leverage: src/components/BaseComponent.tsx, src/styles/theme.ts_
|
|
145
|
+
- _Requirements: 5.1_
|
|
146
|
+
- _Prompt: Role: Frontend Developer specializing in React and component architecture | Task: Create reusable UI components following requirement 5.1, extending BaseComponent patterns and using existing theme system from src/styles/theme.ts | Restrictions: Must use existing theme variables, follow component composition patterns, ensure accessibility compliance | Success: Components are reusable and properly themed, follow existing architecture, accessible and responsive_
|
|
147
|
+
|
|
148
|
+
- [ ] 5.2 Implement feature-specific components
|
|
149
|
+
- Create feature components
|
|
150
|
+
- Add state management
|
|
151
|
+
- Connect to API endpoints
|
|
152
|
+
- _Leverage: src/hooks/useApi.ts, src/components/BaseComponent.tsx_
|
|
153
|
+
- _Requirements: 5.2, 5.3_
|
|
154
|
+
- _Prompt: Role: React Developer with expertise in state management and API integration | Task: Implement feature-specific components following requirements 5.2 and 5.3, using API hooks from src/hooks/useApi.ts and extending BaseComponent patterns | Restrictions: Must use existing state management patterns, handle loading and error states properly, maintain component performance | Success: Components are fully functional with proper state management, API integration works smoothly, user experience is responsive and intuitive_
|
|
155
|
+
|
|
156
|
+
- [ ] 6. Integration and testing
|
|
157
|
+
- Plan integration approach and identify affected runbook sections for TDD test authoring
|
|
158
|
+
- _Leverage: tests/runbook/*.md, /browserbase-test-maintenance skill_
|
|
159
|
+
- _Requirements: 6.0_
|
|
160
|
+
- _Prompt: Role: Integration Engineer with expertise in system integration and testing strategies | Task: Plan comprehensive integration approach following requirement 6.0. Identify which tests/runbook/ section files are affected by this spec and write new runbook test blocks BEFORE implementation tasks begin (TDD). Use the /browserbase-test-maintenance skill for format guidance and section mapping. | Restrictions: Must consider all system components, ensure proper test coverage, write tests in the standard 7-field runbook format | Success: Integration plan is comprehensive, runbook test blocks are written for all new user-facing behavior, tests are appended to the correct section files_
|
|
161
|
+
|
|
162
|
+
- [ ] 6.1 Write end-to-end runbook tests (TDD — write BEFORE implementation)
|
|
163
|
+
- Write runbook test blocks in tests/runbook/*.md for new user-facing behavior
|
|
164
|
+
- Use the /browserbase-test-maintenance skill for the standard 7-field format
|
|
165
|
+
- Map implementation changes to the correct runbook section file
|
|
166
|
+
- _Leverage: /browserbase-test-maintenance skill, tests/runbook/*.md section files_
|
|
167
|
+
- _Requirements: All_
|
|
168
|
+
- _Prompt: Role: QA Automation Engineer with expertise in Browserbase/Stagehand natural-language browser automation | Task: Write runbook test blocks in tests/runbook/*.md for all new user-facing behavior using the /browserbase-test-maintenance skill. Each test block must use the 7-field format (Test name, Added, Preconditions, Steps, Pass criteria, Tags, Section). Map changes to the correct section file. After implementation, verify by running /bb-test sections=NN against the PR preview URL. | Restrictions: Use the standard runbook format, append to section files (never modify existing tests), act steps must be atomic. No Playwright, no browserless. | Success: All new user-facing behavior has corresponding runbook test blocks, tests pass when run via /bb-test against the PR preview URL_
|
|
169
|
+
|
|
170
|
+
- [ ] 6.2 Verify tests against PR preview
|
|
171
|
+
- Run /bb-test sections=NN against PR preview URL to verify all new tests pass
|
|
172
|
+
- _Leverage: /bb-test skill, PR preview URL from gh pr checks_
|
|
173
|
+
- _Requirements: All_
|
|
174
|
+
- _Prompt: Role: QA Automation Engineer | Task: Run /bb-test sections=NN against the PR preview URL to verify all new runbook tests pass. Get the preview URL with: gh pr checks <PR_NUMBER> --json name,state,targetUrl. For 1-3 tests, consider manual verification via Chrome DevTools instead of a full Browserbase session. | Restrictions: Do NOT use Playwright or browserless. | Success: All new tests pass against the PR preview URL_
|
|
175
|
+
|
|
176
|
+
- [ ] 6.3 Final integration and cleanup
|
|
177
|
+
- Integrate all components
|
|
178
|
+
- Fix any integration issues
|
|
179
|
+
- Clean up code and documentation
|
|
180
|
+
- _Leverage: src/utils/cleanup.ts, docs/templates/_
|
|
181
|
+
- _Requirements: All_
|
|
182
|
+
- _Prompt: Role: Senior Developer with expertise in code quality and system integration | Task: Complete final integration of all components and perform comprehensive cleanup covering all requirements, using cleanup utilities and documentation templates | Restrictions: Must not break existing functionality, ensure code quality standards are met, maintain documentation consistency | Success: All components are fully integrated and working together, code is clean and well-documented, system meets all requirements and quality standards_
|