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
@@ -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