maestro-flow 0.3.15 → 0.3.17

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 (390) hide show
  1. package/.claude/agents/workflow-planner.md +24 -8
  2. package/.claude/commands/maestro-amend.md +300 -0
  3. package/.claude/commands/maestro-analyze.md +1 -49
  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-roadmap.md +3 -101
  11. package/.claude/commands/maestro-spec-generate.md +1 -25
  12. package/.claude/commands/maestro-ui-design.md +14 -73
  13. package/.claude/commands/maestro-verify.md +1 -32
  14. package/.claude/commands/maestro.md +13 -30
  15. package/.claude/commands/manage-harvest.md +7 -44
  16. package/.claude/commands/manage-knowhow-capture.md +193 -0
  17. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  18. package/.claude/commands/manage-learn.md +3 -28
  19. package/.claude/commands/manage-status.md +1 -20
  20. package/.claude/commands/manage-wiki.md +1 -1
  21. package/.claude/commands/quality-business-test.md +1 -1
  22. package/.claude/commands/quality-debug.md +3 -18
  23. package/.claude/commands/quality-integration-test.md +3 -23
  24. package/.claude/commands/quality-retrospective.md +1 -28
  25. package/.claude/commands/quality-review.md +3 -52
  26. package/.claude/commands/quality-test-gen.md +1 -10
  27. package/.claude/commands/quality-test.md +3 -25
  28. package/.claude/commands/spec-add.md +1 -21
  29. package/.claude/commands/spec-load.md +1 -16
  30. package/.claude/commands/wiki-connect.md +2 -112
  31. package/.claude/commands/wiki-digest.md +2 -141
  32. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  33. package/.codex/skills/maestro/SKILL.md +60 -146
  34. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  35. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  36. package/.codex/skills/maestro-composer/SKILL.md +4 -76
  37. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  38. package/.codex/skills/maestro-init/SKILL.md +7 -51
  39. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  40. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  41. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  42. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  43. package/.codex/skills/maestro-plan/SKILL.md +70 -166
  44. package/.codex/skills/maestro-player/SKILL.md +24 -149
  45. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  46. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  47. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  48. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  49. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  50. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  51. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  52. package/.codex/skills/manage-issue/SKILL.md +1 -6
  53. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  54. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  55. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  56. package/.codex/skills/manage-learn/SKILL.md +17 -71
  57. package/.codex/skills/manage-status/SKILL.md +4 -35
  58. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  59. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  60. package/.codex/skills/quality-debug/SKILL.md +41 -133
  61. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  62. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  63. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  64. package/.codex/skills/quality-review/SKILL.md +30 -65
  65. package/.codex/skills/quality-sync/SKILL.md +2 -11
  66. package/.codex/skills/quality-test/SKILL.md +4 -45
  67. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  68. package/.codex/skills/spec-add/SKILL.md +2 -9
  69. package/.codex/skills/spec-load/SKILL.md +4 -14
  70. package/.codex/skills/spec-map/SKILL.md +4 -37
  71. package/.codex/skills/spec-remove/SKILL.md +3 -35
  72. package/.codex/skills/spec-setup/SKILL.md +2 -19
  73. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  74. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  75. package/.codex/skills/team-executor/SKILL.md +7 -66
  76. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  77. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  78. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  79. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  80. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  81. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  82. package/.codex/skills/team-review/SKILL.md +12 -86
  83. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  84. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  85. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  86. package/.codex/skills/team-testing/SKILL.md +14 -99
  87. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  88. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  89. package/README.md +6 -0
  90. package/README.zh-CN.md +6 -0
  91. package/chains/_intent-map.json +7 -7
  92. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  93. package/chains/singles/{memory.json → knowhow.json} +6 -6
  94. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  95. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  96. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  97. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  98. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  99. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  100. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  101. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  102. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  103. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  104. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  105. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  106. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  107. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  108. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  109. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  110. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  111. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  112. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  113. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  114. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  115. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  116. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  117. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  118. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  119. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  120. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  121. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  122. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  123. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  124. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  125. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  126. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  127. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  128. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  129. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  130. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  131. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  132. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  133. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  134. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  135. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  136. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  137. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  138. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  139. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  140. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  141. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  142. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  143. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  144. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  145. package/dashboard/dist/index.html +2 -2
  146. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  147. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  148. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  149. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  150. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  151. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  152. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  153. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  154. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  155. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  156. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  157. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  158. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  159. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  160. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  161. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  162. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  163. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  164. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  165. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  166. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  167. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  168. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  169. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  170. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  171. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  172. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  173. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  174. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  175. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  176. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  200. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  201. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  202. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  203. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  204. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  205. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  206. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  207. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  208. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  209. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  210. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  211. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  212. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  213. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  214. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  215. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  218. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  219. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  221. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  222. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  223. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  224. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  226. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  227. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  228. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  229. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  230. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  231. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  232. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  233. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  234. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  235. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  236. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  237. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  238. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  239. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  240. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  241. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  242. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  243. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  244. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  245. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  246. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  247. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  248. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  249. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  250. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  251. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  252. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  253. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  254. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  255. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  256. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  257. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  258. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  259. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  260. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  261. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  262. package/dist/shared/agent-types.d.ts +2 -0
  263. package/dist/shared/agent-types.d.ts.map +1 -1
  264. package/dist/src/cli.js +2 -2
  265. package/dist/src/cli.js.map +1 -1
  266. package/dist/src/commands/delegate.d.ts.map +1 -1
  267. package/dist/src/commands/delegate.js +11 -8
  268. package/dist/src/commands/delegate.js.map +1 -1
  269. package/dist/src/commands/install-backend.d.ts +1 -1
  270. package/dist/src/commands/install-backend.d.ts.map +1 -1
  271. package/dist/src/commands/install-backend.js +1 -1
  272. package/dist/src/commands/install-backend.js.map +1 -1
  273. package/dist/src/commands/install-ui/ExecutionView.d.ts.map +1 -1
  274. package/dist/src/commands/install-ui/ExecutionView.js +4 -1
  275. package/dist/src/commands/install-ui/ExecutionView.js.map +1 -1
  276. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  277. package/dist/src/commands/install-ui/InstallExecution.js +4 -1
  278. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  279. package/dist/src/commands/install.js +5 -5
  280. package/dist/src/commands/install.js.map +1 -1
  281. package/dist/src/commands/knowhow.d.ts +10 -0
  282. package/dist/src/commands/knowhow.d.ts.map +1 -0
  283. package/dist/src/commands/knowhow.js +217 -0
  284. package/dist/src/commands/knowhow.js.map +1 -0
  285. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  286. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  287. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  288. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  289. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  290. package/dist/src/commands/overlay-ui/index.js +70 -44
  291. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  292. package/dist/src/commands/overlay.d.ts.map +1 -1
  293. package/dist/src/commands/overlay.js +4 -3
  294. package/dist/src/commands/overlay.js.map +1 -1
  295. package/dist/src/commands/update.d.ts.map +1 -1
  296. package/dist/src/commands/update.js +31 -21
  297. package/dist/src/commands/update.js.map +1 -1
  298. package/dist/src/core/manifest.d.ts +8 -1
  299. package/dist/src/core/manifest.d.ts.map +1 -1
  300. package/dist/src/core/manifest.js +3 -1
  301. package/dist/src/core/manifest.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/workflows/analyze.md +61 -185
  330. package/workflows/brainstorm.md +3 -23
  331. package/workflows/codebase-rebuild.md +79 -191
  332. package/workflows/codebase-refresh.md +26 -124
  333. package/workflows/debug.md +21 -141
  334. package/workflows/execute.md +183 -350
  335. package/workflows/fork.md +72 -230
  336. package/workflows/harvest.md +12 -79
  337. package/workflows/init.md +3 -17
  338. package/workflows/integration-test.md +21 -190
  339. package/workflows/issue-analyze.md +35 -153
  340. package/workflows/issue-discover.md +88 -263
  341. package/workflows/issue-execute.md +29 -208
  342. package/workflows/issue-plan.md +33 -154
  343. package/workflows/issue.md +44 -202
  344. package/workflows/knowhow.md +374 -0
  345. package/workflows/learn.md +30 -177
  346. package/workflows/maestro-coordinate.codex.md +77 -362
  347. package/workflows/maestro-link-coordinate.md +12 -61
  348. package/workflows/maestro.codex.md +124 -457
  349. package/workflows/maestro.md +562 -976
  350. package/workflows/map.md +16 -53
  351. package/workflows/merge.md +42 -197
  352. package/workflows/milestone-audit.md +5 -43
  353. package/workflows/milestone-complete.md +11 -60
  354. package/workflows/plan.md +188 -387
  355. package/workflows/quick.md +25 -174
  356. package/workflows/refactor.md +28 -221
  357. package/workflows/retrospective.md +104 -443
  358. package/workflows/review.md +87 -299
  359. package/workflows/roadmap.md +117 -97
  360. package/workflows/spec-generate.md +22 -118
  361. package/workflows/specs-add.md +5 -25
  362. package/workflows/specs-load.md +1 -5
  363. package/workflows/specs-remove.md +0 -11
  364. package/workflows/specs-setup.md +11 -47
  365. package/workflows/status.md +58 -200
  366. package/workflows/sync.md +28 -141
  367. package/workflows/test-gen.md +23 -100
  368. package/workflows/test.md +15 -125
  369. package/workflows/ui-design.md +139 -465
  370. package/workflows/ui-style.md +36 -228
  371. package/workflows/verify.md +52 -273
  372. package/workflows/wiki-connect.md +9 -46
  373. package/workflows/wiki-digest.md +7 -50
  374. package/workflows/wiki-manage.md +11 -108
  375. package/.claude/commands/maestro-coordinate.md +0 -63
  376. package/.claude/commands/manage-memory-capture.md +0 -59
  377. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  378. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  379. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  380. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  381. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  382. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  383. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  384. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  385. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  386. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  387. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  388. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  389. package/workflows/maestro-coordinate.md +0 -582
  390. package/workflows/memory.md +0 -451
@@ -70,264 +70,96 @@ $ARGUMENTS — user intent text, or flags.
70
70
 
71
71
  ### Phase 1: Load Chain Graph
72
72
 
73
- ```javascript
74
- const args = $ARGUMENTS.trim();
75
- const listMode = /\b--list\b/.test(args);
76
- const autoYes = /\b(-y|--yes)\b/.test(args);
77
- const resumeMode = /\b(-c|--continue)\b/.test(args);
78
- const resumeId = args.match(/(?:-c|--continue)\s+(\S+)/)?.[1] || null;
79
- const forcedChain = args.match(/--chain\s+(\S+)/)?.[1] || null;
80
- const intent = args
81
- .replace(/\b(-y|--yes|--list|-c|--continue)\b/g, '')
82
- .replace(/(?:-c|--continue)\s+\S+/g, '')
83
- .replace(/--chain\s+\S+/g, '')
84
- .trim();
85
- ```
73
+ Parse `$ARGUMENTS` to extract: `listMode` (`--list`), `autoYes` (`-y`/`--yes`), `resumeMode` (`-c`/`--continue`), `resumeId`, `forcedChain` (`--chain <name>`), `intent` (remaining text).
86
74
 
87
75
  **`--list`**: Scan `chains/*.json` and `chains/singles/*.json`, display names + descriptions, stop.
88
76
 
89
- **`-c` (resume)**:
90
- 1. Glob `.workflow/.maestro-coordinate/MLC-*/state.json`, pick most recent (or by `resumeId`)
91
- 2. Load state → find first node with `status !== "completed"` → set as `current_node`
92
- 3. Jump to **Phase 2**
77
+ **`-c` (resume)**: Glob `.workflow/.maestro-coordinate/MLC-*/state.json`, pick most recent (or by `resumeId`). Load state → find first incomplete node → jump to Phase 2.
93
78
 
94
79
  **Fresh session**:
95
80
  1. Resolve chain: `--chain` direct or classify from intent using `chains/_intent-map.json`
96
81
  2. Load chain JSON: try `chains/{name}.json` then `chains/singles/{name}.json`
97
82
  3. Read `.workflow/state.json` for project context (phase, milestone)
98
- 4. Initialize session:
99
-
100
- ```javascript
101
- const sessionId = `MLC-${dateStr}-${timeStr}`;
102
- const sessionDir = `.workflow/.maestro-coordinate/${sessionId}`;
103
-
104
- const state = {
105
- id: sessionId, intent, chain: graph.id, auto_mode: autoYes,
106
- status: "in_progress", started_at: new Date().toISOString(),
107
- current_node: graph.entry,
108
- context: {
109
- phase: resolvedPhase ?? null, description: intent,
110
- result: null // last command result, used by decision eval
111
- },
112
- visit_counts: {}, // nodeId → number
113
- history: [], // { node_id, type, outcome, summary, timestamp }
114
- };
115
- Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
83
+ 4. Initialize session state:
84
+
85
+ ```json
86
+ {
87
+ "id": "MLC-{YYYYMMDD}-{HHmmss}",
88
+ "intent": "<intent>", "chain": "<graph.id>", "auto_mode": false,
89
+ "status": "in_progress", "started_at": "<ISO>",
90
+ "current_node": "<graph.entry>",
91
+ "context": { "phase": null, "description": "<intent>", "result": null },
92
+ "visit_counts": {},
93
+ "history": []
94
+ }
116
95
  ```
117
96
 
118
- **`--dry-run`**: Display node walk order with types, stop.
97
+ Session dir: `.workflow/.maestro-coordinate/{sessionId}/`
119
98
 
99
+ **`--dry-run`**: Display node walk order with types, stop.
120
100
  **Confirm** (skip if `autoYes`): Display chain summary, prompt `Proceed?`.
121
101
 
122
102
  ### Phase 2: Walk Loop
123
103
 
124
- ```javascript
125
- while (state.status === 'in_progress') {
126
- const nodeId = state.current_node;
127
- const node = graph.nodes[nodeId];
128
-
129
- if (!node) {
130
- state.status = 'failed';
131
- state.history.push({ node_id: nodeId, type: 'error', outcome: 'failed',
132
- summary: `Node "${nodeId}" not found in graph`, timestamp: now() });
133
- break;
134
- }
135
-
136
- // max_visits guard
137
- state.visit_counts[nodeId] = (state.visit_counts[nodeId] ?? 0) + 1;
138
- if (node.max_visits && state.visit_counts[nodeId] > node.max_visits) {
139
- state.status = 'failed';
140
- state.history.push({ node_id: nodeId, type: node.type, outcome: 'max_visits_exceeded',
141
- summary: `Exceeded max_visits (${node.max_visits})`, timestamp: now() });
142
- break;
143
- }
144
-
145
- switch (node.type) {
146
- case 'command': handleCommand(state, graph, nodeId, node); break;
147
- case 'decision': handleDecision(state, nodeId, node); break;
148
- case 'gate': handleGate(state, nodeId, node); break;
149
- case 'terminal': handleTerminal(state, nodeId, node); break;
150
- }
151
-
152
- // Persist after every node
153
- Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
154
- }
155
- ```
104
+ Loop while `state.status === 'in_progress'`:
105
+ 1. Resolve `current_node` from graph — fail if not found
106
+ 2. Increment `visit_counts[nodeId]` fail if exceeds `node.max_visits`
107
+ 3. Dispatch by `node.type`: command → handleCommand, decision → handleDecision, gate → handleGate, terminal → handleTerminal
108
+ 4. Persist `state.json` after every node
156
109
 
157
110
  #### handleCommand — spawn via CSV
158
111
 
112
+ 1. Build `skill_call` from node config + context + auto_mode
113
+ 2. Write single-row CSV: `wave-{nodeId}.csv` with columns `id,skill_call,topic`
114
+ 3. Spawn:
115
+
159
116
  ```javascript
160
- function handleCommand(state, graph, nodeId, node) {
161
- // 1. Build skill_call
162
- const skillCall = buildSkillCall(node, state.context, state.auto_mode);
163
-
164
- // 2. Write single-row CSV
165
- const csvPath = `${sessionDir}/wave-${nodeId}.csv`;
166
- const csv = `id,skill_call,topic\n"${nodeId}","${skillCall.replace(/"/g, '""')}","Chain \\"${state.chain}\\" node ${nodeId}"`;
167
- Write(csvPath, csv);
168
-
169
- // 3. Spawn
170
- spawn_agents_on_csv({
171
- csv_path: csvPath,
172
- id_column: "id",
173
- instruction: AGENT_INSTRUCTION,
174
- max_workers: 1,
175
- max_runtime_seconds: 1800,
176
- output_csv_path: `${sessionDir}/wave-${nodeId}-results.csv`,
177
- output_schema: RESULT_SCHEMA
178
- });
179
-
180
- // 4. Read result
181
- const results = readCSV(`${sessionDir}/wave-${nodeId}-results.csv`);
182
- const result = results[0];
183
- const outcome = result?.status === 'completed' ? 'success' : 'failed';
184
-
185
- // 5. Update context with result (for downstream decision eval)
186
- state.context.result = parseResultContext(result);
187
-
188
- // 6. Record history
189
- state.history.push({
190
- node_id: nodeId, type: 'command', outcome,
191
- summary: result?.summary ?? '', timestamp: now()
192
- });
193
-
194
- // 7. Advance or fail
195
- if (outcome === 'failed') {
196
- if (node.on_failure) {
197
- state.current_node = node.on_failure;
198
- } else {
199
- state.status = 'failed';
200
- }
201
- } else {
202
- state.current_node = node.next;
203
- }
204
- }
117
+ spawn_agents_on_csv({
118
+ csv_path: csvPath,
119
+ id_column: "id",
120
+ instruction: AGENT_INSTRUCTION,
121
+ max_workers: 1,
122
+ max_runtime_seconds: 1800,
123
+ output_csv_path: `${sessionDir}/wave-${nodeId}-results.csv`,
124
+ output_schema: RESULT_SCHEMA
125
+ })
205
126
  ```
206
127
 
128
+ 4. Read result → parse findings into `state.context.result` (for downstream decision eval)
129
+ 5. Record history entry with outcome
130
+ 6. Advance: success → `node.next`, failure → `node.on_failure` or fail state
131
+
207
132
  #### handleDecision — in-process expr evaluation
208
133
 
209
- ```javascript
210
- function handleDecision(state, nodeId, node) {
211
- // Resolve eval expression from context
212
- const evalKey = node.eval; // e.g. "ctx.result.verification_status"
213
- const value = resolveExpr(evalKey, state.context);
214
-
215
- // Match edge
216
- let target = null;
217
- let matchedLabel = null;
218
- for (const edge of node.edges) {
219
- if (edge.value !== undefined && String(edge.value) === String(value)) {
220
- target = edge.target;
221
- matchedLabel = edge.label ?? edge.description ?? String(edge.value);
222
- break;
223
- }
224
- if (edge.match && new RegExp(edge.match).test(String(value))) {
225
- target = edge.target;
226
- matchedLabel = edge.label ?? edge.description ?? edge.match;
227
- break;
228
- }
229
- }
230
- // Default fallback
231
- if (!target) {
232
- const defaultEdge = node.edges.find(e => e.default);
233
- if (defaultEdge) {
234
- target = defaultEdge.target;
235
- matchedLabel = defaultEdge.label ?? defaultEdge.description ?? 'default';
236
- }
237
- }
238
-
239
- state.history.push({
240
- node_id: nodeId, type: 'decision',
241
- outcome: target ? 'resolved' : 'no_match',
242
- summary: `${evalKey} = "${value}" → ${matchedLabel ?? 'none'}`,
243
- timestamp: now()
244
- });
245
-
246
- if (target) {
247
- state.current_node = target;
248
- } else {
249
- state.status = 'failed';
250
- }
251
- }
252
- ```
134
+ 1. Evaluate `node.eval` expression (e.g. `ctx.result.verification_status`) against `state.context` via dot-path resolution
135
+ 2. Match against `node.edges[]`: first by exact `edge.value`, then by regex `edge.match`, finally `edge.default`
136
+ 3. Record history: `evalKey = "value" → matchedLabel`
137
+ 4. Advance to matched `edge.target` — fail if no match found
253
138
 
254
139
  #### handleGate — condition check
255
140
 
256
- ```javascript
257
- function handleGate(state, nodeId, node) {
258
- const passed = resolveExpr(node.condition, state.context);
259
- state.history.push({
260
- node_id: nodeId, type: 'gate',
261
- outcome: passed ? 'passed' : 'blocked',
262
- summary: `${node.condition} → ${passed}`,
263
- timestamp: now()
264
- });
265
- state.current_node = passed ? node.on_pass : node.on_fail;
266
- }
267
- ```
141
+ Evaluate `node.condition` against context. Route to `node.on_pass` or `node.on_fail`. Record history with passed/blocked outcome.
268
142
 
269
143
  #### handleTerminal
270
144
 
271
- ```javascript
272
- function handleTerminal(state, nodeId, node) {
273
- state.status = node.status === 'success' ? 'completed' : 'failed';
274
- state.history.push({
275
- node_id: nodeId, type: 'terminal',
276
- outcome: node.status ?? 'completed',
277
- summary: node.summary ?? 'Chain walk complete',
278
- timestamp: now()
279
- });
280
- }
281
- ```
145
+ Set `state.status` to completed/failed based on `node.status`. Record final history entry.
282
146
 
283
147
  ### Shared Utilities
284
148
 
285
- ```javascript
286
- const AUTO_FLAG_MAP = {
287
- 'maestro-analyze': '-y', 'maestro-brainstorm': '-y',
288
- 'maestro-ui-design': '-y', 'maestro-plan': '--auto',
289
- 'maestro-spec-generate': '-y', 'quality-test': '--auto-fix',
290
- 'quality-retrospective': '--auto-yes', 'maestro-roadmap': '-y',
291
- };
149
+ **AUTO_FLAG_MAP** (skill → auto-confirm flag):
292
150
 
293
- function buildSkillCall(node, ctx, autoMode) {
294
- let args = (node.args ?? '')
295
- .replace(/{phase}/g, ctx.phase ?? '')
296
- .replace(/{description}/g, ctx.description ?? '')
297
- .replace(/{issue_id}/g, ctx.issue_id ?? '')
298
- .replace(/{milestone_num}/g, ctx.milestone_num ?? '');
299
- if (autoMode) {
300
- const flag = node.auto_flag ?? AUTO_FLAG_MAP[node.cmd];
301
- if (flag && !args.includes(flag)) args = args ? `${args} ${flag}` : flag;
302
- }
303
- return `$${node.cmd} ${args}`.trim();
304
- }
151
+ | Skill | Flag |
152
+ |-------|------|
153
+ | `maestro-analyze`, `maestro-brainstorm`, `maestro-ui-design`, `maestro-spec-generate`, `maestro-roadmap` | `-y` |
154
+ | `maestro-plan` | `--auto` |
155
+ | `quality-test` | `--auto-fix` |
156
+ | `quality-retrospective` | `--auto-yes` |
305
157
 
306
- function resolveExpr(expr, ctx) {
307
- // expr is "ctx.result.verification_status" or "all_phases_completed"
308
- // Navigate dot-path from context root
309
- if (!expr) return undefined;
310
- const path = expr.replace(/^ctx\./, '').split('.');
311
- let val = ctx;
312
- for (const key of path) {
313
- if (val == null) return undefined;
314
- val = val[key];
315
- }
316
- return val;
317
- }
158
+ **buildSkillCall(node, ctx, autoMode)**: Substitute `{phase}`, `{description}`, `{issue_id}`, `{milestone_num}` from context into `node.args`. If autoMode, append auto flag from `node.auto_flag` or AUTO_FLAG_MAP. Return `$${node.cmd} ${resolvedArgs}`.
318
159
 
319
- function parseResultContext(result) {
320
- // Extract structured fields from agent result for decision eval
321
- if (!result) return {};
322
- try {
323
- const parsed = typeof result.findings === 'string'
324
- ? JSON.parse(result.findings) : result.findings;
325
- return { ...parsed, _raw_summary: result.summary, _status: result.status };
326
- } catch {
327
- return { _raw_summary: result.summary ?? '', _status: result.status ?? 'unknown' };
328
- }
329
- }
330
- ```
160
+ **resolveExpr(expr, ctx)**: Navigate dot-path (e.g. `ctx.result.verification_status`) from context root. Strip `ctx.` prefix, walk path segments, return leaf value or undefined.
161
+
162
+ **parseResultContext(result)**: Parse `result.findings` as JSON if string, merge with `_raw_summary` and `_status`. Fallback to raw summary on parse failure.
331
163
 
332
164
  ### Sub-Agent Instruction Template
333
165
 
@@ -375,12 +207,7 @@ const RESULT_SCHEMA = {
375
207
 
376
208
  ### Phase 3: Completion Report
377
209
 
378
- ```javascript
379
- state.completed_at = new Date().toISOString();
380
- Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
381
- ```
382
-
383
- Display:
210
+ Set `state.completed_at`, persist final `state.json`. Display:
384
211
  ```
385
212
  === LINK-COORDINATE COMPLETE ===
386
213
  Session: {sessionId}
@@ -31,57 +31,28 @@ $maestro-milestone-audit "M1"
31
31
 
32
32
  ### Step 1: Parse Arguments
33
33
 
34
- Extract milestone identifier from arguments.
35
- If empty: read `current_milestone` from `.workflow/state.json`.
36
- If still empty: error E001.
34
+ Extract milestone identifier from arguments. Fallback: read `current_milestone` from `.workflow/state.json`. If still empty: E001.
37
35
 
38
36
  ### Step 2: Load Artifact Registry
39
37
 
40
- ```bash
41
- cat .workflow/state.json
42
- cat .workflow/roadmap.md
43
- ```
44
-
45
- - Parse `state.json.artifacts[]` filtered by milestone
46
- - Parse `roadmap.md` for phase list in this milestone
47
- - Group artifacts by type and phase
38
+ Read `.workflow/state.json` and `.workflow/roadmap.md`. Filter `artifacts[]` by milestone, parse phase list, group by type and phase.
48
39
 
49
40
  ### Step 3: Phase Coverage Check
50
41
 
51
- For each phase in roadmap:
52
- - Check for completed analyze artifact (optional but noted)
53
- - Check for completed plan artifact (required)
54
- - Check for completed execute artifact (required)
55
-
56
- Report coverage matrix.
42
+ For each phase: check for completed analyze (optional), plan (required), execute (required) artifacts. Report coverage matrix.
57
43
 
58
44
  ### Step 4: Ad-hoc & Execution Completeness
59
45
 
60
- - Check all adhoc-scoped artifacts are completed
61
- - For each execute artifact, verify tasks in plan dir are all completed
46
+ Verify all adhoc-scoped artifacts completed. For each execute artifact, verify all tasks in plan dir completed.
62
47
 
63
48
  ### Step 5: Integration Check
64
49
 
65
- Spawn Agent for cross-phase integration validation:
66
- - Shared interfaces compatibility
67
- - Dependency chain satisfaction
68
- - Data contract consistency
69
- - API endpoint consistency
70
-
71
- Write report to `.workflow/milestones/{milestone}/audit-report.md`
50
+ Spawn Agent for cross-phase validation: shared interfaces, dependency chains, data contracts, API consistency. Write report to `.workflow/milestones/{milestone}/audit-report.md`.
72
51
 
73
52
  ### Step 6: Verdict
74
53
 
75
- ```
76
- PASS if:
77
- - All phases have EXC artifacts (completed)
78
- - No critical integration gaps
79
- - All adhoc artifacts completed
80
-
81
- FAIL if:
82
- - Missing EXC artifacts for any phase
83
- - Critical integration gaps found
84
- ```
54
+ **PASS**: All phases have completed EXC artifacts, no critical integration gaps, all adhoc completed.
55
+ **FAIL**: Missing EXC artifacts or critical integration gaps found.
85
56
 
86
57
  Display structured audit report with next-step routing.
87
58
 
@@ -33,121 +33,39 @@ $maestro-milestone-complete --force "M1" # skip audit check
33
33
 
34
34
  ### Step 1: Parse & Validate
35
35
 
36
- 1. Read `.workflow/state.json` to get `current_milestone`, `artifacts[]`, `milestones[]`
37
- 2. Determine target milestone (from args or current_milestone)
38
- 3. Check `--force` flag
39
- 4. If no milestone: **E001**
40
- 5. Check audit report exists at `.workflow/milestones/{milestone}/audit-report.md`
41
- - Missing + not --force: **E002**
42
- - Verdict FAIL + not --force: **E002**
43
- 6. Check all milestone artifacts completed:
44
- - `state.json.artifacts.filter(a => a.milestone == target && a.status != "completed")`
45
- - If any incomplete + not --force: **E003**
36
+ Read `.workflow/state.json` for `current_milestone`, `artifacts[]`, `milestones[]`. Determine target from args or current_milestone (E001 if none). Validate audit report at `.workflow/milestones/{milestone}/audit-report.md` with PASS verdict (E002 unless `--force`). Verify all milestone artifacts completed (E003 unless `--force`).
46
37
 
47
38
  ### Step 2: Archive Scratch Dirs
48
39
 
49
- ```bash
50
- mkdir -p .workflow/milestones/{milestone}/artifacts/
51
-
52
- # For each artifact path, copy to archive
53
- for artifact in milestone_artifacts:
54
- if dir exists .workflow/{artifact.path}:
55
- cp -r .workflow/{artifact.path} .workflow/milestones/{milestone}/artifacts/$(basename {artifact.path})/
56
- ```
57
-
58
- Snapshot roadmap:
59
- ```bash
60
- cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
61
- ```
40
+ Copy each milestone artifact's directory to `.workflow/milestones/{milestone}/artifacts/`. Snapshot `roadmap.md` as `roadmap-snapshot.md` in the milestone archive.
62
41
 
63
42
  ### Step 3: Extract Learnings
64
43
 
65
- - Read `.summaries/` from each execute artifact's plan dir
66
- - Read `reflection-log.md` if exists
67
- - Extract patterns, pitfalls, strategy adjustments
68
- - Check existing entries via `maestro spec load --category learning` (dedup)
69
- - Append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format (category=`learning`, auto-extract keywords, date=today, source=`milestone-complete`)
70
- - Avoid duplicates (check existing entries)
44
+ Read `.summaries/` and `reflection-log.md` from execute artifacts. Extract patterns, pitfalls, strategy adjustments. Dedup against existing entries via `maestro spec load --category learning`. Append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format (category=`learning`, auto-extract keywords, date=today, source=`milestone-complete`).
71
45
 
72
46
  ### Step 3b: Knowledge Promotion Inquiry
73
47
 
74
- After learning extraction, scan `learnings.md` for promotion candidates:
75
-
76
- 1. **High-frequency pattern detection**: Scan all `<spec-entry category="learning">` entries for keyword overlap (≥2 entries sharing keywords):
77
- → Ask: "Keyword '{keyword}' appears in {N} learning entries. Should this be promoted to a formal coding convention? (`/spec-add coding`)"
78
-
79
- 2. **Convention drift detection**: Compare executed task summaries against `coding-conventions.md` and `architecture-constraints.md`:
80
- → Ask: "Were any established conventions bypassed during this milestone? Should conventions be updated?"
48
+ 1. **High-frequency patterns**: Scan learning entries for keyword overlap (>=2 entries) -- offer promotion to coding convention via `/spec-add coding`
49
+ 2. **Convention drift**: Compare summaries against `coding-conventions.md` and `architecture-constraints.md` -- ask if conventions need updating
50
+ 3. **Wiki island check**: Auto-trigger `wiki-connect --fix` to link new knowledge
81
51
 
82
- 3. **Wiki island check**: Auto-trigger `wiki-connect --fix` to link newly extracted knowledge.
83
-
84
- If user confirms, append promoted `<spec-entry>` to target category file, preserving original date and source traceability.
52
+ If user confirms promotion, append `<spec-entry>` to target category file preserving original date and source.
85
53
 
86
54
  ### Step 4: Archive Artifact Entries
87
55
 
88
- Move artifact entries from `state.json.artifacts[]` to `milestone_history`:
89
-
90
- ```json
91
- {
92
- "milestone_history": [
93
- ...existing,
94
- {
95
- "id": "{milestone}",
96
- "name": "{milestone_name}",
97
- "status": "completed",
98
- "completed_at": "{now}",
99
- "archive_path": "milestones/{milestone}/",
100
- "archived_artifacts": [ ...all milestone artifact entries... ]
101
- }
102
- ]
103
- }
104
- ```
105
-
106
- Remove from `artifacts[]`:
107
- ```
108
- state.json.artifacts = state.json.artifacts.filter(a => a.milestone != target)
109
- ```
56
+ Move milestone artifacts from `state.json.artifacts[]` to `milestone_history[]` with completion metadata (id, name, status, completed_at, archive_path, archived_artifacts). Remove from active `artifacts[]`.
110
57
 
111
58
  ### Step 5: Advance State
112
59
 
113
- ```
114
- next = state.json.milestones.find(m => m.status == "pending")
115
- if next:
116
- state.json.current_milestone = next.id
117
- next.status = "active"
118
- else:
119
- state.json.current_milestone = null
120
- state.json.status = "completed"
121
-
122
- state.json.last_updated = now()
123
- Write state.json (atomic)
124
- ```
60
+ Set `current_milestone` to next pending milestone (mark it active), or set project `status: "completed"` if none remain. Atomic write to `state.json`.
125
61
 
126
62
  ### Step 6: Clean Scratch
127
63
 
128
- ```bash
129
- for artifact in archived_artifacts:
130
- rm -rf .workflow/{artifact.path}
131
- ```
64
+ Remove archived artifact directories from `.workflow/`.
132
65
 
133
66
  ### Step 7: Generate Summary & Report
134
67
 
135
- Write `.workflow/milestones/{milestone}/summary.md` with outcomes and learnings.
136
- Update `.workflow/project.md` Context section.
137
-
138
- ```
139
- === MILESTONE COMPLETE ===
140
- Milestone: {milestone} ({name})
141
- Artifacts: {count} archived
142
- Next: {next_milestone or "Project complete"}
143
-
144
- Next steps:
145
- $maestro-milestone-release -- Cut release
146
- $maestro-analyze -- Start next milestone
147
- $manage-status -- View state
148
- $manage-wiki health -- Check wiki graph health
149
- $wiki-digest -- Generate knowledge digest
150
- ```
68
+ Write `.workflow/milestones/{milestone}/summary.md` with outcomes and learnings. Update `.workflow/project.md` Context section. Display completion report with next steps: `$maestro-milestone-release`, `$maestro-analyze`, `$manage-status`, `$manage-wiki health`, `$wiki-digest`.
151
69
 
152
70
  </execution>
153
71
 
@@ -53,33 +53,15 @@ $maestro-overlay "--remove cli-verify-after-execute"
53
53
 
54
54
  ### Step 1: Parse User Intent
55
55
 
56
- ```javascript
57
- functions.update_plan({
58
- explanation: "Parsing overlay intent",
59
- plan: [
60
- { step: "Parse intent", status: "in_progress" },
61
- { step: "Identify targets and injection points", status: "pending" },
62
- { step: "Draft overlay JSON", status: "pending" },
63
- { step: "Install and report", status: "pending" }
64
- ]
65
- })
66
- ```
67
-
68
56
  **Quick-exit paths**:
69
- - `--list` → `functions.exec_command({ cmd: "maestro overlay list" })` then stop
70
- - `--remove <name>` → `functions.exec_command({ cmd: "maestro overlay remove <name>" })` then stop
71
-
72
- **Ambiguous intent**: If intent does not clearly specify (a) which command to target or (b) where in the flow to inject, ask up to 2 focused questions:
73
- ```javascript
74
- functions.request_user_input({
75
- id: "overlay-clarify",
76
- message: "Which command(s) should this overlay target? (e.g. maestro-execute, maestro-plan)"
77
- })
78
- ```
57
+ - `--list` → run `maestro overlay list`, then stop
58
+ - `--remove <name>` → run `maestro overlay remove <name>`, then stop
59
+
60
+ **Ambiguous intent**: If target command or injection point unclear, ask up to 2 focused questions.
79
61
 
80
62
  ### Step 2: Identify Targets and Injection Points
81
63
 
82
- For each likely target command, read the pristine source from `$PKG_ROOT/.claude/commands/<name>.md` (preferred) or fall back to `~/.claude/commands/<name>.md`. Inspect XML sections and select injection point:
64
+ Read pristine command source from `$PKG_ROOT/.claude/commands/<name>.md` (fallback: `~/.claude/commands/<name>.md`). Select injection point:
83
65
 
84
66
  | Intent type | Section | Mode |
85
67
  |-------------|---------|------|
@@ -91,81 +73,30 @@ For each likely target command, read the pristine source from `$PKG_ROOT/.claude
91
73
 
92
74
  ### Step 3: Draft Overlay JSON
93
75
 
94
- Build a slug from intent (kebab-case, lowercase, max 40 chars).
95
-
96
- ```javascript
97
- functions.apply_patch:
98
- *** Begin Patch
99
- *** Add File: ~/.maestro/overlays/<slug>.json
100
- +{
101
- + "name": "<slug>",
102
- + "description": "<short summary of what and why>",
103
- + "targets": ["<command-name>"],
104
- + "priority": 50,
105
- + "enabled": true,
106
- + "patches": [
107
- + {
108
- + "section": "<section>",
109
- + "mode": "<append|prepend|replace|new-section>",
110
- + "content": "<injected markdown content with (overlay) heading>"
111
- + }
112
- + ]
113
- +}
114
- *** End Patch
76
+ Build slug from intent (kebab-case, lowercase, max 40 chars). Write overlay to `~/.maestro/overlays/<slug>.json`:
77
+
78
+ ```json
79
+ {
80
+ "name": "<slug>",
81
+ "description": "<short summary>",
82
+ "targets": ["<command-name>"],
83
+ "priority": 50,
84
+ "enabled": true,
85
+ "patches": [{
86
+ "section": "<section>",
87
+ "mode": "<append|prepend|replace|new-section>",
88
+ "content": "<injected markdown with (overlay) heading>"
89
+ }]
90
+ }
115
91
  ```
116
92
 
117
- **Content guidelines**:
118
- - Lead injected block with heading including `(overlay)` e.g. `## CLI Verification (overlay)`
119
- - `@~/.maestro/...` references are encouraged for docs
120
- - Keep content concise — overlay adds a step, not rewrites the command
121
-
122
- ```javascript
123
- functions.update_plan({
124
- explanation: "Overlay JSON drafted",
125
- plan: [
126
- { step: "Parse intent", status: "completed" },
127
- { step: "Identify targets and injection points", status: "completed" },
128
- { step: "Draft overlay JSON", status: "completed" },
129
- { step: "Install and report", status: "in_progress" }
130
- ]
131
- })
132
- ```
93
+ **Content guidelines**: Lead with `## Title (overlay)` heading. Use `@~/.maestro/...` references. Keep concise.
133
94
 
134
95
  ### Step 4: Install via CLI and Report
135
96
 
136
- ```javascript
137
- functions.exec_command({
138
- cmd: "maestro overlay add ~/.maestro/overlays/<slug>.json",
139
- workdir: "."
140
- })
141
- ```
142
-
143
- On validation failure, fix the JSON and re-run (max 2 retries).
144
-
145
- ```javascript
146
- functions.update_plan({
147
- explanation: "Overlay installed",
148
- plan: [
149
- { step: "Parse intent", status: "completed" },
150
- { step: "Identify targets and injection points", status: "completed" },
151
- { step: "Draft overlay JSON", status: "completed" },
152
- { step: "Install and report", status: "completed" }
153
- ]
154
- })
155
- ```
97
+ Run `maestro overlay add ~/.maestro/overlays/<slug>.json`. On validation failure, fix JSON and retry (max 2).
156
98
 
157
- Display report:
158
- ```
159
- === OVERLAY INSTALLED ===
160
- Name: <slug>
161
- Path: ~/.maestro/overlays/<slug>.json
162
- Targets: <command> (applied), <command> (skipped: missing)
163
- Scopes: [global]
164
-
165
- Re-apply: maestro overlay apply
166
- Remove: maestro overlay remove <slug>
167
- Inspect: maestro overlay list
168
- ```
99
+ Display report with name, path, targets (applied/skipped), and commands for re-apply/remove/inspect.
169
100
 
170
101
  </execution>
171
102