maestro-flow 0.3.14 → 0.3.16

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 (392) hide show
  1. package/.claude/commands/maestro-amend.md +300 -0
  2. package/.claude/commands/maestro-analyze.md +1 -49
  3. package/.claude/commands/maestro-composer.md +354 -0
  4. package/.claude/commands/maestro-execute.md +2 -56
  5. package/.claude/commands/maestro-fork.md +3 -50
  6. package/.claude/commands/maestro-merge.md +2 -26
  7. package/.claude/commands/maestro-milestone-audit.md +1 -5
  8. package/.claude/commands/maestro-milestone-complete.md +1 -7
  9. package/.claude/commands/maestro-plan.md +6 -127
  10. package/.claude/commands/maestro-player.md +404 -0
  11. package/.claude/commands/maestro-roadmap.md +3 -101
  12. package/.claude/commands/maestro-spec-generate.md +1 -25
  13. package/.claude/commands/maestro-ui-design.md +14 -73
  14. package/.claude/commands/maestro-verify.md +1 -32
  15. package/.claude/commands/maestro.md +13 -30
  16. package/.claude/commands/manage-harvest.md +7 -44
  17. package/.claude/commands/manage-knowhow-capture.md +193 -0
  18. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  19. package/.claude/commands/manage-learn.md +3 -28
  20. package/.claude/commands/manage-status.md +1 -20
  21. package/.claude/commands/manage-wiki.md +1 -1
  22. package/.claude/commands/quality-business-test.md +1 -1
  23. package/.claude/commands/quality-debug.md +3 -18
  24. package/.claude/commands/quality-integration-test.md +3 -23
  25. package/.claude/commands/quality-retrospective.md +1 -28
  26. package/.claude/commands/quality-review.md +3 -52
  27. package/.claude/commands/quality-test-gen.md +1 -10
  28. package/.claude/commands/quality-test.md +3 -25
  29. package/.claude/commands/spec-add.md +1 -21
  30. package/.claude/commands/spec-load.md +1 -16
  31. package/.claude/commands/wiki-connect.md +2 -112
  32. package/.claude/commands/wiki-digest.md +2 -141
  33. package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
  34. package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
  35. package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
  36. package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
  37. package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
  38. package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
  39. package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
  40. package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
  41. package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
  42. package/.claude/skills/workflow-skill-designer/SKILL.md +496 -0
  43. package/.claude/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
  44. package/.claude/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
  45. package/.claude/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
  46. package/.claude/skills/workflow-skill-designer/phases/04-validation.md +471 -0
  47. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  48. package/.codex/skills/maestro/SKILL.md +60 -146
  49. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  50. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  51. package/.codex/skills/maestro-composer/SKILL.md +213 -0
  52. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  53. package/.codex/skills/maestro-init/SKILL.md +7 -51
  54. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  55. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  56. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  57. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  58. package/.codex/skills/maestro-plan/SKILL.md +42 -166
  59. package/.codex/skills/maestro-player/SKILL.md +323 -0
  60. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  61. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  62. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  63. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  64. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  65. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  66. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  67. package/.codex/skills/manage-issue/SKILL.md +1 -6
  68. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  69. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  70. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  71. package/.codex/skills/manage-learn/SKILL.md +17 -71
  72. package/.codex/skills/manage-status/SKILL.md +4 -35
  73. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  74. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  75. package/.codex/skills/quality-debug/SKILL.md +41 -133
  76. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  77. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  78. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  79. package/.codex/skills/quality-review/SKILL.md +30 -65
  80. package/.codex/skills/quality-sync/SKILL.md +2 -11
  81. package/.codex/skills/quality-test/SKILL.md +4 -45
  82. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  83. package/.codex/skills/spec-add/SKILL.md +2 -9
  84. package/.codex/skills/spec-load/SKILL.md +4 -14
  85. package/.codex/skills/spec-map/SKILL.md +4 -37
  86. package/.codex/skills/spec-remove/SKILL.md +3 -35
  87. package/.codex/skills/spec-setup/SKILL.md +2 -19
  88. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  89. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  90. package/.codex/skills/team-executor/SKILL.md +7 -66
  91. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  92. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  93. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  94. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  95. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  96. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  97. package/.codex/skills/team-review/SKILL.md +12 -86
  98. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  99. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  100. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  101. package/.codex/skills/team-testing/SKILL.md +14 -99
  102. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  103. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  104. package/README.md +6 -0
  105. package/README.zh-CN.md +6 -0
  106. package/chains/_intent-map.json +7 -7
  107. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  108. package/chains/singles/{memory.json → knowhow.json} +6 -6
  109. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  110. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  111. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  112. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  113. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  114. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  115. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  116. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  117. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  118. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  119. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  120. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  121. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  122. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  123. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  124. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  125. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  126. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  127. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  128. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  129. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  130. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  131. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  132. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  133. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  134. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  135. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  136. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  137. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  138. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  139. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  140. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  141. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  142. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  143. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  144. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  145. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  146. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  147. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  148. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  149. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  150. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  151. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  152. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  153. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  154. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  155. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  156. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  157. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  158. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  159. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  160. package/dashboard/dist/index.html +2 -2
  161. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  162. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  163. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  164. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  165. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  166. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  167. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  168. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  169. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  170. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  171. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  172. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  173. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  174. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  175. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  176. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  200. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  201. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  202. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  203. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  204. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  205. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  206. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  207. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  208. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  209. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  210. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  211. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  212. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  213. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  214. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  215. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  218. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  219. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  221. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  222. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  223. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  224. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  226. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  227. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  228. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  229. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  230. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  231. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  232. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  233. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  234. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  235. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  236. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  237. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  238. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  239. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  240. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  241. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  242. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  243. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  244. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  245. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  246. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  247. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  248. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  249. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  250. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  251. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  252. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  253. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  254. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  255. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  256. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  257. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  258. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  259. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  260. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  261. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  262. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  263. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  264. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  265. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  266. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  267. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  268. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  269. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  270. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  271. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  272. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  273. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  274. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  275. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  276. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  277. package/dist/shared/agent-types.d.ts +2 -0
  278. package/dist/shared/agent-types.d.ts.map +1 -1
  279. package/dist/src/cli.js +2 -2
  280. package/dist/src/cli.js.map +1 -1
  281. package/dist/src/commands/delegate.d.ts.map +1 -1
  282. package/dist/src/commands/delegate.js +11 -8
  283. package/dist/src/commands/delegate.js.map +1 -1
  284. package/dist/src/commands/install-backend.d.ts +1 -1
  285. package/dist/src/commands/install-backend.d.ts.map +1 -1
  286. package/dist/src/commands/install-backend.js +1 -1
  287. package/dist/src/commands/install-backend.js.map +1 -1
  288. package/dist/src/commands/knowhow.d.ts +10 -0
  289. package/dist/src/commands/knowhow.d.ts.map +1 -0
  290. package/dist/src/commands/knowhow.js +217 -0
  291. package/dist/src/commands/knowhow.js.map +1 -0
  292. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  293. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  294. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  295. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  296. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  297. package/dist/src/commands/overlay-ui/index.js +70 -44
  298. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  299. package/dist/src/commands/overlay.d.ts.map +1 -1
  300. package/dist/src/commands/overlay.js +4 -3
  301. package/dist/src/commands/overlay.js.map +1 -1
  302. package/dist/src/core/overlay/applier.d.ts +1 -1
  303. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  304. package/dist/src/core/overlay/applier.js +40 -13
  305. package/dist/src/core/overlay/applier.js.map +1 -1
  306. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  307. package/dist/src/core/overlay/loader.js +6 -0
  308. package/dist/src/core/overlay/loader.js.map +1 -1
  309. package/dist/src/core/overlay/types.d.ts +5 -1
  310. package/dist/src/core/overlay/types.d.ts.map +1 -1
  311. package/dist/src/core/overlay/types.js +1 -1
  312. package/dist/src/core/overlay/types.js.map +1 -1
  313. package/dist/src/hooks/context-monitor.js +1 -1
  314. package/dist/src/hooks/context-monitor.js.map +1 -1
  315. package/dist/src/hooks/skill-context.js +1 -1
  316. package/dist/src/hooks/skill-context.js.map +1 -1
  317. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  318. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  319. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  320. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  321. package/dist/src/tools/index.js +2 -2
  322. package/dist/src/tools/index.js.map +1 -1
  323. package/dist/src/tools/store-knowhow.d.ts +21 -0
  324. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  325. package/dist/src/tools/store-knowhow.js +295 -0
  326. package/dist/src/tools/store-knowhow.js.map +1 -0
  327. package/package.json +1 -1
  328. package/shared/agent-types.ts +2 -0
  329. package/templates/workflows/specs/node-catalog.md +170 -0
  330. package/templates/workflows/specs/template-schema.md +157 -0
  331. package/workflows/analyze.md +61 -185
  332. package/workflows/brainstorm.md +3 -23
  333. package/workflows/codebase-rebuild.md +79 -191
  334. package/workflows/codebase-refresh.md +26 -124
  335. package/workflows/debug.md +21 -141
  336. package/workflows/execute.md +183 -350
  337. package/workflows/fork.md +72 -230
  338. package/workflows/harvest.md +12 -79
  339. package/workflows/init.md +3 -17
  340. package/workflows/integration-test.md +21 -190
  341. package/workflows/issue-analyze.md +35 -153
  342. package/workflows/issue-discover.md +88 -263
  343. package/workflows/issue-execute.md +29 -208
  344. package/workflows/issue-plan.md +33 -154
  345. package/workflows/issue.md +44 -202
  346. package/workflows/knowhow.md +374 -0
  347. package/workflows/learn.md +30 -177
  348. package/workflows/maestro-coordinate.codex.md +77 -362
  349. package/workflows/maestro-link-coordinate.md +12 -61
  350. package/workflows/maestro.codex.md +124 -457
  351. package/workflows/maestro.md +562 -976
  352. package/workflows/map.md +16 -53
  353. package/workflows/merge.md +42 -197
  354. package/workflows/milestone-audit.md +5 -43
  355. package/workflows/milestone-complete.md +11 -60
  356. package/workflows/plan.md +176 -387
  357. package/workflows/quick.md +25 -174
  358. package/workflows/refactor.md +28 -221
  359. package/workflows/retrospective.md +104 -443
  360. package/workflows/review.md +87 -299
  361. package/workflows/roadmap.md +117 -97
  362. package/workflows/spec-generate.md +22 -118
  363. package/workflows/specs-add.md +5 -25
  364. package/workflows/specs-load.md +1 -5
  365. package/workflows/specs-remove.md +0 -11
  366. package/workflows/specs-setup.md +11 -47
  367. package/workflows/status.md +58 -200
  368. package/workflows/sync.md +28 -141
  369. package/workflows/test-gen.md +23 -100
  370. package/workflows/test.md +15 -125
  371. package/workflows/ui-design.md +139 -465
  372. package/workflows/ui-style.md +36 -228
  373. package/workflows/verify.md +52 -273
  374. package/workflows/wiki-connect.md +9 -46
  375. package/workflows/wiki-digest.md +7 -50
  376. package/workflows/wiki-manage.md +11 -108
  377. package/.claude/commands/maestro-coordinate.md +0 -63
  378. package/.claude/commands/manage-memory-capture.md +0 -59
  379. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  380. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  381. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  382. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  383. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  384. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  385. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  386. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  387. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  388. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  389. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  390. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  391. package/workflows/maestro-coordinate.md +0 -582
  392. package/workflows/memory.md +0 -451
package/workflows/map.md CHANGED
@@ -19,48 +19,20 @@ Codebase scanning with parallel mapper agents.
19
19
 
20
20
  ## Step 2: Spawn Parallel Mapper Agents
21
21
 
22
- Spawn 4 parallel `workflow-codebase-mapper` agents. Each agent scans the codebase independently with a specific focus and writes its output directly to `.workflow/research/`.
23
-
24
- ```
25
- Agent 1: tech focus
26
- Scan: package.json, go.mod, requirements.txt, build files, dependencies
27
- Output: .workflow/research/STACK.md
28
- Content: languages, frameworks, build tools, key dependencies, versions
29
-
30
- Agent 2: arch focus
31
- Scan: directory structure, module boundaries, entry points, data flow
32
- Output: .workflow/research/ARCHITECTURE.md
33
- Content: architecture style, layer separation, module graph, key abstractions
34
-
35
- Agent 3: features focus
36
- Scan: routes, handlers, components, services, models
37
- Output: .workflow/research/FEATURES.md
38
- Content: feature inventory, feature-to-file mapping, completeness assessment
39
-
40
- Agent 4: concerns focus
41
- Scan: error handling, logging, tests, config, security, performance
42
- Output: .workflow/research/PITFALLS.md
43
- Content: tech debt, missing tests, security gaps, performance concerns, known issues
44
- ```
45
-
46
- If `$ARGUMENTS` (focus area) is provided, pass it to each agent as a focus filter: "Prioritize analysis of {focus_area} subsystem."
47
-
48
- **Load project specs for mapper context:**
49
- ```
50
- specs_content = maestro spec load --category arch
51
- ```
52
-
53
- **Agent spawn pattern:**
54
- ```
55
- For each agent (1-4) in parallel:
56
- Agent({
57
- subagent_type: "workflow-codebase-mapper",
58
- prompt: "Focus: {focus}. Scan the codebase and write {output_file}.
59
- Project specs for reference: ${specs_content}
60
- Write directly to the file. Return only a confirmation with line count.",
61
- run_in_background: false
62
- })
63
- ```
22
+ Spawn 4 parallel `workflow-codebase-mapper` agents, each writing to `.workflow/research/`:
23
+
24
+ | Agent | Focus | Output | Content |
25
+ |-------|-------|--------|---------|
26
+ | 1 | tech | STACK.md | languages, frameworks, build tools, dependencies, versions |
27
+ | 2 | arch | ARCHITECTURE.md | architecture style, layers, module graph, key abstractions |
28
+ | 3 | features | FEATURES.md | feature inventory, feature-to-file mapping, completeness |
29
+ | 4 | concerns | PITFALLS.md | tech debt, missing tests, security gaps, performance issues |
30
+
31
+ If `$ARGUMENTS` provided, pass as focus filter to each agent.
32
+
33
+ Load project specs: `maestro spec load --category arch`
34
+
35
+ Each agent spawned in parallel as `workflow-codebase-mapper` subagent with specs context.
64
36
 
65
37
  ---
66
38
 
@@ -68,17 +40,8 @@ For each agent (1-4) in parallel:
68
40
 
69
41
  After all 4 agents complete:
70
42
 
71
- 1. Verify all documents exist with content:
72
- ```
73
- .workflow/research/STACK.md — exists, >10 lines
74
- .workflow/research/ARCHITECTURE.md — exists, >10 lines
75
- .workflow/research/FEATURES.md — exists, >10 lines
76
- .workflow/research/PITFALLS.md — exists, >10 lines
77
- ```
78
-
79
- 2. If any document is missing or empty:
80
- - Log which agent failed
81
- - Re-spawn that specific agent (max 1 retry per agent)
43
+ 1. Verify all 4 documents exist with >10 lines each.
44
+ 2. If any missing/empty → log failure, re-spawn that agent (max 1 retry).
82
45
 
83
46
  ---
84
47
 
@@ -8,25 +8,15 @@ Merges operate at the **milestone level** — one worktree per milestone, all ph
8
8
 
9
9
  ## Step 1: Parse Arguments and Flags
10
10
 
11
- ```javascript
12
- const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
13
-
14
- const force = $ARGUMENTS.includes('--force')
15
- const dryRun = $ARGUMENTS.includes('--dry-run')
16
- const noCleanup = $ARGUMENTS.includes('--no-cleanup')
17
- const continueMode = $ARGUMENTS.includes('--continue')
18
-
19
- // Parse milestone number: -m <N> or bare <N>
20
- const mFlagMatch = $ARGUMENTS.match(/-m\s+(\d+)/)
21
- const cleaned = $ARGUMENTS
22
- .replace(/--force|--dry-run|--no-cleanup|--continue|-m\s+\d+/g, '')
23
- .trim()
24
- const bareNumMatch = cleaned.match(/^(\d+)$/)
25
- const milestoneNum = mFlagMatch
26
- ? parseInt(mFlagMatch[1])
27
- : bareNumMatch
28
- ? parseInt(bareNumMatch[1])
29
- : null
11
+ ```
12
+ Timestamps use UTC+8 ISO format throughout.
13
+
14
+ Parse from $ARGUMENTS:
15
+ --force → force (skip incomplete-phase confirmation)
16
+ --dry-run → dryRun (preview only)
17
+ --no-cleanup → noCleanup (keep worktree after merge)
18
+ --continue → continueMode (resume after conflict resolution)
19
+ -m <N> or bare <N> → milestoneNum (1-based)
30
20
  ```
31
21
 
32
22
  ---
@@ -34,15 +24,9 @@ const milestoneNum = mFlagMatch
34
24
  ## Step 2: Validate Context
35
25
 
36
26
  ```
37
- IF file_exists(".workflow/worktree-scope.json"):
38
- ERROR E001: "Cannot merge from inside a worktree. Run from the main worktree."
39
- EXIT
40
-
41
- IF NOT file_exists(".workflow/worktrees.json"):
42
- ERROR E002: "No worktree registry found. Nothing to merge."
43
- EXIT
44
-
45
- Read .workflow/worktrees.json → registry
27
+ Reject: .workflow/worktree-scope.json present (E001 — must run from main worktree).
28
+ Require: .workflow/worktrees.json (E002 nothing to merge without registry).
29
+ Read registry from worktrees.json.
46
30
  ```
47
31
 
48
32
  ---
@@ -50,17 +34,8 @@ Read .workflow/worktrees.json → registry
50
34
  ## Step 3: Registry Health Check
51
35
 
52
36
  ```
53
- staleEntries = []
54
- for (entry of registry.worktrees):
55
- IF NOT directory_exists(entry.path):
56
- staleEntries.push(entry)
57
-
58
- IF staleEntries.length > 0:
59
- WARN W001: "Found {staleEntries.length} stale worktree entries (directories missing):"
60
- for (entry of staleEntries):
61
- Display " M{entry.milestone_num} ({entry.milestone}): {entry.path} — MISSING"
62
- registry.worktrees = registry.worktrees.filter(w => !staleEntries.includes(w))
63
- Write .workflow/worktrees.json: registry
37
+ Detect worktree entries whose directories no longer exist.
38
+ If stale entries found → warn (W001), remove from registry, rewrite worktrees.json.
64
39
  ```
65
40
 
66
41
  ---
@@ -68,31 +43,9 @@ IF staleEntries.length > 0:
68
43
  ## Step 4: Resolve Merge Target
69
44
 
70
45
  ```
71
- IF continueMode:
72
- IF NOT file_exists(".workflow/.merge-state.json"):
73
- ERROR E003: "--continue but no merge state found. Start a fresh merge."
74
- EXIT
75
- Read .workflow/.merge-state.json → mergeState
76
- target = mergeState.target
77
- GOTO Step_7
78
-
79
- ELSE IF milestoneNum !== null:
80
- target = registry.worktrees.find(w =>
81
- w.milestone_num === milestoneNum && w.status === "active"
82
- )
83
- ELSE:
84
- ERROR E004: "Milestone number required. Usage: maestro-merge -m <number>"
85
- EXIT
86
-
87
- IF NOT target:
88
- activeList = registry.worktrees
89
- .filter(w => w.status === "active")
90
- .map(w => " M" + w.milestone_num + ": " + w.milestone + " (" + w.path + ")")
91
- .join("\n")
92
- Display "No active worktree for milestone {milestoneNum}."
93
- IF activeList:
94
- Display "Active worktrees:\n{activeList}"
95
- EXIT
46
+ --continue → load target from .workflow/.merge-state.json (E003 if missing), skip to Step 7.
47
+ Otherwise find active worktree for milestoneNum in registry (E004 if no milestone specified).
48
+ If no matching target display active worktrees and exit.
96
49
  ```
97
50
 
98
51
  ---
@@ -100,37 +53,9 @@ IF NOT target:
100
53
  ## Step 5: Validate Readiness
101
54
 
102
55
  ```
103
- completedPhases = []
104
- incompletePhases = []
105
-
106
- // Read worktree state for artifact registry check
107
- Read {target.path}/.workflow/state.json → wtState (if exists)
108
- wtArtifacts = wtState?.artifacts ?? []
109
-
110
- // Check phase completeness via artifact registry
111
- for (phaseNum of target.owned_phases):
112
- execArtifacts = wtArtifacts.filter(a => a.type === 'execute' && a.phase === phaseNum)
113
- IF execArtifacts.some(a => a.status === 'completed'):
114
- completedPhases.push({ phase: phaseNum })
115
- ELSE:
116
- status = execArtifacts.length > 0 ? execArtifacts[0].status : 'no_execute_artifact'
117
- incompletePhases.push({ phase: phaseNum, status })
118
-
119
- IF incompletePhases.length > 0 AND NOT force:
120
- WARN W002: "M{target.milestone_num} ({target.milestone}) has incomplete phases:"
121
- for (p of incompletePhases):
122
- Display " Phase {p.phase}: {p.status}"
123
- IF NOT dryRun:
124
- AskUserQuestion: "Merge anyway? (y/n, or use --force)"
125
- IF response !== 'y': EXIT
126
-
127
- IF dryRun:
128
- Display "=== DRY RUN ==="
129
- Display " Would merge: {target.branch} → current branch"
130
- Display " Milestone: M{target.milestone_num} ({target.milestone})"
131
- Display " Completed: {completedPhases.map(p => p.phase).join(', ')}"
132
- Display " Incomplete: {incompletePhases.map(p => p.phase + '(' + p.status + ')').join(', ')}"
133
- EXIT
56
+ Check phase completeness via worktree artifact registry (execute artifacts → completed or incomplete).
57
+ If incomplete phases and not --force → warn (W002), confirm with user.
58
+ If --dry-run → display merge preview (branch, milestone, completed/incomplete phases) and exit.
134
59
  ```
135
60
 
136
61
  ---
@@ -138,39 +63,12 @@ IF dryRun:
138
63
  ## Step 6: Phase 1 — Git Merge
139
64
 
140
65
  ```
141
- Display "=== Merging M{target.milestone_num}: {target.milestone} ==="
142
-
143
- // 6a: Pre-merge rebase
144
- Display "Pulling main into worktree branch..."
145
- rebaseResult = Bash("cd {target.path} && git merge main --no-edit 2>&1")
146
-
147
- IF rebaseResult.exitCode !== 0:
148
- WARN W003: "Conflict pulling main into worktree. Resolve in {target.path} first."
149
- Display rebaseResult.output
150
- Display "After resolving: cd {target.path} && git merge --continue"
151
- Display "Then retry: /maestro-merge -m {target.milestone_num}"
152
- EXIT
153
-
154
- // 6b: Merge worktree branch into main
155
- Display "Merging {target.branch} into current branch..."
156
- mergeResult = Bash("git merge {target.branch} --no-ff -m 'merge: M{target.milestone_num} {target.milestone}' 2>&1")
157
-
158
- IF mergeResult.exitCode !== 0:
159
- Display "MERGE CONFLICT detected."
160
- Display mergeResult.output
161
-
162
- Write .workflow/.merge-state.json:
163
- {
164
- "target": target,
165
- "phase": "git_merge_conflict",
166
- "created_at": getUtc8ISOString()
167
- }
168
-
169
- Display ""
170
- Display "Resolve conflicts, then:"
171
- Display " git add <resolved-files> && git merge --continue"
172
- Display " /maestro-merge --continue"
173
- EXIT
66
+ 6a: Pull main into worktree branch (cd {target.path} && git merge main --no-edit).
67
+ On conflict → warn (W003), instruct to resolve in worktree, exit.
68
+
69
+ 6b: Merge worktree branch into main (git merge {target.branch} --no-ff).
70
+ On conflict save .workflow/.merge-state.json {target, phase:"git_merge_conflict"},
71
+ instruct: resolve, git merge --continue, then /maestro-merge --continue. Exit.
174
72
 
175
73
  Display "Git merge successful."
176
74
  ```
@@ -182,63 +80,19 @@ Display "Git merge successful."
182
80
  ```
183
81
  Step_7:
184
82
 
185
- Display "Syncing workflow artifacts for M{target.milestone_num} ({target.milestone})..."
186
-
187
- Read .workflow/state.json → mainState
188
-
189
- // 7a: Copy scratch dirs from worktree to main
190
- Read {target.path}/.workflow/state.json wtState
191
- wtArtifacts = wtState?.artifacts ?? []
192
- milestoneArtifacts = wtArtifacts.filter(a =>
193
- a.path && (a.milestone === target.milestone || target.owned_phases.includes(a.phase))
194
- )
195
- for (art of milestoneArtifacts):
196
- srcDir = target.path + "/.workflow/" + art.path
197
- dstDir = ".workflow/" + art.path
198
- IF directory_exists(srcDir):
199
- Bash("mkdir -p {dstDir} && cp -r {srcDir}/* {dstDir}/")
200
-
201
- // 7b: Merge artifact registries
202
- mainArtifacts = mainState.artifacts ?? []
203
- existingIds = new Set(mainArtifacts.map(a => a.id))
204
- for (art of wtArtifacts):
205
- IF existingIds.has(art.id):
206
- // Update existing artifact status
207
- idx = mainArtifacts.findIndex(a => a.id === art.id)
208
- mainArtifacts[idx] = art
209
- ELSE:
210
- mainArtifacts.push(art)
211
- mainState.artifacts = mainArtifacts
212
-
213
- // Record merge in transition history
214
- mainState.transition_history = mainState.transition_history ?? []
215
- mainState.transition_history.push({
216
- milestone_num: target.milestone_num,
217
- milestone: target.milestone,
218
- action: "worktree_merge",
219
- completed_at: getUtc8ISOString(),
220
- branch: target.branch,
221
- phases: target.owned_phases
222
- })
223
-
224
- // Merge accumulated context from worktree
225
- IF wtState?.accumulated_context:
226
- for (decision of (wtState.accumulated_context.key_decisions ?? [])):
227
- IF NOT mainState.accumulated_context.key_decisions.includes(decision):
228
- mainState.accumulated_context.key_decisions.push(decision)
229
- for (deferred of (wtState.accumulated_context.deferred ?? [])):
230
- mainState.accumulated_context.deferred.push(deferred)
231
-
232
- mainState.last_updated = getUtc8ISOString()
233
- Write .workflow/state.json: mainState
234
-
235
- // 7c: Update roadmap.md (mark completed phases)
236
- Read .workflow/roadmap.md → roadmap
237
- for (phaseNum of target.owned_phases):
238
- isCompleted = completedPhases.some(p => p.phase === phaseNum)
239
- IF isCompleted:
240
- Append " ✅ COMPLETED" to phase title line in roadmap
241
- Write .workflow/roadmap.md: roadmap
83
+ 7a: Copy milestone artifact directories from worktree → main .workflow/.
84
+ Filter: artifacts matching target.milestone or target.owned_phases.
85
+
86
+ 7b: Merge artifact registries — update existing by ID, append new entries.
87
+
88
+ 7c: Record in mainState.transition_history:
89
+ { milestone_num, milestone, action:"worktree_merge", completed_at, branch, phases }
90
+
91
+ 7d: Merge accumulated_context deduplicate key_decisions, append deferred items.
92
+
93
+ Update mainState.last_updated, write .workflow/state.json.
94
+
95
+ 7e: Mark completed phases in .workflow/roadmap.md with completion indicator.
242
96
  ```
243
97
 
244
98
  ---
@@ -246,18 +100,9 @@ Write .workflow/roadmap.md: roadmap
246
100
  ## Step 8: Cleanup
247
101
 
248
102
  ```
249
- IF NOT noCleanup:
250
- Display "Cleaning up worktree..."
251
- Bash("git worktree remove --force {target.path}")
252
- Bash("git branch -D {target.branch}")
253
-
254
- registry.worktrees = registry.worktrees.filter(w =>
255
- !(w.milestone_num === target.milestone_num && w.branch === target.branch)
256
- )
257
- Write .workflow/worktrees.json: registry
258
-
259
- IF file_exists(".workflow/.merge-state.json"):
260
- Bash("rm .workflow/.merge-state.json")
103
+ Unless --no-cleanup: remove git worktree and delete branch.
104
+ Remove target entry from worktrees.json registry.
105
+ Clean up .workflow/.merge-state.json if present.
261
106
  ```
262
107
 
263
108
  ---
@@ -12,65 +12,27 @@ Cross-phase integration audit for milestone completion. Based on artifact regist
12
12
 
13
13
  2. Parse `.workflow/roadmap.md` to identify all phases belonging to this milestone
14
14
 
15
- 3. Group artifacts by type for this milestone:
16
- ```
17
- FROM state.json.artifacts
18
- WHERE milestone = target_milestone
19
- GROUP BY type
20
-
21
- → analyze_artifacts: [ANL-001, ANL-002, ...]
22
- → plan_artifacts: [PLN-001, PLN-002, ...]
23
- → execute_artifacts: [EXC-001, EXC-002, ...]
24
- → verify_artifacts: [VRF-001, ...]
25
- ```
15
+ 3. Group milestone artifacts by type `analyze_artifacts`, `plan_artifacts`, `execute_artifacts`, `verify_artifacts`
26
16
 
27
17
  ---
28
18
 
29
19
  ## Step 2: Phase Coverage Check
30
20
 
31
- For each phase defined in roadmap for this milestone:
21
+ Parse roadmap.md phases for this milestone. For each phase, verify completed artifacts exist for analyze, plan, and execute types.
32
22
 
33
- ```
34
- phases_from_roadmap = parse roadmap.md → list of { number, slug, title }
35
-
36
- coverage = {}
37
- FOR each phase IN phases_from_roadmap:
38
- has_analyze = artifacts.some(a => a.type == "analyze" && a.phase == phase.number && a.status == "completed")
39
- has_plan = artifacts.some(a => a.type == "plan" && a.phase == phase.number && a.status == "completed")
40
- has_execute = artifacts.some(a => a.type == "execute" && a.phase == phase.number && a.status == "completed")
41
-
42
- coverage[phase.number] = { has_analyze, has_plan, has_execute }
43
-
44
- IF NOT has_execute:
45
- WARN: "Phase {phase.number} ({phase.title}) missing execute artifact"
46
- ```
23
+ WARN if any phase is missing its execute artifact: "Phase {number} ({title}) missing execute artifact"
47
24
 
48
25
  ---
49
26
 
50
27
  ## Step 3: Ad-hoc Completeness Check
51
28
 
52
- ```
53
- adhoc_artifacts = artifacts.filter(a => a.scope == "adhoc" && a.milestone == target_milestone)
54
-
55
- incomplete_adhoc = adhoc_artifacts.filter(a => a.status != "completed")
56
- IF incomplete_adhoc.length > 0:
57
- WARN: "Ad-hoc artifacts incomplete: {list ids}"
58
- ```
29
+ Check all ad-hoc artifacts (`scope == "adhoc"`) for this milestone are completed. WARN if any incomplete (list ids).
59
30
 
60
31
  ---
61
32
 
62
33
  ## Step 4: Execution Completeness Check
63
34
 
64
- For each execute artifact, verify all tasks completed:
65
-
66
- ```
67
- FOR each exc IN execute_artifacts:
68
- plan_dir = exc.path
69
- tasks = read all ${plan_dir}/.task/TASK-*.json
70
- incomplete = tasks.filter(t => t.status != "completed" && t.status != "skipped")
71
- IF incomplete.length > 0:
72
- WARN: "Plan {plan_dir}: {incomplete.length} tasks not completed"
73
- ```
35
+ For each execute artifact, read `{path}/.task/TASK-*.json` and verify all tasks are completed or skipped. WARN if any tasks remain incomplete: "Plan {plan_dir}: {N} tasks not completed"
74
36
 
75
37
  ---
76
38
 
@@ -18,13 +18,7 @@ Archive completed milestone, move artifacts to history, and prepare for next.
18
18
  - If NO → exit
19
19
  - If verdict is FAIL: ERROR E002
20
20
 
21
- 3. Verify all artifacts completed:
22
- ```
23
- milestone_artifacts = state.json.artifacts.filter(a => a.milestone == target_milestone)
24
- incomplete = milestone_artifacts.filter(a => a.status != "completed")
25
- IF incomplete.length > 0:
26
- ERROR E003: "Incomplete artifacts: {list ids and statuses}"
27
- ```
21
+ 3. Verify all milestone artifacts have status "completed" → ERROR E003 if any incomplete (list ids and statuses)
28
22
 
29
23
  ---
30
24
 
@@ -40,12 +34,7 @@ Archive completed milestone, move artifacts to history, and prepare for next.
40
34
  cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
41
35
  ```
42
36
 
43
- 3. Archive scratch directories:
44
- ```
45
- FOR each artifact IN milestone_artifacts:
46
- IF directory exists at .workflow/{artifact.path}:
47
- cp -r .workflow/{artifact.path} .workflow/milestones/{milestone}/artifacts/{basename}/
48
- ```
37
+ 3. Archive scratch directories: copy each milestone artifact's `.workflow/{artifact.path}` to `.workflow/milestones/{milestone}/artifacts/{basename}/`
49
38
 
50
39
  ---
51
40
 
@@ -66,37 +55,16 @@ Check existing entries to avoid duplicates when appending in Step 3.
66
55
  - Extract patterns discovered
67
56
  - Extract pitfalls encountered
68
57
 
69
- 2. Aggregate learnings and append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format:
58
+ 2. Aggregate learnings and append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format. Each entry (strategy adjustment, pattern, or pitfall) follows this template:
70
59
  ```
71
- For each strategy adjustment:
72
- <spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
73
-
74
- ### {summary}
75
-
76
- {content}
77
- Milestone: {milestone}
78
-
79
- </spec-entry>
80
-
81
- For each pattern:
82
- <spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
83
-
84
- ### {summary}
60
+ <spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
85
61
 
86
- {content}
87
- Milestone: {milestone}
62
+ ### {summary}
88
63
 
89
- </spec-entry>
64
+ {content}
65
+ Milestone: {milestone}
90
66
 
91
- For each pitfall:
92
- <spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
93
-
94
- ### {summary}
95
-
96
- {content}
97
- Milestone: {milestone}
98
-
99
- </spec-entry>
67
+ </spec-entry>
100
68
  ```
101
69
 
102
70
  **Keyword extraction**: Extract 3-5 domain-specific terms from the content (same rules as `spec-add`).
@@ -121,21 +89,9 @@ Check existing entries to avoid duplicates when appending in Step 3.
121
89
  }
122
90
  ```
123
91
 
124
- 2. Clear artifacts array (remove milestone-affiliated entries):
125
- ```
126
- state.json.artifacts = state.json.artifacts.filter(a => a.milestone != target_milestone)
127
- ```
92
+ 2. Clear artifacts array: remove all entries where `milestone == target_milestone`
128
93
 
129
- 3. Advance to next milestone:
130
- ```
131
- next_milestone = state.json.milestones.find(m => m.status == "pending")
132
- IF next_milestone:
133
- state.json.current_milestone = next_milestone.id
134
- next_milestone.status = "active"
135
- ELSE:
136
- state.json.current_milestone = null
137
- state.json.status = "completed"
138
- ```
94
+ 3. Advance to next milestone: activate first pending milestone → set as `current_milestone`. If none pending → set `current_milestone = null`, `status = "completed"`
139
95
 
140
96
  4. Write state.json (atomic)
141
97
 
@@ -143,12 +99,7 @@ Check existing entries to avoid duplicates when appending in Step 3.
143
99
 
144
100
  ## Step 5: Clean Scratch
145
101
 
146
- Remove archived scratch directories:
147
- ```
148
- FOR each artifact IN archived_artifacts:
149
- IF directory exists at .workflow/{artifact.path}:
150
- rm -rf .workflow/{artifact.path}
151
- ```
102
+ Remove archived scratch directories: delete `.workflow/{artifact.path}` for each archived artifact.
152
103
 
153
104
  ---
154
105