@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.
Files changed (537) hide show
  1. package/CHANGELOG.md +1013 -0
  2. package/LICENSE +674 -0
  3. package/README.md +458 -0
  4. package/dist/__tests__/config.test.d.ts +2 -0
  5. package/dist/__tests__/config.test.d.ts.map +1 -0
  6. package/dist/__tests__/config.test.js +264 -0
  7. package/dist/__tests__/config.test.js.map +1 -0
  8. package/dist/__tests__/index-args.test.d.ts +2 -0
  9. package/dist/__tests__/index-args.test.d.ts.map +1 -0
  10. package/dist/__tests__/index-args.test.js +43 -0
  11. package/dist/__tests__/index-args.test.js.map +1 -0
  12. package/dist/__tests__/index-entrypoint.test.d.ts +2 -0
  13. package/dist/__tests__/index-entrypoint.test.d.ts.map +1 -0
  14. package/dist/__tests__/index-entrypoint.test.js +23 -0
  15. package/dist/__tests__/index-entrypoint.test.js.map +1 -0
  16. package/dist/config.d.ts +26 -0
  17. package/dist/config.d.ts.map +1 -0
  18. package/dist/config.js +188 -0
  19. package/dist/config.js.map +1 -0
  20. package/dist/core/__tests__/adversarial-settings.test.d.ts +2 -0
  21. package/dist/core/__tests__/adversarial-settings.test.d.ts.map +1 -0
  22. package/dist/core/__tests__/adversarial-settings.test.js +361 -0
  23. package/dist/core/__tests__/adversarial-settings.test.js.map +1 -0
  24. package/dist/core/__tests__/deferral-storage.test.d.ts +2 -0
  25. package/dist/core/__tests__/deferral-storage.test.d.ts.map +1 -0
  26. package/dist/core/__tests__/deferral-storage.test.js +181 -0
  27. package/dist/core/__tests__/deferral-storage.test.js.map +1 -0
  28. package/dist/core/__tests__/git-utils.test.d.ts +2 -0
  29. package/dist/core/__tests__/git-utils.test.d.ts.map +1 -0
  30. package/dist/core/__tests__/git-utils.test.js +179 -0
  31. package/dist/core/__tests__/git-utils.test.js.map +1 -0
  32. package/dist/core/__tests__/hygiene-signals.test.d.ts +2 -0
  33. package/dist/core/__tests__/hygiene-signals.test.d.ts.map +1 -0
  34. package/dist/core/__tests__/hygiene-signals.test.js +200 -0
  35. package/dist/core/__tests__/hygiene-signals.test.js.map +1 -0
  36. package/dist/core/__tests__/mdx-validator.test.d.ts +2 -0
  37. package/dist/core/__tests__/mdx-validator.test.d.ts.map +1 -0
  38. package/dist/core/__tests__/mdx-validator.test.js +42 -0
  39. package/dist/core/__tests__/mdx-validator.test.js.map +1 -0
  40. package/dist/core/__tests__/path-denylist.test.d.ts +2 -0
  41. package/dist/core/__tests__/path-denylist.test.d.ts.map +1 -0
  42. package/dist/core/__tests__/path-denylist.test.js +242 -0
  43. package/dist/core/__tests__/path-denylist.test.js.map +1 -0
  44. package/dist/core/__tests__/path-utils.test.d.ts +2 -0
  45. package/dist/core/__tests__/path-utils.test.d.ts.map +1 -0
  46. package/dist/core/__tests__/path-utils.test.js +342 -0
  47. package/dist/core/__tests__/path-utils.test.js.map +1 -0
  48. package/dist/core/__tests__/project-registry.test.d.ts +2 -0
  49. package/dist/core/__tests__/project-registry.test.d.ts.map +1 -0
  50. package/dist/core/__tests__/project-registry.test.js +62 -0
  51. package/dist/core/__tests__/project-registry.test.js.map +1 -0
  52. package/dist/core/__tests__/security-utils.test.d.ts +2 -0
  53. package/dist/core/__tests__/security-utils.test.d.ts.map +1 -0
  54. package/dist/core/__tests__/security-utils.test.js +643 -0
  55. package/dist/core/__tests__/security-utils.test.js.map +1 -0
  56. package/dist/core/__tests__/task-diff.test.d.ts +2 -0
  57. package/dist/core/__tests__/task-diff.test.d.ts.map +1 -0
  58. package/dist/core/__tests__/task-diff.test.js +287 -0
  59. package/dist/core/__tests__/task-diff.test.js.map +1 -0
  60. package/dist/core/__tests__/task-review-manager.test.d.ts +2 -0
  61. package/dist/core/__tests__/task-review-manager.test.d.ts.map +1 -0
  62. package/dist/core/__tests__/task-review-manager.test.js +235 -0
  63. package/dist/core/__tests__/task-review-manager.test.js.map +1 -0
  64. package/dist/core/__tests__/task-validator.test.d.ts +2 -0
  65. package/dist/core/__tests__/task-validator.test.d.ts.map +1 -0
  66. package/dist/core/__tests__/task-validator.test.js +237 -0
  67. package/dist/core/__tests__/task-validator.test.js.map +1 -0
  68. package/dist/core/__tests__/typecheck.test.d.ts +2 -0
  69. package/dist/core/__tests__/typecheck.test.d.ts.map +1 -0
  70. package/dist/core/__tests__/typecheck.test.js +558 -0
  71. package/dist/core/__tests__/typecheck.test.js.map +1 -0
  72. package/dist/core/adversarial-settings.d.ts +23 -0
  73. package/dist/core/adversarial-settings.d.ts.map +1 -0
  74. package/dist/core/adversarial-settings.js +148 -0
  75. package/dist/core/adversarial-settings.js.map +1 -0
  76. package/dist/core/archive-service.d.ts +10 -0
  77. package/dist/core/archive-service.d.ts.map +1 -0
  78. package/dist/core/archive-service.js +99 -0
  79. package/dist/core/archive-service.js.map +1 -0
  80. package/dist/core/dashboard-session.d.ts +49 -0
  81. package/dist/core/dashboard-session.d.ts.map +1 -0
  82. package/dist/core/dashboard-session.js +132 -0
  83. package/dist/core/dashboard-session.js.map +1 -0
  84. package/dist/core/deferral-storage.d.ts +32 -0
  85. package/dist/core/deferral-storage.d.ts.map +1 -0
  86. package/dist/core/deferral-storage.js +232 -0
  87. package/dist/core/deferral-storage.js.map +1 -0
  88. package/dist/core/git-utils.d.ts +25 -0
  89. package/dist/core/git-utils.d.ts.map +1 -0
  90. package/dist/core/git-utils.js +87 -0
  91. package/dist/core/git-utils.js.map +1 -0
  92. package/dist/core/global-dir.d.ts +44 -0
  93. package/dist/core/global-dir.d.ts.map +1 -0
  94. package/dist/core/global-dir.js +74 -0
  95. package/dist/core/global-dir.js.map +1 -0
  96. package/dist/core/hygiene-signals.d.ts +8 -0
  97. package/dist/core/hygiene-signals.d.ts.map +1 -0
  98. package/dist/core/hygiene-signals.js +41 -0
  99. package/dist/core/hygiene-signals.js.map +1 -0
  100. package/dist/core/implementation-log-migrator.d.ts +41 -0
  101. package/dist/core/implementation-log-migrator.d.ts.map +1 -0
  102. package/dist/core/implementation-log-migrator.js +258 -0
  103. package/dist/core/implementation-log-migrator.js.map +1 -0
  104. package/dist/core/mdx-validator.d.ts +14 -0
  105. package/dist/core/mdx-validator.d.ts.map +1 -0
  106. package/dist/core/mdx-validator.js +34 -0
  107. package/dist/core/mdx-validator.js.map +1 -0
  108. package/dist/core/parser.d.ts +11 -0
  109. package/dist/core/parser.d.ts.map +1 -0
  110. package/dist/core/parser.js +126 -0
  111. package/dist/core/parser.js.map +1 -0
  112. package/dist/core/path-denylist.d.ts +8 -0
  113. package/dist/core/path-denylist.d.ts.map +1 -0
  114. package/dist/core/path-denylist.js +107 -0
  115. package/dist/core/path-denylist.js.map +1 -0
  116. package/dist/core/path-utils.d.ts +69 -0
  117. package/dist/core/path-utils.d.ts.map +1 -0
  118. package/dist/core/path-utils.js +306 -0
  119. package/dist/core/path-utils.js.map +1 -0
  120. package/dist/core/project-registry.d.ts +94 -0
  121. package/dist/core/project-registry.d.ts.map +1 -0
  122. package/dist/core/project-registry.js +297 -0
  123. package/dist/core/project-registry.js.map +1 -0
  124. package/dist/core/security-utils.d.ts +97 -0
  125. package/dist/core/security-utils.d.ts.map +1 -0
  126. package/dist/core/security-utils.js +264 -0
  127. package/dist/core/security-utils.js.map +1 -0
  128. package/dist/core/task-diff.d.ts +15 -0
  129. package/dist/core/task-diff.d.ts.map +1 -0
  130. package/dist/core/task-diff.js +136 -0
  131. package/dist/core/task-diff.js.map +1 -0
  132. package/dist/core/task-parser.d.ts +63 -0
  133. package/dist/core/task-parser.d.ts.map +1 -0
  134. package/dist/core/task-parser.js +332 -0
  135. package/dist/core/task-parser.js.map +1 -0
  136. package/dist/core/task-review-manager.d.ts +56 -0
  137. package/dist/core/task-review-manager.d.ts.map +1 -0
  138. package/dist/core/task-review-manager.js +281 -0
  139. package/dist/core/task-review-manager.js.map +1 -0
  140. package/dist/core/task-validator.d.ts +35 -0
  141. package/dist/core/task-validator.d.ts.map +1 -0
  142. package/dist/core/task-validator.js +236 -0
  143. package/dist/core/task-validator.js.map +1 -0
  144. package/dist/core/typecheck.d.ts +33 -0
  145. package/dist/core/typecheck.d.ts.map +1 -0
  146. package/dist/core/typecheck.js +375 -0
  147. package/dist/core/typecheck.js.map +1 -0
  148. package/dist/core/workspace-initializer.d.ts +16 -0
  149. package/dist/core/workspace-initializer.d.ts.map +1 -0
  150. package/dist/core/workspace-initializer.js +167 -0
  151. package/dist/core/workspace-initializer.js.map +1 -0
  152. package/dist/dashboard/__tests__/adversarial-display-state.test.d.ts +2 -0
  153. package/dist/dashboard/__tests__/adversarial-display-state.test.d.ts.map +1 -0
  154. package/dist/dashboard/__tests__/adversarial-display-state.test.js +59 -0
  155. package/dist/dashboard/__tests__/adversarial-display-state.test.js.map +1 -0
  156. package/dist/dashboard/__tests__/adversarial-endpoints.test.d.ts +2 -0
  157. package/dist/dashboard/__tests__/adversarial-endpoints.test.d.ts.map +1 -0
  158. package/dist/dashboard/__tests__/adversarial-endpoints.test.js +296 -0
  159. package/dist/dashboard/__tests__/adversarial-endpoints.test.js.map +1 -0
  160. package/dist/dashboard/__tests__/adversarial-runner.test.d.ts +2 -0
  161. package/dist/dashboard/__tests__/adversarial-runner.test.d.ts.map +1 -0
  162. package/dist/dashboard/__tests__/adversarial-runner.test.js +315 -0
  163. package/dist/dashboard/__tests__/adversarial-runner.test.js.map +1 -0
  164. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts +2 -0
  165. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts.map +1 -0
  166. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js +78 -0
  167. package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js.map +1 -0
  168. package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts +2 -0
  169. package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts.map +1 -0
  170. package/dist/dashboard/__tests__/multi-server-approvals-content.test.js +115 -0
  171. package/dist/dashboard/__tests__/multi-server-approvals-content.test.js.map +1 -0
  172. package/dist/dashboard/__tests__/multi-server.test.d.ts +2 -0
  173. package/dist/dashboard/__tests__/multi-server.test.d.ts.map +1 -0
  174. package/dist/dashboard/__tests__/multi-server.test.js +388 -0
  175. package/dist/dashboard/__tests__/multi-server.test.js.map +1 -0
  176. package/dist/dashboard/__tests__/task-review-runner.test.d.ts +2 -0
  177. package/dist/dashboard/__tests__/task-review-runner.test.d.ts.map +1 -0
  178. package/dist/dashboard/__tests__/task-review-runner.test.js +255 -0
  179. package/dist/dashboard/__tests__/task-review-runner.test.js.map +1 -0
  180. package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts +2 -0
  181. package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts.map +1 -0
  182. package/dist/dashboard/__tests__/watcher-error-handling.test.js +118 -0
  183. package/dist/dashboard/__tests__/watcher-error-handling.test.js.map +1 -0
  184. package/dist/dashboard/adversarial-display-state.d.ts +38 -0
  185. package/dist/dashboard/adversarial-display-state.d.ts.map +1 -0
  186. package/dist/dashboard/adversarial-display-state.js +45 -0
  187. package/dist/dashboard/adversarial-display-state.js.map +1 -0
  188. package/dist/dashboard/adversarial-runner.d.ts +44 -0
  189. package/dist/dashboard/adversarial-runner.d.ts.map +1 -0
  190. package/dist/dashboard/adversarial-runner.js +168 -0
  191. package/dist/dashboard/adversarial-runner.js.map +1 -0
  192. package/dist/dashboard/approval-storage.d.ts +139 -0
  193. package/dist/dashboard/approval-storage.d.ts.map +1 -0
  194. package/dist/dashboard/approval-storage.js +608 -0
  195. package/dist/dashboard/approval-storage.js.map +1 -0
  196. package/dist/dashboard/execution-history-manager.d.ts +52 -0
  197. package/dist/dashboard/execution-history-manager.d.ts.map +1 -0
  198. package/dist/dashboard/execution-history-manager.js +161 -0
  199. package/dist/dashboard/execution-history-manager.js.map +1 -0
  200. package/dist/dashboard/implementation-log-manager.d.ts +102 -0
  201. package/dist/dashboard/implementation-log-manager.d.ts.map +1 -0
  202. package/dist/dashboard/implementation-log-manager.js +594 -0
  203. package/dist/dashboard/implementation-log-manager.js.map +1 -0
  204. package/dist/dashboard/job-scheduler.d.ts +91 -0
  205. package/dist/dashboard/job-scheduler.d.ts.map +1 -0
  206. package/dist/dashboard/job-scheduler.js +321 -0
  207. package/dist/dashboard/job-scheduler.js.map +1 -0
  208. package/dist/dashboard/multi-server.d.ts +45 -0
  209. package/dist/dashboard/multi-server.d.ts.map +1 -0
  210. package/dist/dashboard/multi-server.js +1927 -0
  211. package/dist/dashboard/multi-server.js.map +1 -0
  212. package/dist/dashboard/parser.d.ts +18 -0
  213. package/dist/dashboard/parser.d.ts.map +1 -0
  214. package/dist/dashboard/parser.js +243 -0
  215. package/dist/dashboard/parser.js.map +1 -0
  216. package/dist/dashboard/project-manager.d.ts +82 -0
  217. package/dist/dashboard/project-manager.d.ts.map +1 -0
  218. package/dist/dashboard/project-manager.js +257 -0
  219. package/dist/dashboard/project-manager.js.map +1 -0
  220. package/dist/dashboard/public/assets/Inter-Bold-CD3Pr7BX.woff2 +0 -0
  221. package/dist/dashboard/public/assets/Inter-Medium-B_8v_WHh.woff2 +0 -0
  222. package/dist/dashboard/public/assets/Inter-Regular-DRVdRqcI.woff2 +0 -0
  223. package/dist/dashboard/public/assets/Inter-SemiBold-CtskMddL.woff2 +0 -0
  224. package/dist/dashboard/public/assets/JetBrainsMono-Bold-D4WEaHbo.woff2 +0 -0
  225. package/dist/dashboard/public/assets/JetBrainsMono-Medium-3S3k2nMz.woff2 +0 -0
  226. package/dist/dashboard/public/assets/JetBrainsMono-Regular-BQaDgvhP.woff2 +0 -0
  227. package/dist/dashboard/public/assets/Tableau10-B-NsZVaP.js +1 -0
  228. package/dist/dashboard/public/assets/apl-B4CMkyY2.js +1 -0
  229. package/dist/dashboard/public/assets/arc-A04OOED4.js +1 -0
  230. package/dist/dashboard/public/assets/array-BKyUJesY.js +1 -0
  231. package/dist/dashboard/public/assets/asciiarmor-Df11BRmG.js +1 -0
  232. package/dist/dashboard/public/assets/asn1-EdZsLKOL.js +1 -0
  233. package/dist/dashboard/public/assets/asterisk-B-8jnY81.js +1 -0
  234. package/dist/dashboard/public/assets/blockDiagram-c4efeb88--RobHnfG.js +118 -0
  235. package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
  236. package/dist/dashboard/public/assets/c4Diagram-c83219d4-tY8lPXxy.js +10 -0
  237. package/dist/dashboard/public/assets/channel-Cg2ZlORc.js +1 -0
  238. package/dist/dashboard/public/assets/classDiagram-beda092f-DBiupBFm.js +2 -0
  239. package/dist/dashboard/public/assets/classDiagram-v2-2358418a-FM2jRAtm.js +2 -0
  240. package/dist/dashboard/public/assets/clike-B9uivgTg.js +1 -0
  241. package/dist/dashboard/public/assets/clojure-BMjYHr_A.js +1 -0
  242. package/dist/dashboard/public/assets/clone-CCO9qihz.js +1 -0
  243. package/dist/dashboard/public/assets/cmake-BQqOBYOt.js +1 -0
  244. package/dist/dashboard/public/assets/cobol-CWcv1MsR.js +1 -0
  245. package/dist/dashboard/public/assets/coffeescript-S37ZYGWr.js +1 -0
  246. package/dist/dashboard/public/assets/commonlisp-DBKNyK5s.js +1 -0
  247. package/dist/dashboard/public/assets/createText-1719965b-C_nyx2v1.js +7 -0
  248. package/dist/dashboard/public/assets/crystal-SjHAIU92.js +1 -0
  249. package/dist/dashboard/public/assets/css-BnMrqG3P.js +1 -0
  250. package/dist/dashboard/public/assets/cypher-C_CwsFkJ.js +1 -0
  251. package/dist/dashboard/public/assets/d-pRatUO7H.js +1 -0
  252. package/dist/dashboard/public/assets/diff-DbItnlRl.js +1 -0
  253. package/dist/dashboard/public/assets/dockerfile-BKs6k2Af.js +1 -0
  254. package/dist/dashboard/public/assets/dtd-DF_7sFjM.js +1 -0
  255. package/dist/dashboard/public/assets/dylan-DwRh75JA.js +1 -0
  256. package/dist/dashboard/public/assets/ebnf-CDyGwa7X.js +1 -0
  257. package/dist/dashboard/public/assets/ecl-Cabwm37j.js +1 -0
  258. package/dist/dashboard/public/assets/edges-96097737-BsffumDq.js +4 -0
  259. package/dist/dashboard/public/assets/eiffel-CnydiIhH.js +1 -0
  260. package/dist/dashboard/public/assets/elm-vLlmbW-K.js +1 -0
  261. package/dist/dashboard/public/assets/erDiagram-0228fc6a-BK-uOJy1.js +51 -0
  262. package/dist/dashboard/public/assets/erlang-BNw1qcRV.js +1 -0
  263. package/dist/dashboard/public/assets/factor-kuTfRLto.js +1 -0
  264. package/dist/dashboard/public/assets/fcl-Kvtd6kyn.js +1 -0
  265. package/dist/dashboard/public/assets/flowDb-c6c81e3f-BC8_H7l7.js +10 -0
  266. package/dist/dashboard/public/assets/flowDiagram-50d868cf-0XbjRISj.js +4 -0
  267. package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-CXE3CwgW.js +1 -0
  268. package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-CCvs3UPr.js +139 -0
  269. package/dist/dashboard/public/assets/forth-Ffai-XNe.js +1 -0
  270. package/dist/dashboard/public/assets/fortran-DYz_wnZ1.js +1 -0
  271. package/dist/dashboard/public/assets/ganttDiagram-a2739b55-Yp2gfoGL.js +257 -0
  272. package/dist/dashboard/public/assets/gas-Bneqetm1.js +1 -0
  273. package/dist/dashboard/public/assets/gherkin-heZmZLOM.js +1 -0
  274. package/dist/dashboard/public/assets/gitGraphDiagram-82fe8481-njx_NoNr.js +70 -0
  275. package/dist/dashboard/public/assets/graph-COR8Ljm7.js +1 -0
  276. package/dist/dashboard/public/assets/groovy-D9Dt4D0W.js +1 -0
  277. package/dist/dashboard/public/assets/haskell-Cw1EW3IL.js +1 -0
  278. package/dist/dashboard/public/assets/haxe-H-WmDvRZ.js +1 -0
  279. package/dist/dashboard/public/assets/http-DBlCnlav.js +1 -0
  280. package/dist/dashboard/public/assets/idl-BEugSyMb.js +1 -0
  281. package/dist/dashboard/public/assets/index-0abMV41b.js +1 -0
  282. package/dist/dashboard/public/assets/index-5325376f-cWsAocic.js +1 -0
  283. package/dist/dashboard/public/assets/index-BH121EUE.js +1 -0
  284. package/dist/dashboard/public/assets/index-BMLdkmFP.js +1 -0
  285. package/dist/dashboard/public/assets/index-BYgbrt4G.js +1 -0
  286. package/dist/dashboard/public/assets/index-BwFDzEd4.js +3 -0
  287. package/dist/dashboard/public/assets/index-CS7gsYFH.js +1 -0
  288. package/dist/dashboard/public/assets/index-Cc6cUpKS.js +1 -0
  289. package/dist/dashboard/public/assets/index-CgeymaoH.js +1 -0
  290. package/dist/dashboard/public/assets/index-Cl5FjFWx.js +1 -0
  291. package/dist/dashboard/public/assets/index-CnN2VPRa.js +1 -0
  292. package/dist/dashboard/public/assets/index-DDWkdUEb.js +1 -0
  293. package/dist/dashboard/public/assets/index-DLUjIeO9.js +1 -0
  294. package/dist/dashboard/public/assets/index-Dm3-5ZYh.js +319 -0
  295. package/dist/dashboard/public/assets/index-Ds4s2dDD.js +2 -0
  296. package/dist/dashboard/public/assets/index-DvrmwdIJ.js +1 -0
  297. package/dist/dashboard/public/assets/index-MTVs_iIW.js +7 -0
  298. package/dist/dashboard/public/assets/index-UGm8eYTB.js +1 -0
  299. package/dist/dashboard/public/assets/index-Zi39sM21.css +1 -0
  300. package/dist/dashboard/public/assets/index-iL66igAo.js +1 -0
  301. package/dist/dashboard/public/assets/infoDiagram-8eee0895-TQXQOcbQ.js +7 -0
  302. package/dist/dashboard/public/assets/init-Gi6I4Gst.js +1 -0
  303. package/dist/dashboard/public/assets/javascript-iXu5QeM3.js +1 -0
  304. package/dist/dashboard/public/assets/journeyDiagram-c64418c1-C7AIhJZ8.js +139 -0
  305. package/dist/dashboard/public/assets/julia-DuME0IfC.js +1 -0
  306. package/dist/dashboard/public/assets/katex-XbL3y5x-.js +261 -0
  307. package/dist/dashboard/public/assets/layout-BzInGx9g.js +1 -0
  308. package/dist/dashboard/public/assets/line-BvqpNAKs.js +1 -0
  309. package/dist/dashboard/public/assets/linear-CMco2PTv.js +1 -0
  310. package/dist/dashboard/public/assets/livescript-BwQOo05w.js +1 -0
  311. package/dist/dashboard/public/assets/lua-BgMRiT3U.js +1 -0
  312. package/dist/dashboard/public/assets/mathematica-DTrFuWx2.js +1 -0
  313. package/dist/dashboard/public/assets/mbox-CNhZ1qSd.js +1 -0
  314. package/dist/dashboard/public/assets/mindmap-definition-8da855dc-CeJT8t3A.js +415 -0
  315. package/dist/dashboard/public/assets/mirc-CjQqDB4T.js +1 -0
  316. package/dist/dashboard/public/assets/mllike-CXdrOF99.js +1 -0
  317. package/dist/dashboard/public/assets/modelica-Dc1JOy9r.js +1 -0
  318. package/dist/dashboard/public/assets/mscgen-BA5vi2Kp.js +1 -0
  319. package/dist/dashboard/public/assets/mumps-BT43cFF4.js +1 -0
  320. package/dist/dashboard/public/assets/nginx-DdIZxoE0.js +1 -0
  321. package/dist/dashboard/public/assets/nsis-LdVXkNf5.js +1 -0
  322. package/dist/dashboard/public/assets/ntriples-BfvgReVJ.js +1 -0
  323. package/dist/dashboard/public/assets/octave-Ck1zUtKM.js +1 -0
  324. package/dist/dashboard/public/assets/ordinal-Cboi1Yqb.js +1 -0
  325. package/dist/dashboard/public/assets/oz-BzwKVEFT.js +1 -0
  326. package/dist/dashboard/public/assets/pascal--L3eBynH.js +1 -0
  327. package/dist/dashboard/public/assets/path-CbwjOpE9.js +1 -0
  328. package/dist/dashboard/public/assets/perl-CdXCOZ3F.js +1 -0
  329. package/dist/dashboard/public/assets/pieDiagram-a8764435-DYvb2wsa.js +35 -0
  330. package/dist/dashboard/public/assets/pig-CevX1Tat.js +1 -0
  331. package/dist/dashboard/public/assets/powershell-CFHJl5sT.js +1 -0
  332. package/dist/dashboard/public/assets/properties-C78fOPTZ.js +1 -0
  333. package/dist/dashboard/public/assets/protobuf-ChK-085T.js +1 -0
  334. package/dist/dashboard/public/assets/pug-DeIclll2.js +1 -0
  335. package/dist/dashboard/public/assets/puppet-DMA9R1ak.js +1 -0
  336. package/dist/dashboard/public/assets/python-BuPzkPfP.js +1 -0
  337. package/dist/dashboard/public/assets/q-pXgVlZs6.js +1 -0
  338. package/dist/dashboard/public/assets/quadrantDiagram-1e28029f-DpKQgDsX.js +7 -0
  339. package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
  340. package/dist/dashboard/public/assets/requirementDiagram-08caed73-C_q-bfsF.js +52 -0
  341. package/dist/dashboard/public/assets/rpm-CTu-6PCP.js +1 -0
  342. package/dist/dashboard/public/assets/ruby-B2Rjki9n.js +1 -0
  343. package/dist/dashboard/public/assets/sankeyDiagram-a04cb91d-0kwrmzfI.js +8 -0
  344. package/dist/dashboard/public/assets/sas-B4kiWyti.js +1 -0
  345. package/dist/dashboard/public/assets/scheme-C41bIUwD.js +1 -0
  346. package/dist/dashboard/public/assets/sequenceDiagram-c5b8d532-i5S3JNF0.js +122 -0
  347. package/dist/dashboard/public/assets/shell-CjFT_Tl9.js +1 -0
  348. package/dist/dashboard/public/assets/sieve-C3Gn_uJK.js +1 -0
  349. package/dist/dashboard/public/assets/simple-mode-GW_nhZxv.js +1 -0
  350. package/dist/dashboard/public/assets/smalltalk-CnHTOXQT.js +1 -0
  351. package/dist/dashboard/public/assets/solr-DehyRSwq.js +1 -0
  352. package/dist/dashboard/public/assets/sparql-DkYu6x3z.js +1 -0
  353. package/dist/dashboard/public/assets/spreadsheet-BCZA_wO0.js +1 -0
  354. package/dist/dashboard/public/assets/sql-D0XecflT.js +1 -0
  355. package/dist/dashboard/public/assets/stateDiagram-1ecb1508-COE2ffbQ.js +1 -0
  356. package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-DMAS8qJy.js +1 -0
  357. package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
  358. package/dist/dashboard/public/assets/styles-b4e223ce-M0Oa_txo.js +160 -0
  359. package/dist/dashboard/public/assets/styles-ca3715f6-DddhRVVB.js +207 -0
  360. package/dist/dashboard/public/assets/styles-d45a18b0-ByKhWZca.js +116 -0
  361. package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
  362. package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-DIF6Vn69.js +1 -0
  363. package/dist/dashboard/public/assets/swift-BzpIVaGY.js +1 -0
  364. package/dist/dashboard/public/assets/tcl-DVfN8rqt.js +1 -0
  365. package/dist/dashboard/public/assets/textile-CnDTJFAw.js +1 -0
  366. package/dist/dashboard/public/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  367. package/dist/dashboard/public/assets/tiki-DGYXhP31.js +1 -0
  368. package/dist/dashboard/public/assets/timeline-definition-faaaa080-DC1Bdpu_.js +61 -0
  369. package/dist/dashboard/public/assets/toml-Bm5Em-hy.js +1 -0
  370. package/dist/dashboard/public/assets/troff-wAsdV37c.js +1 -0
  371. package/dist/dashboard/public/assets/ttcn-CfJYG6tj.js +1 -0
  372. package/dist/dashboard/public/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  373. package/dist/dashboard/public/assets/turtle-B1tBg_DP.js +1 -0
  374. package/dist/dashboard/public/assets/vb-CmGdzxic.js +1 -0
  375. package/dist/dashboard/public/assets/vbscript-BuJXcnF6.js +1 -0
  376. package/dist/dashboard/public/assets/velocity-D8B20fx6.js +1 -0
  377. package/dist/dashboard/public/assets/verilog-C6RDOZhf.js +1 -0
  378. package/dist/dashboard/public/assets/vhdl-lSbBsy5d.js +1 -0
  379. package/dist/dashboard/public/assets/webidl-ZXfAyPTL.js +1 -0
  380. package/dist/dashboard/public/assets/xquery-DzFWVndE.js +1 -0
  381. package/dist/dashboard/public/assets/xychartDiagram-f5964ef8-BIMyvG9y.js +7 -0
  382. package/dist/dashboard/public/assets/yacas-BJ4BC0dw.js +1 -0
  383. package/dist/dashboard/public/assets/z80-Hz9HOZM7.js +1 -0
  384. package/dist/dashboard/public/claude-icon-dark.svg +1 -0
  385. package/dist/dashboard/public/claude-icon.svg +1 -0
  386. package/dist/dashboard/public/index.html +16 -0
  387. package/dist/dashboard/settings-manager.d.ts +47 -0
  388. package/dist/dashboard/settings-manager.d.ts.map +1 -0
  389. package/dist/dashboard/settings-manager.js +180 -0
  390. package/dist/dashboard/settings-manager.js.map +1 -0
  391. package/dist/dashboard/task-review-runner.d.ts +42 -0
  392. package/dist/dashboard/task-review-runner.d.ts.map +1 -0
  393. package/dist/dashboard/task-review-runner.js +375 -0
  394. package/dist/dashboard/task-review-runner.js.map +1 -0
  395. package/dist/dashboard/utils.d.ts +31 -0
  396. package/dist/dashboard/utils.d.ts.map +1 -0
  397. package/dist/dashboard/utils.js +102 -0
  398. package/dist/dashboard/utils.js.map +1 -0
  399. package/dist/dashboard/watcher.d.ts +32 -0
  400. package/dist/dashboard/watcher.d.ts.map +1 -0
  401. package/dist/dashboard/watcher.js +173 -0
  402. package/dist/dashboard/watcher.js.map +1 -0
  403. package/dist/index.d.ts +13 -0
  404. package/dist/index.d.ts.map +1 -0
  405. package/dist/index.js +380 -0
  406. package/dist/index.js.map +1 -0
  407. package/dist/markdown/templates/design-template.md +96 -0
  408. package/dist/markdown/templates/product-template.md +51 -0
  409. package/dist/markdown/templates/requirements-template.md +50 -0
  410. package/dist/markdown/templates/structure-template.md +145 -0
  411. package/dist/markdown/templates/tasks-template.md +139 -0
  412. package/dist/markdown/templates/tech-template.md +99 -0
  413. package/dist/prompts/create-decomposition.d.ts +3 -0
  414. package/dist/prompts/create-decomposition.d.ts.map +1 -0
  415. package/dist/prompts/create-decomposition.js +122 -0
  416. package/dist/prompts/create-decomposition.js.map +1 -0
  417. package/dist/prompts/create-spec.d.ts +3 -0
  418. package/dist/prompts/create-spec.d.ts.map +1 -0
  419. package/dist/prompts/create-spec.js +93 -0
  420. package/dist/prompts/create-spec.js.map +1 -0
  421. package/dist/prompts/create-steering-doc.d.ts +3 -0
  422. package/dist/prompts/create-steering-doc.d.ts.map +1 -0
  423. package/dist/prompts/create-steering-doc.js +73 -0
  424. package/dist/prompts/create-steering-doc.js.map +1 -0
  425. package/dist/prompts/implement-task.d.ts +3 -0
  426. package/dist/prompts/implement-task.d.ts.map +1 -0
  427. package/dist/prompts/implement-task.js +173 -0
  428. package/dist/prompts/implement-task.js.map +1 -0
  429. package/dist/prompts/index.d.ts +15 -0
  430. package/dist/prompts/index.d.ts.map +1 -0
  431. package/dist/prompts/index.js +51 -0
  432. package/dist/prompts/index.js.map +1 -0
  433. package/dist/prompts/inject-spec-workflow-guide.d.ts +3 -0
  434. package/dist/prompts/inject-spec-workflow-guide.d.ts.map +1 -0
  435. package/dist/prompts/inject-spec-workflow-guide.js +47 -0
  436. package/dist/prompts/inject-spec-workflow-guide.js.map +1 -0
  437. package/dist/prompts/inject-steering-guide.d.ts +3 -0
  438. package/dist/prompts/inject-steering-guide.d.ts.map +1 -0
  439. package/dist/prompts/inject-steering-guide.js +51 -0
  440. package/dist/prompts/inject-steering-guide.js.map +1 -0
  441. package/dist/prompts/refresh-tasks.d.ts +3 -0
  442. package/dist/prompts/refresh-tasks.d.ts.map +1 -0
  443. package/dist/prompts/refresh-tasks.js +224 -0
  444. package/dist/prompts/refresh-tasks.js.map +1 -0
  445. package/dist/prompts/spec-status.d.ts +3 -0
  446. package/dist/prompts/spec-status.d.ts.map +1 -0
  447. package/dist/prompts/spec-status.js +75 -0
  448. package/dist/prompts/spec-status.js.map +1 -0
  449. package/dist/prompts/types.d.ts +13 -0
  450. package/dist/prompts/types.d.ts.map +1 -0
  451. package/dist/prompts/types.js +2 -0
  452. package/dist/prompts/types.js.map +1 -0
  453. package/dist/server.d.ts +17 -0
  454. package/dist/server.d.ts.map +1 -0
  455. package/dist/server.js +175 -0
  456. package/dist/server.js.map +1 -0
  457. package/dist/tools/__tests__/adversarial-response.test.d.ts +2 -0
  458. package/dist/tools/__tests__/adversarial-response.test.d.ts.map +1 -0
  459. package/dist/tools/__tests__/adversarial-response.test.js +144 -0
  460. package/dist/tools/__tests__/adversarial-response.test.js.map +1 -0
  461. package/dist/tools/__tests__/adversarial-review.test.d.ts +2 -0
  462. package/dist/tools/__tests__/adversarial-review.test.d.ts.map +1 -0
  463. package/dist/tools/__tests__/adversarial-review.test.js +318 -0
  464. package/dist/tools/__tests__/adversarial-review.test.js.map +1 -0
  465. package/dist/tools/__tests__/decomposition-guide.test.d.ts +2 -0
  466. package/dist/tools/__tests__/decomposition-guide.test.d.ts.map +1 -0
  467. package/dist/tools/__tests__/decomposition-guide.test.js +25 -0
  468. package/dist/tools/__tests__/decomposition-guide.test.js.map +1 -0
  469. package/dist/tools/__tests__/deferrals.test.d.ts +2 -0
  470. package/dist/tools/__tests__/deferrals.test.d.ts.map +1 -0
  471. package/dist/tools/__tests__/deferrals.test.js +151 -0
  472. package/dist/tools/__tests__/deferrals.test.js.map +1 -0
  473. package/dist/tools/__tests__/get-task-review.test.d.ts +2 -0
  474. package/dist/tools/__tests__/get-task-review.test.d.ts.map +1 -0
  475. package/dist/tools/__tests__/get-task-review.test.js +81 -0
  476. package/dist/tools/__tests__/get-task-review.test.js.map +1 -0
  477. package/dist/tools/__tests__/projectPath.test.d.ts +2 -0
  478. package/dist/tools/__tests__/projectPath.test.d.ts.map +1 -0
  479. package/dist/tools/__tests__/projectPath.test.js +187 -0
  480. package/dist/tools/__tests__/projectPath.test.js.map +1 -0
  481. package/dist/tools/__tests__/review-task.test.d.ts +2 -0
  482. package/dist/tools/__tests__/review-task.test.d.ts.map +1 -0
  483. package/dist/tools/__tests__/review-task.test.js +1097 -0
  484. package/dist/tools/__tests__/review-task.test.js.map +1 -0
  485. package/dist/tools/adversarial-response.d.ts +6 -0
  486. package/dist/tools/adversarial-response.d.ts.map +1 -0
  487. package/dist/tools/adversarial-response.js +206 -0
  488. package/dist/tools/adversarial-response.js.map +1 -0
  489. package/dist/tools/adversarial-review.d.ts +21 -0
  490. package/dist/tools/adversarial-review.d.ts.map +1 -0
  491. package/dist/tools/adversarial-review.js +491 -0
  492. package/dist/tools/adversarial-review.js.map +1 -0
  493. package/dist/tools/approvals.d.ts +14 -0
  494. package/dist/tools/approvals.d.ts.map +1 -0
  495. package/dist/tools/approvals.js +505 -0
  496. package/dist/tools/approvals.js.map +1 -0
  497. package/dist/tools/decomposition-guide.d.ts +6 -0
  498. package/dist/tools/decomposition-guide.d.ts.map +1 -0
  499. package/dist/tools/decomposition-guide.js +163 -0
  500. package/dist/tools/decomposition-guide.js.map +1 -0
  501. package/dist/tools/deferrals.d.ts +5 -0
  502. package/dist/tools/deferrals.d.ts.map +1 -0
  503. package/dist/tools/deferrals.js +229 -0
  504. package/dist/tools/deferrals.js.map +1 -0
  505. package/dist/tools/get-task-review.d.ts +5 -0
  506. package/dist/tools/get-task-review.d.ts.map +1 -0
  507. package/dist/tools/get-task-review.js +136 -0
  508. package/dist/tools/get-task-review.js.map +1 -0
  509. package/dist/tools/index.d.ts +5 -0
  510. package/dist/tools/index.d.ts.map +1 -0
  511. package/dist/tools/index.js +82 -0
  512. package/dist/tools/index.js.map +1 -0
  513. package/dist/tools/log-implementation.d.ts +5 -0
  514. package/dist/tools/log-implementation.d.ts.map +1 -0
  515. package/dist/tools/log-implementation.js +398 -0
  516. package/dist/tools/log-implementation.js.map +1 -0
  517. package/dist/tools/review-task.d.ts +58 -0
  518. package/dist/tools/review-task.d.ts.map +1 -0
  519. package/dist/tools/review-task.js +617 -0
  520. package/dist/tools/review-task.js.map +1 -0
  521. package/dist/tools/spec-status.d.ts +5 -0
  522. package/dist/tools/spec-status.d.ts.map +1 -0
  523. package/dist/tools/spec-status.js +235 -0
  524. package/dist/tools/spec-status.js.map +1 -0
  525. package/dist/tools/spec-workflow-guide.d.ts +5 -0
  526. package/dist/tools/spec-workflow-guide.d.ts.map +1 -0
  527. package/dist/tools/spec-workflow-guide.js +396 -0
  528. package/dist/tools/spec-workflow-guide.js.map +1 -0
  529. package/dist/tools/steering-guide.d.ts +5 -0
  530. package/dist/tools/steering-guide.d.ts.map +1 -0
  531. package/dist/tools/steering-guide.js +192 -0
  532. package/dist/tools/steering-guide.js.map +1 -0
  533. package/dist/types.d.ts +213 -0
  534. package/dist/types.d.ts.map +1 -0
  535. package/dist/types.js +13 -0
  536. package/dist/types.js.map +1 -0
  537. 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"}