maestro-flow 0.3.15 → 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 (374) 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-execute.md +2 -56
  4. package/.claude/commands/maestro-fork.md +3 -50
  5. package/.claude/commands/maestro-merge.md +2 -26
  6. package/.claude/commands/maestro-milestone-audit.md +1 -5
  7. package/.claude/commands/maestro-milestone-complete.md +1 -7
  8. package/.claude/commands/maestro-plan.md +6 -127
  9. package/.claude/commands/maestro-roadmap.md +3 -101
  10. package/.claude/commands/maestro-spec-generate.md +1 -25
  11. package/.claude/commands/maestro-ui-design.md +14 -73
  12. package/.claude/commands/maestro-verify.md +1 -32
  13. package/.claude/commands/maestro.md +13 -30
  14. package/.claude/commands/manage-harvest.md +7 -44
  15. package/.claude/commands/manage-knowhow-capture.md +193 -0
  16. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  17. package/.claude/commands/manage-learn.md +3 -28
  18. package/.claude/commands/manage-status.md +1 -20
  19. package/.claude/commands/manage-wiki.md +1 -1
  20. package/.claude/commands/quality-business-test.md +1 -1
  21. package/.claude/commands/quality-debug.md +3 -18
  22. package/.claude/commands/quality-integration-test.md +3 -23
  23. package/.claude/commands/quality-retrospective.md +1 -28
  24. package/.claude/commands/quality-review.md +3 -52
  25. package/.claude/commands/quality-test-gen.md +1 -10
  26. package/.claude/commands/quality-test.md +3 -25
  27. package/.claude/commands/spec-add.md +1 -21
  28. package/.claude/commands/spec-load.md +1 -16
  29. package/.claude/commands/wiki-connect.md +2 -112
  30. package/.claude/commands/wiki-digest.md +2 -141
  31. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  32. package/.codex/skills/maestro/SKILL.md +60 -146
  33. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  34. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  35. package/.codex/skills/maestro-composer/SKILL.md +4 -76
  36. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  37. package/.codex/skills/maestro-init/SKILL.md +7 -51
  38. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  39. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  40. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  41. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  42. package/.codex/skills/maestro-plan/SKILL.md +42 -166
  43. package/.codex/skills/maestro-player/SKILL.md +24 -149
  44. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  45. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  46. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  47. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  48. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  49. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  50. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  51. package/.codex/skills/manage-issue/SKILL.md +1 -6
  52. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  53. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  54. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  55. package/.codex/skills/manage-learn/SKILL.md +17 -71
  56. package/.codex/skills/manage-status/SKILL.md +4 -35
  57. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  58. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  59. package/.codex/skills/quality-debug/SKILL.md +41 -133
  60. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  61. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  62. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  63. package/.codex/skills/quality-review/SKILL.md +30 -65
  64. package/.codex/skills/quality-sync/SKILL.md +2 -11
  65. package/.codex/skills/quality-test/SKILL.md +4 -45
  66. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  67. package/.codex/skills/spec-add/SKILL.md +2 -9
  68. package/.codex/skills/spec-load/SKILL.md +4 -14
  69. package/.codex/skills/spec-map/SKILL.md +4 -37
  70. package/.codex/skills/spec-remove/SKILL.md +3 -35
  71. package/.codex/skills/spec-setup/SKILL.md +2 -19
  72. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  73. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  74. package/.codex/skills/team-executor/SKILL.md +7 -66
  75. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  76. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  77. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  78. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  79. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  80. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  81. package/.codex/skills/team-review/SKILL.md +12 -86
  82. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  83. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  84. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  85. package/.codex/skills/team-testing/SKILL.md +14 -99
  86. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  87. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  88. package/README.md +6 -0
  89. package/README.zh-CN.md +6 -0
  90. package/chains/_intent-map.json +7 -7
  91. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  92. package/chains/singles/{memory.json → knowhow.json} +6 -6
  93. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  94. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  95. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  96. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  97. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  98. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  99. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  100. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  101. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  102. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  103. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  104. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  105. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  106. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  107. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  108. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  109. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  110. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  111. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  112. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  113. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  114. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  115. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  116. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  117. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  118. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  119. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  120. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  121. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  122. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  123. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  124. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  125. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  126. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  127. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  128. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  129. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  130. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  131. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  132. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  133. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  134. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  135. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  136. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  137. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  138. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  139. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  140. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  141. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  142. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  143. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  144. package/dashboard/dist/index.html +2 -2
  145. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  146. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  147. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  148. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  149. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  150. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  151. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  152. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  153. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  154. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  155. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  156. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  157. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  158. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  159. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  160. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  161. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  162. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  163. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  164. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  165. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  166. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  167. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  168. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  169. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  170. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  171. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  172. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  173. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  174. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  175. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  176. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  200. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  201. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  202. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  203. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  204. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  205. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  206. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  207. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  208. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  209. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  210. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  211. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  212. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  213. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  214. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  215. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  218. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  219. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  221. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  222. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  223. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  224. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  226. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  227. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  228. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  229. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  230. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  231. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  232. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  233. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  234. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  235. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  236. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  237. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  238. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  239. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  240. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  241. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  242. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  243. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  244. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  245. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  246. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  247. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  248. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  249. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  250. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  251. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  252. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  253. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  254. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  255. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  256. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  257. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  258. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  259. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  260. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  261. package/dist/shared/agent-types.d.ts +2 -0
  262. package/dist/shared/agent-types.d.ts.map +1 -1
  263. package/dist/src/cli.js +2 -2
  264. package/dist/src/cli.js.map +1 -1
  265. package/dist/src/commands/delegate.d.ts.map +1 -1
  266. package/dist/src/commands/delegate.js +11 -8
  267. package/dist/src/commands/delegate.js.map +1 -1
  268. package/dist/src/commands/install-backend.d.ts +1 -1
  269. package/dist/src/commands/install-backend.d.ts.map +1 -1
  270. package/dist/src/commands/install-backend.js +1 -1
  271. package/dist/src/commands/install-backend.js.map +1 -1
  272. package/dist/src/commands/knowhow.d.ts +10 -0
  273. package/dist/src/commands/knowhow.d.ts.map +1 -0
  274. package/dist/src/commands/knowhow.js +217 -0
  275. package/dist/src/commands/knowhow.js.map +1 -0
  276. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  277. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  278. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  279. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  280. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  281. package/dist/src/commands/overlay-ui/index.js +70 -44
  282. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  283. package/dist/src/commands/overlay.d.ts.map +1 -1
  284. package/dist/src/commands/overlay.js +4 -3
  285. package/dist/src/commands/overlay.js.map +1 -1
  286. package/dist/src/core/overlay/applier.d.ts +1 -1
  287. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  288. package/dist/src/core/overlay/applier.js +40 -13
  289. package/dist/src/core/overlay/applier.js.map +1 -1
  290. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  291. package/dist/src/core/overlay/loader.js +6 -0
  292. package/dist/src/core/overlay/loader.js.map +1 -1
  293. package/dist/src/core/overlay/types.d.ts +5 -1
  294. package/dist/src/core/overlay/types.d.ts.map +1 -1
  295. package/dist/src/core/overlay/types.js +1 -1
  296. package/dist/src/core/overlay/types.js.map +1 -1
  297. package/dist/src/hooks/context-monitor.js +1 -1
  298. package/dist/src/hooks/context-monitor.js.map +1 -1
  299. package/dist/src/hooks/skill-context.js +1 -1
  300. package/dist/src/hooks/skill-context.js.map +1 -1
  301. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  302. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  303. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  304. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  305. package/dist/src/tools/index.js +2 -2
  306. package/dist/src/tools/index.js.map +1 -1
  307. package/dist/src/tools/store-knowhow.d.ts +21 -0
  308. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  309. package/dist/src/tools/store-knowhow.js +295 -0
  310. package/dist/src/tools/store-knowhow.js.map +1 -0
  311. package/package.json +1 -1
  312. package/shared/agent-types.ts +2 -0
  313. package/workflows/analyze.md +61 -185
  314. package/workflows/brainstorm.md +3 -23
  315. package/workflows/codebase-rebuild.md +79 -191
  316. package/workflows/codebase-refresh.md +26 -124
  317. package/workflows/debug.md +21 -141
  318. package/workflows/execute.md +183 -350
  319. package/workflows/fork.md +72 -230
  320. package/workflows/harvest.md +12 -79
  321. package/workflows/init.md +3 -17
  322. package/workflows/integration-test.md +21 -190
  323. package/workflows/issue-analyze.md +35 -153
  324. package/workflows/issue-discover.md +88 -263
  325. package/workflows/issue-execute.md +29 -208
  326. package/workflows/issue-plan.md +33 -154
  327. package/workflows/issue.md +44 -202
  328. package/workflows/knowhow.md +374 -0
  329. package/workflows/learn.md +30 -177
  330. package/workflows/maestro-coordinate.codex.md +77 -362
  331. package/workflows/maestro-link-coordinate.md +12 -61
  332. package/workflows/maestro.codex.md +124 -457
  333. package/workflows/maestro.md +562 -976
  334. package/workflows/map.md +16 -53
  335. package/workflows/merge.md +42 -197
  336. package/workflows/milestone-audit.md +5 -43
  337. package/workflows/milestone-complete.md +11 -60
  338. package/workflows/plan.md +176 -387
  339. package/workflows/quick.md +25 -174
  340. package/workflows/refactor.md +28 -221
  341. package/workflows/retrospective.md +104 -443
  342. package/workflows/review.md +87 -299
  343. package/workflows/roadmap.md +117 -97
  344. package/workflows/spec-generate.md +22 -118
  345. package/workflows/specs-add.md +5 -25
  346. package/workflows/specs-load.md +1 -5
  347. package/workflows/specs-remove.md +0 -11
  348. package/workflows/specs-setup.md +11 -47
  349. package/workflows/status.md +58 -200
  350. package/workflows/sync.md +28 -141
  351. package/workflows/test-gen.md +23 -100
  352. package/workflows/test.md +15 -125
  353. package/workflows/ui-design.md +139 -465
  354. package/workflows/ui-style.md +36 -228
  355. package/workflows/verify.md +52 -273
  356. package/workflows/wiki-connect.md +9 -46
  357. package/workflows/wiki-digest.md +7 -50
  358. package/workflows/wiki-manage.md +11 -108
  359. package/.claude/commands/maestro-coordinate.md +0 -63
  360. package/.claude/commands/manage-memory-capture.md +0 -59
  361. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  362. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  363. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  364. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  365. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  366. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  367. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  368. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  369. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  370. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  371. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  372. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  373. package/workflows/maestro-coordinate.md +0 -582
  374. package/workflows/memory.md +0 -451
@@ -1,582 +0,0 @@
1
- # Workflow: maestro-coordinate
2
-
3
- Autonomous CLI coordinator. Classifies intent, selects command chain, executes each step via `maestro delegate` with template-driven prompts and async state machine.
4
-
5
- ---
6
-
7
- ### Step 1: Parse Arguments
8
-
9
- ```javascript
10
- const args = $ARGUMENTS.trim();
11
- const autoYes = /\b(-y|--yes)\b/.test(args);
12
- const resumeMode = /\b(-c|--continue)\b/.test(args);
13
- const dryRun = /\b--dry-run\b/.test(args);
14
- const forcedChain = args.match(/--chain\s+(\S+)/)?.[1] || null;
15
- const cliTool = args.match(/--tool\s+(\S+)/)?.[1] || 'claude';
16
- const intent = args
17
- .replace(/\b(-y|--yes|-c|--continue|--dry-run)\b/g, '')
18
- .replace(/--(chain|tool)\s+\S+/g, '')
19
- .trim();
20
- ```
21
-
22
- **If resumeMode:**
23
- 1. Find latest `status.json` in `.workflow/.maestro-coordinate/`
24
- 2. Load state → set `current_step` to first non-completed step
25
- 3. Jump to **Step 6**
26
-
27
- ---
28
-
29
- ### Step 2: Read Project State
30
-
31
- ```bash
32
- test -f .workflow/state.json && echo "exists" || echo "missing"
33
- ```
34
-
35
- **If exists:** Read `.workflow/state.json` + `.workflow/roadmap.md` + current phase `index.json`:
36
-
37
- ```javascript
38
- const projectState = {
39
- initialized: true,
40
- current_milestone: /* from state.json */,
41
- latest_artifact: /* last artifact in artifacts[] */,
42
- milestone_progress: '...', // derived from artifact registry
43
- phase_artifacts: { brainstorm: false, analysis: false, context: false, plan: false, verification: false, uat: false },
44
- execution: { tasks_completed: 0, tasks_total: 0 },
45
- verification_status: 'pending',
46
- review_verdict: null, // PASS|WARN|BLOCK|null
47
- uat_status: 'pending',
48
- phases_total: 0, phases_completed: 0,
49
- has_blockers: false, accumulated_context: null
50
- };
51
- ```
52
-
53
- **If missing:** `projectState = { initialized: false }`. If intent also empty → **Error E001**.
54
-
55
- ---
56
-
57
- ### Step 3: Classify Intent & Select Chain
58
-
59
- #### 3a: Exact-match keywords (fast path)
60
-
61
- If `forcedChain` is set, validate and jump to **3c**.
62
-
63
- ```javascript
64
- const exactMatch = {
65
- 'continue': 'state_continue', 'next': 'state_continue', 'go': 'state_continue',
66
- '继续': 'state_continue', '下一步': 'state_continue',
67
- 'status': 'status', '状态': 'status', 'dashboard': 'status',
68
- };
69
- const normalized = intent.toLowerCase().trim();
70
- if (exactMatch[normalized]) {
71
- taskType = exactMatch[normalized];
72
- // → skip to 3c
73
- }
74
- ```
75
-
76
- #### 3a-2: Structured intent extraction (LLM-native)
77
-
78
- > **Implementation note**: The runtime (`src/coordinator/intent-router.ts`) currently
79
- > uses pattern-based regex matching via `chains/_intent-map.json`. The structured
80
- > extraction below is a design target, not the current implementation.
81
-
82
- Instead of regex, extract a structured intent tuple using LLM semantic understanding:
83
-
84
- ```json
85
- {
86
- "action": "<create|fix|analyze|plan|execute|verify|review|test|debug|refactor|explore|manage|transition|continue|sync|learn|retrospect>",
87
- "object": "<feature|bug|issue|code|test|spec|phase|milestone|doc|performance|security|ui|memory|codebase|team|config>",
88
- "scope": "<module/file/area or null>",
89
- "issue_id": "<ISS-XXXXXXXX-NNN if mentioned, else null>",
90
- "phase_ref": "<integer if mentioned, else null>",
91
- "urgency": "<low|normal|high>"
92
- }
93
- ```
94
-
95
- **Key disambiguation**: "问题"/"issue"/"problem" as something broken → `object: "bug"` (routes to debug). As a tracked item (with ISS-ID or management context) → `object: "issue"` (routes to issue management). When ambiguous, prefer `"bug"`.
96
-
97
- #### 3a-3: Route via action × object matrix
98
-
99
- ```javascript
100
- function routeIntent(intent, projectState) {
101
- const { action, object, issue_id } = intent;
102
-
103
- // Hard signal: explicit issue ID → issue pipeline
104
- if (issue_id) {
105
- const issueRoutes = { 'analyze': 'issue_analyze', 'plan': 'issue_plan', 'fix': 'issue_execute', 'execute': 'issue_execute', 'debug': 'issue_analyze', 'manage': 'issue' };
106
- return issueRoutes[action] || 'issue';
107
- }
108
-
109
- // Action × Object matrix
110
- const matrix = {
111
- 'fix': { 'bug': 'debug', 'issue': 'issue', 'code': 'debug', 'performance': 'debug', 'security': 'debug', '_default': 'debug' },
112
- 'create': { 'feature': 'quick', 'issue': 'issue', 'test': 'test_gen', 'spec': 'spec_generate', 'ui': 'ui_design', 'config': 'init', 'phase': 'roadmap', '_default': 'quick' },
113
- 'analyze': { 'bug': 'analyze', 'issue': 'issue_analyze', 'code': 'analyze', 'codebase': 'spec_map', '_default': 'analyze' },
114
- 'explore': { 'issue': 'issue_discover', 'feature': 'brainstorm', 'ui': 'ui_design', '_default': 'brainstorm' },
115
- 'plan': { 'issue': 'issue_plan', 'spec': 'spec_generate', '_default': 'plan' },
116
- 'execute': { 'issue': 'issue_execute', '_default': 'execute' },
117
- 'verify': { '_default': 'verify' },
118
- 'review': { '_default': 'review' },
119
- 'test': { '_default': 'test' },
120
- 'debug': { '_default': 'debug' },
121
- 'refactor': { '_default': 'refactor' },
122
- 'manage': { 'issue': 'issue', 'milestone': 'milestone_audit', 'phase': 'milestone_close', 'memory': 'memory', 'doc': 'sync', 'codebase': 'codebase_refresh', 'team': 'team_coordinate', '_default': 'status' },
123
- 'transition':{ 'phase': 'milestone_close', 'milestone': 'milestone_complete', '_default': 'milestone_close' },
124
- 'continue': { '_default': 'state_continue' },
125
- 'sync': { '_default': 'sync' },
126
- 'learn': { '_default': 'learn' },
127
- 'retrospect':{ '_default': 'retrospective' },
128
- };
129
-
130
- // Team skill detection
131
- if (object === 'team') {
132
- const teamRoutes = { 'review': 'team_review', 'test': 'team_test', 'debug': 'team_qa', 'refactor': 'team_tech_debt', 'execute': 'team_lifecycle', '_default': 'team_coordinate' };
133
- return teamRoutes[action] || 'team_coordinate';
134
- }
135
-
136
- const actionMap = matrix[action] || matrix['fix'];
137
- return actionMap[object] || actionMap['_default'] || 'quick';
138
- }
139
- ```
140
-
141
- Compute clarity (3=action+object+scope, 2=action+object, 1=action only, 0=empty).
142
- If clarity < 2 and not autoYes: clarify via AskUserQuestion (max 2 rounds).
143
-
144
- #### 3b: State-based routing (task_type == `state_continue`)
145
-
146
- ```javascript
147
- function detectNextAction(s) {
148
- if (!s.initialized) return { chain: 'init', steps: [{ cmd: 'maestro-init' }] };
149
- const ps = s.phase_status, art = s.phase_artifacts, exec = s.execution;
150
-
151
- // Post-milestone: no roadmap, has accumulated context
152
- if (s.phases_total === 0 && !fileExists('.workflow/roadmap.md') && s.accumulated_context)
153
- return { chain: 'next-milestone', steps: [{ cmd: 'maestro-roadmap', args: '"{description}"' }] };
154
- if (s.phases_total === 0)
155
- return { chain: 'brainstorm-driven', steps: [{ cmd: 'maestro-brainstorm', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }] };
156
-
157
- if (ps === 'pending') {
158
- if (art.context) return { chain: 'plan', steps: [{ cmd: 'maestro-plan', args: '{phase}' }] };
159
- return { chain: 'analyze', steps: [{ cmd: 'maestro-analyze', args: '{phase}' }] };
160
- }
161
- if (ps === 'exploring' || ps === 'planning') {
162
- if (art.plan) return { chain: 'execute-verify', steps: [{ cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }] };
163
- return { chain: 'plan', steps: [{ cmd: 'maestro-plan', args: '{phase}' }] };
164
- }
165
- if (ps === 'executing') {
166
- if (exec.tasks_completed >= exec.tasks_total && exec.tasks_total > 0) return { chain: 'verify', steps: [{ cmd: 'maestro-verify', args: '{phase}' }] };
167
- return { chain: 'execute', steps: [{ cmd: 'maestro-execute', args: '{phase}' }] };
168
- }
169
- if (ps === 'verifying') {
170
- if (s.verification_status === 'passed') {
171
- if (!s.review_verdict) return { chain: 'review', steps: [{ cmd: 'quality-review', args: '{phase}' }] };
172
- if (s.uat_status === 'pending') return { chain: 'test', steps: [{ cmd: 'quality-test', args: '{phase}' }] };
173
- if (s.uat_status === 'passed') return { chain: 'milestone-close', steps: [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }] };
174
- return { chain: 'debug', steps: [{ cmd: 'quality-debug', args: '--from-uat {phase}' }] };
175
- }
176
- return { chain: 'quality-loop-partial', steps: [{ cmd: 'maestro-plan', args: '{phase} --gaps' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }] };
177
- }
178
- if (ps === 'testing') {
179
- if (s.uat_status === 'passed') return { chain: 'milestone-close', steps: [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }] };
180
- return { chain: 'debug', steps: [{ cmd: 'quality-debug', args: '--from-uat {phase}' }] };
181
- }
182
- if (ps === 'completed') {
183
- if (s.phases_completed >= s.phases_total) return { chain: 'milestone-close', steps: [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }] };
184
- return { chain: 'milestone-close', steps: [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }] };
185
- }
186
- if (ps === 'blocked') return { chain: 'debug', steps: [{ cmd: 'quality-debug' }] };
187
- return { chain: 'status', steps: [{ cmd: 'manage-status' }] };
188
- }
189
- ```
190
-
191
- #### 3c: Intent-based chain map
192
-
193
- ```javascript
194
- const chainMap = {
195
- // Single-step
196
- 'status': [{ cmd: 'manage-status' }],
197
- 'init': [{ cmd: 'maestro-init' }],
198
- 'analyze': [{ cmd: 'maestro-analyze', args: '{phase}' }],
199
- 'ui_design': [{ cmd: 'maestro-ui-design', args: '{phase}' }],
200
- 'plan': [{ cmd: 'maestro-plan', args: '{phase}' }],
201
- 'execute': [{ cmd: 'maestro-execute', args: '{phase}' }],
202
- 'verify': [{ cmd: 'maestro-verify', args: '{phase}' }],
203
- 'test_gen': [{ cmd: 'quality-test-gen', args: '{phase}' }],
204
- 'test': [{ cmd: 'quality-test', args: '{phase}' }],
205
- 'debug': [{ cmd: 'quality-debug', args: '"{description}"' }],
206
- 'integration_test': [{ cmd: 'quality-integration-test', args: '{phase}' }],
207
- 'refactor': [{ cmd: 'quality-refactor', args: '"{description}"' }],
208
- 'review': [{ cmd: 'quality-review', args: '{phase}' }],
209
- 'retrospective': [{ cmd: 'quality-retrospective', args: '{phase}' }],
210
- 'learn': [{ cmd: 'manage-learn', args: '"{description}"' }],
211
- 'sync': [{ cmd: 'quality-sync', args: '{phase}' }],
212
- 'milestone_close': [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }],
213
- 'roadmap': [{ cmd: 'maestro-roadmap', args: '"{description}"' }],
214
- 'milestone_audit': [{ cmd: 'maestro-milestone-audit' }],
215
- 'milestone_complete': [{ cmd: 'maestro-milestone-complete' }],
216
- 'codebase_rebuild': [{ cmd: 'manage-codebase-rebuild' }],
217
- 'codebase_refresh': [{ cmd: 'manage-codebase-refresh' }],
218
- 'spec_setup': [{ cmd: 'spec-setup' }],
219
- 'spec_add': [{ cmd: 'spec-add', args: '"{description}"' }],
220
- 'spec_load': [{ cmd: 'spec-load', args: '"{description}"' }],
221
- 'spec_map': [{ cmd: 'manage-codebase-rebuild' }],
222
- 'memory_capture': [{ cmd: 'manage-memory-capture', args: '"{description}"' }],
223
- 'memory': [{ cmd: 'manage-memory', args: '"{description}"' }],
224
- 'issue': [{ cmd: 'manage-issue', args: '"{description}"' }],
225
- 'issue_discover': [{ cmd: 'manage-issue-discover', args: '"{description}"' }],
226
- 'issue_analyze': [{ cmd: 'maestro-analyze', args: '--gaps "{description}"' }],
227
- 'issue_plan': [{ cmd: 'maestro-plan', args: '--gaps' }],
228
- 'issue_execute': [{ cmd: 'maestro-execute', args: '' }],
229
- 'quick': [{ cmd: 'maestro-quick', args: '"{description}"' }],
230
- 'fork': [{ cmd: 'maestro-fork', args: '-m {milestone_num}' }],
231
- 'merge': [{ cmd: 'maestro-merge', args: '-m {milestone_num}' }],
232
- 'team_lifecycle': [{ cmd: 'team-lifecycle-v4', args: '"{description}"' }],
233
- 'team_coordinate': [{ cmd: 'team-coordinate', args: '"{description}"' }],
234
- 'team_qa': [{ cmd: 'team-quality-assurance', args: '"{description}"' }],
235
- 'team_test': [{ cmd: 'team-testing', args: '"{description}"' }],
236
- 'team_review': [{ cmd: 'team-review', args: '"{description}"' }],
237
- 'team_tech_debt': [{ cmd: 'team-tech-debt', args: '"{description}"' }],
238
-
239
- // Multi-step chains
240
- 'spec-driven': [{ cmd: 'maestro-init' }, { cmd: 'maestro-spec-generate', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
241
- 'brainstorm-driven': [{ cmd: 'maestro-brainstorm', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
242
- 'ui-design-driven': [{ cmd: 'maestro-ui-design', args: '{phase}' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
243
- 'full-lifecycle': [{ cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }, { cmd: 'quality-review', args: '{phase}' }, { cmd: 'quality-test', args: '{phase}' }, { cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }],
244
- 'execute-verify': [{ cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
245
- 'quality-loop': [{ cmd: 'maestro-verify', args: '{phase}' }, { cmd: 'quality-review', args: '{phase}' }, { cmd: 'quality-test', args: '{phase}' }, { cmd: 'quality-debug', args: '--from-uat {phase}' }, { cmd: 'maestro-plan', args: '{phase} --gaps' }, { cmd: 'maestro-execute', args: '{phase}' }],
246
- 'milestone-close': [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }],
247
- 'roadmap-driven': [{ cmd: 'maestro-init' }, { cmd: 'maestro-roadmap', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
248
- 'next-milestone': [{ cmd: 'maestro-roadmap', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
249
- 'analyze-plan-execute': [{ cmd: 'maestro-analyze', args: '"{description}" -q' }, { cmd: 'maestro-plan', args: '--dir {scratch_dir}' }, { cmd: 'maestro-execute', args: '--dir {scratch_dir}' }],
250
- // Issue lifecycle chains (with quality gates)
251
- 'issue-full': [{ cmd: 'maestro-analyze', args: '--gaps {issue_id}' }, { cmd: 'maestro-plan', args: '--gaps' }, { cmd: 'maestro-execute', args: '' }, { cmd: 'quality-review', args: '--scope {affected_files}' }, { cmd: 'manage-issue', args: 'close {issue_id} --resolution fixed' }],
252
- 'issue-quick': [{ cmd: 'maestro-plan', args: '--gaps' }, { cmd: 'maestro-execute', args: '' }, { cmd: 'manage-issue', args: 'close {issue_id} --resolution fixed' }],
253
- };
254
-
255
- // Aliases: task type → named multi-step chain
256
- const taskToChain = {
257
- 'spec_generate': 'spec-driven',
258
- 'brainstorm': 'brainstorm-driven',
259
- 'issue_execute': 'issue-full', // issue execute always gets review gate
260
- };
261
- ```
262
-
263
- **Resolution order:**
264
- 1. `forcedChain` → `chainMap[forcedChain]`
265
- 2. `state_continue` → `detectNextAction(projectState)`
266
- 3. `taskToChain[taskType]` → named chain
267
- 4. `chainMap[taskType]` → direct lookup
268
-
269
- #### 3d: Resolve phase number and issue ID
270
-
271
- ```javascript
272
- function resolvePhase() {
273
- // From structured extraction
274
- if (intentAnalysis.phase_ref) return intentAnalysis.phase_ref;
275
- // Fallback regex
276
- const m = intent.match(/phase\s*(\d+)|^(\d+)$/);
277
- if (m) return m[1] || m[2];
278
- // With scratch-based architecture, commands default to milestone-wide when no phase specified
279
- // Return null to let commands use their default scope routing
280
- return null;
281
- }
282
-
283
- function resolveIssueId() {
284
- if (intentAnalysis.issue_id) return intentAnalysis.issue_id;
285
- const m = intent.match(/ISS-[\w]+-\d+/i);
286
- return m ? m[0] : null;
287
- }
288
- ```
289
-
290
- When executing issue chains, replace `{issue_id}` in step args with the resolved issue ID.
291
-
292
- ---
293
-
294
- ### Step 4: Confirm
295
-
296
- **If `dryRun`:** Display chain and exit.
297
-
298
- ```
299
- MAESTRO-COORDINATE: {chain_name} (dry run)
300
- 1. [{cmd}] {args}
301
- 2. [{cmd}] {args}
302
- ```
303
-
304
- **If not autoYes:** AskUserQuestion — Execute / Execute from step N / Cancel.
305
-
306
- ---
307
-
308
- ### Step 5: Setup Session
309
-
310
- ```javascript
311
- const sessionId = `coord-${new Date().toISOString().replace(/[-:T]/g, '').slice(0, 15)}`;
312
- const sessionDir = `.workflow/.maestro-coordinate/${sessionId}`;
313
- Bash(`mkdir -p "${sessionDir}"`);
314
-
315
- const state = {
316
- session_id: sessionId, status: 'running',
317
- created_at: new Date().toISOString(),
318
- intent, task_type: taskType, chain_name: chainName,
319
- tool: cliTool, auto_mode: autoYes, phase: resolvedPhase,
320
- current_step: 0,
321
- gemini_session_id: null,
322
- step_analyses: [],
323
- steps: chain.map((s, i) => ({
324
- index: i, skill: s.cmd, args: s.args || '',
325
- status: 'pending', exec_id: null, analysis: null
326
- }))
327
- };
328
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
329
-
330
- const context = { resolved_phase: resolvedPhase, user_intent: intent, issue_id: resolvedIssueId, spec_session_id: null };
331
- ```
332
-
333
- ---
334
-
335
- ### Step 6: Execute Step via maestro delegate
336
-
337
- #### 6a: Assemble args
338
-
339
- ```javascript
340
- const AUTO_FLAG_MAP = {
341
- 'maestro-analyze': '-y', 'maestro-brainstorm': '-y', 'maestro-ui-design': '-y',
342
- 'maestro-plan': '--auto', 'maestro-spec-generate': '-y', 'quality-test': '--auto-fix',
343
- 'quality-retrospective': '--auto-yes',
344
- };
345
-
346
- function assembleArgs(step) {
347
- let a = (step.args || '')
348
- .replace(/\{phase\}/g, context.resolved_phase || '') // empty = milestone-wide default
349
- .replace(/\{description\}/g, context.user_intent || '')
350
- .replace(/\{issue_id\}/g, context.issue_id || '')
351
- .replace(/\{spec_session_id\}/g, context.spec_session_id || '')
352
- .replace(/\{scratch_dir\}/g, context.scratch_dir || '');
353
- if (state.auto_mode) {
354
- const flag = AUTO_FLAG_MAP[step.cmd];
355
- if (flag && !a.includes(flag)) a = a ? `${a} ${flag}` : flag;
356
- }
357
- return a.trim();
358
- }
359
- ```
360
-
361
- #### 6b: Build prompt from template
362
-
363
- Read `~/.maestro/templates/cli/prompts/coordinate-step.txt`, fill placeholders.
364
- If previous step has analysis hints, inject them as `{{ANALYSIS_HINTS}}`.
365
-
366
- ```javascript
367
- function escapeForShell(str) { return "'" + str.replace(/'/g, "'\\''") + "'"; }
368
-
369
- const assembledArgs = assembleArgs(step);
370
- const template = Read('~/.maestro/templates/cli/prompts/coordinate-step.txt');
371
-
372
- // Build analysis hints from previous step's gemini evaluation
373
- let analysisHints = '';
374
- const prevAnalysis = (state.step_analyses || []).find(a => a.step_index === state.current_step - 1);
375
- if (prevAnalysis?.next_step_hints) {
376
- const h = prevAnalysis.next_step_hints;
377
- const parts = [];
378
- if (h.prompt_additions) parts.push(h.prompt_additions);
379
- if (h.cautions?.length) parts.push('Cautions: ' + h.cautions.join('; '));
380
- if (h.context_to_carry) parts.push('Context from prior step: ' + h.context_to_carry);
381
- if (parts.length) analysisHints = parts.join('\n');
382
- }
383
-
384
- const prompt = template
385
- .replace('{{COMMAND}}', `/${step.cmd}`)
386
- .replace('{{ARGS}}', assembledArgs)
387
- .replace('{{STEP_N}}', `${state.current_step + 1}/${state.steps.length}`)
388
- .replace('{{AUTO_DIRECTIVE}}', state.auto_mode ? 'Auto-confirm all prompts. No interactive questions.' : '')
389
- .replace('{{CHAIN_NAME}}', state.chain_name)
390
- .replace('{{ANALYSIS_HINTS}}', analysisHints);
391
- ```
392
-
393
- #### 6c: Launch
394
-
395
- ```
396
- ------------------------------------------------------------
397
- STEP {i+1}/{total}: {step.cmd} | Tool: {tool}
398
- ------------------------------------------------------------
399
- ```
400
-
401
- ```javascript
402
- state.steps[state.current_step].status = 'running';
403
- state.steps[state.current_step].started_at = new Date().toISOString();
404
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
405
-
406
- Bash({
407
- command: `maestro delegate ${escapeForShell(prompt)} --to ${state.tool} --mode write`,
408
- run_in_background: true, timeout: 600000
409
- });
410
- // ■ STOP — wait for hook callback
411
- ```
412
-
413
- ---
414
-
415
- ### Step 7: Post-Step Callback
416
-
417
- ```javascript
418
- const stepIdx = state.current_step;
419
- const step = state.steps[stepIdx];
420
- const output = /* callback output */;
421
-
422
- // Capture exec_id from stderr [MAESTRO_EXEC_ID=xxx]
423
- step.exec_id = /* from callback */;
424
- step.completed_at = new Date().toISOString();
425
-
426
- // Context propagation
427
- const phaseMatch = output.match(/PHASE:\s*(\d+)/m);
428
- if (phaseMatch) context.resolved_phase = phaseMatch[1];
429
- const specMatch = output.match(/SPEC-[\w-]+/);
430
- if (specMatch) context.spec_session_id = specMatch[0];
431
- const scratchMatch = output.match(/scratch_dir:\s*(.+)/m);
432
- if (scratchMatch) context.scratch_dir = scratchMatch[1].trim();
433
-
434
- // Success/failure
435
- const failed = /^STATUS:\s*FAILURE/m.test(output);
436
- if (!failed) {
437
- step.status = 'completed';
438
- } else if (state.auto_mode) {
439
- if (!step.retried) { step.retried = true; /* re-execute Step 6c */ return; }
440
- step.status = 'skipped';
441
- } else {
442
- // AskUserQuestion: Retry / Skip / Abort
443
- // On Abort: state.status = 'aborted', save, exit
444
- }
445
-
446
- // Save output for analysis
447
- Write(`${sessionDir}/step-${stepIdx + 1}-output.txt`, output);
448
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
449
-
450
- // → Step 7b: Gemini analysis (skip if step failed/skipped or single-step chain)
451
- if (step.status === 'completed' && state.steps.length > 1) {
452
- // → Step 7b
453
- } else {
454
- // Skip analysis, advance directly
455
- state.current_step = stepIdx + 1;
456
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
457
- if (state.current_step < state.steps.length) { /* → Step 6 */ }
458
- else { /* → Step 8 */ }
459
- }
460
- ```
461
-
462
- ---
463
-
464
- ### Step 7b: Analyze Step Output (via gemini)
465
-
466
- After each step completes, call gemini to evaluate execution quality and generate optimization hints for subsequent steps.
467
-
468
- ```javascript
469
- const stepIdx = state.current_step;
470
- const step = state.steps[stepIdx];
471
- const output = Read(`${sessionDir}/step-${stepIdx + 1}-output.txt`);
472
- const nextStep = stepIdx < state.steps.length - 1 ? state.steps[stepIdx + 1] : null;
473
-
474
- // Build analysis prompt
475
- const priorAnalyses = (state.step_analyses || [])
476
- .map(a => `- Step ${a.step_index + 1} (${a.cmd}): score=${a.quality_score}, issues=${a.issues?.length || 0}`)
477
- .join('\n');
478
-
479
- const analysisPrompt = `PURPOSE: Evaluate execution quality of coordinate step "${step.cmd}" (${stepIdx + 1}/${state.steps.length}) and generate optimization hints for the next step.
480
- CHAIN: ${state.chain_name} | Intent: ${state.intent}
481
- COMMAND: /${step.cmd} ${step.args || ''}
482
- STEP OUTPUT (last 200 lines):
483
- ${output.split('\n').slice(-200).join('\n')}
484
- ${priorAnalyses ? `PRIOR STEP ANALYSES:\n${priorAnalyses}` : ''}
485
- ${nextStep ? `NEXT STEP: /${nextStep.cmd} ${nextStep.args || ''}` : 'NEXT STEP: None (last step)'}
486
- EXPECTED OUTPUT (strict JSON):
487
- {
488
- "quality_score": <0-100>,
489
- "execution_assessment": { "success": <bool>, "completeness": "<full|partial|minimal>", "key_outputs": [], "missing_outputs": [] },
490
- "issues": [{ "severity": "critical|high|medium|low", "description": "" }],
491
- "next_step_hints": {
492
- "prompt_additions": "<extra context or constraints to inject into next step prompt>",
493
- "cautions": ["<things next step should watch out for>"],
494
- "context_to_carry": "<key facts from this step's output that next step needs>"
495
- },
496
- "step_summary": ""
497
- }`;
498
-
499
- let delegateCmd = `maestro delegate ${escapeForShell(analysisPrompt)} --to gemini --mode analysis --rule analysis-review-code-quality`;
500
- if (state.gemini_session_id) delegateCmd += ` --resume ${state.gemini_session_id}`;
501
- Bash({ command: delegateCmd, run_in_background: true, timeout: 300000 });
502
- // ■ STOP — wait for hook callback
503
- ```
504
-
505
- ### Step 7c: Post-Analyze Callback
506
-
507
- ```javascript
508
- const analysisResult = /* parsed JSON from callback output */;
509
-
510
- // Capture gemini session ID for resume chain
511
- state.gemini_session_id = /* from callback stderr [MAESTRO_EXEC_ID=xxx] */;
512
-
513
- // Store analysis
514
- if (!state.step_analyses) state.step_analyses = [];
515
- state.step_analyses.push({
516
- step_index: stepIdx, cmd: step.cmd,
517
- quality_score: analysisResult.quality_score,
518
- issues: analysisResult.issues,
519
- next_step_hints: analysisResult.next_step_hints,
520
- summary: analysisResult.step_summary
521
- });
522
- step.analysis = {
523
- quality_score: analysisResult.quality_score,
524
- issue_count: (analysisResult.issues || []).length
525
- };
526
- Write(`${sessionDir}/step-${stepIdx + 1}-analysis.json`, JSON.stringify(analysisResult, null, 2));
527
-
528
- // Advance
529
- state.current_step = stepIdx + 1;
530
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
531
-
532
- if (state.current_step < state.steps.length) {
533
- // → Back to Step 6
534
- } else {
535
- // → Step 8
536
- }
537
- ```
538
-
539
- ---
540
-
541
- ### Step 8: Completion Report
542
-
543
- ```javascript
544
- const done = state.steps.filter(s => s.status === 'completed').length;
545
- state.status = state.steps.some(s => s.status === 'failed') ? 'completed_with_errors' : 'completed';
546
- state.completed_at = new Date().toISOString();
547
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
548
- ```
549
-
550
- ```
551
- ============================================================
552
- MAESTRO-COORDINATE COMPLETE
553
- ============================================================
554
- Session: {session_id}
555
- Chain: {chain_name} ({done}/{total})
556
- Tool: {tool}
557
-
558
- Steps:
559
- [✓] 1. maestro-plan — completed (quality: 85/100)
560
- [✓] 2. maestro-execute — completed (quality: 78/100)
561
-
562
- Avg Quality: {avg_score}/100
563
- Next: /maestro-coordinate continue
564
- ============================================================
565
- ```
566
-
567
- ---
568
-
569
- ## Core Rules
570
-
571
- 1. **Semantic routing** — LLM-native structured extraction (`action × object`) replaces regex; disambiguates "问题" by context
572
- 2. **STOP after each `maestro delegate` call** — background execution, wait for hook callback
573
- 3. **State machine** — advance via `current_step`, no sync loops for async operations
574
- 4. **Template-driven** — all steps use `coordinate-step.txt`, no per-command prompt assembly
575
- 5. **Context propagation** — parse PHASE / spec session ID / scratch_dir / issue_id from each step output, feed to next step
576
- 6. **Quality gates** — issue chains auto-include review; `issue-full` is default for issue execution
577
- 7. **Tool fallback** — if `maestro delegate` fails: retry with same tool once, then try `gemini` → `qwen`
578
- 8. **Auto-confirm injection** — `{{AUTO_DIRECTIVE}}` in template prevents blocking during background execution
579
- 9. **Resumable** — `-c` reads `status.json`, jumps to first pending step
580
- 10. **Gemini analysis after each step** — evaluate output quality via `maestro delegate --to gemini --mode analysis`, chained via `--resume`. Analysis generates `next_step_hints` injected into next step's prompt as `{{ANALYSIS_HINTS}}`
581
- 11. **Session capture** — after each gemini callback, capture exec_id → `gemini_session_id` for resume chain
582
- 12. **Analysis skip conditions** — skip gemini analysis for: failed/skipped steps, single-step chains