maestro-flow 0.3.15 → 0.3.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/.claude/commands/maestro-amend.md +300 -0
  2. package/.claude/commands/maestro-analyze.md +1 -49
  3. package/.claude/commands/maestro-execute.md +2 -56
  4. package/.claude/commands/maestro-fork.md +3 -50
  5. package/.claude/commands/maestro-merge.md +2 -26
  6. package/.claude/commands/maestro-milestone-audit.md +1 -5
  7. package/.claude/commands/maestro-milestone-complete.md +1 -7
  8. package/.claude/commands/maestro-plan.md +6 -127
  9. package/.claude/commands/maestro-roadmap.md +3 -101
  10. package/.claude/commands/maestro-spec-generate.md +1 -25
  11. package/.claude/commands/maestro-ui-design.md +14 -73
  12. package/.claude/commands/maestro-verify.md +1 -32
  13. package/.claude/commands/maestro.md +13 -30
  14. package/.claude/commands/manage-harvest.md +7 -44
  15. package/.claude/commands/manage-knowhow-capture.md +193 -0
  16. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  17. package/.claude/commands/manage-learn.md +3 -28
  18. package/.claude/commands/manage-status.md +1 -20
  19. package/.claude/commands/manage-wiki.md +1 -1
  20. package/.claude/commands/quality-business-test.md +1 -1
  21. package/.claude/commands/quality-debug.md +3 -18
  22. package/.claude/commands/quality-integration-test.md +3 -23
  23. package/.claude/commands/quality-retrospective.md +1 -28
  24. package/.claude/commands/quality-review.md +3 -52
  25. package/.claude/commands/quality-test-gen.md +1 -10
  26. package/.claude/commands/quality-test.md +3 -25
  27. package/.claude/commands/spec-add.md +1 -21
  28. package/.claude/commands/spec-load.md +1 -16
  29. package/.claude/commands/wiki-connect.md +2 -112
  30. package/.claude/commands/wiki-digest.md +2 -141
  31. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  32. package/.codex/skills/maestro/SKILL.md +60 -146
  33. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  34. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  35. package/.codex/skills/maestro-composer/SKILL.md +4 -76
  36. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  37. package/.codex/skills/maestro-init/SKILL.md +7 -51
  38. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  39. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  40. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  41. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  42. package/.codex/skills/maestro-plan/SKILL.md +42 -166
  43. package/.codex/skills/maestro-player/SKILL.md +24 -149
  44. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  45. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  46. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  47. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  48. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  49. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  50. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  51. package/.codex/skills/manage-issue/SKILL.md +1 -6
  52. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  53. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  54. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  55. package/.codex/skills/manage-learn/SKILL.md +17 -71
  56. package/.codex/skills/manage-status/SKILL.md +4 -35
  57. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  58. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  59. package/.codex/skills/quality-debug/SKILL.md +41 -133
  60. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  61. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  62. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  63. package/.codex/skills/quality-review/SKILL.md +30 -65
  64. package/.codex/skills/quality-sync/SKILL.md +2 -11
  65. package/.codex/skills/quality-test/SKILL.md +4 -45
  66. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  67. package/.codex/skills/spec-add/SKILL.md +2 -9
  68. package/.codex/skills/spec-load/SKILL.md +4 -14
  69. package/.codex/skills/spec-map/SKILL.md +4 -37
  70. package/.codex/skills/spec-remove/SKILL.md +3 -35
  71. package/.codex/skills/spec-setup/SKILL.md +2 -19
  72. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  73. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  74. package/.codex/skills/team-executor/SKILL.md +7 -66
  75. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  76. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  77. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  78. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  79. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  80. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  81. package/.codex/skills/team-review/SKILL.md +12 -86
  82. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  83. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  84. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  85. package/.codex/skills/team-testing/SKILL.md +14 -99
  86. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  87. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  88. package/README.md +6 -0
  89. package/README.zh-CN.md +6 -0
  90. package/chains/_intent-map.json +7 -7
  91. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  92. package/chains/singles/{memory.json → knowhow.json} +6 -6
  93. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  94. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  95. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  96. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  97. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  98. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  99. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  100. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  101. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  102. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  103. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  104. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  105. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  106. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  107. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  108. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  109. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  110. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  111. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  112. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  113. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  114. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  115. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  116. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  117. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  118. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  119. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  120. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  121. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  122. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  123. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  124. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  125. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  126. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  127. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  128. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  129. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  130. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  131. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  132. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  133. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  134. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  135. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  136. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  137. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  138. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  139. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  140. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  141. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  142. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  143. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  144. package/dashboard/dist/index.html +2 -2
  145. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  146. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  147. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  148. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  149. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  150. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  151. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  152. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  153. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  154. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  155. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  156. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  157. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  158. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  159. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  160. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  161. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  162. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  163. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  164. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  165. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  166. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  167. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  168. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  169. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  170. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  171. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  172. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  173. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  174. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  175. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  176. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  200. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  201. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  202. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  203. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  204. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  205. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  206. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  207. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  208. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  209. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  210. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  211. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  212. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  213. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  214. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  215. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  218. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  219. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  221. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  222. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  223. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  224. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  226. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  227. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  228. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  229. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  230. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  231. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  232. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  233. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  234. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  235. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  236. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  237. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  238. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  239. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  240. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  241. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  242. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  243. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  244. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  245. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  246. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  247. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  248. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  249. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  250. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  251. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  252. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  253. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  254. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  255. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  256. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  257. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  258. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  259. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  260. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  261. package/dist/shared/agent-types.d.ts +2 -0
  262. package/dist/shared/agent-types.d.ts.map +1 -1
  263. package/dist/src/cli.js +2 -2
  264. package/dist/src/cli.js.map +1 -1
  265. package/dist/src/commands/delegate.d.ts.map +1 -1
  266. package/dist/src/commands/delegate.js +11 -8
  267. package/dist/src/commands/delegate.js.map +1 -1
  268. package/dist/src/commands/install-backend.d.ts +1 -1
  269. package/dist/src/commands/install-backend.d.ts.map +1 -1
  270. package/dist/src/commands/install-backend.js +1 -1
  271. package/dist/src/commands/install-backend.js.map +1 -1
  272. package/dist/src/commands/knowhow.d.ts +10 -0
  273. package/dist/src/commands/knowhow.d.ts.map +1 -0
  274. package/dist/src/commands/knowhow.js +217 -0
  275. package/dist/src/commands/knowhow.js.map +1 -0
  276. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  277. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  278. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  279. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  280. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  281. package/dist/src/commands/overlay-ui/index.js +70 -44
  282. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  283. package/dist/src/commands/overlay.d.ts.map +1 -1
  284. package/dist/src/commands/overlay.js +4 -3
  285. package/dist/src/commands/overlay.js.map +1 -1
  286. package/dist/src/core/overlay/applier.d.ts +1 -1
  287. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  288. package/dist/src/core/overlay/applier.js +40 -13
  289. package/dist/src/core/overlay/applier.js.map +1 -1
  290. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  291. package/dist/src/core/overlay/loader.js +6 -0
  292. package/dist/src/core/overlay/loader.js.map +1 -1
  293. package/dist/src/core/overlay/types.d.ts +5 -1
  294. package/dist/src/core/overlay/types.d.ts.map +1 -1
  295. package/dist/src/core/overlay/types.js +1 -1
  296. package/dist/src/core/overlay/types.js.map +1 -1
  297. package/dist/src/hooks/context-monitor.js +1 -1
  298. package/dist/src/hooks/context-monitor.js.map +1 -1
  299. package/dist/src/hooks/skill-context.js +1 -1
  300. package/dist/src/hooks/skill-context.js.map +1 -1
  301. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  302. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  303. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  304. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  305. package/dist/src/tools/index.js +2 -2
  306. package/dist/src/tools/index.js.map +1 -1
  307. package/dist/src/tools/store-knowhow.d.ts +21 -0
  308. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  309. package/dist/src/tools/store-knowhow.js +295 -0
  310. package/dist/src/tools/store-knowhow.js.map +1 -0
  311. package/package.json +1 -1
  312. package/shared/agent-types.ts +2 -0
  313. package/workflows/analyze.md +61 -185
  314. package/workflows/brainstorm.md +3 -23
  315. package/workflows/codebase-rebuild.md +79 -191
  316. package/workflows/codebase-refresh.md +26 -124
  317. package/workflows/debug.md +21 -141
  318. package/workflows/execute.md +183 -350
  319. package/workflows/fork.md +72 -230
  320. package/workflows/harvest.md +12 -79
  321. package/workflows/init.md +3 -17
  322. package/workflows/integration-test.md +21 -190
  323. package/workflows/issue-analyze.md +35 -153
  324. package/workflows/issue-discover.md +88 -263
  325. package/workflows/issue-execute.md +29 -208
  326. package/workflows/issue-plan.md +33 -154
  327. package/workflows/issue.md +44 -202
  328. package/workflows/knowhow.md +374 -0
  329. package/workflows/learn.md +30 -177
  330. package/workflows/maestro-coordinate.codex.md +77 -362
  331. package/workflows/maestro-link-coordinate.md +12 -61
  332. package/workflows/maestro.codex.md +124 -457
  333. package/workflows/maestro.md +562 -976
  334. package/workflows/map.md +16 -53
  335. package/workflows/merge.md +42 -197
  336. package/workflows/milestone-audit.md +5 -43
  337. package/workflows/milestone-complete.md +11 -60
  338. package/workflows/plan.md +176 -387
  339. package/workflows/quick.md +25 -174
  340. package/workflows/refactor.md +28 -221
  341. package/workflows/retrospective.md +104 -443
  342. package/workflows/review.md +87 -299
  343. package/workflows/roadmap.md +117 -97
  344. package/workflows/spec-generate.md +22 -118
  345. package/workflows/specs-add.md +5 -25
  346. package/workflows/specs-load.md +1 -5
  347. package/workflows/specs-remove.md +0 -11
  348. package/workflows/specs-setup.md +11 -47
  349. package/workflows/status.md +58 -200
  350. package/workflows/sync.md +28 -141
  351. package/workflows/test-gen.md +23 -100
  352. package/workflows/test.md +15 -125
  353. package/workflows/ui-design.md +139 -465
  354. package/workflows/ui-style.md +36 -228
  355. package/workflows/verify.md +52 -273
  356. package/workflows/wiki-connect.md +9 -46
  357. package/workflows/wiki-digest.md +7 -50
  358. package/workflows/wiki-manage.md +11 -108
  359. package/.claude/commands/maestro-coordinate.md +0 -63
  360. package/.claude/commands/manage-memory-capture.md +0 -59
  361. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  362. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  363. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  364. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  365. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  366. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  367. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  368. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  369. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  370. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  371. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  372. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  373. package/workflows/maestro-coordinate.md +0 -582
  374. package/workflows/memory.md +0 -451
@@ -53,7 +53,14 @@ $ARGUMENTS — user intent text, or special flags.
53
53
  | refactor, cleanup, debt | `quality-refactor` | $quality-refactor |
54
54
  | feature, implement, add, build | `feature` | $maestro-plan → $maestro-execute → $maestro-verify |
55
55
  | review, check, audit | `quality-review` | $quality-review |
56
- | deploy, release, ship | `deploy` | $maestro-verify → $maestro-execute |
56
+ | deploy, release, ship | `deploy` | $maestro-verify → $maestro-milestone-release |
57
+ | brainstorm, explore, ideate | `brainstorm-driven` | $maestro-brainstorm → $maestro-plan → $maestro-execute → $maestro-verify |
58
+ | plan, design, architect | `plan` | $maestro-plan |
59
+ | debug, diagnose, troubleshoot | `debug` | $quality-debug |
60
+ | continue, next, go | `state_continue` | (from project state) |
61
+ | status, dashboard | `status` | $manage-status |
62
+
63
+ Full chain map with 40+ chains: see `@~/.maestro/workflows/maestro.codex.md` §3c
57
64
  </chain_map>
58
65
 
59
66
  <barrier_skills>
@@ -72,36 +79,15 @@ After a barrier skill completes **in its spawned sub-agent**, coordinator reads
72
79
 
73
80
  ### Barrier Analysis Logic
74
81
 
75
- ```javascript
76
- function analyzeBarrierArtifacts(step, result, ctx) {
77
- const artifactPath = result.artifacts;
78
- switch (step.skill) {
79
- case 'maestro-analyze':
80
- const contextMd = Read(`${artifactPath}/context.md`);
81
- ctx.analysis_dir = artifactPath;
82
- ctx.gaps = extractGaps(contextMd);
83
- if (!ctx.phase) ctx.phase = extractPhase(contextMd);
84
- break;
85
- case 'maestro-plan':
86
- const planJson = JSON.parse(Read(`${artifactPath}/plan.json`));
87
- ctx.plan_dir = artifactPath;
88
- ctx.task_count = planJson.tasks?.length ?? 0;
89
- ctx.wave_count = planJson.waves?.length ?? 0;
90
- break;
91
- case 'maestro-brainstorm':
92
- ctx.brainstorm_dir = artifactPath;
93
- break;
94
- case 'maestro-spec-generate':
95
- ctx.spec_session_id = extractSpecId(artifactPath);
96
- break;
97
- case 'maestro-execute':
98
- const execResults = Read(`${artifactPath}/results.csv`);
99
- ctx.exec_completed = countStatus(execResults, 'completed');
100
- ctx.exec_failed = countStatus(execResults, 'failed');
101
- break;
102
- }
103
- }
104
- ```
82
+ After each barrier skill completes, read its artifacts and update `state.context`:
83
+
84
+ | Barrier Skill | Read | Context Updates |
85
+ |---------------|------|-----------------|
86
+ | `maestro-analyze` | `{artifacts}/context.md` | `analysis_dir`, `gaps` (extracted), `phase` (if unset) |
87
+ | `maestro-plan` | `{artifacts}/plan.json` | `plan_dir`, `task_count`, `wave_count` from plan JSON |
88
+ | `maestro-brainstorm` | `{artifacts}/` | `brainstorm_dir` |
89
+ | `maestro-spec-generate` | `{artifacts}/` | `spec_session_id` (extracted) |
90
+ | `maestro-execute` | `{artifacts}/results.csv` | `exec_completed`, `exec_failed` (counted by status) |
105
91
  </barrier_skills>
106
92
 
107
93
  <execution>
@@ -116,23 +102,17 @@ function analyzeBarrierArtifacts(step, result, ctx) {
116
102
  3. Otherwise classify intent via keyword heuristics (see chain_map)
117
103
  4. No match + not AUTO_YES → one clarifying question via `AskUserQuestion`
118
104
  5. Resolve chain's skill list
119
- 6. Write `state.json`:
120
-
121
- ```javascript
122
- const sessionId = `MCC-${dateStr}-${timeStr}`;
123
- const sessionDir = `.workflow/.maestro-coordinate/${sessionId}`;
124
-
125
- Write(`${sessionDir}/state.json`, JSON.stringify({
126
- id: sessionId, intent, chain: resolvedChain, auto_yes: AUTO_YES,
127
- status: "in_progress", started_at: new Date().toISOString(),
128
- context: { phase: null, plan_dir: null, analysis_dir: null,
129
- brainstorm_dir: null, spec_session_id: null, gaps: null },
130
- waves: [],
131
- steps: chain.map((skill, i) => ({
132
- step_n: i + 1, skill: skill.cmd, args: skill.args ?? '',
133
- status: "pending", wave_n: null
134
- }))
135
- }, null, 2));
105
+ 6. Create session dir `.workflow/.maestro-coordinate/MCC-{dateStr}-{timeStr}/` and write `state.json`:
106
+
107
+ ```json
108
+ {
109
+ "id": "MCC-{dateStr}-{timeStr}", "intent": "...", "chain": "...",
110
+ "auto_yes": false, "status": "in_progress", "started_at": "ISO",
111
+ "context": { "phase": null, "plan_dir": null, "analysis_dir": null,
112
+ "brainstorm_dir": null, "spec_session_id": null, "gaps": null },
113
+ "waves": [],
114
+ "steps": [{ "step_n": 1, "skill": "...", "args": "", "status": "pending", "wave_n": null }]
115
+ }
136
116
  ```
137
117
 
138
118
  **`--dry-run`**: Display chain with `[BARRIER]` markers, stop.
@@ -141,95 +121,41 @@ Write(`${sessionDir}/state.json`, JSON.stringify({
141
121
 
142
122
  ### Phase 2: Wave Execution Loop
143
123
 
144
- ```javascript
145
- let waveNum = 0;
146
- while (state.steps.some(s => s.status === 'pending')) {
147
- waveNum++;
148
- const waveSteps = buildNextWave(state.steps);
149
-
150
- // Build CSV — coordinator assembles skill_call, sub-agent executes verbatim
151
- const csvContent = 'id,skill_call,topic\n' + waveSteps.map(step =>
152
- `"${step.step_n}","${buildSkillCall(step, state.context).replace(/"/g, '""')}","Chain \"${state.chain}\" step ${step.step_n}/${state.steps.length}"`
153
- ).join('\n');
154
- Write(`${sessionDir}/wave-${waveNum}.csv`, csvContent);
155
-
156
- // Spawn — ALL execution via spawn_agents_on_csv, never direct
157
- spawn_agents_on_csv({
158
- csv_path: `${sessionDir}/wave-${waveNum}.csv`,
159
- id_column: "id", instruction: WAVE_INSTRUCTION,
160
- max_workers: waveSteps.length > 1 ? waveSteps.length : 1,
161
- max_runtime_seconds: 1800,
162
- output_csv_path: `${sessionDir}/wave-${waveNum}-results.csv`,
163
- output_schema: RESULT_SCHEMA
164
- });
165
-
166
- // Read results, update status
167
- const results = readCSV(`${sessionDir}/wave-${waveNum}-results.csv`);
168
- for (const row of results) {
169
- const step = state.steps.find(s => s.step_n === parseInt(row.id));
170
- step.status = row.status; step.findings = row.findings; step.wave_n = waveNum;
171
- }
172
-
173
- // Barrier: read artifacts, update context (NOT execute — skill already ran in sub-agent)
174
- if (isBarrier(waveSteps[0].skill)) {
175
- analyzeBarrierArtifacts(waveSteps[0], results[0], state.context);
176
- }
177
-
178
- // Persist + abort check
179
- state.waves.push({ wave_n: waveNum, steps: waveSteps.map(s => s.step_n), results });
180
- Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
181
-
182
- if (results.some(r => r.status === 'failed')) {
183
- state.status = 'aborted';
184
- state.steps.filter(s => s.status === 'pending').forEach(s => s.status = 'skipped');
185
- Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
186
- break;
187
- }
188
- }
189
- ```
124
+ **While pending steps remain**, increment `waveNum` and repeat:
125
+
126
+ 1. **Build wave**: Select next wave steps via `buildNextWave` (barrier = solo, non-barriers = grouped)
127
+ 2. **Write CSV**: `{sessionDir}/wave-{N}.csv` with columns `id,skill_call,topic` — one row per step, skill_call assembled with resolved context
128
+ 3. **Spawn**:
129
+ ```
130
+ spawn_agents_on_csv({
131
+ csv_path: "{sessionDir}/wave-{N}.csv",
132
+ id_column: "id", instruction: WAVE_INSTRUCTION,
133
+ max_workers: <wave size>, max_runtime_seconds: 1800,
134
+ output_csv_path: "{sessionDir}/wave-{N}-results.csv",
135
+ output_schema: RESULT_SCHEMA
136
+ })
137
+ ```
138
+ 4. **Read results**: Update each step's `status`, `findings`, `wave_n` from results CSV
139
+ 5. **Barrier check**: If wave was a barrier skill, run barrier analysis logic (read artifacts, update context)
140
+ 6. **Persist**: Append wave to `state.waves[]`, write `state.json`
141
+ 7. **Abort on failure**: If any result `status === 'failed'` → mark remaining steps `skipped`, set `state.status = 'aborted'`, break
190
142
 
191
143
  ### Skill Call Assembly
192
144
 
193
- ```javascript
194
- const BARRIER_SKILLS = new Set([
195
- 'maestro-analyze', 'maestro-plan', 'maestro-brainstorm',
196
- 'maestro-spec-generate', 'maestro-execute'
197
- ]);
198
- const AUTO_FLAG_MAP = {
199
- 'maestro-analyze': '-y', 'maestro-brainstorm': '-y',
200
- 'maestro-ui-design': '-y', 'maestro-plan': '--auto',
201
- 'maestro-spec-generate': '-y', 'quality-test': '--auto-fix',
202
- 'quality-retrospective': '--auto-yes',
203
- };
204
-
205
- function buildSkillCall(step, ctx) {
206
- let args = (step.args ?? '')
207
- .replace(/{phase}/g, ctx.phase ?? '')
208
- .replace(/{description}/g, state.intent ?? '')
209
- .replace(/{issue_id}/g, ctx.issue_id ?? '')
210
- .replace(/{plan_dir}/g, ctx.plan_dir ?? '')
211
- .replace(/{analysis_dir}/g, ctx.analysis_dir ?? '')
212
- .replace(/{brainstorm_dir}/g, ctx.brainstorm_dir ?? '')
213
- .replace(/{spec_session_id}/g, ctx.spec_session_id ?? '');
214
- if (state.auto_yes) {
215
- const flag = AUTO_FLAG_MAP[step.skill];
216
- if (flag && !args.includes(flag)) args = args ? `${args} ${flag}` : flag;
217
- }
218
- return `$${step.skill} ${args}`.trim();
219
- }
145
+ **Barrier skills**: `maestro-analyze`, `maestro-plan`, `maestro-brainstorm`, `maestro-spec-generate`, `maestro-execute`
220
146
 
221
- function buildNextWave(steps) {
222
- const pending = steps.filter(s => s.status === 'pending');
223
- if (!pending.length) return [];
224
- if (BARRIER_SKILLS.has(pending[0].skill)) return [pending[0]];
225
- const wave = [pending[0]];
226
- for (let i = 1; i < pending.length; i++) {
227
- if (BARRIER_SKILLS.has(pending[i].skill)) break;
228
- wave.push(pending[i]);
229
- }
230
- return wave;
231
- }
232
- ```
147
+ **Auto-yes flag map** (appended when `state.auto_yes` is true):
148
+
149
+ | Skill | Flag |
150
+ |-------|------|
151
+ | `maestro-analyze`, `maestro-brainstorm`, `maestro-ui-design`, `maestro-spec-generate` | `-y` |
152
+ | `maestro-plan` | `--auto` |
153
+ | `quality-test` | `--auto-fix` |
154
+ | `quality-retrospective` | `--auto-yes` |
155
+
156
+ **`buildSkillCall(step, ctx)`**: Replace placeholders `{phase}`, `{description}`, `{issue_id}`, `{plan_dir}`, `{analysis_dir}`, `{brainstorm_dir}`, `{spec_session_id}` in `step.args` with corresponding `ctx` values. Append auto-yes flag if applicable. Return `$<skill> <args>`.
157
+
158
+ **`buildNextWave(steps)`**: Take first pending step. If it is a barrier skill, return it solo. Otherwise, collect consecutive non-barrier pending steps into one wave (stop at first barrier).
233
159
 
234
160
  ### Sub-Agent Instruction Template
235
161
 
@@ -252,19 +178,7 @@ function buildNextWave(steps) {
252
178
 
253
179
  ### Result Schema
254
180
 
255
- ```javascript
256
- const RESULT_SCHEMA = {
257
- type: "object",
258
- properties: {
259
- status: { type: "string", enum: ["completed", "failed"] },
260
- skill_call: { type: "string" },
261
- summary: { type: "string" },
262
- artifacts: { type: "string" },
263
- error: { type: "string" }
264
- },
265
- required: ["status", "skill_call", "summary", "artifacts", "error"]
266
- };
267
- ```
181
+ Object with all fields required: `status` ("completed"|"failed"), `skill_call` (string), `summary` (string), `artifacts` (path or ""), `error` (reason or "").
268
182
 
269
183
  ### Phase 3: Completion Report
270
184
 
@@ -161,71 +161,37 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
161
161
 
162
162
  ### Session Initialization
163
163
 
164
- ```javascript
165
- const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
166
-
167
- // Parse flags
168
- const AUTO_YES = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y')
169
- const continueMode = $ARGUMENTS.includes('--continue')
170
- const concurrencyMatch = $ARGUMENTS.match(/(?:--concurrency|-c)\s+(\d+)/)
171
- const maxConcurrency = concurrencyMatch ? parseInt(concurrencyMatch[1]) : 6
172
-
173
- // Parse analyze-specific flags
174
- const QUICK_MODE = $ARGUMENTS.includes('-q') || $ARGUMENTS.includes('--quick')
175
- const GAPS_MODE = $ARGUMENTS.includes('--gaps')
176
- const gapsIssueMatch = $ARGUMENTS.match(/--gaps\s+(ISS-\S+)/)
177
- const gapsIssueId = gapsIssueMatch ? gapsIssueMatch[1] : null
178
-
179
- // Clean subject text
180
- const subjectArg = $ARGUMENTS
181
- .replace(/--yes|-y|--continue|--concurrency\s+\d+|-c\s+\d+|-q|--quick|--gaps\s+ISS-\S+|--gaps/g, '')
182
- .trim()
183
-
184
- // Auto-bootstrap state.json if missing
185
- if (!fileExists('.workflow/state.json')) {
186
- Bash('mkdir -p .workflow/scratch/')
187
- writeMinimalStateJson() // { project: null, status: "active", current_milestone: null, artifacts: [] }
188
- }
189
-
190
- // Scope determination (per scratch-milestone-architecture)
191
- const state = JSON.parse(Read('.workflow/state.json'))
192
- let scope, slug, phaseNum = null
193
-
194
- if (GAPS_MODE) {
195
- // --gaps → issue root cause analysis
196
- scope = 'gaps'
197
- slug = gapsIssueId ? gapsIssueId.toLowerCase().replace(/[^a-z0-9]+/g, '-') : 'issue-gaps'
198
- } else if (subjectArg === '') {
199
- // No args → milestone-wide
200
- if (state.current_milestone && fileExists('.workflow/roadmap.md')) {
201
- scope = 'milestone'
202
- slug = slugify(state.milestones.find(m => m.id === state.current_milestone)?.name || state.current_milestone)
203
- } else {
204
- ERROR('E001: No args and no roadmap — provide topic text or create roadmap first')
205
- }
206
- } else if (/^\d+$/.test(subjectArg)) {
207
- // Phase number
208
- if (state.current_milestone && fileExists('.workflow/roadmap.md')) {
209
- scope = 'phase'
210
- phaseNum = parseInt(subjectArg)
211
- slug = resolvePhaseSlugFromRoadmap(phaseNum) // parse roadmap.md for phase N slug
212
- } else {
213
- ERROR('Phase number requires init + roadmap')
214
- }
215
- } else {
216
- // Text → adhoc or standalone
217
- slug = subjectArg.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
218
- scope = state.current_milestone ? 'adhoc' : 'standalone'
219
- }
220
-
221
- const dateStr = getUtc8ISOString().substring(0, 10)
222
- const sessionId = `${dateStr}-analyze-${slug}`
223
- const sessionFolder = `.workflow/.csv-wave/${sessionId}`
224
- const scratchDir = `.workflow/scratch/${dateStr}-analyze-${slug}`
225
-
226
- Bash(`mkdir -p ${sessionFolder}`)
227
- Bash(`mkdir -p ${scratchDir}`)
228
- ```
164
+ **Parse from `$ARGUMENTS`**:
165
+
166
+ | Variable | Source | Default |
167
+ |----------|--------|---------|
168
+ | `AUTO_YES` | `--yes` or `-y` | false |
169
+ | `continueMode` | `--continue` | false |
170
+ | `maxConcurrency` | `--concurrency N` or `-c N` | 6 |
171
+ | `QUICK_MODE` | `-q` or `--quick` | false |
172
+ | `GAPS_MODE` | `--gaps` | false |
173
+ | `gapsIssueId` | `--gaps ISS-{id}` | null |
174
+ | `subjectArg` | remaining text after flag removal | "" |
175
+
176
+ **Auto-bootstrap**: If `.workflow/state.json` missing, create minimal `{ project: null, status: "active", current_milestone: null, artifacts: [] }`.
177
+
178
+ **Scope determination** (from `state.json` + `subjectArg`):
179
+
180
+ | Condition | Scope | Slug |
181
+ |-----------|-------|------|
182
+ | `GAPS_MODE` | `gaps` | `gapsIssueId` slugified or `"issue-gaps"` |
183
+ | Empty subject + milestone + roadmap | `milestone` | milestone name slugified |
184
+ | Empty subject, no roadmap | ERROR: `"E001: No args and no roadmap"` | — |
185
+ | Numeric subject + milestone + roadmap | `phase` | phase slug from roadmap |
186
+ | Numeric subject, no roadmap | ERROR: `"Phase number requires init + roadmap"` | — |
187
+ | Text subject + milestone | `adhoc` | subject slugified (max 40 chars) |
188
+ | Text subject, no milestone | `standalone` | subject slugified (max 40 chars) |
189
+
190
+ **Session paths** (UTC+8 date prefix):
191
+ - `sessionFolder`: `.workflow/.csv-wave/{YYYYMMDD}-analyze-{slug}/`
192
+ - `scratchDir`: `.workflow/scratch/{YYYYMMDD}-analyze-{slug}/`
193
+
194
+ Create both directories.
229
195
 
230
196
  ### Phase 1: Subject Resolution -> CSV
231
197
 
@@ -278,11 +244,7 @@ Available exploration dimensions:
278
244
 
279
245
  #### Wave 1: CLI Exploration (Parallel) [SKIP in -q mode]
280
246
 
281
- 1. Read master `tasks.csv`
282
- 2. Filter rows where `wave == 1` AND `status == pending`
283
- 3. No prev_context needed (wave 1 has no predecessors)
284
- 4. Write `wave-1.csv`
285
- 5. Execute:
247
+ Filter `wave == 1 && status == pending` from master CSV. No prev_context (no predecessors). Write `wave-1.csv`.
286
248
 
287
249
  ```javascript
288
250
  spawn_agents_on_csv({
@@ -292,43 +254,22 @@ spawn_agents_on_csv({
292
254
  max_concurrency: maxConcurrency,
293
255
  max_runtime_seconds: 600,
294
256
  output_csv_path: `${sessionFolder}/wave-1-results.csv`,
295
- output_schema: {
296
- type: "object",
297
- properties: {
298
- id: { type: "string" },
299
- status: { type: "string", enum: ["completed", "failed"] },
300
- findings: { type: "string" },
301
- score: { type: "string" },
302
- recommendations: { type: "string" },
303
- error: { type: "string" }
304
- },
305
- required: ["id", "status", "findings"]
306
- }
257
+ output_schema: { id, status: ["completed"|"failed"], findings, score, recommendations, error }
258
+ // required: id, status, findings
307
259
  })
308
260
  ```
309
261
 
310
- 6. Read `wave-1-results.csv`, merge into master `tasks.csv`
311
- 7. Delete `wave-1.csv`
262
+ Merge results into master `tasks.csv`, delete `wave-1.csv`.
312
263
 
313
- **Exploration agent responsibilities**:
314
- - 3-layer exploration per dimension:
315
- - Layer 1: Module Discovery (breadth) -- search by topic keywords, identify relevant files, map module boundaries
316
- - Layer 2: Structure Tracing (depth) -- top 3-5 key files: trace call chains 2-3 levels deep, identify data flow
317
- - Layer 3: Code Anchor Extraction (detail) -- each key finding: extract code snippet (20-50 lines) with file:line
264
+ **Exploration agent responsibilities** (3-layer per dimension):
265
+ 1. **Module Discovery** (breadth) -- keyword search, relevant files, module boundaries
266
+ 2. **Structure Tracing** (depth) -- top 3-5 files: call chains 2-3 levels, data flow
267
+ 3. **Code Anchor Extraction** (detail) -- code snippet (20-50 lines) with file:line per finding
318
268
  - Share findings via discovery board
319
269
 
320
270
  #### Wave 2: 6-Dimension Scoring (Parallel) [SKIP in -q mode]
321
271
 
322
- 1. Read master `tasks.csv`
323
- 2. Filter rows where `wave == 2` AND `status == pending`
324
- 3. Build `prev_context` from wave 1 findings:
325
- ```
326
- [Task 1: Explore Architecture] Module boundaries: src/auth/, src/api/, src/core/. Key pattern: repository layer...
327
- [Task 2: Explore Implementation] Error handling: Result type pattern. Type coverage: 85%...
328
- [Task 3: Explore Performance] Hot path: request handler chain (3 middleware). No async bottlenecks...
329
- ```
330
- 4. Write `wave-2.csv` with `prev_context` column
331
- 5. Execute:
272
+ Filter `wave == 2 && status == pending` from master CSV. Build `prev_context` from wave 1 findings (format: `[Task N: Title] summary...` per exploration task). Write `wave-2.csv` with `prev_context` column.
332
273
 
333
274
  ```javascript
334
275
  spawn_agents_on_csv({
@@ -338,23 +279,12 @@ spawn_agents_on_csv({
338
279
  max_concurrency: maxConcurrency,
339
280
  max_runtime_seconds: 600,
340
281
  output_csv_path: `${sessionFolder}/wave-2-results.csv`,
341
- output_schema: {
342
- type: "object",
343
- properties: {
344
- id: { type: "string" },
345
- status: { type: "string", enum: ["completed", "failed"] },
346
- findings: { type: "string" },
347
- score: { type: "string" },
348
- recommendations: { type: "string" },
349
- error: { type: "string" }
350
- },
351
- required: ["id", "status", "findings", "score"]
352
- }
282
+ output_schema: { id, status: ["completed"|"failed"], findings, score, recommendations, error }
283
+ // required: id, status, findings, score
353
284
  })
354
285
  ```
355
286
 
356
- 6. Read `wave-2-results.csv`, merge into master `tasks.csv`
357
- 7. Delete `wave-2.csv`
287
+ Merge results into master `tasks.csv`, delete `wave-2.csv`.
358
288
 
359
289
  **Scoring agent responsibilities** (6 dimensions):
360
290
 
@@ -371,22 +301,13 @@ Each score MUST include specific evidence (code refs, data points from explorati
371
301
 
372
302
  #### Wave 3: Decision Synthesis (Single Agent)
373
303
 
374
- 1. Read master `tasks.csv`
375
- 2. Filter rows where `wave == 3` (or wave 1 in quick mode) AND `status == pending`
376
- 3. For full mode: check deps -- if all wave 2 tasks failed, use available exploration context
377
- 4. Build `prev_context`:
378
- - Full mode: from wave 2 scoring findings
379
- ```
380
- [Task 4: Score Feasibility] Score: 75. Moderate difficulty, existing patterns support...
381
- [Task 5: Score Impact] Score: 90. High user value, significant DX improvement...
382
- [Task 6: Score Risk] Score: 40. Main risk: auth regression. Mitigation: incremental rollout...
383
- ...
384
- ```
385
- - Quick mode: from loaded project context (project.md, roadmap, brainstorm artifacts)
386
- 5. Write `wave-3.csv` (or `wave-1.csv` in quick mode) with `prev_context` column
387
- 6. Execute `spawn_agents_on_csv` for synthesis agent
388
- 7. Merge results into master `tasks.csv`
389
- 8. Delete temporary CSV
304
+ Filter `wave == 3` (or wave 1 in quick mode) `&& status == pending`. If full mode and all wave 2 failed, fall back to available exploration context.
305
+
306
+ **prev_context source**:
307
+ - Full mode: wave 2 scoring findings (format: `[Task N: Score Dim] Score: X. summary...`)
308
+ - Quick mode: loaded project context (project.md, roadmap, brainstorm artifacts)
309
+
310
+ Write wave CSV with `prev_context`, execute `spawn_agents_on_csv` for synthesis agent, merge results, delete temp CSV.
390
311
 
391
312
  **Synthesis agent responsibilities**:
392
313
  - Compile dimension scores into analysis.md (full mode):
@@ -486,28 +407,9 @@ Each score MUST include specific evidence (code refs, data points from explorati
486
407
  }
487
408
  ```
488
409
 
489
- 6. **Auto-create issues from Deferred items**:
490
-
491
- ```
492
- deferred_items = decisions.filter(d => d.classification == "Deferred")
493
-
494
- IF deferred_items.length > 0:
495
- mkdir -p ".workflow/issues"
496
- FOR each item IN deferred_items:
497
- Append issue to .workflow/issues/issues.jsonl
498
- Print: "Created {N} deferred issues for tracking"
499
- ```
410
+ 6. **Auto-create issues from Deferred items**: Filter decisions with `classification == "Deferred"`, append each as issue to `.workflow/issues/issues.jsonl`.
500
411
 
501
- 7. **Register artifact in state.json**:
502
- ```
503
- Read .workflow/state.json
504
- next_id = max ANL-NNN + 1 (or 1 if none)
505
- Push artifact: { id: "ANL-{next_id}", type: "analyze", milestone: current_milestone,
506
- phase: phaseNum, scope: scope, path: scratchDir (relative to .workflow/),
507
- status: "completed", depends_on: null, harvested: false,
508
- created_at: session_start, completed_at: now() }
509
- Write state.json (atomic)
510
- ```
412
+ 7. **Register artifact in state.json**: Append `{ id: "ANL-{next_id}", type: "analyze", milestone, phase, scope, path: scratchDir, status: "completed", depends_on: null, harvested: false, created_at, completed_at }`.
511
413
  8. Copy final outputs (context.md, analysis.md, conclusions.json) from CSV session folder to `scratchDir`
512
414
  9. Display summary
513
415