maestro-flow 0.3.14 → 0.3.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/.claude/commands/maestro-amend.md +300 -0
  2. package/.claude/commands/maestro-analyze.md +1 -49
  3. package/.claude/commands/maestro-composer.md +354 -0
  4. package/.claude/commands/maestro-execute.md +2 -56
  5. package/.claude/commands/maestro-fork.md +3 -50
  6. package/.claude/commands/maestro-merge.md +2 -26
  7. package/.claude/commands/maestro-milestone-audit.md +1 -5
  8. package/.claude/commands/maestro-milestone-complete.md +1 -7
  9. package/.claude/commands/maestro-plan.md +6 -127
  10. package/.claude/commands/maestro-player.md +404 -0
  11. package/.claude/commands/maestro-roadmap.md +3 -101
  12. package/.claude/commands/maestro-spec-generate.md +1 -25
  13. package/.claude/commands/maestro-ui-design.md +14 -73
  14. package/.claude/commands/maestro-verify.md +1 -32
  15. package/.claude/commands/maestro.md +13 -30
  16. package/.claude/commands/manage-harvest.md +7 -44
  17. package/.claude/commands/manage-knowhow-capture.md +193 -0
  18. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  19. package/.claude/commands/manage-learn.md +3 -28
  20. package/.claude/commands/manage-status.md +1 -20
  21. package/.claude/commands/manage-wiki.md +1 -1
  22. package/.claude/commands/quality-business-test.md +1 -1
  23. package/.claude/commands/quality-debug.md +3 -18
  24. package/.claude/commands/quality-integration-test.md +3 -23
  25. package/.claude/commands/quality-retrospective.md +1 -28
  26. package/.claude/commands/quality-review.md +3 -52
  27. package/.claude/commands/quality-test-gen.md +1 -10
  28. package/.claude/commands/quality-test.md +3 -25
  29. package/.claude/commands/spec-add.md +1 -21
  30. package/.claude/commands/spec-load.md +1 -16
  31. package/.claude/commands/wiki-connect.md +2 -112
  32. package/.claude/commands/wiki-digest.md +2 -141
  33. package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
  34. package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
  35. package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
  36. package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
  37. package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
  38. package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
  39. package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
  40. package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
  41. package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
  42. package/.claude/skills/workflow-skill-designer/SKILL.md +496 -0
  43. package/.claude/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
  44. package/.claude/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
  45. package/.claude/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
  46. package/.claude/skills/workflow-skill-designer/phases/04-validation.md +471 -0
  47. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  48. package/.codex/skills/maestro/SKILL.md +60 -146
  49. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  50. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  51. package/.codex/skills/maestro-composer/SKILL.md +213 -0
  52. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  53. package/.codex/skills/maestro-init/SKILL.md +7 -51
  54. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  55. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  56. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  57. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  58. package/.codex/skills/maestro-plan/SKILL.md +42 -166
  59. package/.codex/skills/maestro-player/SKILL.md +323 -0
  60. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  61. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  62. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  63. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  64. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  65. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  66. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  67. package/.codex/skills/manage-issue/SKILL.md +1 -6
  68. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  69. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  70. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  71. package/.codex/skills/manage-learn/SKILL.md +17 -71
  72. package/.codex/skills/manage-status/SKILL.md +4 -35
  73. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  74. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  75. package/.codex/skills/quality-debug/SKILL.md +41 -133
  76. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  77. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  78. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  79. package/.codex/skills/quality-review/SKILL.md +30 -65
  80. package/.codex/skills/quality-sync/SKILL.md +2 -11
  81. package/.codex/skills/quality-test/SKILL.md +4 -45
  82. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  83. package/.codex/skills/spec-add/SKILL.md +2 -9
  84. package/.codex/skills/spec-load/SKILL.md +4 -14
  85. package/.codex/skills/spec-map/SKILL.md +4 -37
  86. package/.codex/skills/spec-remove/SKILL.md +3 -35
  87. package/.codex/skills/spec-setup/SKILL.md +2 -19
  88. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  89. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  90. package/.codex/skills/team-executor/SKILL.md +7 -66
  91. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  92. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  93. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  94. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  95. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  96. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  97. package/.codex/skills/team-review/SKILL.md +12 -86
  98. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  99. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  100. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  101. package/.codex/skills/team-testing/SKILL.md +14 -99
  102. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  103. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  104. package/README.md +6 -0
  105. package/README.zh-CN.md +6 -0
  106. package/chains/_intent-map.json +7 -7
  107. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  108. package/chains/singles/{memory.json → knowhow.json} +6 -6
  109. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  110. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  111. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  112. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  113. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  114. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  115. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  116. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  117. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  118. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  119. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  120. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  121. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  122. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  123. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  124. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  125. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  126. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  127. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  128. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  129. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  130. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  131. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  132. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  133. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  134. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  135. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  136. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  137. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  138. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  139. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  140. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  141. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  142. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  143. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  144. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  145. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  146. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  147. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  148. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  149. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  150. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  151. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  152. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  153. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  154. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  155. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  156. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  157. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  158. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  159. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  160. package/dashboard/dist/index.html +2 -2
  161. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  162. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  163. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  164. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  165. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  166. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  167. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  168. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  169. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  170. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  171. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  172. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  173. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  174. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  175. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  176. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  200. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  201. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  202. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  203. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  204. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  205. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  206. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  207. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  208. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  209. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  210. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  211. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  212. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  213. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  214. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  215. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  218. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  219. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  221. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  222. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  223. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  224. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  226. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  227. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  228. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  229. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  230. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  231. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  232. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  233. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  234. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  235. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  236. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  237. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  238. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  239. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  240. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  241. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  242. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  243. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  244. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  245. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  246. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  247. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  248. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  249. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  250. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  251. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  252. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  253. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  254. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  255. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  256. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  257. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  258. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  259. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  260. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  261. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  262. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  263. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  264. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  265. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  266. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  267. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  268. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  269. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  270. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  271. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  272. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  273. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  274. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  275. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  276. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  277. package/dist/shared/agent-types.d.ts +2 -0
  278. package/dist/shared/agent-types.d.ts.map +1 -1
  279. package/dist/src/cli.js +2 -2
  280. package/dist/src/cli.js.map +1 -1
  281. package/dist/src/commands/delegate.d.ts.map +1 -1
  282. package/dist/src/commands/delegate.js +11 -8
  283. package/dist/src/commands/delegate.js.map +1 -1
  284. package/dist/src/commands/install-backend.d.ts +1 -1
  285. package/dist/src/commands/install-backend.d.ts.map +1 -1
  286. package/dist/src/commands/install-backend.js +1 -1
  287. package/dist/src/commands/install-backend.js.map +1 -1
  288. package/dist/src/commands/knowhow.d.ts +10 -0
  289. package/dist/src/commands/knowhow.d.ts.map +1 -0
  290. package/dist/src/commands/knowhow.js +217 -0
  291. package/dist/src/commands/knowhow.js.map +1 -0
  292. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  293. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  294. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  295. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  296. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  297. package/dist/src/commands/overlay-ui/index.js +70 -44
  298. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  299. package/dist/src/commands/overlay.d.ts.map +1 -1
  300. package/dist/src/commands/overlay.js +4 -3
  301. package/dist/src/commands/overlay.js.map +1 -1
  302. package/dist/src/core/overlay/applier.d.ts +1 -1
  303. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  304. package/dist/src/core/overlay/applier.js +40 -13
  305. package/dist/src/core/overlay/applier.js.map +1 -1
  306. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  307. package/dist/src/core/overlay/loader.js +6 -0
  308. package/dist/src/core/overlay/loader.js.map +1 -1
  309. package/dist/src/core/overlay/types.d.ts +5 -1
  310. package/dist/src/core/overlay/types.d.ts.map +1 -1
  311. package/dist/src/core/overlay/types.js +1 -1
  312. package/dist/src/core/overlay/types.js.map +1 -1
  313. package/dist/src/hooks/context-monitor.js +1 -1
  314. package/dist/src/hooks/context-monitor.js.map +1 -1
  315. package/dist/src/hooks/skill-context.js +1 -1
  316. package/dist/src/hooks/skill-context.js.map +1 -1
  317. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  318. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  319. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  320. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  321. package/dist/src/tools/index.js +2 -2
  322. package/dist/src/tools/index.js.map +1 -1
  323. package/dist/src/tools/store-knowhow.d.ts +21 -0
  324. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  325. package/dist/src/tools/store-knowhow.js +295 -0
  326. package/dist/src/tools/store-knowhow.js.map +1 -0
  327. package/package.json +1 -1
  328. package/shared/agent-types.ts +2 -0
  329. package/templates/workflows/specs/node-catalog.md +170 -0
  330. package/templates/workflows/specs/template-schema.md +157 -0
  331. package/workflows/analyze.md +61 -185
  332. package/workflows/brainstorm.md +3 -23
  333. package/workflows/codebase-rebuild.md +79 -191
  334. package/workflows/codebase-refresh.md +26 -124
  335. package/workflows/debug.md +21 -141
  336. package/workflows/execute.md +183 -350
  337. package/workflows/fork.md +72 -230
  338. package/workflows/harvest.md +12 -79
  339. package/workflows/init.md +3 -17
  340. package/workflows/integration-test.md +21 -190
  341. package/workflows/issue-analyze.md +35 -153
  342. package/workflows/issue-discover.md +88 -263
  343. package/workflows/issue-execute.md +29 -208
  344. package/workflows/issue-plan.md +33 -154
  345. package/workflows/issue.md +44 -202
  346. package/workflows/knowhow.md +374 -0
  347. package/workflows/learn.md +30 -177
  348. package/workflows/maestro-coordinate.codex.md +77 -362
  349. package/workflows/maestro-link-coordinate.md +12 -61
  350. package/workflows/maestro.codex.md +124 -457
  351. package/workflows/maestro.md +562 -976
  352. package/workflows/map.md +16 -53
  353. package/workflows/merge.md +42 -197
  354. package/workflows/milestone-audit.md +5 -43
  355. package/workflows/milestone-complete.md +11 -60
  356. package/workflows/plan.md +176 -387
  357. package/workflows/quick.md +25 -174
  358. package/workflows/refactor.md +28 -221
  359. package/workflows/retrospective.md +104 -443
  360. package/workflows/review.md +87 -299
  361. package/workflows/roadmap.md +117 -97
  362. package/workflows/spec-generate.md +22 -118
  363. package/workflows/specs-add.md +5 -25
  364. package/workflows/specs-load.md +1 -5
  365. package/workflows/specs-remove.md +0 -11
  366. package/workflows/specs-setup.md +11 -47
  367. package/workflows/status.md +58 -200
  368. package/workflows/sync.md +28 -141
  369. package/workflows/test-gen.md +23 -100
  370. package/workflows/test.md +15 -125
  371. package/workflows/ui-design.md +139 -465
  372. package/workflows/ui-style.md +36 -228
  373. package/workflows/verify.md +52 -273
  374. package/workflows/wiki-connect.md +9 -46
  375. package/workflows/wiki-digest.md +7 -50
  376. package/workflows/wiki-manage.md +11 -108
  377. package/.claude/commands/maestro-coordinate.md +0 -63
  378. package/.claude/commands/manage-memory-capture.md +0 -59
  379. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  380. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  381. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  382. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  383. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  384. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  385. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  386. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  387. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  388. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  389. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  390. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  391. package/workflows/maestro-coordinate.md +0 -582
  392. package/workflows/memory.md +0 -451
package/workflows/plan.md CHANGED
@@ -20,45 +20,18 @@ All output goes to `.workflow/scratch/plan-{slug}-{date}/`.
20
20
  ```
21
21
  Input: [phase] argument OR --dir <path>
22
22
 
23
- # Worktree scope check
24
- IF file_exists(".workflow/worktree-scope.json"):
25
- scope = read(".workflow/worktree-scope.json")
26
- IF <phase> is a number AND <phase> NOT IN scope.owned_phases:
27
- ERROR "Phase {phase} not owned by this worktree. Owned: {scope.owned_phases}"
28
- EXIT
29
-
30
- # Auto-bootstrap state.json if missing
31
- IF NOT file_exists(".workflow/state.json"):
32
- mkdir -p .workflow/scratch/
33
- Write minimal state.json: { project: null, status: "active", current_milestone: null,
34
- current_task_id: null, milestones: [], artifacts: [], last_updated: now() }
35
-
36
- IF --dir <path> is provided:
37
- 1. Set CONTEXT_DIR = <path> (absolute or relative to .workflow/)
38
- 2. Validate directory exists (context.md or conclusions.json present)
39
- 3. Determine scope from parent artifact in state.json (if registered), else "standalone"
40
- 4. Set PHASE_NUM = null, PHASE_SLUG = directory basename
41
-
42
- ELSE IF no arguments:
43
- IF state.json.current_milestone AND roadmap.md exists:
44
- scope = "milestone"
45
- milestone_slug = slugify(current_milestone name)
46
- CONTEXT_DIR = find latest analyze artifact for this milestone from state.json.artifacts[]
47
- ELSE:
48
- ERROR E001 "No args and no roadmap — provide phase number or create roadmap"
49
-
50
- ELSE IF argument is a number:
51
- IF state.json.current_milestone AND roadmap.md exists:
52
- scope = "phase"
53
- PHASE_NUM = parsed number
54
- PHASE_SLUG = resolve from roadmap.md
55
- CONTEXT_DIR = find latest analyze artifact for this phase from state.json.artifacts[]
56
- ELSE:
57
- ERROR "Phase number requires init + roadmap"
58
-
59
- # Output directory (always scratch)
23
+ Worktree guard: reject if phase not in .workflow/worktree-scope.json owned_phases
24
+ Auto-bootstrap: create minimal state.json if missing
25
+
26
+ Resolution priority:
27
+ --dir <path> → CONTEXT_DIR = path, scope from state.json artifact or "standalone"
28
+ no arguments → scope = "milestone", CONTEXT_DIR = latest analyze artifact for current_milestone
29
+ (ERROR E001 if no roadmap)
30
+ numeric arg → scope = "phase", resolve PHASE_SLUG from roadmap.md,
31
+ CONTEXT_DIR = latest analyze artifact for phase
32
+ (ERROR if no init + roadmap)
33
+
60
34
  OUTPUT_DIR = .workflow/scratch/plan-{PHASE_SLUG or milestone_slug}-{date}/
61
- mkdir -p {OUTPUT_DIR}/.task/
62
35
  ```
63
36
 
64
37
  ---
@@ -72,6 +45,18 @@ mkdir -p {OUTPUT_DIR}/.task/
72
45
  | `--auto` | Skip P2 (clarification), proceed directly to P3 |
73
46
  | `--gaps` | Load verification.json gaps, skip P1 exploration, plan only gap fixes |
74
47
  | `--dir <path>` | Use arbitrary directory instead of phase resolution (skip roadmap validation) |
48
+ | `--revise [instructions]` | Revise existing plan (skip P1-P3, load → modify → P4). Auto-discovers latest plan or use `--dir` |
49
+ | `--check <plan-dir>` | Standalone plan verification (P4 only, read-only) |
50
+
51
+ ---
52
+
53
+ ## Mode Routing
54
+
55
+ ```
56
+ --check <plan-dir> → Check Mode (P4 only, read-only)
57
+ --revise → Revise Mode (load → modify → P4)
58
+ default → Create Mode: P1 → P2 → P3 → P4 → P4.5 → P5
59
+ ```
75
60
 
76
61
  ---
77
62
 
@@ -82,21 +67,10 @@ mkdir -p {OUTPUT_DIR}/.task/
82
67
  ### Steps
83
68
 
84
69
  1. **Load user decisions**
85
- ```
86
- IF CONTEXT_DIR exists:
87
- Read ${CONTEXT_DIR}/context.md
88
- ELSE:
89
- warn "No upstream analyze found. Run /maestro-analyze first or proceed with defaults."
90
- ```
70
+ - Read `${CONTEXT_DIR}/context.md` if exists, else warn (no upstream analyze)
91
71
 
92
72
  2. **Load spec reference** (if `--spec` flag or index.json has spec_ref)
93
- ```
94
- spec_ref = --spec argument || index.json.spec_ref
95
- If spec_ref:
96
- Read .workflow/task-specs/${spec_ref}/spec-summary.md
97
- Read .workflow/task-specs/${spec_ref}/requirements/_index.md
98
- Read .workflow/task-specs/${spec_ref}/epics/_index.md
99
- ```
73
+ - Read from `.workflow/task-specs/${spec_ref}/`: spec-summary.md, requirements/_index.md, epics/_index.md
100
74
 
101
75
  3. **Load project specs**
102
76
  ```
@@ -105,120 +79,38 @@ mkdir -p {OUTPUT_DIR}/.task/
105
79
  Pass to planner agent as project constraints context.
106
80
 
107
81
  4. **Load codebase context**
108
- ```
109
- If exists .workflow/codebase/doc-index.json:
110
- Read doc-index.json -> extract relevant features, components, requirements
111
- ```
82
+ - Read `.workflow/codebase/doc-index.json` if exists → extract relevant features, components, requirements
112
83
 
113
84
  4b. **Load design reference** (if available)
114
- ```
115
- IF file exists "${PHASE_DIR}/design-ref/MASTER.md":
116
- designRef = read("${PHASE_DIR}/design-ref/MASTER.md")
117
- designTokens = read_json("${PHASE_DIR}/design-ref/design-tokens.json")
118
- animationTokens = read_json("${PHASE_DIR}/design-ref/animation-tokens.json") // optional
119
- layoutTemplates = list("${PHASE_DIR}/design-ref/layout-templates/layout-*.json")
120
- display "Found design reference from maestro-ui-design. Including in plan context."
121
- // Pass to planner: MASTER.md, tokens, animation tokens, layout templates, prototype paths
122
- // Ensure every UI task includes in read_first[]:
123
- // - design-ref/design-tokens.json (colors, typography, component_styles)
124
- // - design-ref/animation-tokens.json (transitions, keyframes)
125
- // - design-ref/layout-templates/layout-{target}-*.json (relevant target layout)
126
- // - design-ref/MASTER.md (overall design system reference)
127
- ELSE IF phase goal matches UI keywords (landing|page|dashboard|frontend|UI|component|界面):
128
- display "This phase has UI work but no design reference."
129
- display "Consider: Skill({ skill: \"maestro-ui-design\", args: \"{phase}\" })"
130
- // Continue without design ref — non-blocking suggestion
131
- ```
85
+ - If `${PHASE_DIR}/design-ref/MASTER.md` exists: load MASTER.md, design-tokens.json, animation-tokens.json (optional), layout-templates/layout-*.json
86
+ - Every UI task must include in `read_first[]`: design-tokens.json, animation-tokens.json, relevant layout-*.json, MASTER.md
87
+ - Else if phase goal matches UI keywords (`landing|page|dashboard|frontend|UI|component|界面`): suggest running `maestro-ui-design` (non-blocking)
132
88
 
133
89
  5. **Load upstream analysis** (if available)
134
- ```
135
- IF file exists "${PHASE_DIR}/conclusions.json":
136
- conclusions = read_json("${PHASE_DIR}/conclusions.json")
137
- IF conclusions.status is not empty:
138
- display "Found existing analysis from maestro-analyze. Reusing exploration context."
139
- explorationContext = { conclusions: conclusions }
140
- IF file exists "${PHASE_DIR}/explorations.json":
141
- explorationContext.explorations = read_json("${PHASE_DIR}/explorations.json")
142
- IF file exists "${PHASE_DIR}/perspectives.json":
143
- explorationContext.perspectives = read_json("${PHASE_DIR}/perspectives.json")
144
-
145
- // Extract implementation scope (from analyze Step 9 scoping)
146
- IF conclusions.implementation_scope is not empty:
147
- explorationContext.implementationScope = conclusions.implementation_scope
148
- display "Found implementation scope: ${conclusions.implementation_scope.length} scoped items with acceptance criteria"
149
- // Planner MUST use these as primary input:
150
- // scope.objective → task title/description
151
- // scope.acceptance_criteria → convergence.criteria (make grep-verifiable)
152
- // scope.target_files → files[] + read_first[]
153
- // scope.priority → task/wave ordering
154
-
155
- Skip step 5 (parallel exploration).
156
- ```
90
+ - If `${PHASE_DIR}/conclusions.json` exists with non-empty status: load as explorationContext (conclusions + explorations.json + perspectives.json)
91
+ - If `conclusions.implementation_scope` exists: use as primary planner input:
92
+ - `scope.objective` → task title/description
93
+ - `scope.acceptance_criteria` convergence.criteria (grep-verifiable)
94
+ - `scope.target_files` files[] + read_first[]
95
+ - `scope.priority` task/wave ordering
96
+ - Skip parallel exploration
157
97
 
158
98
  5. **Parallel exploration** (skip if `--gaps` or upstream analysis loaded)
159
- ```
160
- Determine exploration angles based on phase goal + context complexity:
161
- - architecture: How does this fit into existing codebase?
162
- - implementation: What patterns/libraries to use?
163
- - integration: What existing code needs modification?
164
- - risk: What could go wrong?
165
-
166
- Spawn 1-4 cli-explore-agent in parallel (based on complexity):
167
- Each agent:
168
- Input: phase goal + success_criteria + one exploration angle
169
- Output: .process/exploration-{angle}.json
170
-
171
- Write .process/explorations-manifest.json:
172
- { "explorations": [{ "angle": "...", "file": "...", "status": "completed" }] }
173
-
174
- Write .process/context-package.json:
175
- Aggregated exploration results for downstream consumption
176
- ```
99
+ - Exploration angles (1-4 based on complexity): architecture, implementation, integration, risk
100
+ - Spawn 1-4 `cli-explore-agent` in parallel, each with phase goal + success_criteria + one angle
101
+ - Output: `.process/exploration-{angle}.json`, `.process/explorations-manifest.json`, `.process/context-package.json`
177
102
 
178
103
  6. **Gap-mode context** (if `--gaps`)
179
- ```
180
- all_gaps = []
181
-
182
- // Primary source: issues registry
183
- IF file exists ".workflow/issues/issues.jsonl":
184
- issues = read_ndjson(".workflow/issues/issues.jsonl")
185
- phase_issues = issues.filter(i => i.phase_ref == PHASE_SLUG
186
- AND i.status in ["registered", "diagnosed"])
187
- FOR each issue in phase_issues:
188
- all_gaps.push({
189
- issue_id: issue.id,
190
- description: issue.description,
191
- fix_direction: issue.fix_direction,
192
- severity: issue.severity,
193
- source: "issue",
194
- context: issue.context
195
- })
196
- Update issue in issues.jsonl: status = "planning"
197
-
198
- // Fallback source: verification gaps (when no issues registry)
199
- IF all_gaps is empty AND file exists "${PHASE_DIR}/verification.json":
200
- verification = read_json("${PHASE_DIR}/verification.json")
201
- all_gaps.extend(verification.gaps)
202
-
203
- // Additional source: UAT human-found gaps
204
- IF file exists "${PHASE_DIR}/uat.md":
205
- Parse uat.md "Gaps" section into structured gap objects.
206
- FOR each uat_gap:
207
- IF not already covered in all_gaps (match by test/truth):
208
- all_gaps.push({ ...uat_gap, source: "uat" })
209
-
210
- // Enrichment source: debug diagnosis (enrich existing gaps)
211
- FOR each debug_dir IN "${PHASE_DIR}/.debug/*/":
212
- IF file exists "${debug_dir}/understanding.md":
213
- Parse root_cause and fix_direction from understanding.md.
214
- Match to existing gap by affected area/test_id.
215
- IF matched: enrich gap with root_cause, fix_direction, affected_files.
216
-
217
- IF all_gaps is empty:
218
- Error: "--gaps mode requires issues.jsonl, verification.json, or uat.md with identified gaps."
219
-
220
- Set explorationContext = all_gaps (skip exploration agents)
221
- ```
104
+
105
+ Gap sources (in priority order, first non-empty wins, then additionals merged):
106
+ - **Primary**: `.workflow/issues/issues.jsonl` — filter by phase_ref + status in ["registered","diagnosed"], mark as "planning"
107
+ - **Fallback**: `${PHASE_DIR}/verification.json` gaps (when no issues found)
108
+ - **Additional**: `${PHASE_DIR}/uat.md` "Gaps" section — deduplicate against existing gaps
109
+ - **Enrichment**: `${PHASE_DIR}/.debug/*/understanding.md` — enrich matched gaps with root_cause, fix_direction, affected_files
110
+
111
+ Each gap: `{ issue_id, description, fix_direction, severity, source, context }`
112
+
113
+ ERROR if all sources empty. Set `explorationContext = all_gaps` (skip exploration agents).
222
114
 
223
115
  ### Output
224
116
  - `.process/exploration-{angle}.json` (1-4 files, skipped if upstream analysis loaded)
@@ -235,30 +127,12 @@ mkdir -p {OUTPUT_DIR}/.task/
235
127
  ### Steps
236
128
 
237
129
  1. **Aggregate clarification needs**
238
- ```
239
- For each exploration-{angle}.json:
240
- Extract clarification_needs[] field
241
- Deduplicate similar questions
242
- Sort by priority (blocking > important > nice-to-have)
243
- ```
130
+ - Extract `clarification_needs[]` from each exploration, deduplicate, sort by priority (blocking > important > nice-to-have)
244
131
 
245
- 2. **Interactive clarification rounds**
246
- ```
247
- While unresolved_questions > 0 AND round <= 3:
248
- Present max 4 questions per round via AskUserQuestion
249
- Record answers
250
- Mark questions as resolved
251
- Check if answers trigger follow-up questions
252
- ```
132
+ 2. **Interactive clarification rounds** (max 3 rounds, max 4 questions each)
133
+ - Present via AskUserQuestion, record answers, check for follow-ups
253
134
 
254
- 3. **Build clarification context**
255
- ```
256
- clarificationContext = {
257
- questions_asked: [...],
258
- answers: [...],
259
- decisions_made: [...]
260
- }
261
- ```
135
+ 3. **Build clarification context** → `{ questions_asked, answers, decisions_made }`
262
136
 
263
137
  ### Output
264
138
  - In-memory: clarificationContext
@@ -271,38 +145,17 @@ mkdir -p {OUTPUT_DIR}/.task/
271
145
 
272
146
  ### Standard Mode (default)
273
147
 
274
- ```
275
- Spawn workflow-planner Agent:
276
- Input:
277
- - context.md (user decisions)
278
- - spec-ref (if available)
279
- - doc-index.json (if available)
280
- - explorationContext (from P1)
281
- - explorationContext.implementationScope (from P1, if present)
282
- - clarificationContext (from P2)
283
- - Phase goal + success_criteria from index.json
284
- - Templates: @templates/plan.json, @templates/task.json
285
-
286
- Agent responsibilities:
287
- 1. Decompose goal into concrete tasks
288
- - **When implementationScope exists**: use each scope item as primary task seed
289
- (1 scope item → 1 task, group only if tightly coupled)
290
- 2. Assign task IDs (TASK-001, TASK-002, ...)
291
- 3. Determine dependencies between tasks
292
- 4. Group tasks into execution waves
293
- - **When implementationScope exists**: order by scope.priority (high first)
294
- 5. Estimate complexity and time
295
- 6. Set convergence.criteria (grep-verifiable) for each task
296
- - **When implementationScope exists**: use scope.acceptance_criteria as seed,
297
- then refine into grep-verifiable form
298
- 7. Identify files to create/modify per task
299
- - **When implementationScope exists**: use scope.target_files as starting point
300
- 8. Populate read_first[] for each task
301
-
302
- Output:
303
- - plan.json (summary, approach, task_ids[], task_count, complexity, waves[])
304
- - .task/TASK-{NNN}.json per task (using task.json template)
305
- ```
148
+ Spawn `workflow-planner` agent with: context.md, spec-ref, doc-index.json, explorationContext (incl. implementationScope), clarificationContext, phase goal + success_criteria, templates (plan.json, task.json).
149
+
150
+ Agent responsibilities:
151
+ 1. Decompose goal into tasks (when implementationScope exists: 1 scope item → 1 task)
152
+ 2. Assign task IDs (TASK-001, TASK-002, ...), determine dependencies
153
+ 3. Group into execution waves (implementationScope: order by scope.priority)
154
+ 4. Estimate complexity/time
155
+ 5. Set grep-verifiable `convergence.criteria` (from scope.acceptance_criteria when available)
156
+ 6. Identify files per task (from scope.target_files when available), populate `read_first[]`
157
+
158
+ Output: `plan.json` (summary, approach, task_ids[], task_count, complexity, waves[]) + `.task/TASK-{NNN}.json` per task.
306
159
 
307
160
  ### Deep Work Rules (MANDATORY for all modes)
308
161
 
@@ -336,53 +189,17 @@ Every TASK-*.json MUST include these fields — they are NOT optional:
336
189
 
337
190
  ### Collaborative Mode (`--collab`)
338
191
 
339
- ```
340
- Determine planner count (2-5 based on task scope)
341
-
342
- Pre-allocate TASK ID ranges:
343
- Planner 1: TASK-001..010
344
- Planner 2: TASK-011..020
345
- (etc.)
346
-
347
- Create plan-note.md for coordination:
348
- - Shared context summary
349
- - ID range assignments
350
- - Coordination rules (no overlapping files)
351
-
352
- Spawn N workflow-collab-planner agents in parallel:
353
- Each agent:
354
- - Assigned ID range
355
- - Read/append plan-note.md for coordination
356
- - Output: .task/TASK-{NNN}.json within assigned range
357
-
358
- Merge results:
359
- - Collect all task files
360
- - Build unified plan.json with merged waves
361
- - Resolve cross-planner dependencies
362
- ```
192
+ - Pre-allocate TASK ID ranges per planner (2-5 planners based on scope): TASK-001..010, TASK-011..020, etc.
193
+ - Create `plan-note.md` for coordination (shared context, ID ranges, no-overlap rules)
194
+ - Spawn N `workflow-collab-planner` agents in parallel, each writing `.task/TASK-{NNN}.json` within assigned range
195
+ - Merge: collect all task files, build unified plan.json with merged waves, resolve cross-planner dependencies
363
196
 
364
197
  ### Gap Mode (`--gaps`)
365
198
 
366
- ```
367
- Skip exploration, load gaps from explorationContext (populated in P1 Step 6):
368
- For each gap:
369
- Create TASK-{NNN}.json with:
370
- type: "fix"
371
- description: gap.description
372
- action: gap.fix_direction (with concrete values, not vague references)
373
- read_first: [affected files from gap context]
374
- convergence.criteria: [grep-verifiable conditions derived from gap description]
375
- issue_id: gap.issue_id (if source == "issue", else null)
376
-
377
- Link tasks to issues (bidirectional):
378
- For each created TASK-{NNN}.json that has issue_id:
379
- Update corresponding issue in .workflow/issues/issues.jsonl:
380
- status: "planned"
381
- updated_at: now()
382
- Display: "TASK-{NNN} <-> {issue_id}"
383
-
384
- Build plan.json with gap-fix tasks
385
- ```
199
+ For each gap from explorationContext (P1 Step 6), create `TASK-{NNN}.json`:
200
+ - `type: "fix"`, `description`, `action` (concrete fix_direction), `read_first` (affected files), `convergence.criteria` (grep-verifiable), `issue_id` (if source == "issue")
201
+
202
+ Bidirectional linking: update matching issues in `.workflow/issues/issues.jsonl` → `status: "planned"`. Build plan.json with gap-fix tasks.
386
203
 
387
204
  ### Output
388
205
  - `plan.json` in PHASE_DIR
@@ -398,44 +215,16 @@ Build plan.json with gap-fix tasks
398
215
  ### Steps
399
216
 
400
217
  1. **Spawn workflow-plan-checker agent**
401
- ```
402
- Input: plan.json + all .task/TASK-*.json + index.json (success_criteria)
403
-
404
- Check dimensions:
405
- - Requirements coverage: Every success_criterion maps to at least one task
406
- - Feasibility: Files referenced exist or can be created
407
- - Dependency correctness: No circular deps, deps exist, wave ordering valid
408
- - Convergence criteria quality: Each task has grep-verifiable convergence.criteria (no subjective language)
409
- - read_first completeness: Every task has read_first[] with at least the file being modified
410
- - Action concreteness: No vague "align X with Y" — every action has exact values
411
- - Wave structure: Parallel tasks have no conflicting file modifications
412
- - Completeness: No orphan tasks (not in any wave)
413
- ```
218
+ - Input: plan.json + all .task/TASK-*.json + index.json (success_criteria)
219
+ - Check dimensions: requirements coverage, feasibility, dependency correctness (no circular deps), convergence criteria quality (grep-verifiable, no subjective language), read_first completeness, action concreteness (no vague references), wave structure (no conflicting files), completeness (no orphan tasks)
414
220
 
415
221
  2. **Revision loop** (max 3 rounds)
416
- ```
417
- While issues_found AND round <= 3:
418
- checker returns issues[] with severity + fix_suggestion
419
- If critical issues:
420
- Re-spawn workflow-planner with issues as additional input
421
- Planner revises plan.json + affected .task/ files
422
- Re-check
423
- If only warnings:
424
- Log warnings, proceed
425
- ```
222
+ - Critical issues → re-spawn planner with issues, revise, re-check
223
+ - Warnings only log and proceed
426
224
 
427
225
  3. **Update index.json**
428
- ```
429
- index.json.plan = {
430
- task_ids: [extracted from plan.json],
431
- task_count: plan.json.task_count,
432
- complexity: plan.json.complexity,
433
- waves: plan.json.waves,
434
- executor_assignments: {} # populated by user override or auto-assignment in P5
435
- }
436
- index.json.status = "planning"
437
- index.json.updated_at = now()
438
- ```
226
+ - Set `index.json.plan` = `{ task_ids, task_count, complexity, waves, executor_assignments: {} }`
227
+ - Set `status: "planning"`, `updated_at: now()`
439
228
 
440
229
  ### Output
441
230
  - Updated plan.json (if revised)
@@ -451,40 +240,11 @@ Build plan.json with gap-fix tasks
451
240
  **Skip if:** scope == "standalone" (no milestone context to compare against)
452
241
 
453
242
  ```
454
- // 1. Collect existing plan file sets
455
- existing_plans = state.json.artifacts
456
- .filter(a => a.milestone == current_milestone
457
- && a.type == "plan"
458
- && a.status == "completed")
459
-
460
- existing_files = {} // { file_path: [plan_id, ...] }
461
- FOR each plan IN existing_plans:
462
- tasks = load_all_tasks(plan.path + "/.task/")
463
- FOR each task IN tasks:
464
- FOR each file IN task.files:
465
- existing_files[file].push(plan.id)
466
-
467
- // 2. Collect new plan's file set
468
- new_tasks = load_all_tasks(OUTPUT_DIR + "/.task/")
469
- new_files = Set()
470
- FOR each task IN new_tasks:
471
- FOR each file IN task.files:
472
- new_files.add(file)
473
-
474
- // 3. Check intersection
475
- collisions = []
476
- FOR each file IN new_files:
477
- IF file IN existing_files:
478
- collisions.push({ file, existing_plans: existing_files[file] })
479
-
480
- // 4. Report (non-blocking)
481
- IF collisions.length > 0:
482
- WARN: "碰撞检测发现 {collisions.length} 个文件重叠:"
483
- FOR each c IN collisions:
484
- " {c.file} ← 已在 {c.existing_plans.join(', ')} 中规划"
485
- "建议: 确认是否有意覆盖,或调整 task 范围"
486
- ELSE:
487
- "碰撞检测通过: 无文件重叠"
243
+ 1. Collect task.files[] from all completed plans in current milestone
244
+ 2. Collect task.files[] from new plan
245
+ 3. Intersect collisions (non-blocking warning)
246
+ 碰撞 WARN "{file} ← 已在 {plan_ids} 中规划"
247
+ 无重叠 "碰撞检测通过"
488
248
  ```
489
249
 
490
250
  **Note:** Only checks `task.files[]` (write targets). `task.read_first[]` (read-only references) are excluded.
@@ -497,77 +257,33 @@ ELSE:
497
257
 
498
258
  ### Steps
499
259
 
500
- 1. **Display plan summary**
501
- ```
502
- Show:
503
- - Plan summary and approach
504
- - Task count and wave structure
505
- - Complexity estimate
506
- - Key dependencies
507
- ```
260
+ 1. **Display plan summary** — summary, approach, task count, wave structure, complexity, key dependencies
508
261
 
509
- 2. **Present options via AskUserQuestion** (skip if `config.gates.confirm_plan == false`, auto-proceed to Execute)
510
- ```
511
- "Plan ready ({task_count} tasks in {wave_count} waves). What next?"
512
-
513
- Options:
514
- 1. Execute now -> Build executionContext, hand off to /workflow:execute
515
- 2. Verify plan quality -> Re-run P4 with stricter checks
516
- 3. Just view -> Display full plan details, exit
517
- 4. Modify -> Open specific task for editing, return to P4
518
- ```
262
+ 2. **Present options via AskUserQuestion** (skip if `config.gates.confirm_plan == false`, auto-proceed)
263
+ - Execute now → build executionContext, hand off to /workflow:execute
264
+ - Verify plan quality re-run P4 with stricter checks
265
+ - Just view → display full plan details, exit
266
+ - Modify → open specific task for editing, return to P4
519
267
 
520
268
  3. **executionContext handoff** (if "Execute now")
521
- ```
522
- executionMethod = config.json.execution.method || "agent"
523
- defaultExecutor = config.json.execution.default_executor || "gemini"
524
- executorAssignments = index.json.plan.executor_assignments || {}
525
-
526
- executionContext = {
527
- planObject: {
528
- plan: plan.json contents,
529
- tasks: { "TASK-001": task-001.json, ... }
530
- },
531
- explorations: [ exploration-*.json contents ],
532
- clarifications: clarificationContext,
533
- executionMethod: executionMethod,
534
- defaultExecutor: defaultExecutor,
535
- executorAssignments: executorAssignments,
536
- phaseIndex: index.json contents,
537
- specRef: spec-ref contents (if loaded)
269
+ ```json
270
+ {
271
+ "planObject": { "plan": "plan.json contents", "tasks": { "TASK-001": "..." } },
272
+ "explorations": ["exploration-*.json contents"],
273
+ "clarifications": "clarificationContext",
274
+ "executionMethod": "config.json.execution.method || 'agent'",
275
+ "defaultExecutor": "config.json.execution.default_executor || 'gemini'",
276
+ "executorAssignments": "index.json.plan.executor_assignments || {}",
277
+ "phaseIndex": "index.json contents",
278
+ "specRef": "spec-ref contents (if loaded)"
538
279
  }
539
-
540
- Hand off to /workflow:execute with executionContext in memory
541
280
  ```
281
+ Hand off to /workflow:execute with executionContext in memory.
542
282
 
543
283
  4. **Register artifact in state.json**
544
- ```
545
- Read .workflow/state.json
546
- // Find upstream analyze artifact
547
- upstream_analyze = state.json.artifacts
548
- .filter(a => a.type == "analyze" && a.path == CONTEXT_DIR relative path)
549
- .last() // most recent
550
-
551
- next_id = max(artifacts.filter(a => a.type == "plan").map(a => parseInt(a.id.replace("PLN-","")))) + 1
552
-
553
- artifact = {
554
- id: "PLN-{next_id padded to 3}",
555
- type: "plan",
556
- milestone: state.json.current_milestone,
557
- phase: PHASE_NUM,
558
- scope: scope,
559
- path: OUTPUT_DIR relative to .workflow/,
560
- status: "completed",
561
- depends_on: upstream_analyze?.id || null,
562
- harvested: false,
563
- created_at: plan_start_time,
564
- completed_at: now()
565
- }
566
-
567
- state.json.artifacts.push(artifact)
568
- state.json.last_updated = now()
569
- Write state.json (atomic: write tmp + rename)
570
- ```
284
+ - Find upstream analyze artifact by CONTEXT_DIR path
285
+ - Create artifact: `{ id: "PLN-{NNN}", type: "plan", milestone, phase, scope, path, status: "completed", depends_on, harvested: false, created_at, completed_at }`
286
+ - Append to `state.json.artifacts`, atomic write
571
287
 
572
288
  ---
573
289
 
@@ -575,6 +291,9 @@ ELSE:
575
291
 
576
292
  | Error | Action |
577
293
  |-------|--------|
294
+ | E001: No args and no roadmap | Provide phase number or topic, or create roadmap |
295
+ | E004: No plan found to revise | Use --dir to specify plan, or create plan first |
296
+ | E005: Plan directory not found (--check) | Check path, use --dir |
578
297
  | Phase directory not found | Abort with message: "Phase {phase} not found. Run /workflow:init first." |
579
298
  | No context.md | Warn, proceed with exploration only |
580
299
  | Exploration agent fails | Log error, continue with available explorations |
@@ -592,3 +311,73 @@ ELSE:
592
311
  | P3 complete | index.json.plan.* | Plan metadata |
593
312
  | P4 pass | index.json.updated_at | Current timestamp |
594
313
  | P5 "Execute now" | (handoff, no write) | executionContext in memory |
314
+
315
+ ---
316
+
317
+ ## Revise Mode (`--revise`)
318
+
319
+ Incrementally modify an existing plan without rebuilding from scratch.
320
+
321
+ ### Plan Discovery
322
+
323
+ - `--dir` specified → use directly
324
+ - Else → latest completed plan artifact for current phase from state.json
325
+ - Not found → ERROR E004
326
+
327
+ ### Execution Flow
328
+
329
+ 1. **Load existing plan**
330
+ - Read `plan.json` + all `.task/TASK-*.json` from PLAN_DIR
331
+ - Show current plan summary: task count, waves, status per task
332
+
333
+ 2. **Obtain revision instructions**
334
+ - If `--revise "instructions"` provided → parse as change directive
335
+ - If `--revise` without instructions → AskUserQuestion for what to change:
336
+ - Add/remove tasks
337
+ - Modify task scope, action, implementation
338
+ - Reorder waves or adjust dependencies
339
+ - Update convergence criteria
340
+ - Parse instructions into concrete changes
341
+
342
+ 3. **Apply targeted changes**
343
+ - Modify affected TASK files in-place
344
+ - If tasks added/removed: re-sequence task IDs, regenerate wave assignments
345
+ - Update plan.json summary (task count, wave structure)
346
+ - Preserve unmodified tasks completely
347
+
348
+ 4. **Re-run plan-checker (P4)**
349
+ - Validate modified plan with same checker as create mode
350
+ - Re-run collision detection against same-milestone plans
351
+ - Present check results for confirmation
352
+
353
+ 5. **Update artifact**
354
+ - Overwrite plan files in existing scratch directory
355
+ - Update artifact timestamp in state.json (no new artifact created)
356
+
357
+ ---
358
+
359
+ ## Check Mode (`--check`)
360
+
361
+ Read-only plan verification without modification.
362
+
363
+ ### Execution Flow
364
+
365
+ 1. **Load plan** — read plan.json + .task/TASK-*.json from `--check` path (ERROR E005 if not found), plus roadmap.md
366
+
367
+ 2. **Run checks** — plan-checker (task quality, convergence criteria), roadmap consistency, collision detection, dependency integrity
368
+
369
+ 3. **Produce check report**
370
+ ```
371
+ === PLAN CHECK ===
372
+ Plan: {plan_dir}/plan.json
373
+ Tasks: {total} ({completed} done, {pending} pending)
374
+ Checker: {PASS|WARN|FAIL} ({issues} issues)
375
+ Roadmap: {aligned|drift detected}
376
+ Collision: {clear|{N} overlaps}
377
+
378
+ Suggested actions:
379
+ /maestro-plan --revise "fix instructions"
380
+ /maestro-execute --dir {plan_dir}
381
+ ```
382
+
383
+ **No file modifications.** Pure verification + report.