@madmatt112org/spec-workflow-mcp 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 +1013 -0
- package/LICENSE +674 -0
- package/README.md +458 -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__/adversarial-settings.test.d.ts +2 -0
- package/dist/core/__tests__/adversarial-settings.test.d.ts.map +1 -0
- package/dist/core/__tests__/adversarial-settings.test.js +361 -0
- package/dist/core/__tests__/adversarial-settings.test.js.map +1 -0
- package/dist/core/__tests__/deferral-storage.test.d.ts +2 -0
- package/dist/core/__tests__/deferral-storage.test.d.ts.map +1 -0
- package/dist/core/__tests__/deferral-storage.test.js +181 -0
- package/dist/core/__tests__/deferral-storage.test.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__/hygiene-signals.test.d.ts +2 -0
- package/dist/core/__tests__/hygiene-signals.test.d.ts.map +1 -0
- package/dist/core/__tests__/hygiene-signals.test.js +200 -0
- package/dist/core/__tests__/hygiene-signals.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-denylist.test.d.ts +2 -0
- package/dist/core/__tests__/path-denylist.test.d.ts.map +1 -0
- package/dist/core/__tests__/path-denylist.test.js +242 -0
- package/dist/core/__tests__/path-denylist.test.js.map +1 -0
- package/dist/core/__tests__/path-utils.test.d.ts +2 -0
- package/dist/core/__tests__/path-utils.test.d.ts.map +1 -0
- package/dist/core/__tests__/path-utils.test.js +342 -0
- package/dist/core/__tests__/path-utils.test.js.map +1 -0
- package/dist/core/__tests__/project-registry.test.d.ts +2 -0
- package/dist/core/__tests__/project-registry.test.d.ts.map +1 -0
- package/dist/core/__tests__/project-registry.test.js +62 -0
- package/dist/core/__tests__/project-registry.test.js.map +1 -0
- package/dist/core/__tests__/security-utils.test.d.ts +2 -0
- package/dist/core/__tests__/security-utils.test.d.ts.map +1 -0
- package/dist/core/__tests__/security-utils.test.js +643 -0
- package/dist/core/__tests__/security-utils.test.js.map +1 -0
- package/dist/core/__tests__/task-diff.test.d.ts +2 -0
- package/dist/core/__tests__/task-diff.test.d.ts.map +1 -0
- package/dist/core/__tests__/task-diff.test.js +287 -0
- package/dist/core/__tests__/task-diff.test.js.map +1 -0
- package/dist/core/__tests__/task-review-manager.test.d.ts +2 -0
- package/dist/core/__tests__/task-review-manager.test.d.ts.map +1 -0
- package/dist/core/__tests__/task-review-manager.test.js +235 -0
- package/dist/core/__tests__/task-review-manager.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/__tests__/typecheck.test.d.ts +2 -0
- package/dist/core/__tests__/typecheck.test.d.ts.map +1 -0
- package/dist/core/__tests__/typecheck.test.js +558 -0
- package/dist/core/__tests__/typecheck.test.js.map +1 -0
- package/dist/core/adversarial-settings.d.ts +23 -0
- package/dist/core/adversarial-settings.d.ts.map +1 -0
- package/dist/core/adversarial-settings.js +148 -0
- package/dist/core/adversarial-settings.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/deferral-storage.d.ts +32 -0
- package/dist/core/deferral-storage.d.ts.map +1 -0
- package/dist/core/deferral-storage.js +232 -0
- package/dist/core/deferral-storage.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/hygiene-signals.d.ts +8 -0
- package/dist/core/hygiene-signals.d.ts.map +1 -0
- package/dist/core/hygiene-signals.js +41 -0
- package/dist/core/hygiene-signals.js.map +1 -0
- package/dist/core/implementation-log-migrator.d.ts +41 -0
- package/dist/core/implementation-log-migrator.d.ts.map +1 -0
- package/dist/core/implementation-log-migrator.js +258 -0
- package/dist/core/implementation-log-migrator.js.map +1 -0
- package/dist/core/mdx-validator.d.ts +14 -0
- package/dist/core/mdx-validator.d.ts.map +1 -0
- package/dist/core/mdx-validator.js +34 -0
- package/dist/core/mdx-validator.js.map +1 -0
- package/dist/core/parser.d.ts +11 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +126 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/path-denylist.d.ts +8 -0
- package/dist/core/path-denylist.d.ts.map +1 -0
- package/dist/core/path-denylist.js +107 -0
- package/dist/core/path-denylist.js.map +1 -0
- package/dist/core/path-utils.d.ts +69 -0
- package/dist/core/path-utils.d.ts.map +1 -0
- package/dist/core/path-utils.js +306 -0
- package/dist/core/path-utils.js.map +1 -0
- package/dist/core/project-registry.d.ts +94 -0
- package/dist/core/project-registry.d.ts.map +1 -0
- package/dist/core/project-registry.js +297 -0
- package/dist/core/project-registry.js.map +1 -0
- package/dist/core/security-utils.d.ts +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-diff.d.ts +15 -0
- package/dist/core/task-diff.d.ts.map +1 -0
- package/dist/core/task-diff.js +136 -0
- package/dist/core/task-diff.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-review-manager.d.ts +56 -0
- package/dist/core/task-review-manager.d.ts.map +1 -0
- package/dist/core/task-review-manager.js +281 -0
- package/dist/core/task-review-manager.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/typecheck.d.ts +33 -0
- package/dist/core/typecheck.d.ts.map +1 -0
- package/dist/core/typecheck.js +375 -0
- package/dist/core/typecheck.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 +167 -0
- package/dist/core/workspace-initializer.js.map +1 -0
- package/dist/dashboard/__tests__/adversarial-display-state.test.d.ts +2 -0
- package/dist/dashboard/__tests__/adversarial-display-state.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/adversarial-display-state.test.js +59 -0
- package/dist/dashboard/__tests__/adversarial-display-state.test.js.map +1 -0
- package/dist/dashboard/__tests__/adversarial-endpoints.test.d.ts +2 -0
- package/dist/dashboard/__tests__/adversarial-endpoints.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/adversarial-endpoints.test.js +296 -0
- package/dist/dashboard/__tests__/adversarial-endpoints.test.js.map +1 -0
- package/dist/dashboard/__tests__/adversarial-runner.test.d.ts +2 -0
- package/dist/dashboard/__tests__/adversarial-runner.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/adversarial-runner.test.js +315 -0
- package/dist/dashboard/__tests__/adversarial-runner.test.js.map +1 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts +2 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js +78 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js.map +1 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts +2 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.js +115 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.js.map +1 -0
- package/dist/dashboard/__tests__/multi-server.test.d.ts +2 -0
- package/dist/dashboard/__tests__/multi-server.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/multi-server.test.js +388 -0
- package/dist/dashboard/__tests__/multi-server.test.js.map +1 -0
- package/dist/dashboard/__tests__/task-review-runner.test.d.ts +2 -0
- package/dist/dashboard/__tests__/task-review-runner.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/task-review-runner.test.js +255 -0
- package/dist/dashboard/__tests__/task-review-runner.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/adversarial-display-state.d.ts +38 -0
- package/dist/dashboard/adversarial-display-state.d.ts.map +1 -0
- package/dist/dashboard/adversarial-display-state.js +45 -0
- package/dist/dashboard/adversarial-display-state.js.map +1 -0
- package/dist/dashboard/adversarial-runner.d.ts +44 -0
- package/dist/dashboard/adversarial-runner.d.ts.map +1 -0
- package/dist/dashboard/adversarial-runner.js +168 -0
- package/dist/dashboard/adversarial-runner.js.map +1 -0
- package/dist/dashboard/approval-storage.d.ts +139 -0
- package/dist/dashboard/approval-storage.d.ts.map +1 -0
- package/dist/dashboard/approval-storage.js +608 -0
- package/dist/dashboard/approval-storage.js.map +1 -0
- package/dist/dashboard/execution-history-manager.d.ts +52 -0
- package/dist/dashboard/execution-history-manager.d.ts.map +1 -0
- package/dist/dashboard/execution-history-manager.js +161 -0
- package/dist/dashboard/execution-history-manager.js.map +1 -0
- package/dist/dashboard/implementation-log-manager.d.ts +102 -0
- package/dist/dashboard/implementation-log-manager.d.ts.map +1 -0
- package/dist/dashboard/implementation-log-manager.js +594 -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 +45 -0
- package/dist/dashboard/multi-server.d.ts.map +1 -0
- package/dist/dashboard/multi-server.js +1927 -0
- package/dist/dashboard/multi-server.js.map +1 -0
- package/dist/dashboard/parser.d.ts +18 -0
- package/dist/dashboard/parser.d.ts.map +1 -0
- package/dist/dashboard/parser.js +243 -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-A04OOED4.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--RobHnfG.js +118 -0
- package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/dist/dashboard/public/assets/c4Diagram-c83219d4-tY8lPXxy.js +10 -0
- package/dist/dashboard/public/assets/channel-Cg2ZlORc.js +1 -0
- package/dist/dashboard/public/assets/classDiagram-beda092f-DBiupBFm.js +2 -0
- package/dist/dashboard/public/assets/classDiagram-v2-2358418a-FM2jRAtm.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-CCO9qihz.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-C_nyx2v1.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-BsffumDq.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-BK-uOJy1.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-BC8_H7l7.js +10 -0
- package/dist/dashboard/public/assets/flowDiagram-50d868cf-0XbjRISj.js +4 -0
- package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-CXE3CwgW.js +1 -0
- package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-CCvs3UPr.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-Yp2gfoGL.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-njx_NoNr.js +70 -0
- package/dist/dashboard/public/assets/graph-COR8Ljm7.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-0abMV41b.js +1 -0
- package/dist/dashboard/public/assets/index-5325376f-cWsAocic.js +1 -0
- package/dist/dashboard/public/assets/index-BH121EUE.js +1 -0
- package/dist/dashboard/public/assets/index-BMLdkmFP.js +1 -0
- package/dist/dashboard/public/assets/index-BYgbrt4G.js +1 -0
- package/dist/dashboard/public/assets/index-BwFDzEd4.js +3 -0
- package/dist/dashboard/public/assets/index-CS7gsYFH.js +1 -0
- package/dist/dashboard/public/assets/index-Cc6cUpKS.js +1 -0
- package/dist/dashboard/public/assets/index-CgeymaoH.js +1 -0
- package/dist/dashboard/public/assets/index-Cl5FjFWx.js +1 -0
- package/dist/dashboard/public/assets/index-CnN2VPRa.js +1 -0
- package/dist/dashboard/public/assets/index-DDWkdUEb.js +1 -0
- package/dist/dashboard/public/assets/index-DLUjIeO9.js +1 -0
- package/dist/dashboard/public/assets/index-Dm3-5ZYh.js +319 -0
- package/dist/dashboard/public/assets/index-Ds4s2dDD.js +2 -0
- package/dist/dashboard/public/assets/index-DvrmwdIJ.js +1 -0
- package/dist/dashboard/public/assets/index-MTVs_iIW.js +7 -0
- package/dist/dashboard/public/assets/index-UGm8eYTB.js +1 -0
- package/dist/dashboard/public/assets/index-Zi39sM21.css +1 -0
- package/dist/dashboard/public/assets/index-iL66igAo.js +1 -0
- package/dist/dashboard/public/assets/infoDiagram-8eee0895-TQXQOcbQ.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-C7AIhJZ8.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-BzInGx9g.js +1 -0
- package/dist/dashboard/public/assets/line-BvqpNAKs.js +1 -0
- package/dist/dashboard/public/assets/linear-CMco2PTv.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-CeJT8t3A.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-DYvb2wsa.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-DpKQgDsX.js +7 -0
- package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
- package/dist/dashboard/public/assets/requirementDiagram-08caed73-C_q-bfsF.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-0kwrmzfI.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-i5S3JNF0.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-COE2ffbQ.js +1 -0
- package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-DMAS8qJy.js +1 -0
- package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
- package/dist/dashboard/public/assets/styles-b4e223ce-M0Oa_txo.js +160 -0
- package/dist/dashboard/public/assets/styles-ca3715f6-DddhRVVB.js +207 -0
- package/dist/dashboard/public/assets/styles-d45a18b0-ByKhWZca.js +116 -0
- package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
- package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-DIF6Vn69.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-DC1Bdpu_.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-BIMyvG9y.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/task-review-runner.d.ts +42 -0
- package/dist/dashboard/task-review-runner.d.ts.map +1 -0
- package/dist/dashboard/task-review-runner.js +375 -0
- package/dist/dashboard/task-review-runner.js.map +1 -0
- package/dist/dashboard/utils.d.ts +31 -0
- package/dist/dashboard/utils.d.ts.map +1 -0
- package/dist/dashboard/utils.js +102 -0
- package/dist/dashboard/utils.js.map +1 -0
- package/dist/dashboard/watcher.d.ts +32 -0
- package/dist/dashboard/watcher.d.ts.map +1 -0
- package/dist/dashboard/watcher.js +173 -0
- package/dist/dashboard/watcher.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +380 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown/templates/design-template.md +96 -0
- package/dist/markdown/templates/product-template.md +51 -0
- package/dist/markdown/templates/requirements-template.md +50 -0
- package/dist/markdown/templates/structure-template.md +145 -0
- package/dist/markdown/templates/tasks-template.md +139 -0
- package/dist/markdown/templates/tech-template.md +99 -0
- package/dist/prompts/create-decomposition.d.ts +3 -0
- package/dist/prompts/create-decomposition.d.ts.map +1 -0
- package/dist/prompts/create-decomposition.js +122 -0
- package/dist/prompts/create-decomposition.js.map +1 -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 +173 -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 +51 -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__/adversarial-response.test.d.ts +2 -0
- package/dist/tools/__tests__/adversarial-response.test.d.ts.map +1 -0
- package/dist/tools/__tests__/adversarial-response.test.js +144 -0
- package/dist/tools/__tests__/adversarial-response.test.js.map +1 -0
- package/dist/tools/__tests__/adversarial-review.test.d.ts +2 -0
- package/dist/tools/__tests__/adversarial-review.test.d.ts.map +1 -0
- package/dist/tools/__tests__/adversarial-review.test.js +318 -0
- package/dist/tools/__tests__/adversarial-review.test.js.map +1 -0
- package/dist/tools/__tests__/decomposition-guide.test.d.ts +2 -0
- package/dist/tools/__tests__/decomposition-guide.test.d.ts.map +1 -0
- package/dist/tools/__tests__/decomposition-guide.test.js +25 -0
- package/dist/tools/__tests__/decomposition-guide.test.js.map +1 -0
- package/dist/tools/__tests__/deferrals.test.d.ts +2 -0
- package/dist/tools/__tests__/deferrals.test.d.ts.map +1 -0
- package/dist/tools/__tests__/deferrals.test.js +151 -0
- package/dist/tools/__tests__/deferrals.test.js.map +1 -0
- package/dist/tools/__tests__/get-task-review.test.d.ts +2 -0
- package/dist/tools/__tests__/get-task-review.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-task-review.test.js +81 -0
- package/dist/tools/__tests__/get-task-review.test.js.map +1 -0
- package/dist/tools/__tests__/projectPath.test.d.ts +2 -0
- package/dist/tools/__tests__/projectPath.test.d.ts.map +1 -0
- package/dist/tools/__tests__/projectPath.test.js +187 -0
- package/dist/tools/__tests__/projectPath.test.js.map +1 -0
- package/dist/tools/__tests__/review-task.test.d.ts +2 -0
- package/dist/tools/__tests__/review-task.test.d.ts.map +1 -0
- package/dist/tools/__tests__/review-task.test.js +1097 -0
- package/dist/tools/__tests__/review-task.test.js.map +1 -0
- package/dist/tools/adversarial-response.d.ts +6 -0
- package/dist/tools/adversarial-response.d.ts.map +1 -0
- package/dist/tools/adversarial-response.js +206 -0
- package/dist/tools/adversarial-response.js.map +1 -0
- package/dist/tools/adversarial-review.d.ts +21 -0
- package/dist/tools/adversarial-review.d.ts.map +1 -0
- package/dist/tools/adversarial-review.js +491 -0
- package/dist/tools/adversarial-review.js.map +1 -0
- package/dist/tools/approvals.d.ts +14 -0
- package/dist/tools/approvals.d.ts.map +1 -0
- package/dist/tools/approvals.js +505 -0
- package/dist/tools/approvals.js.map +1 -0
- package/dist/tools/decomposition-guide.d.ts +6 -0
- package/dist/tools/decomposition-guide.d.ts.map +1 -0
- package/dist/tools/decomposition-guide.js +163 -0
- package/dist/tools/decomposition-guide.js.map +1 -0
- package/dist/tools/deferrals.d.ts +5 -0
- package/dist/tools/deferrals.d.ts.map +1 -0
- package/dist/tools/deferrals.js +229 -0
- package/dist/tools/deferrals.js.map +1 -0
- package/dist/tools/get-task-review.d.ts +5 -0
- package/dist/tools/get-task-review.d.ts.map +1 -0
- package/dist/tools/get-task-review.js +136 -0
- package/dist/tools/get-task-review.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 +82 -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 +398 -0
- package/dist/tools/log-implementation.js.map +1 -0
- package/dist/tools/review-task.d.ts +58 -0
- package/dist/tools/review-task.d.ts.map +1 -0
- package/dist/tools/review-task.js +617 -0
- package/dist/tools/review-task.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 +235 -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 +396 -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 +213 -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 +113 -0
|
@@ -0,0 +1,396 @@
|
|
|
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 (Decomposition → 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
|
+
'If steering docs exist, run decomposition first with decomposition-guide',
|
|
32
|
+
'Follow sequence: Decomposition → Requirements → Design → Tasks → Implementation',
|
|
33
|
+
'Load templates with get-template-context first',
|
|
34
|
+
'Request approval after each document',
|
|
35
|
+
'Use MCP tools only',
|
|
36
|
+
dashboardMessage
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function getSpecWorkflowGuide() {
|
|
41
|
+
const currentYear = new Date().getFullYear();
|
|
42
|
+
return `# Spec Development Workflow
|
|
43
|
+
|
|
44
|
+
## Overview
|
|
45
|
+
|
|
46
|
+
You guide users through spec-driven development using MCP tools. Transform rough ideas into detailed specifications through Decomposition → Requirements → Design → Tasks → Implementation phases. When steering docs exist, always begin with Decomposition to break the project into ordered specs before starting the first spec's Requirements phase. Use web search when available for current best practices (current year: ${currentYear}). Its important that you follow this workflow exactly to avoid errors.
|
|
47
|
+
Feature names use kebab-case (e.g., user-authentication). Create ONE spec at a time.
|
|
48
|
+
|
|
49
|
+
## Entry Points
|
|
50
|
+
|
|
51
|
+
Pick the entry point that matches the user's request before stepping through the workflow:
|
|
52
|
+
|
|
53
|
+
| Situation | Where to enter |
|
|
54
|
+
|---|---|
|
|
55
|
+
| New feature, no spec yet | Start at the top of the diagram (CheckSteering). If steering exists, do Decomposition before Phase 1. |
|
|
56
|
+
| User-provided per-task prompt (e.g. "Implement the task for spec X…") | Skip Phases 1-3 — those documents already exist. Jump to **Phase 4: Implementation** and follow that section. |
|
|
57
|
+
| User asks to revise a document after a 'needs-revision' approval | Re-enter the same phase you were in; update the document, request a NEW approval. |
|
|
58
|
+
| User asks for an adversarial critique of a doc | Use the \`adversarial-review\` tool (it works for any phase: requirements, design, tasks, decomposition, product, tech, structure). See "Adversarial Review" section below. |
|
|
59
|
+
| User asks to respond to an adversarial review (or the approval comment requests it) | Use the \`adversarial-response\` tool. See "Adversarial Review" section below. |
|
|
60
|
+
| User wants to create steering docs | Call \`steering-guide\` instead — that is a separate workflow. |
|
|
61
|
+
|
|
62
|
+
## Workflow Diagram
|
|
63
|
+
\`\`\`mermaid
|
|
64
|
+
flowchart TD
|
|
65
|
+
Start([Start: User requests feature]) --> CheckSteering{Steering docs exist?}
|
|
66
|
+
CheckSteering -->|No| P1_Template
|
|
67
|
+
|
|
68
|
+
%% Decomposition
|
|
69
|
+
CheckSteering -->|Yes| Decomp_Check{Decomposition<br/>exists?}
|
|
70
|
+
Decomp_Check -->|Yes| P1_Load[Read steering docs +<br/>decomposition.md]
|
|
71
|
+
Decomp_Check -->|No| Decomp_Guide[Call decomposition-guide]
|
|
72
|
+
Decomp_Guide --> Decomp_Read[Read all steering docs]
|
|
73
|
+
Decomp_Read --> Decomp_Create[Create file:<br/>.spec-workflow/spec-decomposition/<br/>decomposition.md]
|
|
74
|
+
Decomp_Create --> Decomp_Approve[approvals<br/>action: request<br/>filePath only]
|
|
75
|
+
Decomp_Approve --> Decomp_Status[approvals<br/>action: status<br/>poll status]
|
|
76
|
+
Decomp_Status --> Decomp_Decision{Status?}
|
|
77
|
+
Decomp_Decision -->|needs-revision| Decomp_Update[Update document using<br/>user comments as guidance]
|
|
78
|
+
Decomp_Update --> Decomp_Create
|
|
79
|
+
Decomp_Decision -->|approved| Decomp_Clean[approvals<br/>action: delete]
|
|
80
|
+
Decomp_Clean -->|failed| Decomp_Status
|
|
81
|
+
Decomp_Clean -->|success| P1_Load
|
|
82
|
+
|
|
83
|
+
%% Phase 1: Requirements
|
|
84
|
+
P1_Load --> P1_Template[Check user-templates first,<br/>then read template:<br/>requirements-template.md]
|
|
85
|
+
P1_Template --> P1_Research[Web search if available]
|
|
86
|
+
P1_Research --> P1_Create[Create file:<br/>.spec-workflow/specs/{name}/<br/>requirements.md]
|
|
87
|
+
P1_Create --> P1_Approve[approvals<br/>action: request<br/>filePath only]
|
|
88
|
+
P1_Approve --> P1_Status[approvals<br/>action: status<br/>poll status]
|
|
89
|
+
P1_Status --> P1_Check{Status?}
|
|
90
|
+
P1_Check -->|needs-revision| P1_Update[Update document using user comments as guidance]
|
|
91
|
+
P1_Update --> P1_Create
|
|
92
|
+
P1_Check -->|approved| P1_Clean[approvals<br/>action: delete]
|
|
93
|
+
P1_Clean -->|failed| P1_Status
|
|
94
|
+
|
|
95
|
+
%% Phase 2: Design
|
|
96
|
+
P1_Clean -->|success| P2_Template[Check user-templates first,<br/>then read template:<br/>design-template.md]
|
|
97
|
+
P2_Template --> P2_Analyze[Analyze codebase patterns]
|
|
98
|
+
P2_Analyze --> P2_Create[Create file:<br/>.spec-workflow/specs/{name}/<br/>design.md]
|
|
99
|
+
P2_Create --> P2_Approve[approvals<br/>action: request<br/>filePath only]
|
|
100
|
+
P2_Approve --> P2_Status[approvals<br/>action: status<br/>poll status]
|
|
101
|
+
P2_Status --> P2_Check{Status?}
|
|
102
|
+
P2_Check -->|needs-revision| P2_Update[Update document using user comments as guidance]
|
|
103
|
+
P2_Update --> P2_Create
|
|
104
|
+
P2_Check -->|approved| P2_Clean[approvals<br/>action: delete]
|
|
105
|
+
P2_Clean -->|failed| P2_Status
|
|
106
|
+
|
|
107
|
+
%% Phase 3: Tasks
|
|
108
|
+
P2_Clean -->|success| P3_Template[Check user-templates first,<br/>then read template:<br/>tasks-template.md]
|
|
109
|
+
P3_Template --> P3_Break[Convert design to tasks]
|
|
110
|
+
P3_Break --> P3_Create[Create file:<br/>.spec-workflow/specs/{name}/<br/>tasks.md]
|
|
111
|
+
P3_Create --> P3_Approve[approvals<br/>action: request<br/>filePath only]
|
|
112
|
+
P3_Approve --> P3_Status[approvals<br/>action: status<br/>poll status]
|
|
113
|
+
P3_Status --> P3_Check{Status?}
|
|
114
|
+
P3_Check -->|needs-revision| P3_Update[Update document using user comments as guidance]
|
|
115
|
+
P3_Update --> P3_Create
|
|
116
|
+
P3_Check -->|approved| P3_Clean[approvals<br/>action: delete]
|
|
117
|
+
P3_Clean -->|failed| P3_Status
|
|
118
|
+
|
|
119
|
+
%% Phase 4: Implementation
|
|
120
|
+
P3_Clean -->|success| P4_Ready[Spec complete.<br/>Ready to implement?]
|
|
121
|
+
P4_Ready -->|Yes| P4_Status[spec-status]
|
|
122
|
+
P4_Status --> P4_Task[Edit tasks.md:<br/>Change [ ] to [-]<br/>for in-progress]
|
|
123
|
+
P4_Task --> P4_Code[Implement code]
|
|
124
|
+
P4_Code --> P4_Log[log-implementation<br/>Record implementation<br/>details]
|
|
125
|
+
P4_Log --> P4_Review[Ask user to trigger review<br/>from dashboard;<br/>then get-task-review]
|
|
126
|
+
P4_Review --> P4_Complete[Edit tasks.md:<br/>Change [-] to [x]<br/>for completed]
|
|
127
|
+
P4_Complete --> P4_More{More tasks?}
|
|
128
|
+
P4_More -->|Yes| P4_Task
|
|
129
|
+
P4_More -->|No| End([Implementation Complete])
|
|
130
|
+
|
|
131
|
+
style Start fill:#e1f5e1
|
|
132
|
+
style End fill:#e1f5e1
|
|
133
|
+
style P1_Check fill:#ffe6e6
|
|
134
|
+
style P2_Check fill:#ffe6e6
|
|
135
|
+
style P3_Check fill:#ffe6e6
|
|
136
|
+
style Decomp_Decision fill:#ffe6e6
|
|
137
|
+
style CheckSteering fill:#fff4e6
|
|
138
|
+
style Decomp_Check fill:#fff4e6
|
|
139
|
+
style P4_More fill:#fff4e6
|
|
140
|
+
style P4_Log fill:#e3f2fd
|
|
141
|
+
style P4_Review fill:#e3f2fd
|
|
142
|
+
\`\`\`
|
|
143
|
+
|
|
144
|
+
## Spec Workflow
|
|
145
|
+
|
|
146
|
+
### Decomposition
|
|
147
|
+
**Purpose**: Break steering documents into an ordered set of specs before starting any spec work.
|
|
148
|
+
|
|
149
|
+
**When**: Always, when steering docs exist in \`.spec-workflow/steering/\`.
|
|
150
|
+
|
|
151
|
+
**File Operations**:
|
|
152
|
+
- Read all steering docs: \`.spec-workflow/steering/product.md\`, \`tech.md\`, \`structure.md\`
|
|
153
|
+
- Create document: \`.spec-workflow/spec-decomposition/decomposition.md\`
|
|
154
|
+
|
|
155
|
+
**Tools**:
|
|
156
|
+
- decomposition-guide: Load the decomposition methodology (principles, process, output structure)
|
|
157
|
+
- approvals: Manage approval workflow (actions: request, status, delete)
|
|
158
|
+
|
|
159
|
+
**Process**:
|
|
160
|
+
1. Check if \`.spec-workflow/spec-decomposition/decomposition.md\` already exists (if yes, skip to Phase 1)
|
|
161
|
+
2. Call \`decomposition-guide\` to load the decomposition methodology
|
|
162
|
+
3. Read all steering docs in full: product.md, tech.md, structure.md
|
|
163
|
+
4. Apply the methodology: identify capabilities, group into specs, order by dependencies
|
|
164
|
+
5. Surface open questions to the user before finalizing
|
|
165
|
+
6. Create \`decomposition.md\` at \`.spec-workflow/spec-decomposition/decomposition.md\`
|
|
166
|
+
7. Request approval using approvals tool with action:'request' (pass filePath; do NOT inline document content)
|
|
167
|
+
8. Poll status using approvals with action:'status' until approved/needs-revision
|
|
168
|
+
9. If needs-revision: update document using comments, create NEW approval, do NOT proceed
|
|
169
|
+
10. Once approved: use approvals with action:'delete' (must succeed) before proceeding
|
|
170
|
+
11. If delete fails: STOP - return to polling
|
|
171
|
+
12. Proceed to Phase 1 for the first spec in the decomposition
|
|
172
|
+
|
|
173
|
+
**Optional**: Run \`adversarial-review\` against the decomposition document (specName: 'decomposition', phase: 'decomposition') if you want a fresh-context critique before requesting approval. Findings can drive revisions before approval is requested.
|
|
174
|
+
|
|
175
|
+
### Phase 1: Requirements
|
|
176
|
+
**Purpose**: Define what to build based on user needs.
|
|
177
|
+
|
|
178
|
+
**File Operations**:
|
|
179
|
+
- Read steering docs: \`.spec-workflow/steering/*.md\` (if they exist)
|
|
180
|
+
- Check for custom template: \`.spec-workflow/user-templates/requirements-template.md\`
|
|
181
|
+
- Read template: \`.spec-workflow/templates/requirements-template.md\` (if no custom template)
|
|
182
|
+
- Create document: \`.spec-workflow/specs/{spec-name}/requirements.md\`
|
|
183
|
+
|
|
184
|
+
**Tools**:
|
|
185
|
+
- approvals: Manage approval workflow (actions: request, status, delete)
|
|
186
|
+
|
|
187
|
+
**Process**:
|
|
188
|
+
1. Check if \`.spec-workflow/steering/\` exists (if yes, read product.md, tech.md, structure.md)
|
|
189
|
+
2. Check for custom template at \`.spec-workflow/user-templates/requirements-template.md\`
|
|
190
|
+
3. If no custom template, read from \`.spec-workflow/templates/requirements-template.md\`
|
|
191
|
+
4. Research market/user expectations (if web search available, current year: ${currentYear})
|
|
192
|
+
5. Generate requirements as user stories with EARS criteria
|
|
193
|
+
6. Create \`requirements.md\` at \`.spec-workflow/specs/{spec-name}/requirements.md\`
|
|
194
|
+
7. Request approval using approvals tool with action:'request' (pass filePath; do NOT inline document content. Required fields: filePath, type, category, name, title)
|
|
195
|
+
8. Poll status using approvals with action:'status' until approved/needs-revision (NEVER accept verbal approval)
|
|
196
|
+
9. If needs-revision: update document using comments, create NEW approval, do NOT proceed
|
|
197
|
+
10. Once approved: use approvals with action:'delete' (must succeed) before proceeding
|
|
198
|
+
11. If delete fails: STOP - return to polling
|
|
199
|
+
|
|
200
|
+
### Phase 2: Design
|
|
201
|
+
**Purpose**: Create technical design addressing all requirements.
|
|
202
|
+
|
|
203
|
+
**File Operations**:
|
|
204
|
+
- Check for custom template: \`.spec-workflow/user-templates/design-template.md\`
|
|
205
|
+
- Read template: \`.spec-workflow/templates/design-template.md\` (if no custom template)
|
|
206
|
+
- Create document: \`.spec-workflow/specs/{spec-name}/design.md\`
|
|
207
|
+
|
|
208
|
+
**Tools**:
|
|
209
|
+
- approvals: Manage approval workflow (actions: request, status, delete)
|
|
210
|
+
|
|
211
|
+
**Process**:
|
|
212
|
+
1. Check for custom template at \`.spec-workflow/user-templates/design-template.md\`
|
|
213
|
+
2. If no custom template, read from \`.spec-workflow/templates/design-template.md\`
|
|
214
|
+
3. Analyze codebase for patterns to reuse
|
|
215
|
+
4. Research technology choices (if web search available, current year: ${currentYear})
|
|
216
|
+
5. Generate design with all template sections
|
|
217
|
+
6. When deferring a design decision, record it with the \`deferrals\` tool (action: add) with originSpec and originPhase set
|
|
218
|
+
7. Create \`design.md\` at \`.spec-workflow/specs/{spec-name}/design.md\`
|
|
219
|
+
8. Request approval using approvals tool with action:'request' (pass filePath; do NOT inline document content)
|
|
220
|
+
9. Poll status using approvals with action:'status' until approved/needs-revision
|
|
221
|
+
10. If needs-revision: update document using comments, create NEW approval, do NOT proceed
|
|
222
|
+
11. Once approved: use approvals with action:'delete' (must succeed) before proceeding
|
|
223
|
+
12. If delete fails: STOP - return to polling
|
|
224
|
+
|
|
225
|
+
### Phase 3: Tasks
|
|
226
|
+
**Purpose**: Break design into atomic implementation tasks.
|
|
227
|
+
|
|
228
|
+
**File Operations**:
|
|
229
|
+
- Check for custom template: \`.spec-workflow/user-templates/tasks-template.md\`
|
|
230
|
+
- Read template: \`.spec-workflow/templates/tasks-template.md\` (if no custom template)
|
|
231
|
+
- Create document: \`.spec-workflow/specs/{spec-name}/tasks.md\`
|
|
232
|
+
|
|
233
|
+
**Tools**:
|
|
234
|
+
- approvals: Manage approval workflow (actions: request, status, delete)
|
|
235
|
+
|
|
236
|
+
**Process**:
|
|
237
|
+
1. Check for custom template at \`.spec-workflow/user-templates/tasks-template.md\`
|
|
238
|
+
2. If no custom template, read from \`.spec-workflow/templates/tasks-template.md\`
|
|
239
|
+
3. Convert design into atomic tasks (1-3 files each)
|
|
240
|
+
4. Include file paths and requirement references
|
|
241
|
+
5. **IMPORTANT**: Generate a _Prompt field for each task with:
|
|
242
|
+
- Role: specialized developer role for the task
|
|
243
|
+
- Task: clear description with context references
|
|
244
|
+
- Restrictions: what not to do, constraints to follow
|
|
245
|
+
- _Leverage: files/utilities to use
|
|
246
|
+
- _Requirements: requirements that the task implements
|
|
247
|
+
- Success: specific completion criteria
|
|
248
|
+
- 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.
|
|
249
|
+
- Start the prompt with "Implement the task for spec {spec-name}, first run spec-workflow-guide to get the workflow guide then implement the task:"
|
|
250
|
+
6. Create \`tasks.md\` at \`.spec-workflow/specs/{spec-name}/tasks.md\`
|
|
251
|
+
7. Request approval using approvals tool with action:'request' (pass filePath; do NOT inline document content)
|
|
252
|
+
8. Poll status using approvals with action:'status' until approved/needs-revision
|
|
253
|
+
9. If needs-revision: update document using comments, create NEW approval, do NOT proceed
|
|
254
|
+
10. Once approved: use approvals with action:'delete' (must succeed) before proceeding
|
|
255
|
+
11. If delete fails: STOP - return to polling
|
|
256
|
+
12. After successful cleanup: "Spec complete. Ready to implement?"
|
|
257
|
+
|
|
258
|
+
### Phase 4: Implementation
|
|
259
|
+
**Purpose**: Execute tasks systematically.
|
|
260
|
+
|
|
261
|
+
**File Operations**:
|
|
262
|
+
- Read specs: \`.spec-workflow/specs/{spec-name}/*.md\` (if returning to work)
|
|
263
|
+
- Edit tasks.md to update status:
|
|
264
|
+
- \`- [ ]\` = Pending task
|
|
265
|
+
- \`- [-]\` = In-progress task
|
|
266
|
+
- \`- [x]\` = Completed task
|
|
267
|
+
|
|
268
|
+
**Tools**:
|
|
269
|
+
- spec-status: Check overall progress
|
|
270
|
+
- Bash (grep/ripgrep): CRITICAL - Search existing code before implementing (step 3)
|
|
271
|
+
- Read: Examine implementation log files directly
|
|
272
|
+
- implement-task prompt: Guide for implementing tasks
|
|
273
|
+
- log-implementation: Record implementation details with artifacts after task completion (step 5)
|
|
274
|
+
- review-task: Invoked by the dashboard reviewer (a fresh-context agent) — you do NOT call this directly. Listed for awareness only.
|
|
275
|
+
- get-task-review: Retrieve findings after a dashboard-triggered review completes (step 6)
|
|
276
|
+
- Direct editing: Mark tasks as in-progress [-] or complete [x] in tasks.md
|
|
277
|
+
|
|
278
|
+
**Process**:
|
|
279
|
+
1. Check current status with spec-status. Check deferred decisions with \`deferrals\` tool (action: list) — if any are relevant to the current spec's work, note them and address them if the implementation naturally covers them. Resolve addressed deferrals with action: resolve.
|
|
280
|
+
2. Read \`tasks.md\` to see all tasks
|
|
281
|
+
3. For each task:
|
|
282
|
+
- Edit tasks.md: Change \`[ ]\` to \`[-]\` for the task you're starting
|
|
283
|
+
- **CRITICAL: BEFORE implementing, search existing implementation logs**:
|
|
284
|
+
- Implementation logs are in: \`.spec-workflow/specs/{spec-name}/Implementation Logs/\`
|
|
285
|
+
- **Option 1: Use grep for fast searches**:
|
|
286
|
+
- \`grep -r "api\|endpoint" .spec-workflow/specs/{spec-name}/Implementation Logs/\` - Find API endpoints
|
|
287
|
+
- \`grep -r "component" .spec-workflow/specs/{spec-name}/Implementation Logs/\` - Find UI components
|
|
288
|
+
- \`grep -r "function" .spec-workflow/specs/{spec-name}/Implementation Logs/\` - Find utility functions
|
|
289
|
+
- \`grep -r "integration" .spec-workflow/specs/{spec-name}/Implementation Logs/\` - Find integration patterns
|
|
290
|
+
- **Option 2: Read markdown files directly** - Use Read tool to examine specific log files
|
|
291
|
+
- Best practice: Search 2-3 different terms to discover comprehensively
|
|
292
|
+
- This prevents: duplicate endpoints, reimplemented components, broken integrations
|
|
293
|
+
- Reuse existing code that already solves part of the task
|
|
294
|
+
- **Read the _Prompt field** for guidance on role, approach, and success criteria
|
|
295
|
+
- Follow _Leverage fields to use existing code/utilities
|
|
296
|
+
- Implement the code according to the task description
|
|
297
|
+
- Test your implementation
|
|
298
|
+
- **MANDATORY: Log implementation BEFORE marking task complete** using log-implementation tool:
|
|
299
|
+
- ⚠️ Do NOT change [-] to [x] until log-implementation returns success
|
|
300
|
+
- A task without an implementation log is NOT complete — this is the most commonly skipped step
|
|
301
|
+
- Provide taskId and clear summary of what was implemented (1-2 sentences)
|
|
302
|
+
- Include files modified/created and code statistics (lines added/removed)
|
|
303
|
+
- **REQUIRED: Include artifacts field with structured implementation data**:
|
|
304
|
+
- apiEndpoints: All API routes created/modified (method, path, purpose, formats, location)
|
|
305
|
+
- components: All UI components created (name, type, purpose, location, props)
|
|
306
|
+
- functions: All utility functions created (name, signature, location)
|
|
307
|
+
- classes: All classes created (name, methods, location)
|
|
308
|
+
- integrations: Frontend-backend connections with data flow description
|
|
309
|
+
- Example: "Created API GET /api/todos/:id endpoint and TodoDetail React component with WebSocket real-time updates"
|
|
310
|
+
- This creates a searchable knowledge base for future AI agents to discover existing code
|
|
311
|
+
- Prevents implementation details from being lost in chat history
|
|
312
|
+
- **After log-implementation succeeds, request a code review**:
|
|
313
|
+
- ⚠️ Do NOT review your own implementation — self-review is biased and unreliable
|
|
314
|
+
- Ask the user to trigger a review from the dashboard Tasks page (Review button), which runs a fresh-context agent
|
|
315
|
+
- Once the dashboard review completes, call \`get-task-review\` with specName and taskId to retrieve the findings
|
|
316
|
+
- Discuss findings with the user and address any critical or warning items
|
|
317
|
+
- If verdict is "fail": address critical findings, then ask the user to trigger a re-review from the dashboard
|
|
318
|
+
- **Only after review passes or has non-critical findings**: Edit tasks.md: Change \`[-]\` to \`[x]\`
|
|
319
|
+
- **Retroactive reviews**: Reviews can also be run against tasks already marked \`[x]\`. This is useful for reviewing historical tasks, running reviews after adding new review criteria, or catching issues in code that was completed before the review feature existed. Marking a task complete does not lock it from future review.
|
|
320
|
+
4. Continue until all tasks show \`[x]\`
|
|
321
|
+
|
|
322
|
+
## Steering Document Loading
|
|
323
|
+
|
|
324
|
+
When steering docs exist in \`.spec-workflow/steering/\`, load them selectively by phase to conserve context:
|
|
325
|
+
|
|
326
|
+
| Phase | Load in full | Skim or skip |
|
|
327
|
+
|---|---|---|
|
|
328
|
+
| Decomposition | product.md, tech.md, structure.md | (none — load all) |
|
|
329
|
+
| Requirements | product.md, decomposition.md | tech.md (skim constraints only), structure.md (skip) |
|
|
330
|
+
| Design | tech.md, structure.md | product.md (skip — internalized via requirements), decomposition.md (skip) |
|
|
331
|
+
| Tasks | structure.md, the spec's design.md | tech.md (skip — internalized via design), product.md (skip), decomposition.md (skip) |
|
|
332
|
+
|
|
333
|
+
Each phase's output internalizes the previous phase's primary inputs. The decomposition encodes the full project scope, so requirements only needs the decomposition and product docs. The requirements encode the product vision, so the design agent doesn't need to re-read product.md. The design encodes the tech decisions, so the tasks agent doesn't need to re-read tech.md.
|
|
334
|
+
|
|
335
|
+
## Adversarial Review (Optional)
|
|
336
|
+
|
|
337
|
+
Two tools support adversarial analysis of spec documents:
|
|
338
|
+
|
|
339
|
+
- **adversarial-review**: Prepares methodology and file paths for running an adversarial review against a spec phase document. The agent writes a tailored adversarial prompt and launches a fresh-context subagent to execute it.
|
|
340
|
+
- **adversarial-response**: Finds the latest adversarial analysis and returns instructions for evaluating findings. Used when responding to a revision comment requesting adversarial review response.
|
|
341
|
+
|
|
342
|
+
These are not part of the core approval flow — they are invoked when requested by the user or as a revision comment on an approval.
|
|
343
|
+
|
|
344
|
+
## Workflow Rules
|
|
345
|
+
|
|
346
|
+
- Create documents directly at specified file paths
|
|
347
|
+
- Read templates from \`.spec-workflow/templates/\` directory
|
|
348
|
+
- Follow exact template structures
|
|
349
|
+
- Get explicit user approval between phases (using approvals tool with action:'request')
|
|
350
|
+
- Complete phases in sequence (no skipping)
|
|
351
|
+
- One spec at a time
|
|
352
|
+
- Use kebab-case for spec names
|
|
353
|
+
- Approval requests: pass \`filePath\` (and the other required fields: type, category, name, title); do NOT inline document content into the request
|
|
354
|
+
- BLOCKING: Never proceed if approval delete fails
|
|
355
|
+
- CRITICAL: Must have approved status AND successful cleanup before next phase
|
|
356
|
+
- CRITICAL: Every task marked [x] MUST have a corresponding implementation log — call log-implementation BEFORE changing [-] to [x]
|
|
357
|
+
- CRITICAL: Verbal approval is NEVER accepted - dashboard or VS Code extension only
|
|
358
|
+
- NEVER proceed on user saying "approved" - check system status only
|
|
359
|
+
- Steering docs are optional - only create when explicitly requested
|
|
360
|
+
- When steering docs exist, decomposition is required before starting the first spec — call \`decomposition-guide\` for methodology
|
|
361
|
+
- When explicitly deferring a decision in any phase, record it using the deferrals tool. Deferrals are project-level artifacts that persist across specs.
|
|
362
|
+
|
|
363
|
+
## File Structure
|
|
364
|
+
\`\`\`
|
|
365
|
+
.spec-workflow/
|
|
366
|
+
├── spec-decomposition/ # Decomposition output
|
|
367
|
+
│ └── decomposition.md
|
|
368
|
+
├── templates/ # Auto-populated on server start
|
|
369
|
+
│ ├── requirements-template.md
|
|
370
|
+
│ ├── design-template.md
|
|
371
|
+
│ ├── tasks-template.md
|
|
372
|
+
│ ├── product-template.md
|
|
373
|
+
│ ├── tech-template.md
|
|
374
|
+
│ └── structure-template.md
|
|
375
|
+
├── deferrals/ # Project-level deferred decisions
|
|
376
|
+
│ ├── d-abc123.md
|
|
377
|
+
│ └── d-def456.md
|
|
378
|
+
├── specs/
|
|
379
|
+
│ └── {spec-name}/
|
|
380
|
+
│ ├── requirements.md
|
|
381
|
+
│ ├── design.md
|
|
382
|
+
│ ├── tasks.md
|
|
383
|
+
│ ├── reviews/ # Adversarial review artifacts
|
|
384
|
+
│ │ ├── adversarial-prompt-{phase}.md
|
|
385
|
+
│ │ └── adversarial-analysis-{phase}.md
|
|
386
|
+
│ └── Implementation Logs/ # Created automatically
|
|
387
|
+
│ ├── task-1_timestamp_id.md
|
|
388
|
+
│ ├── task-2_timestamp_id.md
|
|
389
|
+
│ └── ...
|
|
390
|
+
└── steering/
|
|
391
|
+
├── product.md
|
|
392
|
+
├── tech.md
|
|
393
|
+
└── structure.md
|
|
394
|
+
\`\`\``;
|
|
395
|
+
}
|
|
396
|
+
//# 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;;;kYAGmX;IAChY,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,0EAA0E;YAC1E,iFAAiF;YACjF,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;;;;oaAI2Z,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EAiJhW,WAAW;;;;;;;;;;;;;;;;;;;;;;;;yEAwBjB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmL7E,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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
export const steeringGuideTool = {
|
|
2
|
+
name: 'steering-guide',
|
|
3
|
+
description: `Load guide for creating project steering documents.
|
|
4
|
+
|
|
5
|
+
# Instructions
|
|
6
|
+
Call ONLY when user explicitly requests steering document creation or asks about project architecture docs. Not part of standard spec workflow. Provides templates and guidance for product.md, tech.md, and structure.md creation. 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: 'Steering Guide',
|
|
14
|
+
readOnlyHint: true,
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
export async function steeringGuideHandler(args, context) {
|
|
18
|
+
return {
|
|
19
|
+
success: true,
|
|
20
|
+
message: 'Steering workflow guide loaded - follow this workflow exactly to avoid errors',
|
|
21
|
+
data: {
|
|
22
|
+
guide: getSteeringGuide(),
|
|
23
|
+
dashboardUrl: context.dashboardUrl
|
|
24
|
+
},
|
|
25
|
+
nextSteps: [
|
|
26
|
+
'Only proceed if user requested steering docs',
|
|
27
|
+
'Create product.md first',
|
|
28
|
+
'Then tech.md and structure.md',
|
|
29
|
+
'Reference in future specs',
|
|
30
|
+
context.dashboardUrl ? `Dashboard: ${context.dashboardUrl}` : 'Start the dashboard with: spec-workflow-mcp --dashboard'
|
|
31
|
+
]
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function getSteeringGuide() {
|
|
35
|
+
return `# Steering Workflow
|
|
36
|
+
|
|
37
|
+
## Overview
|
|
38
|
+
|
|
39
|
+
Create project-level guidance documents when explicitly requested. Steering docs establish vision, architecture, and conventions for established codebases. Its important that you follow this workflow exactly to avoid errors.
|
|
40
|
+
|
|
41
|
+
## Workflow Diagram
|
|
42
|
+
|
|
43
|
+
\`\`\`mermaid
|
|
44
|
+
flowchart TD
|
|
45
|
+
Start([Start: Setup steering docs]) --> Guide[steering-guide<br/>Load workflow instructions]
|
|
46
|
+
|
|
47
|
+
%% Phase 1: Product
|
|
48
|
+
Guide --> P1_Template[Check user-templates first,<br/>then read template:<br/>product-template.md]
|
|
49
|
+
P1_Template --> P1_Generate[Generate vision & goals]
|
|
50
|
+
P1_Generate --> P1_Create[Create file:<br/>.spec-workflow/steering/<br/>product.md]
|
|
51
|
+
P1_Create --> P1_Approve[approvals<br/>action: request<br/>filePath only]
|
|
52
|
+
P1_Approve --> P1_Status[approvals<br/>action: status<br/>poll status]
|
|
53
|
+
P1_Status --> P1_Check{Status?}
|
|
54
|
+
P1_Check -->|needs-revision| P1_Update[Update document using user comments for guidance]
|
|
55
|
+
P1_Update --> P1_Create
|
|
56
|
+
P1_Check -->|approved| P1_Clean[approvals<br/>action: delete]
|
|
57
|
+
P1_Clean -->|failed| P1_Status
|
|
58
|
+
|
|
59
|
+
%% Phase 2: Tech
|
|
60
|
+
P1_Clean -->|success| P2_Template[Check user-templates first,<br/>then read template:<br/>tech-template.md]
|
|
61
|
+
P2_Template --> P2_Analyze[Analyze tech stack]
|
|
62
|
+
P2_Analyze --> P2_Create[Create file:<br/>.spec-workflow/steering/<br/>tech.md]
|
|
63
|
+
P2_Create --> P2_Approve[approvals<br/>action: request<br/>filePath only]
|
|
64
|
+
P2_Approve --> P2_Status[approvals<br/>action: status<br/>poll status]
|
|
65
|
+
P2_Status --> P2_Check{Status?}
|
|
66
|
+
P2_Check -->|needs-revision| P2_Update[Update document using user comments for guidance]
|
|
67
|
+
P2_Update --> P2_Create
|
|
68
|
+
P2_Check -->|approved| P2_Clean[approvals<br/>action: delete]
|
|
69
|
+
P2_Clean -->|failed| P2_Status
|
|
70
|
+
|
|
71
|
+
%% Phase 3: Structure
|
|
72
|
+
P2_Clean -->|success| P3_Template[Check user-templates first,<br/>then read template:<br/>structure-template.md]
|
|
73
|
+
P3_Template --> P3_Analyze[Analyze codebase structure]
|
|
74
|
+
P3_Analyze --> P3_Create[Create file:<br/>.spec-workflow/steering/<br/>structure.md]
|
|
75
|
+
P3_Create --> P3_Approve[approvals<br/>action: request<br/>filePath only]
|
|
76
|
+
P3_Approve --> P3_Status[approvals<br/>action: status<br/>poll status]
|
|
77
|
+
P3_Status --> P3_Check{Status?}
|
|
78
|
+
P3_Check -->|needs-revision| P3_Update[Update document using user comments for guidance]
|
|
79
|
+
P3_Update --> P3_Create
|
|
80
|
+
P3_Check -->|approved| P3_Clean[approvals<br/>action: delete]
|
|
81
|
+
P3_Clean -->|failed| P3_Status
|
|
82
|
+
|
|
83
|
+
P3_Clean -->|success| Complete([Steering docs complete])
|
|
84
|
+
|
|
85
|
+
style Start fill:#e6f3ff
|
|
86
|
+
style Complete fill:#e6f3ff
|
|
87
|
+
style P1_Check fill:#ffe6e6
|
|
88
|
+
style P2_Check fill:#ffe6e6
|
|
89
|
+
style P3_Check fill:#ffe6e6
|
|
90
|
+
\`\`\`
|
|
91
|
+
|
|
92
|
+
## Steering Workflow Phases
|
|
93
|
+
|
|
94
|
+
### Phase 1: Product Document
|
|
95
|
+
**Purpose**: Define vision, goals, and user outcomes.
|
|
96
|
+
|
|
97
|
+
**File Operations**:
|
|
98
|
+
- Check for custom template: \`.spec-workflow/user-templates/product-template.md\`
|
|
99
|
+
- Read template: \`.spec-workflow/templates/product-template.md\` (if no custom template)
|
|
100
|
+
- Create document: \`.spec-workflow/steering/product.md\`
|
|
101
|
+
|
|
102
|
+
**Tools**:
|
|
103
|
+
- steering-guide: Load workflow instructions
|
|
104
|
+
- approvals: Manage approval workflow (actions: request, status, delete)
|
|
105
|
+
|
|
106
|
+
**Process**:
|
|
107
|
+
1. Load steering guide for workflow overview
|
|
108
|
+
2. Check for custom template at \`.spec-workflow/user-templates/product-template.md\`
|
|
109
|
+
3. If no custom template, read from \`.spec-workflow/templates/product-template.md\`
|
|
110
|
+
4. Generate product vision and goals
|
|
111
|
+
5. Create \`product.md\` at \`.spec-workflow/steering/product.md\`
|
|
112
|
+
6. Request approval using approvals tool with action:'request' (filePath only)
|
|
113
|
+
7. Poll status using approvals with action:'status' until approved/needs-revision (NEVER accept verbal approval)
|
|
114
|
+
8. If needs-revision: update document using comments, create NEW approval, do NOT proceed
|
|
115
|
+
9. Once approved: use approvals with action:'delete' (must succeed) before proceeding
|
|
116
|
+
10. If delete fails: STOP - return to polling
|
|
117
|
+
|
|
118
|
+
### Phase 2: Tech Document
|
|
119
|
+
**Purpose**: Document technology decisions and architecture.
|
|
120
|
+
|
|
121
|
+
**File Operations**:
|
|
122
|
+
- Check for custom template: \`.spec-workflow/user-templates/tech-template.md\`
|
|
123
|
+
- Read template: \`.spec-workflow/templates/tech-template.md\` (if no custom template)
|
|
124
|
+
- Create document: \`.spec-workflow/steering/tech.md\`
|
|
125
|
+
|
|
126
|
+
**Tools**:
|
|
127
|
+
- approvals: Manage approval workflow (actions: request, status, delete)
|
|
128
|
+
|
|
129
|
+
**Process**:
|
|
130
|
+
1. Check for custom template at \`.spec-workflow/user-templates/tech-template.md\`
|
|
131
|
+
2. If no custom template, read from \`.spec-workflow/templates/tech-template.md\`
|
|
132
|
+
3. Analyze existing technology stack
|
|
133
|
+
4. Document architectural decisions and patterns
|
|
134
|
+
5. Create \`tech.md\` at \`.spec-workflow/steering/tech.md\`
|
|
135
|
+
6. Request approval using approvals tool with action:'request'
|
|
136
|
+
7. Poll status using approvals with action:'status' until approved/needs-revision
|
|
137
|
+
8. If needs-revision: update document using comments, create NEW approval, do NOT proceed
|
|
138
|
+
9. Once approved: use approvals with action:'delete' (must succeed) before proceeding
|
|
139
|
+
10. If delete fails: STOP - return to polling
|
|
140
|
+
|
|
141
|
+
### Phase 3: Structure Document
|
|
142
|
+
**Purpose**: Map codebase organization and patterns.
|
|
143
|
+
|
|
144
|
+
**File Operations**:
|
|
145
|
+
- Check for custom template: \`.spec-workflow/user-templates/structure-template.md\`
|
|
146
|
+
- Read template: \`.spec-workflow/templates/structure-template.md\` (if no custom template)
|
|
147
|
+
- Create document: \`.spec-workflow/steering/structure.md\`
|
|
148
|
+
|
|
149
|
+
**Tools**:
|
|
150
|
+
- approvals: Manage approval workflow (actions: request, status, delete)
|
|
151
|
+
|
|
152
|
+
**Process**:
|
|
153
|
+
1. Check for custom template at \`.spec-workflow/user-templates/structure-template.md\`
|
|
154
|
+
2. If no custom template, read from \`.spec-workflow/templates/structure-template.md\`
|
|
155
|
+
3. Analyze directory structure and file organization
|
|
156
|
+
4. Document coding patterns and conventions
|
|
157
|
+
5. Create \`structure.md\` at \`.spec-workflow/steering/structure.md\`
|
|
158
|
+
6. Request approval using approvals tool with action:'request'
|
|
159
|
+
7. Poll status using approvals with action:'status' until approved/needs-revision
|
|
160
|
+
8. If needs-revision: update document using comments, create NEW approval, do NOT proceed
|
|
161
|
+
9. Once approved: use approvals with action:'delete' (must succeed) before proceeding
|
|
162
|
+
10. If delete fails: STOP - return to polling
|
|
163
|
+
11. After successful cleanup: "Steering docs complete. Ready for spec creation?" — when the user is ready, call \`spec-workflow-guide\` to load the spec workflow (which begins with Decomposition since steering docs now exist).
|
|
164
|
+
|
|
165
|
+
## Workflow Rules
|
|
166
|
+
|
|
167
|
+
- Create documents directly at specified file paths
|
|
168
|
+
- Check for custom templates in \`.spec-workflow/user-templates/\` first
|
|
169
|
+
- Read templates from \`.spec-workflow/templates/\` directory if no custom template exists
|
|
170
|
+
- Follow exact template structures
|
|
171
|
+
- Get explicit user approval between phases (using approvals tool with action:'request')
|
|
172
|
+
- Complete phases in sequence (no skipping)
|
|
173
|
+
- Approval requests: pass \`filePath\` (and the other required fields: type, category, name, title); do NOT inline document content into the request
|
|
174
|
+
- BLOCKING: Never proceed if approval delete fails
|
|
175
|
+
- CRITICAL: Must have approved status AND successful cleanup before next phase
|
|
176
|
+
- CRITICAL: Verbal approval is NEVER accepted - dashboard or VS Code extension only
|
|
177
|
+
- NEVER proceed on user saying "approved" - check system status only
|
|
178
|
+
|
|
179
|
+
## File Structure
|
|
180
|
+
\`\`\`
|
|
181
|
+
.spec-workflow/
|
|
182
|
+
├── templates/ # Auto-populated on server start
|
|
183
|
+
│ ├── product-template.md
|
|
184
|
+
│ ├── tech-template.md
|
|
185
|
+
│ └── structure-template.md
|
|
186
|
+
└── steering/
|
|
187
|
+
├── product.md
|
|
188
|
+
├── tech.md
|
|
189
|
+
└── structure.md
|
|
190
|
+
\`\`\``;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=steering-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steering-guide.js","sourceRoot":"","sources":["../../src/tools/steering-guide.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE;;;ySAG0R;IACvS,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,KAAK;KAC5B;IACD,WAAW,EAAE;QACX,KAAK,EAAE,gBAAgB;QACvB,YAAY,EAAE,IAAI;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAS,EAAE,OAAoB;IACxE,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,+EAA+E;QACxF,IAAI,EAAE;YACJ,KAAK,EAAE,gBAAgB,EAAE;YACzB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC;QACD,SAAS,EAAE;YACT,8CAA8C;YAC9C,yBAAyB;YACzB,+BAA+B;YAC/B,2BAA2B;YAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,yDAAyD;SACxH;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2JF,CAAC;AACR,CAAC"}
|