maestro-flow 0.3.11 → 0.3.13

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 (339) hide show
  1. package/.claude/CLAUDE.md +7 -0
  2. package/.claude/agents/conceptual-planning-agent.md +1 -0
  3. package/.claude/agents/workflow-analyzer.md +113 -114
  4. package/.claude/agents/workflow-collab-planner.md +143 -144
  5. package/.claude/agents/workflow-debugger.md +101 -103
  6. package/.claude/agents/workflow-executor.md +127 -128
  7. package/.claude/agents/workflow-integration-checker.md +82 -82
  8. package/.claude/agents/workflow-nyquist-auditor.md +84 -84
  9. package/.claude/agents/workflow-phase-researcher.md +85 -85
  10. package/.claude/agents/workflow-plan-checker.md +90 -90
  11. package/.claude/agents/workflow-planner.md +177 -178
  12. package/.claude/agents/workflow-roadmapper.md +81 -83
  13. package/.claude/agents/workflow-verifier.md +118 -119
  14. package/.claude/commands/learn-retro.md +2 -2
  15. package/.claude/commands/learn-second-opinion.md +2 -2
  16. package/.claude/commands/maestro-analyze.md +10 -2
  17. package/.claude/commands/maestro-brainstorm.md +2 -1
  18. package/.claude/commands/maestro-execute.md +21 -4
  19. package/.claude/commands/maestro-fork.md +133 -111
  20. package/.claude/commands/maestro-merge.md +85 -77
  21. package/.claude/commands/maestro-milestone-complete.md +14 -0
  22. package/.claude/commands/maestro-plan.md +100 -8
  23. package/.claude/commands/maestro-roadmap.md +113 -2
  24. package/.claude/commands/maestro-ui-design.md +7 -7
  25. package/.claude/commands/maestro-update.md +176 -0
  26. package/.claude/commands/maestro-verify.md +18 -3
  27. package/.claude/commands/maestro.md +1 -0
  28. package/.claude/commands/manage-codebase-rebuild.md +0 -1
  29. package/.claude/commands/manage-harvest.md +1 -1
  30. package/.claude/commands/manage-learn.md +5 -5
  31. package/.claude/commands/manage-memory-capture.md +4 -4
  32. package/.claude/commands/manage-memory.md +1 -1
  33. package/.claude/commands/manage-wiki.md +62 -0
  34. package/.claude/commands/quality-business-test.md +5 -5
  35. package/.claude/commands/quality-debug.md +53 -6
  36. package/.claude/commands/quality-retrospective.md +9 -7
  37. package/.claude/commands/quality-review.md +39 -7
  38. package/.claude/commands/quality-sync.md +1 -1
  39. package/.claude/commands/quality-test-gen.md +5 -4
  40. package/.claude/commands/quality-test.md +45 -12
  41. package/.claude/commands/spec-remove.md +51 -0
  42. package/.claude/commands/spec-setup.md +1 -3
  43. package/.claude/commands/wiki-connect.md +9 -5
  44. package/.claude/commands/wiki-digest.md +6 -3
  45. package/.codex/skills/maestro/SKILL.md +2 -2
  46. package/.codex/skills/maestro-analyze/SKILL.md +4 -4
  47. package/.codex/skills/maestro-brainstorm/SKILL.md +4 -4
  48. package/.codex/skills/maestro-coordinate/SKILL.md +2 -2
  49. package/.codex/skills/maestro-execute/SKILL.md +15 -5
  50. package/.codex/skills/maestro-fork/SKILL.md +98 -68
  51. package/.codex/skills/maestro-init/SKILL.md +5 -4
  52. package/.codex/skills/maestro-merge/SKILL.md +69 -62
  53. package/.codex/skills/maestro-milestone-complete/SKILL.md +18 -1
  54. package/.codex/skills/maestro-plan/SKILL.md +6 -6
  55. package/.codex/skills/maestro-roadmap/SKILL.md +3 -4
  56. package/.codex/skills/maestro-spec-generate/SKILL.md +2 -2
  57. package/.codex/skills/maestro-ui-design/SKILL.md +6 -6
  58. package/.codex/skills/maestro-verify/SKILL.md +29 -20
  59. package/.codex/skills/manage-codebase-rebuild/SKILL.md +4 -4
  60. package/.codex/skills/manage-harvest/SKILL.md +10 -1
  61. package/.codex/skills/manage-issue-discover/SKILL.md +3 -3
  62. package/.codex/skills/manage-learn/SKILL.md +3 -2
  63. package/.codex/skills/manage-memory/SKILL.md +3 -3
  64. package/.codex/skills/manage-memory-capture/SKILL.md +8 -14
  65. package/.codex/skills/manage-status/SKILL.md +9 -4
  66. package/.codex/skills/manage-wiki/SKILL.md +55 -0
  67. package/.codex/skills/quality-business-test/SKILL.md +8 -6
  68. package/.codex/skills/quality-debug/SKILL.md +22 -9
  69. package/.codex/skills/quality-integration-test/SKILL.md +11 -7
  70. package/.codex/skills/quality-retrospective/SKILL.md +48 -29
  71. package/.codex/skills/quality-review/SKILL.md +10 -7
  72. package/.codex/skills/quality-test/SKILL.md +10 -5
  73. package/.codex/skills/quality-test-gen/SKILL.md +13 -9
  74. package/.codex/skills/spec-add/SKILL.md +11 -3
  75. package/.codex/skills/spec-load/SKILL.md +7 -0
  76. package/.codex/skills/spec-map/SKILL.md +2 -2
  77. package/.codex/skills/spec-remove/SKILL.md +101 -0
  78. package/.codex/skills/spec-setup/SKILL.md +4 -8
  79. package/.codex/skills/wiki-connect/SKILL.md +6 -5
  80. package/.codex/skills/wiki-digest/SKILL.md +2 -2
  81. package/README.md +2 -0
  82. package/README.zh-CN.md +2 -0
  83. package/dashboard/dist/assets/{ArtifactsPage-DZNCi6tn.js → ArtifactsPage-CUrrDGgN.js} +1 -1
  84. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +49 -0
  85. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +27 -0
  86. package/dashboard/dist/assets/{CollabPage-B4NAHXS2.js → CollabPage-DIUXeazv.js} +1 -1
  87. package/dashboard/dist/assets/{ExecutionPanel-CFt4LJyq.js → ExecutionPanel-VmYeADFj.js} +1 -1
  88. package/dashboard/dist/assets/KanbanPage-DLq8v7hg.js +21 -0
  89. package/dashboard/dist/assets/{MarkdownRenderer-X4af_WNb.js → MarkdownRenderer-D7AehrnR.js} +1 -1
  90. package/dashboard/dist/assets/{McpPage-BKfCVIyU.js → McpPage-BY0SjTgw.js} +2 -2
  91. package/dashboard/dist/assets/{OutputPanel-BlBQFJSW.js → OutputPanel-B-Rjwgmv.js} +1 -1
  92. package/dashboard/dist/assets/{ProblemsPanel-De3DLvoI.js → ProblemsPanel-GEpF-oi4.js} +1 -1
  93. package/dashboard/dist/assets/RequirementBoardPage-xs8uDM7I.js +6 -0
  94. package/dashboard/dist/assets/{RequirementPage-Bllxe2XI.js → RequirementPage-BKDSFwjA.js} +5 -10
  95. package/dashboard/dist/assets/SpecsPage-DLFb9ZH0.js +36 -0
  96. package/dashboard/dist/assets/SupervisorPage-SOki_kgz.js +6 -0
  97. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +11 -0
  98. package/dashboard/dist/assets/{TreeBrowser-Q12qobZs.js → TreeBrowser-B9DHdULE.js} +1 -1
  99. package/dashboard/dist/assets/{WorkflowPage-D_Fzdy3_.js → WorkflowPage-C8hWbYim.js} +1 -1
  100. package/dashboard/dist/assets/{check-u6fGOwQO.js → check-DJDk3A2a.js} +1 -1
  101. package/dashboard/dist/assets/{chevron-right-Csu22t58.js → chevron-right-C7bVDreZ.js} +1 -1
  102. package/dashboard/dist/assets/{circle-CMrkbRNg.js → circle-Qfgy4LB_.js} +1 -1
  103. package/dashboard/dist/assets/{circle-alert-c3tH1P4z.js → circle-alert-Na1vf6qQ.js} +1 -1
  104. package/dashboard/dist/assets/{circle-check-gYxxSYuH.js → circle-check-CEGgy3NV.js} +1 -1
  105. package/dashboard/dist/assets/{circle-check-big-TDSeWstm.js → circle-check-big-3JB8zRYj.js} +1 -1
  106. package/dashboard/dist/assets/{code-CFN2uX9V.js → code-Ble63Idz.js} +1 -1
  107. package/dashboard/dist/assets/{columns-3-38xIDlzy.js → columns-3-BUcKlxve.js} +1 -1
  108. package/dashboard/dist/assets/{download-DC7KkKyP.js → download-CMqkfn8x.js} +1 -1
  109. package/dashboard/dist/assets/{folder-CWq_lAnf.js → folder-B9ewx9LL.js} +1 -1
  110. package/dashboard/dist/assets/index-C2Mcb4TJ.js +231 -0
  111. package/dashboard/dist/assets/index-DyBbPc18.css +1 -0
  112. package/dashboard/dist/assets/{index-Do71weNR.js → index-JTmGteaT.js} +1 -1
  113. package/dashboard/dist/assets/{list-CgIP_2A-.js → list-DI8Wn2aT.js} +1 -1
  114. package/dashboard/dist/assets/loader-B5F6PzFT.js +11 -0
  115. package/dashboard/dist/assets/{minus-DYoN5UGk.js → minus-Lp_BfctG.js} +1 -1
  116. package/dashboard/dist/assets/{pen-line-Bh_WKYHm.js → pen-line-Ch7sphzZ.js} +1 -1
  117. package/dashboard/dist/assets/pencil-_yRMHmGT.js +6 -0
  118. package/dashboard/dist/assets/{proxy-BKxDAKTj.js → proxy-D72Y8a4Y.js} +1 -1
  119. package/dashboard/dist/assets/{search-SieXnOgr.js → search-BS6fI6Bg.js} +1 -1
  120. package/dashboard/dist/assets/{shallow-Bme1JY57.js → shallow-BXasQBvr.js} +1 -1
  121. package/dashboard/dist/assets/table-CeGlFjlP.js +6 -0
  122. package/dashboard/dist/assets/{terminal-BB3Xfuv5.js → terminal-BJic2yW-.js} +1 -1
  123. package/dashboard/dist/assets/{trash-2-C8f4vFFM.js → trash-2-Czz4X8Fb.js} +1 -1
  124. package/dashboard/dist/assets/{zap-4uwlzVm0.js → zap-C3H0jVFA.js} +1 -1
  125. package/dashboard/dist/index.html +2 -2
  126. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +16 -1
  127. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  128. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +9 -0
  129. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +109 -9
  130. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  131. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js +49 -0
  132. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js.map +1 -1
  133. package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js +1 -2
  134. package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js.map +1 -1
  135. package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.d.ts +1 -1
  136. package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js +2 -1
  137. package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js.map +1 -1
  138. package/dashboard/dist-server/dashboard/src/server/index.js +3 -0
  139. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  140. package/dashboard/dist-server/dashboard/src/server/routes/collab.js +124 -0
  141. package/dashboard/dist-server/dashboard/src/server/routes/collab.js.map +1 -1
  142. package/dashboard/dist-server/dashboard/src/server/routes/index.js +5 -4
  143. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  144. package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +5 -13
  145. package/dashboard/dist-server/dashboard/src/server/routes/specs.js +97 -155
  146. package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
  147. package/dashboard/dist-server/dashboard/src/server/routes/wiki.d.ts +11 -1
  148. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +27 -6
  149. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  150. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +25 -7
  151. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  152. package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js +8 -0
  153. package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js.map +1 -1
  154. package/dashboard/dist-server/dashboard/src/server/wiki/search.js +1 -0
  155. package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
  156. package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.d.ts +29 -0
  157. package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js +148 -0
  158. package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js.map +1 -0
  159. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +4 -2
  160. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  161. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +8 -2
  162. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
  163. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +5 -0
  164. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +80 -38
  165. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  166. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +8 -6
  167. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  168. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +40 -5
  169. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +21 -23
  170. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  171. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +33 -3
  172. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +184 -12
  173. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  174. package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.d.ts +10 -0
  175. package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js +73 -0
  176. package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js.map +1 -0
  177. package/dashboard/dist-server/dashboard/src/shared/collab-types.d.ts +31 -0
  178. package/dashboard/dist-server/dashboard/src/shared/collab-types.js +28 -0
  179. package/dashboard/dist-server/dashboard/src/shared/collab-types.js.map +1 -1
  180. package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
  181. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  182. package/dashboard/dist-server/dashboard/src/shared/coordinate-types.d.ts +22 -0
  183. package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +12 -0
  184. package/dashboard/dist-server/dashboard/src/shared/issue-types.js +12 -0
  185. package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
  186. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +1 -0
  187. package/dashboard/dist-server/dashboard/src/shared/team-types.js +7 -0
  188. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  189. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +27 -1
  190. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  191. package/dashboard/dist-server/shared/agent-types.d.ts +4 -0
  192. package/dashboard/dist-server/src/commands/delegate.js +26 -0
  193. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  194. package/dashboard/dist-server/src/coordinator/graph-types.d.ts +11 -1
  195. package/dashboard/dist-server/src/coordinator/graph-walker.js +29 -2
  196. package/dashboard/dist-server/src/coordinator/graph-walker.js.map +1 -1
  197. package/dashboard/dist-server/src/coordinator/prompt-assembler.js +3 -2
  198. package/dashboard/dist-server/src/coordinator/prompt-assembler.js.map +1 -1
  199. package/dashboard/dist-server/src/hooks/constants.d.ts +29 -60
  200. package/dashboard/dist-server/src/hooks/constants.js +105 -82
  201. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  202. package/dashboard/dist-server/src/types/index.d.ts +2 -1
  203. package/dist/shared/agent-types.d.ts +4 -0
  204. package/dist/shared/agent-types.d.ts.map +1 -1
  205. package/dist/src/commands/delegate.d.ts.map +1 -1
  206. package/dist/src/commands/delegate.js +26 -0
  207. package/dist/src/commands/delegate.js.map +1 -1
  208. package/dist/src/commands/hooks.d.ts +2 -4
  209. package/dist/src/commands/hooks.d.ts.map +1 -1
  210. package/dist/src/commands/hooks.js +4 -7
  211. package/dist/src/commands/hooks.js.map +1 -1
  212. package/dist/src/commands/install-backend.d.ts.map +1 -1
  213. package/dist/src/commands/install-backend.js +29 -18
  214. package/dist/src/commands/install-backend.js.map +1 -1
  215. package/dist/src/commands/install-ui/InstallConfirm.d.ts +2 -3
  216. package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
  217. package/dist/src/commands/install-ui/InstallConfirm.js +1 -1
  218. package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
  219. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  220. package/dist/src/commands/install-ui/InstallExecution.js +1 -2
  221. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  222. package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
  223. package/dist/src/commands/install-ui/InstallFlow.js +5 -7
  224. package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
  225. package/dist/src/commands/install-ui/StatuslineConfig.d.ts +3 -6
  226. package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
  227. package/dist/src/commands/install-ui/StatuslineConfig.js +21 -17
  228. package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
  229. package/dist/src/commands/update.d.ts.map +1 -1
  230. package/dist/src/commands/update.js +95 -0
  231. package/dist/src/commands/update.js.map +1 -1
  232. package/dist/src/commands/wiki.d.ts.map +1 -1
  233. package/dist/src/commands/wiki.js +75 -11
  234. package/dist/src/commands/wiki.js.map +1 -1
  235. package/dist/src/coordinator/graph-types.d.ts +11 -1
  236. package/dist/src/coordinator/graph-types.d.ts.map +1 -1
  237. package/dist/src/coordinator/graph-walker.d.ts.map +1 -1
  238. package/dist/src/coordinator/graph-walker.js +29 -2
  239. package/dist/src/coordinator/graph-walker.js.map +1 -1
  240. package/dist/src/coordinator/prompt-assembler.d.ts.map +1 -1
  241. package/dist/src/coordinator/prompt-assembler.js +3 -2
  242. package/dist/src/coordinator/prompt-assembler.js.map +1 -1
  243. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +4 -1
  244. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -1
  245. package/dist/src/hooks/__tests__/statusline-visual-test.js +55 -152
  246. package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -1
  247. package/dist/src/hooks/constants.d.ts +29 -60
  248. package/dist/src/hooks/constants.d.ts.map +1 -1
  249. package/dist/src/hooks/constants.js +105 -82
  250. package/dist/src/hooks/constants.js.map +1 -1
  251. package/dist/src/hooks/skill-context.d.ts +3 -0
  252. package/dist/src/hooks/skill-context.d.ts.map +1 -1
  253. package/dist/src/hooks/skill-context.js +149 -15
  254. package/dist/src/hooks/skill-context.js.map +1 -1
  255. package/dist/src/hooks/statusline.d.ts +11 -8
  256. package/dist/src/hooks/statusline.d.ts.map +1 -1
  257. package/dist/src/hooks/statusline.js +284 -179
  258. package/dist/src/hooks/statusline.js.map +1 -1
  259. package/dist/src/hooks/workspace.d.ts.map +1 -1
  260. package/dist/src/hooks/workspace.js +2 -1
  261. package/dist/src/hooks/workspace.js.map +1 -1
  262. package/dist/src/migrations/_template.d.ts +12 -0
  263. package/dist/src/migrations/_template.d.ts.map +1 -0
  264. package/dist/src/migrations/_template.js +55 -0
  265. package/dist/src/migrations/_template.js.map +1 -0
  266. package/dist/src/migrations/index.d.ts +14 -0
  267. package/dist/src/migrations/index.d.ts.map +1 -0
  268. package/dist/src/migrations/index.js +20 -0
  269. package/dist/src/migrations/index.js.map +1 -0
  270. package/dist/src/migrations/run.d.ts +12 -0
  271. package/dist/src/migrations/run.d.ts.map +1 -0
  272. package/dist/src/migrations/run.js +119 -0
  273. package/dist/src/migrations/run.js.map +1 -0
  274. package/dist/src/migrations/v1-to-v2.d.ts +10 -0
  275. package/dist/src/migrations/v1-to-v2.d.ts.map +1 -0
  276. package/dist/src/migrations/v1-to-v2.js +71 -0
  277. package/dist/src/migrations/v1-to-v2.js.map +1 -0
  278. package/dist/src/tools/merge-validator.d.ts.map +1 -1
  279. package/dist/src/tools/merge-validator.js +114 -16
  280. package/dist/src/tools/merge-validator.js.map +1 -1
  281. package/dist/src/tools/team-activity.d.ts.map +1 -1
  282. package/dist/src/tools/team-activity.js +22 -0
  283. package/dist/src/tools/team-activity.js.map +1 -1
  284. package/dist/src/tools/transition-recorder.d.ts +2 -17
  285. package/dist/src/tools/transition-recorder.d.ts.map +1 -1
  286. package/dist/src/tools/transition-recorder.js +6 -3
  287. package/dist/src/tools/transition-recorder.js.map +1 -1
  288. package/dist/src/types/index.d.ts +2 -1
  289. package/dist/src/types/index.d.ts.map +1 -1
  290. package/dist/src/utils/migration-registry.d.ts +65 -0
  291. package/dist/src/utils/migration-registry.d.ts.map +1 -0
  292. package/dist/src/utils/migration-registry.js +117 -0
  293. package/dist/src/utils/migration-registry.js.map +1 -0
  294. package/dist/src/utils/state-schema.d.ts +153 -0
  295. package/dist/src/utils/state-schema.d.ts.map +1 -0
  296. package/dist/src/utils/state-schema.js +329 -0
  297. package/dist/src/utils/state-schema.js.map +1 -0
  298. package/package.json +1 -1
  299. package/shared/agent-types.ts +4 -0
  300. package/templates/state.json +17 -39
  301. package/templates/worktree-scope.json +9 -10
  302. package/templates/worktrees.json +26 -27
  303. package/workflows/brainstorm.md +10 -1
  304. package/workflows/codebase-rebuild.md +2 -12
  305. package/workflows/debug.md +17 -8
  306. package/workflows/execute.md +18 -4
  307. package/workflows/fork.md +52 -37
  308. package/workflows/init.md +1 -4
  309. package/workflows/integration-test.md +13 -2
  310. package/workflows/issue.md +8 -4
  311. package/workflows/learn.md +25 -10
  312. package/workflows/maestro.codex.md +8 -1
  313. package/workflows/maestro.md +13 -3
  314. package/workflows/memory.md +26 -71
  315. package/workflows/merge.md +48 -52
  316. package/workflows/milestone-complete.md +24 -7
  317. package/workflows/retrospective.md +87 -80
  318. package/workflows/review.md +11 -5
  319. package/workflows/specs-remove.md +115 -0
  320. package/workflows/specs-setup.md +10 -32
  321. package/workflows/status.md +291 -290
  322. package/workflows/sync.md +5 -5
  323. package/workflows/test.md +11 -2
  324. package/workflows/ui-style.md +8 -2
  325. package/workflows/verify.md +2 -2
  326. package/workflows/wiki-connect.md +188 -0
  327. package/workflows/wiki-digest.md +221 -0
  328. package/workflows/wiki-manage.md +204 -0
  329. package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +0 -49
  330. package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +0 -22
  331. package/dashboard/dist/assets/KanbanPage-C8USth6H.js +0 -21
  332. package/dashboard/dist/assets/RequirementBoardPage-Bf1trzqs.js +0 -11
  333. package/dashboard/dist/assets/SpecsPage-9lwxKT27.js +0 -36
  334. package/dashboard/dist/assets/SupervisorPage-SusdfHFq.js +0 -6
  335. package/dashboard/dist/assets/TeamsPage-DsuM6OwC.js +0 -6
  336. package/dashboard/dist/assets/arrow-left-Bqtb2hle.js +0 -6
  337. package/dashboard/dist/assets/index-DWG-WrzT.js +0 -231
  338. package/dashboard/dist/assets/index-GUNJodSR.css +0 -1
  339. package/dashboard/dist/assets/table-llyEtj-7.js +0 -6
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: maestro-update
3
+ description: Interactive workflow migration — detect version, preview changes, apply upgrades
4
+ argument-hint: "[--dry-run] [--force]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Edit
9
+ - Bash
10
+ - Glob
11
+ - Grep
12
+ - AskUserQuestion
13
+ ---
14
+ <purpose>
15
+ Detect the current `.workflow/` schema version, show available migrations, and interactively apply them step-by-step. Uses a migration registry that supports incremental version upgrades (e.g., 1.0 → 2.0 → 3.0).
16
+
17
+ Each migration step is previewed before execution. The user confirms each step in a loop.
18
+ </purpose>
19
+
20
+ <context>
21
+ $ARGUMENTS — optional flags.
22
+
23
+ **Flags:**
24
+ - `--dry-run` -- Preview migration plan without executing
25
+ - `--force` -- Skip confirmation prompts (apply all pending migrations)
26
+
27
+ **Migration registry:** `src/migrations/`
28
+ - Each migration is a standalone file (e.g., `v1-to-v2.ts`) exporting a `MigrationDef`
29
+ - All migrations are registered via `src/migrations/index.ts`
30
+ - Registry auto-chains: detects current version → walks chain → applies in order
31
+ - To add a new migration: create `src/migrations/v{N}-to-v{N+1}.ts`, register in `index.ts`
32
+
33
+ **CLI runner:** `src/migrations/run.ts`
34
+ - Executable entrypoint: `npx tsx src/migrations/run.ts [root] [--dry-run] [--force] [--json]`
35
+ - Outputs JSON (with `--json`) or human-readable text
36
+
37
+ **State version source:** `.workflow/state.json` → `version` field
38
+ </context>
39
+
40
+ <execution>
41
+
42
+ ### Step 1: Detect Current State
43
+
44
+ ```
45
+ 1. Read .workflow/state.json
46
+ 2. Extract version field (default "1.0" if missing)
47
+ 3. Display:
48
+
49
+ === Maestro Workflow Update ===
50
+ Project: {project_name}
51
+ Version: {version}
52
+ Location: {.workflow/ path}
53
+ ```
54
+
55
+ ### Step 2: Dry-Run Preview
56
+
57
+ Run the migration CLI in dry-run + JSON mode to get the full plan:
58
+
59
+ ```bash
60
+ npx tsx src/migrations/run.ts "$(pwd)" --dry-run --json
61
+ ```
62
+
63
+ Parse the JSON output. If status is `up-to-date`:
64
+ ```
65
+ Already up to date (v{version})
66
+ ```
67
+ → EXIT
68
+
69
+ Otherwise display the migration plan:
70
+ ```
71
+ Pending Migrations ({N} step(s)):
72
+
73
+ 1. [v{from} → v{to}] {name}
74
+ {description}
75
+
76
+ 2. [v{from} → v{to}] {name}
77
+ {description}
78
+ ```
79
+
80
+ If `--dry-run` flag was passed by user → display plan and EXIT.
81
+
82
+ ### Step 3: Interactive Confirmation Loop
83
+
84
+ For each migration step (unless `--force`):
85
+
86
+ ```
87
+ LOOP for step_index = 1 to N:
88
+
89
+ Display:
90
+ --- Step {step_index}/{N}: {name} ---
91
+ Version: v{from} → v{to}
92
+
93
+ Changes:
94
+ {description, indented}
95
+
96
+ IF NOT --force:
97
+ AskUserQuestion: "Apply this migration?"
98
+ Options: [yes / skip / abort]
99
+
100
+ - "yes" → proceed to Step 4 (execute)
101
+ - "skip" → WARN "Skipping may break the migration chain"
102
+ continue to next step
103
+ - "abort" → display summary of what was applied so far → EXIT
104
+
105
+ IF --force:
106
+ → proceed to Step 4 (execute)
107
+ ```
108
+
109
+ ### Step 4: Execute Single Migration
110
+
111
+ ```
112
+ 1. Create backup:
113
+ Bash: cp .workflow/state.json .workflow/state.json.backup-v{from}-{timestamp}
114
+
115
+ 2. Run migration:
116
+ Bash: npx tsx src/migrations/run.ts "$(pwd)" --json
117
+
118
+ NOTE: The runner executes ALL pending migrations. For step-by-step control,
119
+ read state.json, call the migration function directly, or use the runner
120
+ which stops on first failure.
121
+
122
+ 3. Parse result JSON and display:
123
+
124
+ {status_icon} Step {N} completed: {name}
125
+ Summary: {summary}
126
+ Changes:
127
+ - {change_1}
128
+ - {change_2}
129
+ - ...
130
+
131
+ 4. If failed:
132
+ Display: "Migration failed: {summary}"
133
+ Display: "Backup available at: {backup_path}"
134
+ Display: "Restore with: cp {backup_path} .workflow/state.json"
135
+ → EXIT
136
+
137
+ 5. Continue loop to next step
138
+ ```
139
+
140
+ ### Step 5: Summary
141
+
142
+ After all steps completed (or user aborted):
143
+
144
+ ```
145
+ === Migration Complete ===
146
+ Applied: {applied_count} / {total_count} migration(s)
147
+ Skipped: {skipped_count}
148
+ Version: v{original} → v{final}
149
+ Backup: .workflow/state.json.backup-v{original}-{timestamp}
150
+
151
+ Next steps:
152
+ /manage-status -- Verify project state
153
+ /maestro -- Continue workflow
154
+ ```
155
+
156
+ </execution>
157
+
158
+ <error_codes>
159
+ | Code | Severity | Condition | Recovery |
160
+ |------|----------|-----------|----------|
161
+ | E001 | error | .workflow/state.json not found | Run /maestro-init first |
162
+ | E002 | error | state.json parse error | Check file for corruption |
163
+ | E003 | error | Migration function failed | Restore from backup |
164
+ | W001 | warning | Skipped migration may break version chain | Re-run /maestro-update later |
165
+ | W002 | warning | tsx not available | Install tsx: npm i -D tsx |
166
+ </error_codes>
167
+
168
+ <success_criteria>
169
+ - [ ] Current version detected from state.json
170
+ - [ ] Dry-run preview shows full migration plan without execution
171
+ - [ ] Each step confirmed interactively (unless --force)
172
+ - [ ] Backup created before each migration
173
+ - [ ] Migration executed and result displayed with change list
174
+ - [ ] Abort stops cleanly with partial summary
175
+ - [ ] Summary shows applied/skipped counts and version change
176
+ </success_criteria>
@@ -20,7 +20,7 @@ Verify execution results through three complementary methods:
20
20
 
21
21
  Supports dual-level verification:
22
22
  - **Single plan**: `verify --dir scratch/plan-xxx` — verifies one plan, writes `verification.json` into plan dir
23
- - **Milestone**: `verify` (no args) — aggregates all execute artifacts for current milestone into `scratch/verify-{milestone}-{date}/milestone-verification.json`
23
+ - **Milestone**: `verify` (no args) — aggregates all execute artifacts for current milestone into `scratch/{YYYYMMDD}-verify-M{N}-{slug}/milestone-verification.json`
24
24
 
25
25
  Registers VRF artifact in state.json on completion.
26
26
  </purpose>
@@ -51,7 +51,7 @@ $ARGUMENTS — phase number or no args for milestone-wide, with optional flags.
51
51
  | `verify --dir scratch/plan-xxx` | Single plan: verify specific plan directory |
52
52
 
53
53
  **Single plan output**: `verification.json` appended to plan's scratch dir
54
- **Milestone output**: `scratch/verify-{milestone-slug}-{date}/milestone-verification.json`
54
+ **Milestone output**: `scratch/{YYYYMMDD}-verify-M{N}-{slug}/milestone-verification.json`
55
55
 
56
56
  **Artifact registration**: On completion, register VRF artifact:
57
57
  ```jsonc
@@ -61,7 +61,7 @@ $ARGUMENTS — phase number or no args for milestone-wide, with optional flags.
61
61
  "milestone": "{current_milestone or null}",
62
62
  "phase": null,
63
63
  "scope": "milestone",
64
- "path": "scratch/verify-{milestone-slug}-{date}",
64
+ "path": "scratch/{YYYYMMDD}-verify-M{N}-{slug}", // M{N} = milestone number
65
65
  "status": "completed",
66
66
  "depends_on": ["EXC-001", "EXC-002", ...],
67
67
  "harvested": false,
@@ -74,6 +74,21 @@ $ARGUMENTS — phase number or no args for milestone-wide, with optional flags.
74
74
  <execution>
75
75
  Follow '~/.maestro/workflows/verify.md' completely.
76
76
 
77
+ ### Post-verify Knowledge Inquiry
78
+
79
+ After verification completes, evaluate inquiry triggers:
80
+
81
+ 1. **Anti-pattern detection**: If anti-pattern scan found blockers (TODO/FIXME, stubs, empty returns):
82
+ → Ask: "Verification found {N} anti-patterns. Should `quality-rules.md` be updated to enforce these checks? (`/spec-add quality`)"
83
+
84
+ 2. **Constraint violation**: If Goal-Backward check found constraint_violations or missing wiring:
85
+ → Ask: "Verification found architecture constraint violations. Should `architecture-constraints.md` be updated? (`/spec-add arch`)"
86
+
87
+ 3. **Test coverage gaps**: If Nyquist gaps found with recurring pattern (same module/type across tasks):
88
+ → Ask: "Persistent test coverage gap detected in {module}. Should it be added to `test-conventions.md` as a required test area? (`/spec-add test`)"
89
+
90
+ If user confirms, invoke `Skill({ skill: "spec-add", args: "<category> <content>" })`.
91
+
77
92
  **Next-step routing on completion:**
78
93
  - All checks pass, no gaps → /quality-review
79
94
  - Gaps found (must-have failures or anti-pattern blockers) → /maestro-plan --gaps
@@ -55,6 +55,7 @@ When `-y` is active, maestro propagates auto flags to downstream commands. Only
55
55
  |---------|-----------|--------|
56
56
  | maestro-analyze | `-y` | Skip interactive scoping, auto-deepen |
57
57
  | maestro-brainstorm | `-y` | Skip interactive questions, use defaults |
58
+ | maestro-roadmap | `-y` | Skip interactive questions, use defaults (create/revise/review) |
58
59
  | maestro-ui-design | `-y` | Skip interactive selection, pick top variant |
59
60
  | maestro-plan | `--auto` | Skip interactive clarification |
60
61
  | maestro-spec-generate | `-y` | Skip interactive questions, use defaults |
@@ -70,7 +70,6 @@ Follow '~/.maestro/workflows/codebase-rebuild.md' completely.
70
70
  - [ ] doc-index.json generated and valid
71
71
  - [ ] All documentation files regenerated
72
72
  - [ ] state.json updated with rebuild timestamp
73
- - [ ] project-tech.json refreshed with detected tech stack
74
73
  - [ ] project.md Tech Stack section updated if changes detected
75
74
  - [ ] Next step routing: `/manage-status` or `/manage-codebase-refresh` for incremental updates later
76
75
  </success_criteria>
@@ -76,7 +76,7 @@ Follow '~/.maestro/workflows/harvest.md' Stages 1–8 in order. Key invariants:
76
76
  2. **Dedup before write** — Stage 7 (dedup_check) runs BEFORE each write in Stage 6. Check harvest-log.jsonl, wiki search, issues.jsonl, and learnings.md for existing matches.
77
77
  3. **Stable fragment IDs** — `HRV-{8 hex}` from `hash(source_id + content_hash)` so re-runs on same artifacts do not create duplicates.
78
78
  4. **Reuse existing routing infrastructure**:
79
- - Wiki: `maestro wiki create --type <type> --slug harvest-<source_type>-<short_id>`
79
+ - Wiki: `maestro wiki create --type <type> --slug harvest-<source_type>-<short_id> --created-by manage-harvest --source-ref HRV-<fragment_id> --category <fragment_category>`
80
80
  - Spec: `Skill({ skill: "spec-add", args: "<category> <content>" })`
81
81
  - Issue: append to `issues.jsonl` matching canonical schema from `workflows/issue.md`
82
82
  5. **Never modify source artifacts** — harvest is purely extractive. Source files remain untouched.
@@ -49,7 +49,7 @@ Arguments: $ARGUMENTS
49
49
 
50
50
  **Storage:**
51
51
  - `.workflow/learning/lessons.jsonl` — append-only JSONL row per insight (shared with `quality-retrospective` output)
52
- - `.workflow/learning/learning-index.json` — searchable index (mirrors `memory-index.json` schema)
52
+ - `.workflow/learning/learning-index.json` — searchable index
53
53
 
54
54
  **Shared store rationale:** Manual captures (`source: "manual"`), tips (`source: "tip"`), retrospective-distilled insights (`source: "retrospective"`, `lens: <name>` from `quality-retrospective`), and learn-retro insights (`source: "retro-git"` or `source: "retro-decision"` from `learn-retro`) all live in the same store so search and list see the entire knowledge corpus. The `source` field disambiguates origin.
55
55
  </context>
@@ -58,8 +58,8 @@ Arguments: $ARGUMENTS
58
58
  Follow `~/.maestro/workflows/learn.md` Stages 1–5 in order. Key invariants:
59
59
 
60
60
  1. **No agent or CLI calls** — this is a pure file operation: parse → infer → append → confirm. Category inference is keyword-based, not LLM-based.
61
- 2. **Auto-link phase** — read `.workflow/state.json` for `current_phase` and resolve the matching directory slug. `--phase 0` forces no link.
62
- 3. **Match memory-index pattern** — `learning-index.json` schema mirrors `memory-index.json` from `workflows/memory.md` (entries[] with id, type, timestamp, file, summary, tags, plus learn-specific fields: lens, category, phase, phase_slug, confidence, routed_to, routed_id).
61
+ 2. **Auto-link phase** — read `.workflow/state.json` for `current_phase` and derive phase context from artifact registry (`state.json.artifacts[]`). `--phase 0` forces no link.
62
+ 3. **Index schema** — `learning-index.json` entries[] with id, type, timestamp, file, summary, tags, plus learn-specific fields: lens, category, confidence, routed_to, routed_id.
63
63
  4. **Stable INS ids** — `INS-{8 lowercase hex}` from `hash(insight_text + category + phase)`. Deterministic: same content in same context always produces the same ID.
64
64
  5. **Append-only lessons.jsonl** — never rewrite existing rows; duplicate detection is the user's job at search time.
65
65
  6. **Bootstrap on demand** — create `.workflow/learning/`, `lessons.jsonl`, `learning-index.json` on first use; do not require them to exist upfront.
@@ -73,7 +73,7 @@ Follow `~/.maestro/workflows/learn.md` Stages 1–5 in order. Key invariants:
73
73
  | E002 | error | Unknown `--category` value (allowed: pattern, antipattern, decision, tool, gotcha, technique, tip) | parse_input |
74
74
  | E003 | error | `show` mode requires an INS-id argument | show |
75
75
  | E004 | error | Insight id not found in lessons.jsonl | show |
76
- | W001 | warning | Auto-phase detection found a current_phase but no matching directory; phase set to null | capture |
76
+ | W001 | warning | Auto-phase detection found a current_phase but no matching artifact in registry; phase set to null | capture |
77
77
  | W002 | warning | learning-index.json out of sync with lessons.jsonl (different row count); offer to rebuild | list/search |
78
78
  </error_codes>
79
79
 
@@ -81,7 +81,7 @@ Follow `~/.maestro/workflows/learn.md` Stages 1–5 in order. Key invariants:
81
81
  - [ ] Mode correctly routed (capture / list / search / show)
82
82
  - [ ] Capture: `lessons.jsonl` row appended with valid JSON and all required fields
83
83
  - [ ] Capture: `learning-index.json` updated with matching entry
84
- - [ ] Capture: phase auto-link resolves correctly when `state.json` has `current_phase`
84
+ - [ ] Capture: phase auto-link resolves correctly via artifact registry when `state.json` has `current_phase`
85
85
  - [ ] Capture: category inference produces a sensible default when `--category` absent
86
86
  - [ ] List: filters apply, output sorted newest-first, default limit 20
87
87
  - [ ] Search: results ranked by title (3) > tags (2) > summary (1) match
@@ -12,7 +12,7 @@ allowed-tools:
12
12
  - AskUserQuestion
13
13
  ---
14
14
  <purpose>
15
- Capture session working memory into `.workflow/memory/` for cross-session recovery. Compact mode only: full session compression for recovery. Maintains a `memory-index.json` for search and retrieval. Invoked when saving session state before context loss.
15
+ Capture session working memory into `.workflow/memory/` for cross-session recovery. Compact mode only: full session compression for recovery. Entries are created via `maestro wiki create --type memory` and automatically indexed in `.workflow/wiki-index.json`. Invoked when saving session state before context loss.
16
16
 
17
17
  **Note:** Quick tips/notes have been moved to `manage-learn tip <text>`. Use that command for atomic knowledge capture.
18
18
  </purpose>
@@ -29,8 +29,8 @@ Arguments: $ARGUMENTS
29
29
  - No arguments — Defaults to compact mode
30
30
 
31
31
  **Storage:**
32
- - `.workflow/memory/` — Memory entries directory
33
- - `.workflow/memory/memory-index.json` — Searchable index of all entries
32
+ - `.workflow/memory/` — Memory entries directory (via `maestro wiki create --type memory`)
33
+ - `.workflow/wiki-index.json` — Unified wiki index (auto-updated on create)
34
34
  </context>
35
35
 
36
36
  <execution>
@@ -49,7 +49,7 @@ Follow '~/.maestro/workflows/memory.md' Part B (Memory Capture) completely.
49
49
  <success_criteria>
50
50
  - [ ] Compact mode executed
51
51
  - [ ] Entry markdown file written to `.workflow/memory/`
52
- - [ ] `memory-index.json` updated with new entry metadata
52
+ - [ ] `wiki-index.json` auto-updated via wiki create
53
53
  - [ ] All session fields populated (objective, files, decisions, plan)
54
54
  - [ ] Execution plan preserved VERBATIM (not summarized)
55
55
  - [ ] All file paths are ABSOLUTE
@@ -30,7 +30,7 @@ Arguments: $ARGUMENTS
30
30
 
31
31
  | Store | Path | Format | Index |
32
32
  |-------|------|--------|-------|
33
- | `workflow` | `.workflow/memory/` | `MEM-*.md`, `TIP-*.md` (legacy only — new tips go to `manage-learn tip`) | `memory-index.json` |
33
+ | `workflow` | `.workflow/memory/` | `MEM-*.md`, `TIP-*.md` (legacy only — new tips go to `manage-learn tip`) | `.workflow/wiki-index.json` (unified) |
34
34
  | `system` | `~/.claude/projects/{project}/memory/` | `MEMORY.md` + topic `.md` files | None (flat files) |
35
35
 
36
36
  **System memory path detection:**
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: manage-wiki
3
+ description: Wiki knowledge graph management — health dashboard, orphan cleanup, entry search, and graph statistics
4
+ argument-hint: "[health|search|cleanup|stats] [options]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Edit
9
+ - Bash
10
+ - Glob
11
+ - Grep
12
+ - AskUserQuestion
13
+ ---
14
+ <purpose>
15
+ Unified wiki graph management command. Provides interactive access to wiki health monitoring, entry search, orphan cleanup, and graph statistics — the day-to-day operations that keep the knowledge graph healthy.
16
+
17
+ Complements `/wiki-connect` (link discovery) and `/wiki-digest` (synthesis) with operational tooling.
18
+ </purpose>
19
+
20
+ <required_reading>
21
+ @~/.maestro/workflows/wiki-manage.md
22
+ </required_reading>
23
+
24
+ <context>
25
+ $ARGUMENTS — subcommand and optional flags.
26
+
27
+ **Subcommands:**
28
+ | Subcommand | Description |
29
+ |-----------|-------------|
30
+ | `health` | Health dashboard — score, broken links, orphans, hubs (default) |
31
+ | `search <query>` | Interactive BM25 search with follow-up actions |
32
+ | `cleanup` | Find and resolve orphans, broken links, stale entries |
33
+ | `stats` | Graph statistics — type distribution, tag frequency, growth trends |
34
+ | No args | Same as `health` |
35
+
36
+ **Flags:**
37
+ - `--type <type>` — Filter by wiki type: spec, memory, note, lesson, issue
38
+ - `--fix` — Auto-fix issues found during cleanup (remove broken links, suggest connections)
39
+ - `--json` — Output in JSON format
40
+ </context>
41
+
42
+ <execution>
43
+ Follow '~/.maestro/workflows/wiki-manage.md' completely.
44
+ </execution>
45
+
46
+ <error_codes>
47
+ | Code | Severity | Description | Stage |
48
+ |------|----------|-------------|-------|
49
+ | E001 | fatal | `.workflow/` not initialized — run `/maestro-init` first | validate |
50
+ | E002 | fatal | No wiki entries found — create content first | load |
51
+ | E003 | error | Invalid subcommand | parse_input |
52
+ | W001 | warning | Health score below 50 — graph needs attention | health |
53
+ | W002 | warning | Orphan cleanup had partial failures | cleanup |
54
+ </error_codes>
55
+
56
+ <success_criteria>
57
+ - [ ] Subcommand parsed (health/search/cleanup/stats)
58
+ - [ ] Wiki data loaded via `maestro wiki` CLI
59
+ - [ ] Results displayed in formatted output
60
+ - [ ] If cleanup --fix: issues resolved and delta reported
61
+ - [ ] Next-step suggestions provided
62
+ </success_criteria>
@@ -60,10 +60,10 @@ Context files:
60
60
  - `.workflow/.spec/SPEC-xxx/requirements/NFR-*.md` -- Non-functional requirements
61
61
  - `.workflow/.spec/SPEC-xxx/architecture/_index.md` -- API endpoints, data model, state machines
62
62
  - `.workflow/.spec/SPEC-xxx/epics/EPIC-*.md` -- User stories for E2E scenarios
63
- - `.workflow/phases/{NN}-{slug}/index.json` -- Phase metadata, success_criteria
64
- - `.workflow/phases/{NN}-{slug}/plan.json` -- Task overview (degraded mode)
65
- - `.workflow/phases/{NN}-{slug}/verification.json` -- Cross-reference for must_haves
66
- - `.workflow/phases/{NN}-{slug}/.tests/business/` -- Previous business test artifacts
63
+ - Phase artifacts (resolve via `state.json.artifacts[]` `.workflow/scratch/` paths):
64
+ - plan.json -- Task overview (degraded mode)
65
+ - verification.json -- Cross-reference for must_haves
66
+ - .tests/business/ -- Previous business test artifacts
67
67
  </context>
68
68
 
69
69
  <execution>
@@ -81,7 +81,7 @@ Follow '~/.maestro/workflows/business-test.md' completely.
81
81
  | Code | Severity | Condition | Recovery |
82
82
  |------|----------|-----------|----------|
83
83
  | E001 | error | Phase number required | Prompt user for phase number |
84
- | E002 | error | Phase directory not found | Verify phase exists in .workflow/phases/ |
84
+ | E002 | error | Phase artifacts not found | Verify phase has artifacts in state.json |
85
85
  | E003 | error | No spec package AND no success_criteria (can't extract scenarios) | Run maestro-spec-generate or maestro-plan first |
86
86
  | E004 | error | L1 critical failures block L2/L3 progression | Fix blockers first via quality-debug |
87
87
  | W001 | warning | Degraded mode (no spec package, using success_criteria) | Consider running maestro-spec-generate for full coverage |
@@ -39,22 +39,69 @@ User's issue: $ARGUMENTS
39
39
  - `--from-uat <phase>` -- Read gaps from phase's uat.md as pre-filled symptoms
40
40
  - `--parallel` -- Spawn parallel debug agents (one per gap cluster)
41
41
 
42
- **State files:**
43
- - `.workflow/phases/{NN}-{slug}/uat.md` -- UAT gaps (if --from-uat)
44
- - `.workflow/phases/{NN}-{slug}/.debug/` -- Phase-scoped debug sessions
45
- - `.workflow/scratch/debug-*/` -- Standalone debug sessions
42
+ **All context via state.json.artifacts[]:**
43
+
44
+ ```
45
+ related = artifacts.filter(a =>
46
+ a.phase === target_phase && a.milestone === current_milestone
47
+ ).sort_by(completed_at asc)
48
+ ```
49
+
50
+ Each artifact's type determines its outputs at `.workflow/{a.path}/`:
51
+ - **execute** → .summaries/, .task/ (source of code changes)
52
+ - **review** → review.json (findings guide hypothesis formation)
53
+ - **debug** → understanding.md, evidence.ndjson (prior investigations, avoid re-investigation)
54
+ - **test** → uat.md (--from-uat gap source), .tests/
55
+
56
+ Extract conclusions from related artifacts that may affect this debug session — review findings guide investigation direction, prior debug avoids redundant work.
57
+
58
+ **Output**: `DEBUG_DIR = .workflow/scratch/{YYYYMMDD}-debug-P{N}-{slug}/` (P{N} = phase number when phase-scoped; omit for standalone)
46
59
  </context>
47
60
 
48
61
  <execution>
49
62
  Follow '~/.maestro/workflows/debug.md' completely.
50
63
 
64
+ **Output writes to DEBUG_DIR** (`scratch/{YYYYMMDD}-debug-P{N}-{slug}/`):
65
+ - understanding.md, evidence.ndjson, diagnosis-summary.json
66
+
67
+ **Register artifact on completion (phase-scoped only):**
68
+ ```
69
+ Append to state.json.artifacts[]:
70
+ {
71
+ id: nextArtifactId(artifacts, "debug"), // DBG-001
72
+ type: "debug",
73
+ milestone: current_milestone,
74
+ phase: target_phase,
75
+ scope: "phase",
76
+ path: "scratch/{YYYYMMDD}-debug-P{N}-{slug}", // or {YYYYMMDD}-debug-{slug} for standalone
77
+ status: all_diagnosed ? "completed" : "failed",
78
+ depends_on: triggering_review_id || exec_art.id,
79
+ harvested: false,
80
+ created_at: start_time,
81
+ completed_at: now()
82
+ }
83
+ ```
84
+
85
+ ### Post-debug Knowledge Inquiry
86
+
87
+ After root cause is confirmed, evaluate inquiry triggers:
88
+
89
+ 1. **Recurring pattern**: If root cause matches a recurring pattern (similar to prior debug sessions):
90
+ → Ask: "This root cause pattern has appeared before. Should it be documented in `debug-notes.md` to prevent recurrence? (`/spec-add debug`)"
91
+
92
+ 2. **Non-obvious fix**: If fix involved a non-obvious approach or workaround:
93
+ → Ask: "This fix used a non-obvious strategy. Should it be recorded as a learning? (`/spec-add learning`)"
94
+
95
+ 3. **Architectural gap**: If root cause traces to architectural boundary violation or missing constraint:
96
+ → Ask: "Root cause points to an architectural gap. Should `architecture-constraints.md` be updated? (`/spec-add arch`)"
97
+
98
+ If user confirms, invoke `Skill({ skill: "spec-add", args: "<category> <content>" })`.
99
+
51
100
  **Next-step routing on completion:**
52
101
  - Root cause found, fix needed → `/maestro-plan {phase} --gaps`
53
102
  - Root cause found (from UAT), auto-fix → `/quality-test {phase} --auto-fix`
54
103
  - Inconclusive, need more info → `/quality-debug {issue} -c` (resume session)
55
104
  - Standalone fix already applied → `/maestro-verify {phase}`
56
-
57
- Note: Debug output (.debug/) is auto-loaded by maestro-plan --gaps.
58
105
  </execution>
59
106
 
60
107
  <error_codes>
@@ -43,17 +43,19 @@ Arguments: $ARGUMENTS
43
43
  - `--auto-yes` — accept all routing recommendations without prompting
44
44
 
45
45
  **Storage written:**
46
- - `.workflow/phases/{NN}-{slug}/retrospective.md` human-readable record
47
- - `.workflow/phases/{NN}-{slug}/retrospective.json`structured record
48
- - `.workflow/specs/SPEC-retro-*.md`spec stubs (one per spec-routed insight)
46
+ - Retrospective output (resolve via `state.json.artifacts[]` `.workflow/scratch/` path):
47
+ - retrospective.mdhuman-readable record
48
+ - retrospective.jsonstructured record
49
+ - `.workflow/specs/{category-file}.md` — `<spec-entry>` entries appended to matching category files (one per spec-routed insight)
49
50
  - `.workflow/issues/issues.jsonl` — appended issue rows (`source: "retrospective"`)
50
51
  - `.workflow/learning/lessons.jsonl` — tips routed via `manage-learn tip` (formerly manage-memory-capture)
51
52
  - `.workflow/learning/lessons.jsonl` — append-only insight log
52
53
  - `.workflow/learning/learning-index.json` — searchable index
53
54
 
54
55
  **Storage read (never modified):**
55
- - `.workflow/phases/{NN}-{slug}/index.json`, `plan.json`, `verification.json`, `review.json`, `uat.md`
56
- - `.workflow/phases/{NN}-{slug}/.task/TASK-*.json`, `.summaries/TASK-*-summary.md`
56
+ - Phase artifacts (resolve via `state.json.artifacts[]` → scratch paths):
57
+ - index.json, plan.json, verification.json, review.json, uat.md
58
+ - .task/TASK-*.json, .summaries/TASK-*-summary.md
57
59
  - `.workflow/issues/issues.jsonl`, `.workflow/issues/issue-history.jsonl`
58
60
  - `.workflow/state.json`
59
61
  </context>
@@ -67,7 +69,7 @@ Follow `~/.maestro/workflows/retrospective.md` Stages 1–8 in order. Key invari
67
69
  4. **Reuse `manage-learn tip` for note routing** — do not duplicate the learning pipeline; invoke via `Skill({ skill: "manage-learn", args: "tip ..." })`.
68
70
  5. **Backward-compat with phase-transition** — append a one-line summary per insight to `.workflow/specs/learnings.md` if and only if that file already exists. Never create it.
69
71
  6. **Stable insight IDs** — `INS-{8 hex}` from `hash(phase_num + lens + title)` so re-runs do not duplicate.
70
- 7. **Archive before overwrite** — if existing `retrospective.{md,json}` are being replaced, move them to `{phase_dir}/.history/` with a timestamp suffix first.
72
+ 7. **Archive before overwrite** — if existing `retrospective.{md,json}` are being replaced, move them to `{artifact_dir}/.history/` with a timestamp suffix first.
71
73
  </execution>
72
74
 
73
75
  <error_codes>
@@ -92,7 +94,7 @@ Follow `~/.maestro/workflows/retrospective.md` Stages 1–8 in order. Key invari
92
94
  - [ ] `retrospective.md` written and human-readable (tweetable, metrics table, per-lens findings, insights, routing table)
93
95
  - [ ] Each insight has a stable `INS-{8hex}` id
94
96
  - [ ] If routing enabled (default): every recommendation either created an artifact or was explicitly skipped by user
95
- - [ ] Spec stubs (if any) written to `.workflow/specs/SPEC-retro-*.md` with proper frontmatter
97
+ - [ ] Spec entries (if any) appended as `<spec-entry>` to matching `.workflow/specs/{category-file}.md`
96
98
  - [ ] Issue rows (if any) match canonical issues.jsonl schema (status "open", full issue_history, all required fields)
97
99
  - [ ] Note tips (if any) created via `Skill({ skill: "manage-learn", args: "tip ..." })`
98
100
  - [ ] `lessons.jsonl` appended with one row per insight regardless of routing target
@@ -53,17 +53,49 @@ Phase: $ARGUMENTS (required — phase number or slug)
53
53
  - `--dimensions <list>` — Comma-separated subset of dimensions to review (overrides level defaults)
54
54
  - `--skip-specs` — Skip loading project specs as review context
55
55
 
56
- Context files resolved from `.workflow/phases/{NN}-{slug}/`:
57
- - index.json (phase metadata, execution results)
58
- - plan.json (task overview)
59
- - .task/TASK-{NNN}.json (task definitions with file lists)
60
- - .summaries/TASK-{NNN}-summary.md (execution results)
61
- - verification.json (if exists — incorporate verification gaps as review context)
56
+ **All context via state.json.artifacts[]:**
57
+
58
+ ```
59
+ related = artifacts.filter(a =>
60
+ a.phase === target_phase && a.milestone === current_milestone
61
+ ).sort_by(completed_at asc)
62
+ ```
63
+
64
+ Each artifact's type determines its outputs at `.workflow/{a.path}/`:
65
+ - **execute** → .summaries/, .task/, verification.json, plan.json (source of files to review)
66
+ - **review** → review.json (prior verdict, findings — for delta comparison)
67
+ - **debug** → understanding.md, evidence.ndjson (confirmed root causes)
68
+ - **test** → uat.md, .tests/ (user-observable gaps)
69
+
70
+ Extract conclusions from related artifacts that may affect this review. Pass as prior quality context to reviewer agents — avoid redundant work, focus on gaps and regressions.
71
+
72
+ **Output**: `REVIEW_DIR = .workflow/scratch/{YYYYMMDD}-review-P{N}-{slug}/` (P{N} = phase number, enables directory-level identification as state.json fallback)
62
73
  </context>
63
74
 
64
75
  <execution>
65
76
  Follow '~/.maestro/workflows/review.md' completely.
66
77
 
78
+ **Output writes to REVIEW_DIR** (not EXEC_DIR):
79
+ - `REVIEW_DIR/review.json` — findings, severity distribution, verdict
80
+
81
+ **Register artifact on completion:**
82
+ ```
83
+ Append to state.json.artifacts[]:
84
+ {
85
+ id: nextArtifactId(artifacts, "review"), // REV-001
86
+ type: "review",
87
+ milestone: current_milestone,
88
+ phase: target_phase,
89
+ scope: "phase",
90
+ path: "scratch/{YYYYMMDD}-review-P{N}-{slug}", // relative to .workflow/
91
+ status: "completed",
92
+ depends_on: exec_art.id, // or prior debug/review if re-review
93
+ harvested: false,
94
+ created_at: start_time,
95
+ completed_at: now()
96
+ }
97
+ ```
98
+
67
99
  **Report format on completion:**
68
100
 
69
101
  ```
@@ -87,7 +119,7 @@ Verdict: {PASS | WARN | BLOCK}
87
119
  Issues Created: {issue_count}
88
120
 
89
121
  Files:
90
- {phase_dir}/review.json
122
+ {REVIEW_DIR}/review.json
91
123
 
92
124
  Next steps:
93
125
  {verdict_based_routing}
@@ -47,5 +47,5 @@ Follow '~/.maestro/workflows/sync.md' completely.
47
47
  - [ ] Codebase docs refreshed for all affected components
48
48
  - [ ] doc-index.json reflects current file state
49
49
  - [ ] Changes tracked and logged
50
- - [ ] project-tech.json refreshed if dependency manifests changed
50
+ - [ ] project.md Tech Stack section refreshed if dependency manifests changed
51
51
  </success_criteria>
@@ -36,10 +36,11 @@ Phase: $ARGUMENTS (required -- phase number)
36
36
  - `--layer <unit|e2e|all>` -- Generate only specific test layer (default: all)
37
37
 
38
38
  Context files:
39
- - `.workflow/phases/{NN}-{slug}/verification.json` -- Nyquist gaps (MISSING/PARTIAL)
40
- - `.workflow/phases/{NN}-{slug}/validation.json` -- requirement-to-test mapping
41
- - `.workflow/phases/{NN}-{slug}/.tests/coverage-report.json` -- UAT coverage gaps
42
- - `.workflow/phases/{NN}-{slug}/.summaries/TASK-*.md` -- what was built
39
+ - Phase artifacts (resolve via `state.json.artifacts[]` scratch paths):
40
+ - verification.json -- Nyquist gaps (MISSING/PARTIAL)
41
+ - validation.json -- requirement-to-test mapping
42
+ - .tests/coverage-report.json -- UAT coverage gaps
43
+ - .summaries/TASK-*.md -- what was built
43
44
  </context>
44
45
 
45
46
  <execution>