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
@@ -36,23 +36,56 @@ Phase or task: $ARGUMENTS (optional)
36
36
  - `--smoke` -- Run cold-start smoke tests before UAT (basic sanity: app starts, routes respond, no crash)
37
37
  - `--auto-fix` -- After diagnosis, auto-trigger gap-fix loop instead of asking user
38
38
 
39
- Context files resolved from target directory:
40
- - verification.json (must_haves, gaps from maestro-verify)
41
- - validation.json (coverage, requirement mapping)
42
- - review.json (findings from quality-review, if exists)
43
- - index.json (success_criteria, execution results)
44
- - plan.json (task overview)
45
- - .summaries/TASK-*.md (execution summaries)
46
- - uat.md (existing session, if resuming)
39
+ **All context via state.json.artifacts[]:**
40
+
41
+ ```
42
+ related = artifacts.filter(a =>
43
+ a.phase === target_phase && a.milestone === current_milestone
44
+ ).sort_by(completed_at asc)
45
+ ```
46
+
47
+ Each artifact's type determines its outputs at `.workflow/{a.path}/`:
48
+ - **execute** → .summaries/, .task/, verification.json, plan.json (test target source)
49
+ - **verify** → verification.json (must_haves, gaps)
50
+ - **review** → review.json (findings become additional test scenarios)
51
+ - **debug** → understanding.md (confirmed root causes become regression tests)
52
+ - **test** → uat.md (existing session, resumable)
53
+
54
+ Extract conclusions from related artifacts that may affect this test session — review findings generate additional scenarios, debug root causes generate regression tests.
55
+
56
+ **Output**: `TEST_DIR = .workflow/scratch/{YYYYMMDD}-test-P{N}-{slug}/` (P{N} = phase number, enables directory-level identification as state.json fallback)
47
57
  </context>
48
58
 
49
59
  <execution>
50
60
  Follow '~/.maestro/workflows/test.md' completely.
51
61
 
52
- **Review findings integration (when review.json exists):**
53
- - Extract critical/high findings from review.json.findings_by_dimension as additional test scenarios
54
- - These review-derived scenarios are prioritized and marked `source: "review_finding"`
55
- - When review.json verdict is "BLOCK" and review-finding tests fail, auto-enter gap-fix loop without user confirmation (Step 12 auto-fix condition)
62
+ **Output writes to TEST_DIR** (`scratch/{YYYYMMDD}-test-P{N}-{slug}/`):
63
+ - uat.md, test-plan.json, .tests/test-results.json, .tests/coverage-report.json
64
+
65
+ **Review findings integration** (from related review artifacts):
66
+ - Extract critical/high findings as additional test scenarios, marked `source: "review_finding"`
67
+ - When review verdict is "BLOCK" and review-finding tests fail, auto-enter gap-fix loop
68
+
69
+ **Debug root cause integration** (from related debug artifacts):
70
+ - Generate regression test scenarios from confirmed root causes, marked `source: "debug_root_cause"`
71
+
72
+ **Register artifact on completion:**
73
+ ```
74
+ Append to state.json.artifacts[]:
75
+ {
76
+ id: nextArtifactId(artifacts, "test"), // TST-001
77
+ type: "test",
78
+ milestone: current_milestone,
79
+ phase: target_phase,
80
+ scope: "phase",
81
+ path: "scratch/{YYYYMMDD}-test-P{N}-{slug}",
82
+ status: issues == 0 ? "completed" : "failed",
83
+ depends_on: exec_art.id,
84
+ harvested: false,
85
+ created_at: start_time,
86
+ completed_at: now()
87
+ }
88
+ ```
56
89
 
57
90
  **Next-step routing on completion:**
58
91
  - All tests pass → `/maestro-phase-transition {phase}`
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: spec-remove
3
+ description: Remove a spec entry from a specs file by entry ID
4
+ argument-hint: "<entry-id>"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Edit
9
+ - Bash
10
+ - Glob
11
+ - Grep
12
+ - AskUserQuestion
13
+ ---
14
+ <purpose>
15
+ Remove a `<spec-entry>` from a specs file. Symmetric with `/spec-add`.
16
+ Uses `maestro wiki remove-entry` for atomic removal with index auto-update.
17
+ </purpose>
18
+
19
+ <required_reading>
20
+ @~/.maestro/workflows/specs-remove.md
21
+ </required_reading>
22
+
23
+ <context>
24
+ $ARGUMENTS -- expects `<entry-id>` (e.g., `spec-learnings-003`, `spec-coding-conventions-001`)
25
+
26
+ **Entry ID format**: `spec-{file-stem}-{NNN}` — the sub-node ID assigned by WikiIndexer when indexing `<spec-entry>` blocks.
27
+
28
+ **Discovery**: Use `maestro wiki list --type spec --json` or `/spec-load --keyword <term>` to find entry IDs.
29
+ </context>
30
+
31
+ <execution>
32
+ Follow '~/.maestro/workflows/specs-remove.md' completely.
33
+ </execution>
34
+
35
+ <error_codes>
36
+ | Code | Severity | Description | Stage |
37
+ |------|----------|-------------|-------|
38
+ | E001 | fatal | Entry ID is required -- usage: `/spec-remove <entry-id>` | parse_input |
39
+ | E002 | fatal | `.workflow/specs/` not initialized -- run `/spec-setup` first | validate |
40
+ | E003 | fatal | Entry ID not found in wiki index | lookup |
41
+ | E004 | fatal | Entry is not a spec sub-node (wrong type) | validate |
42
+ </error_codes>
43
+
44
+ <success_criteria>
45
+ - [ ] Entry ID parsed and validated
46
+ - [ ] Entry found in wiki index (type=spec, is sub-node)
47
+ - [ ] User confirmed removal (unless -y flag)
48
+ - [ ] Entry removed from container file via `maestro wiki remove-entry`
49
+ - [ ] Wiki index auto-updated
50
+ - [ ] Confirmation displayed with removed entry details
51
+ </success_criteria>
@@ -12,7 +12,7 @@ allowed-tools:
12
12
  <purpose>
13
13
  Initialize the project-level specs directory by scanning the codebase for conventions, patterns, and tech stack.
14
14
  Core files (coding, arch, learning) are always created. Optional files (quality, debug, test, review) are created only when relevant signals are detected.
15
- All output lands in `.workflow/specs/` and `.workflow/project-tech.json`.
15
+ All output lands in `.workflow/specs/`.
16
16
  </purpose>
17
17
 
18
18
  <required_reading>
@@ -20,7 +20,6 @@ All output lands in `.workflow/specs/` and `.workflow/project-tech.json`.
20
20
  </required_reading>
21
21
 
22
22
  <deferred_reading>
23
- - [project-tech.json](~/.maestro/templates/project-tech.json) — read when generating project-tech configuration
24
23
  </deferred_reading>
25
24
 
26
25
  <context>
@@ -47,7 +46,6 @@ Follow '~/.maestro/workflows/specs-setup.md' completely.
47
46
  - [ ] `.workflow/specs/` directory created
48
47
  - [ ] Core files always created: `coding-conventions.md`, `architecture-constraints.md`, `learnings.md`
49
48
  - [ ] Optional files created when detected: `quality-rules.md` (linter/CI), `test-conventions.md` (test framework), `debug-notes.md` (on demand), `review-standards.md` (on demand)
50
- - [ ] `project-tech.json` written with detected tech stack
51
49
  - [ ] Report displayed with summary and next steps
52
50
  </success_criteria>
53
51
  </output>
@@ -11,6 +11,10 @@ allowed-tools:
11
11
  - Agent
12
12
  - AskUserQuestion
13
13
  ---
14
+ <required_reading>
15
+ @~/.maestro/workflows/wiki-connect.md
16
+ </required_reading>
17
+
14
18
  <purpose>
15
19
  Knowledge graph link discovery and health improvement. Analyzes the wiki index to find orphaned entries, missing connections, and transitive link gaps, then suggests or auto-applies new `related` links to improve graph connectivity.
16
20
 
@@ -21,7 +25,7 @@ Leverages maestro's unique wiki graph infrastructure (BM25 search, backlinks, he
21
25
  Arguments: $ARGUMENTS
22
26
 
23
27
  **Flags:**
24
- - `--scope <type>` — Limit analysis to a wiki type (spec, phase, memory, note, lesson, issue). Default: all types.
28
+ - `--scope <type>` — Limit analysis to a wiki type (spec, memory, note, lesson, issue). Default: all types.
25
29
  - `--min-similarity N` — Minimum similarity score threshold 0.0-1.0 (default: 0.3)
26
30
  - `--fix` — Auto-apply the top suggestions by updating wiki entries with new `related` links
27
31
  - `--max N` — Maximum number of suggestions to generate (default: 20)
@@ -66,13 +70,13 @@ For each entry, compute potential connections:
66
70
  For each orphan entry, search for related entries using:
67
71
  - `maestro wiki search "<orphan title>"` — BM25 match by title
68
72
  - Tag overlap: entries sharing 2+ tags with the orphan
69
- - Same phase: entries with matching `phaseRef`
73
+ - Same category: entries with matching `category`
70
74
 
71
75
  **2b. Missing Bidirectional Links:**
72
76
  For entries that have forward links but no corresponding backlink (A links to B, but B doesn't link to A), suggest adding the reverse link.
73
77
 
74
78
  **2c. Transitive Closure:**
75
- If A → B and B → C, but A has no link to C, and A and C share tags or are in the same phase, suggest A → C.
79
+ If A → B and B → C, but A has no link to C, and A and C share tags or category, suggest A → C.
76
80
 
77
81
  **2d. Type Bridge:**
78
82
  Entries of different types that reference the same concept (e.g., a `spec-auth` and a `lesson-auth-gotcha`) but aren't linked.
@@ -83,13 +87,13 @@ For each candidate connection (source → target), compute similarity:
83
87
  ```
84
88
  score = 0.4 × tag_overlap_ratio
85
89
  + 0.3 × title_bm25_similarity
86
- + 0.2 × same_phase_bonus
90
+ + 0.2 × same_category_bonus
87
91
  + 0.1 × type_bridge_bonus
88
92
  ```
89
93
 
90
94
  - `tag_overlap_ratio`: shared_tags / max(source_tags, target_tags)
91
95
  - `title_bm25_similarity`: normalized BM25 score from wiki search
92
- - `same_phase_bonus`: 1.0 if same phaseRef, else 0.0
96
+ - `same_category_bonus`: 1.0 if same category, else 0.0
93
97
  - `type_bridge_bonus`: 1.0 if different types, else 0.0
94
98
 
95
99
  Filter by `--min-similarity`, rank descending, limit to `--max`.
@@ -17,6 +17,10 @@ Knowledge synthesis command that generates actionable digests from the wiki know
17
17
  Unlike `maestro wiki list` which shows raw entries, this command synthesizes and interprets the knowledge base, producing a curated summary with gap analysis and recommended next actions.
18
18
  </purpose>
19
19
 
20
+ <required_reading>
21
+ @~/.maestro/workflows/wiki-digest.md
22
+ </required_reading>
23
+
20
24
  <deferred_reading>
21
25
  - @~/.maestro/workflows/issue.md (issues.jsonl canonical schema for `--create-issues` routing)
22
26
  </deferred_reading>
@@ -27,7 +31,7 @@ Arguments: $ARGUMENTS
27
31
  **Scope resolution (auto-detected):**
28
32
  - `<topic>` — Search wiki for entries matching the topic via `maestro wiki search`
29
33
  - `--recent N` — Entries updated in the last N days
30
- - `--type <type>` — Filter by wiki type (spec, phase, memory, note, lesson, issue)
34
+ - `--type <type>` — Filter by wiki type (spec, memory, note, lesson, issue)
31
35
  - No arguments — digest of the entire wiki
32
36
 
33
37
  **Flags:**
@@ -101,7 +105,6 @@ Build a matrix showing knowledge density by type × theme:
101
105
  ```
102
106
  Theme 1 Theme 2 Theme 3 Theme 4 Theme 5
103
107
  spec ███░░ ░░░░░ █████ ██░░░ ░░░░░
104
- phase ████░ ███░░ ░░░░░ █████ ██░░░
105
108
  memory ░░░░░ ████░ ██░░░ ░░░░░ ███░░
106
109
  lesson █░░░░ ██░░░ ████░ █░░░░ ░░░░░
107
110
  issue ██░░░ ░░░░░ █░░░░ ███░░ ░░░░░
@@ -166,7 +169,7 @@ For each knowledge gap identified in Stage 5:
166
169
  1. Write digest file
167
170
  2. Append meta-insights to `lessons.jsonl`:
168
171
  - `source: "wiki-digest"`, `category: "technique"`
169
- - e.g., "Auth knowledge is concentrated in specs but lacks lessons", "Phase 2 has no decision entries"
172
+ - e.g., "Auth knowledge is concentrated in specs but lacks lessons", "Security category has no decision entries"
170
173
  3. Update `learning-index.json`
171
174
  4. Display summary with key findings
172
175
 
@@ -63,7 +63,7 @@ After a barrier skill completes **in its spawned sub-agent**, coordinator reads
63
63
  | Skill | Artifacts to Read | Context Updates |
64
64
  |-------|------------------|-----------------|
65
65
  | `maestro-analyze` | `.workflow/.csv-wave/*/context.md`, `state.json` | `gaps`, `phase`, `analysis_dir` |
66
- | `maestro-plan` | `{phase_dir}/plan.json`, `{phase_dir}/.task/TASK-*.json` | `plan_dir`, `task_count`, `wave_count` |
66
+ | `maestro-plan` | `{artifact_dir}/plan.json`, `{artifact_dir}/.task/TASK-*.json` | `plan_dir`, `task_count`, `wave_count` |
67
67
  | `maestro-brainstorm` | `.workflow/.csv-wave/*/.brainstorming/` | `brainstorm_dir`, `features` |
68
68
  | `maestro-spec-generate` | `.workflow/.csv-wave/*/specs/` | `spec_session_id` |
69
69
  | `maestro-execute` | `.workflow/.csv-wave/*/results.csv` | `exec_status`, `completed_tasks`, `failed_tasks` |
@@ -111,7 +111,7 @@ function analyzeBarrierArtifacts(step, result, ctx) {
111
111
  **`--continue`**: Glob `.workflow/.maestro-coordinate/MCC-*/state.json` sorted desc; load most recent; resume from first pending wave.
112
112
 
113
113
  **Fresh mode**:
114
- 1. Read `.workflow/state.json` for project context (`current_phase`, `workflow_name`)
114
+ 1. Read `.workflow/state.json` for project context (derive current phase from artifact registry, `workflow_name`)
115
115
  2. If `--chain` given, use directly
116
116
  3. Otherwise classify intent via keyword heuristics (see chain_map)
117
117
  4. No match + not AUTO_YES → one clarifying question via `AskUserQuestion`
@@ -61,7 +61,7 @@ Wave-based multi-dimensional analysis using `spawn_agents_on_csv`. Diamond topol
61
61
  $maestro-analyze "3"
62
62
  $maestro-analyze -y "microservices vs monolith"
63
63
  $maestro-analyze -c 6 "3 -q"
64
- $maestro-analyze --continue "analyze-microservices-20260318"
64
+ $maestro-analyze --continue "20260318-analyze-microservices"
65
65
  ```
66
66
 
67
67
  **Flags**:
@@ -132,7 +132,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
132
132
  ### Session Structure
133
133
 
134
134
  ```
135
- .workflow/.csv-wave/analyze-{slug}-{date}/
135
+ .workflow/.csv-wave/{YYYYMMDD}-analyze-{slug}/
136
136
  +-- tasks.csv
137
137
  +-- results.csv
138
138
  +-- discoveries.ndjson
@@ -219,9 +219,9 @@ if (GAPS_MODE) {
219
219
  }
220
220
 
221
221
  const dateStr = getUtc8ISOString().substring(0, 10)
222
- const sessionId = `analyze-${slug}-${dateStr}`
222
+ const sessionId = `${dateStr}-analyze-${slug}`
223
223
  const sessionFolder = `.workflow/.csv-wave/${sessionId}`
224
- const scratchDir = `.workflow/scratch/analyze-${slug}-${dateStr}`
224
+ const scratchDir = `.workflow/scratch/${dateStr}-analyze-${slug}`
225
225
 
226
226
  Bash(`mkdir -p ${sessionFolder}`)
227
227
  Bash(`mkdir -p ${scratchDir}`)
@@ -60,7 +60,7 @@ Wave-based multi-role brainstorming using `spawn_agents_on_csv`. Diamond topolog
60
60
  $maestro-brainstorm "Build real-time collaboration platform"
61
61
  $maestro-brainstorm -y "Build real-time collaboration platform"
62
62
  $maestro-brainstorm -c 6 "Build real-time collaboration platform --count 5"
63
- $maestro-brainstorm --continue "brainstorm-collab-20260318"
63
+ $maestro-brainstorm --continue "20260318-brainstorm-collab"
64
64
  ```
65
65
 
66
66
  **Flags**:
@@ -125,7 +125,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
125
125
  ### Session Structure
126
126
 
127
127
  ```
128
- .workflow/.csv-wave/brainstorm-{slug}-{date}/
128
+ .workflow/.csv-wave/{YYYYMMDD}-brainstorm-{slug}/
129
129
  +-- tasks.csv
130
130
  +-- results.csv
131
131
  +-- discoveries.ndjson
@@ -184,7 +184,7 @@ const topicArg = $ARGUMENTS
184
184
 
185
185
  const slug = topicArg.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
186
186
  const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
187
- const sessionId = `brainstorm-${slug}-${dateStr}`
187
+ const sessionId = `${dateStr}-brainstorm-${slug}`
188
188
  const sessionFolder = `.workflow/.csv-wave/${sessionId}`
189
189
 
190
190
  Bash(`mkdir -p ${sessionFolder}/.brainstorming`)
@@ -196,7 +196,7 @@ Bash(`mkdir -p ${sessionFolder}/.brainstorming`)
196
196
 
197
197
  **Decomposition Rules**:
198
198
 
199
- 1. **Mode detection**: Number = phase mode (resolve `.workflow/phases/{NN}-{slug}/`), text = scratch mode
199
+ 1. **Mode detection**: Number = phase mode (resolve via state.json artifact registry to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`), text = scratch mode
200
200
  2. **Project specs loading**: Read `.workflow/specs/` for architecture-aware analysis context
201
201
  3. **Role selection**:
202
202
 
@@ -106,7 +106,7 @@ const AUTO_FLAG_MAP = {
106
106
 
107
107
  function assembleArgs(step) {
108
108
  let a = (step.args || '')
109
- .replace(/\{phase\}/g, context.current_phase || '')
109
+ .replace(/\{phase\}/g, context.phase || '')
110
110
  .replace(/\{description\}/g, context.user_intent || '')
111
111
  .replace(/\{issue_id\}/g, context.issue_id || '')
112
112
  .replace(/\{spec_session_id\}/g, context.spec_session_id || '')
@@ -145,7 +145,7 @@ Bash({
145
145
  ```javascript
146
146
  // Context propagation from output
147
147
  const phaseMatch = output.match(/PHASE:\s*(\d+)/m);
148
- if (phaseMatch) context.current_phase = phaseMatch[1];
148
+ if (phaseMatch) context.phase = phaseMatch[1]; // derived from output, not stored in state
149
149
  const specMatch = output.match(/SPEC-[\w-]+/);
150
150
  if (specMatch) context.spec_session_id = specMatch[0];
151
151
  const scratchMatch = output.match(/scratch_dir:\s*(.+)/m);
@@ -60,7 +60,7 @@ $maestro-execute "3"
60
60
  $maestro-execute -c 4 "3 --auto-commit"
61
61
  $maestro-execute -y "3 --method cli"
62
62
  $maestro-execute "3 --dir .workflow/scratch/quick-fix"
63
- $maestro-execute --continue "execute-phase3-20260318"
63
+ $maestro-execute --continue "20260318-execute-P3-phase3"
64
64
  ```
65
65
 
66
66
  **Flags**:
@@ -130,7 +130,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column populated fr
130
130
  ### Session Structure
131
131
 
132
132
  ```
133
- .workflow/.csv-wave/execute-{phase}-{date}/
133
+ .workflow/.csv-wave/{YYYYMMDD}-execute-P{N}-{slug}/
134
134
  +-- tasks.csv
135
135
  +-- results.csv
136
136
  +-- discoveries.ndjson
@@ -181,8 +181,8 @@ const phaseArg = $ARGUMENTS
181
181
 
182
182
  const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
183
183
  const sessionId = scratchDir
184
- ? `execute-scratch-${dateStr}`
185
- : `execute-phase${phaseArg}-${dateStr}`
184
+ ? `${dateStr}-execute-scratch`
185
+ : `${dateStr}-execute-P${phaseArg}-${phaseSlug}`
186
186
  const sessionFolder = `.workflow/.csv-wave/${sessionId}`
187
187
 
188
188
  Bash(`mkdir -p ${sessionFolder}`)
@@ -325,9 +325,19 @@ If a task is blocked/failed and other tasks in later waves depend on it:
325
325
  5. **Extract incremental learnings**:
326
326
  - Read all `.summaries/` from PLAN_DIR
327
327
  - Extract strategy adjustments, patterns, pitfalls
328
- - Append to `.workflow/specs/learnings.md`
328
+ - Check existing entries via `maestro spec load --category learning` (dedup)
329
+ - Append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format (category=`learning`, auto-extract keywords, date=today, source=`execute`)
329
330
  - Mark artifact `harvested: true` in state.json
330
331
 
332
+ 5b. **Post-task Knowledge Inquiry** (after each task completes):
333
+ - **Execution deviation**: If task summary mentions approach change, dependency swap, or plan deviation:
334
+ → Ask: "TASK-{NNN} deviated from the plan. Should this decision be recorded as an architecture constraint? (`/spec-add arch`)"
335
+ - **Retry success**: If task required ≥2 retries before completion:
336
+ → Ask: "TASK-{NNN} succeeded after {N} retries. Should this fix pattern be documented? (`/spec-add debug`)"
337
+ - **Implicit knowledge**: If task summary contains design rationale ("chose X because", "rejected Y due to"):
338
+ → Ask: "Design decision detected. Should it be recorded as a learning? (`/spec-add learning`)"
339
+ - If user confirms, append `<spec-entry>` to matching category file via `spec-add` mechanism
340
+
331
341
  6. **Generate context.md**:
332
342
 
333
343
  ```markdown
@@ -1,68 +1,98 @@
1
- ---
2
- name: maestro-fork
3
- description: Create git worktree for milestone-level parallel development, or sync existing worktree with main. Copies .workflow/ context into worktree since it is gitignored.
4
- argument-hint: "-m <milestone-number> [--base <branch>] [--sync]"
5
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
- ---
7
-
8
- <purpose>
9
- Create a git worktree for an entire milestone, enabling inter-milestone parallel development.
10
- All phases within the milestone are owned by the worktree. Since `.workflow/` is gitignored,
11
- this command explicitly copies project context and milestone phase directories into the worktree.
12
-
13
- Also supports `--sync` mode to pull latest main into an active worktree.
14
- </purpose>
15
-
16
- <required_reading>
17
- @~/.maestro/workflows/fork.md
18
- </required_reading>
19
-
20
- <context>
21
- $ARGUMENTS — milestone number and optional flags.
22
-
23
- **Modes:**
24
- | Mode | Trigger | Behavior |
25
- |------|---------|----------|
26
- | Fork | `-m 2` or `2` | Create worktree for milestone 2 |
27
- | Sync | `-m 2 --sync` | Sync existing worktree with main |
28
-
29
- **Flags:**
30
- - `-m <N>` or bare `<N>`: Milestone number
31
- - `--base <branch>`: Override base branch (default: HEAD)
32
- - `--sync`: Pull main into existing worktree, re-copy shared artifacts
33
-
34
- **Worktree layout:** `.worktrees/m{N}-{slug}/` with scoped `.workflow/`
35
- </context>
36
-
37
- <execution>
38
- Follow '~/.maestro/workflows/fork.md' completely.
39
-
40
- **Next steps:**
41
- - Fork `cd {wt.path} && $maestro-analyze {first_phase}`
42
- - Sync resume work in worktree
43
- </execution>
44
-
45
- <error_codes>
46
- | Code | Severity | Condition | Recovery |
47
- |------|----------|-----------|----------|
48
- | E001 | error | Project not initialized | Run maestro-init |
49
- | E002 | error | No roadmap found | Run maestro-roadmap |
50
- | E003 | error | Running inside a worktree | Run from main worktree |
51
- | E004 | error | No milestone number | Provide `-m <N>` |
52
- | E006 | error | Milestone out of range | Check available milestones |
53
- | E008 | error | Milestone already has active worktree | Merge or cleanup first |
54
- </error_codes>
55
-
56
- <success_criteria>
57
- Fork mode:
58
- - [ ] Milestone phases identified from roadmap
59
- - [ ] Git worktree created with branch `milestone/{slug}`
60
- - [ ] `.workflow/` context copied (all milestone + dependency phases)
61
- - [ ] `worktree-scope.json` written with owned phase numbers
62
- - [ ] `worktrees.json` registry updated in main worktree
63
-
64
- Sync mode:
65
- - [ ] Git merge main into worktree branch
66
- - [ ] Shared artifacts re-copied
67
- - [ ] Conflicts reported if any
68
- </success_criteria>
1
+ ---
2
+ name: maestro-fork
3
+ description: Create git worktree for milestone-level parallel development, or sync existing worktree with main. Copies .workflow/ context and scratch artifacts into worktree since .workflow/ is gitignored.
4
+ argument-hint: "-m <milestone-number> [--base <branch>] [--sync]"
5
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
+ ---
7
+
8
+ <purpose>
9
+ Create a git worktree for an entire milestone, enabling inter-milestone parallel development.
10
+ The worktree scope is milestone-level all scratch artifacts for that milestone are owned by
11
+ the worktree. Since `.workflow/` is gitignored, this command explicitly copies project context
12
+ and milestone scratch artifacts into the worktree.
13
+
14
+ Also supports `--sync` mode to pull latest main into an active worktree.
15
+ </purpose>
16
+
17
+ <required_reading>
18
+ @~/.maestro/workflows/fork.md
19
+ </required_reading>
20
+
21
+ <context>
22
+ $ARGUMENTS — milestone number and optional flags.
23
+
24
+ **Modes:**
25
+ | Mode | Trigger | Behavior |
26
+ |------|---------|----------|
27
+ | Fork | `-m 2` or `2` | Create worktree for milestone 2 |
28
+ | Sync | `-m 2 --sync` | Sync existing worktree with main |
29
+
30
+ **Flags:**
31
+ - `-m <N>` or bare `<N>`: Milestone number
32
+ - `--base <branch>`: Override base branch (default: HEAD)
33
+ - `--sync`: Pull main into existing worktree, re-copy shared artifacts
34
+
35
+ **Worktree layout:**
36
+ ```
37
+ .worktrees/m{N}-{slug}/
38
+ ├── .workflow/
39
+ │ ├── worktree-scope.json (milestone scope marker)
40
+ │ ├── state.json (scoped — this milestone's artifacts only)
41
+ │ ├── project.md, roadmap.md, config.json, specs/ (read-only copies)
42
+ │ └── scratch/ (milestone's existing + new artifacts)
43
+ └── <source code>
44
+ ```
45
+
46
+ **Artifact scoping:**
47
+ Fork copies scratch artifacts belonging to the target milestone (filtered from `state.json.artifacts[]` where `milestone == target`). New work creates scratch artifacts normally, registered in the worktree's local `state.json`.
48
+ </context>
49
+
50
+ <execution>
51
+ Follow '~/.maestro/workflows/fork.md' completely.
52
+
53
+ **Fork flow:**
54
+ 1. Validate: initialized, roadmap exists, not inside worktree, milestone not forked
55
+ 2. Resolve milestone: `state.json.milestones[N-1]`
56
+ 3. Create worktree: `git worktree add -b milestone/{slug} .worktrees/m{N}-{slug} HEAD`
57
+ 4. Copy `.workflow/`: shared files + milestone scratch artifacts
58
+ 5. Write `worktree-scope.json` with milestone scope
59
+ 6. Write scoped `state.json` (this milestone's artifacts only)
60
+ 7. Update main: `worktrees.json` registry, mark milestone `"forked"`
61
+
62
+ **Sync flow:**
63
+ 1. Find worktree from `worktrees.json`
64
+ 2. `cd worktree && git merge main`
65
+ 3. Re-copy shared files (project.md, roadmap.md, config.json, specs/)
66
+
67
+ **Next steps:**
68
+ - Fork → `cd {wt.path} && $maestro-analyze`
69
+ - Sync → resume work in worktree
70
+ </execution>
71
+
72
+ <error_codes>
73
+ | Code | Severity | Condition | Recovery |
74
+ |------|----------|-----------|----------|
75
+ | E001 | error | Project not initialized | Run maestro-init |
76
+ | E002 | error | No roadmap found | Run maestro-roadmap |
77
+ | E003 | error | Running inside a worktree | Run from main worktree |
78
+ | E004 | error | No milestone number | Provide `-m <N>` |
79
+ | E006 | error | Milestone out of range | Check available milestones |
80
+ | E008 | error | Milestone already has active worktree | Merge or cleanup first |
81
+ </error_codes>
82
+
83
+ <success_criteria>
84
+ Fork mode:
85
+ - [ ] Milestone resolved from state.json.milestones[]
86
+ - [ ] Git worktree created with branch `milestone/{slug}`
87
+ - [ ] Shared `.workflow/` files copied (project.md, roadmap.md, config.json, specs/)
88
+ - [ ] Milestone scratch artifacts copied (filtered from artifact registry)
89
+ - [ ] `worktree-scope.json` written with milestone scope
90
+ - [ ] Scoped `state.json` written (this milestone's artifacts only)
91
+ - [ ] `worktrees.json` registry updated in main worktree
92
+ - [ ] Milestone marked `"forked"` in main state.json
93
+
94
+ Sync mode:
95
+ - [ ] Git merge main into worktree branch
96
+ - [ ] Shared artifacts re-copied
97
+ - [ ] Conflicts reported if any
98
+ </success_criteria>
@@ -16,7 +16,7 @@ When `--auto`: After config questions, run research without further interaction.
16
16
  ```bash
17
17
  $maestro-init ""
18
18
  $maestro-init "--auto"
19
- $maestro-init "--from-brainstorm brainstorm-auth-20260318"
19
+ $maestro-init "--from-brainstorm 20260318-brainstorm-auth"
20
20
  ```
21
21
 
22
22
  **Flags**:
@@ -87,7 +87,7 @@ Read the following templates:
87
87
  ### Step 5: Create .workflow/ Structure
88
88
 
89
89
  ```bash
90
- mkdir -p .workflow/specs .workflow/phases .workflow/scratch .workflow/codebase
90
+ mkdir -p .workflow/specs .workflow/scratch .workflow/codebase
91
91
  ```
92
92
 
93
93
  ### Step 6: Write project.md
@@ -103,9 +103,10 @@ Write to `.workflow/project.md`.
103
103
  ### Step 7: Write state.json
104
104
 
105
105
  Initialize state from template:
106
- - `current_phase`: null
107
106
  - `current_milestone`: null
107
+ - `current_task_id`: null
108
108
  - `status`: "initialized"
109
+ - `artifacts`: []
109
110
 
110
111
  Write to `.workflow/state.json`.
111
112
 
@@ -122,7 +123,7 @@ Write to `.workflow/config.json`.
122
123
 
123
124
  Create convention files in `.workflow/specs/`:
124
125
  - `conventions.md` — detected or specified coding conventions
125
- - `learnings.md` — empty, populated during phase transitions
126
+ - `learnings.md` — empty, populated during execute summaries extraction
126
127
 
127
128
  ### Step 10: Completion Report
128
129