maestro-flow 0.3.15 → 0.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/.claude/agents/workflow-planner.md +24 -8
  2. package/.claude/commands/maestro-amend.md +300 -0
  3. package/.claude/commands/maestro-analyze.md +1 -49
  4. package/.claude/commands/maestro-execute.md +2 -56
  5. package/.claude/commands/maestro-fork.md +3 -50
  6. package/.claude/commands/maestro-merge.md +2 -26
  7. package/.claude/commands/maestro-milestone-audit.md +1 -5
  8. package/.claude/commands/maestro-milestone-complete.md +1 -7
  9. package/.claude/commands/maestro-plan.md +6 -127
  10. package/.claude/commands/maestro-roadmap.md +3 -101
  11. package/.claude/commands/maestro-spec-generate.md +1 -25
  12. package/.claude/commands/maestro-ui-design.md +14 -73
  13. package/.claude/commands/maestro-verify.md +1 -32
  14. package/.claude/commands/maestro.md +13 -30
  15. package/.claude/commands/manage-harvest.md +7 -44
  16. package/.claude/commands/manage-knowhow-capture.md +193 -0
  17. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  18. package/.claude/commands/manage-learn.md +3 -28
  19. package/.claude/commands/manage-status.md +1 -20
  20. package/.claude/commands/manage-wiki.md +1 -1
  21. package/.claude/commands/quality-business-test.md +1 -1
  22. package/.claude/commands/quality-debug.md +3 -18
  23. package/.claude/commands/quality-integration-test.md +3 -23
  24. package/.claude/commands/quality-retrospective.md +1 -28
  25. package/.claude/commands/quality-review.md +3 -52
  26. package/.claude/commands/quality-test-gen.md +1 -10
  27. package/.claude/commands/quality-test.md +3 -25
  28. package/.claude/commands/spec-add.md +1 -21
  29. package/.claude/commands/spec-load.md +1 -16
  30. package/.claude/commands/wiki-connect.md +2 -112
  31. package/.claude/commands/wiki-digest.md +2 -141
  32. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  33. package/.codex/skills/maestro/SKILL.md +60 -146
  34. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  35. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  36. package/.codex/skills/maestro-composer/SKILL.md +4 -76
  37. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  38. package/.codex/skills/maestro-init/SKILL.md +7 -51
  39. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  40. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  41. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  42. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  43. package/.codex/skills/maestro-plan/SKILL.md +70 -166
  44. package/.codex/skills/maestro-player/SKILL.md +24 -149
  45. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  46. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  47. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  48. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  49. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  50. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  51. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  52. package/.codex/skills/manage-issue/SKILL.md +1 -6
  53. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  54. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  55. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  56. package/.codex/skills/manage-learn/SKILL.md +17 -71
  57. package/.codex/skills/manage-status/SKILL.md +4 -35
  58. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  59. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  60. package/.codex/skills/quality-debug/SKILL.md +41 -133
  61. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  62. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  63. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  64. package/.codex/skills/quality-review/SKILL.md +30 -65
  65. package/.codex/skills/quality-sync/SKILL.md +2 -11
  66. package/.codex/skills/quality-test/SKILL.md +4 -45
  67. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  68. package/.codex/skills/spec-add/SKILL.md +2 -9
  69. package/.codex/skills/spec-load/SKILL.md +4 -14
  70. package/.codex/skills/spec-map/SKILL.md +4 -37
  71. package/.codex/skills/spec-remove/SKILL.md +3 -35
  72. package/.codex/skills/spec-setup/SKILL.md +2 -19
  73. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  74. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  75. package/.codex/skills/team-executor/SKILL.md +7 -66
  76. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  77. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  78. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  79. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  80. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  81. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  82. package/.codex/skills/team-review/SKILL.md +12 -86
  83. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  84. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  85. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  86. package/.codex/skills/team-testing/SKILL.md +14 -99
  87. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  88. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  89. package/README.md +6 -0
  90. package/README.zh-CN.md +6 -0
  91. package/chains/_intent-map.json +7 -7
  92. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  93. package/chains/singles/{memory.json → knowhow.json} +6 -6
  94. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  95. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  96. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  97. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  98. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  99. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  100. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  101. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  102. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  103. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  104. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  105. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  106. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  107. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  108. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  109. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  110. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  111. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  112. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  113. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  114. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  115. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  116. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  117. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  118. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  119. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  120. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  121. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  122. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  123. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  124. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  125. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  126. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  127. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  128. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  129. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  130. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  131. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  132. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  133. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  134. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  135. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  136. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  137. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  138. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  139. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  140. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  141. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  142. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  143. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  144. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  145. package/dashboard/dist/index.html +2 -2
  146. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  147. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  148. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  149. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  150. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  151. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  152. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  153. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  154. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  155. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  156. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  157. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  158. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  159. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  160. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  161. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  162. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  163. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  164. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  165. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  166. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  167. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  168. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  169. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  170. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  171. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  172. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  173. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  174. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  175. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  176. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  200. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  201. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  202. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  203. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  204. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  205. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  206. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  207. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  208. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  209. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  210. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  211. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  212. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  213. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  214. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  215. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  218. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  219. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  221. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  222. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  223. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  224. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  226. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  227. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  228. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  229. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  230. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  231. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  232. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  233. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  234. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  235. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  236. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  237. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  238. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  239. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  240. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  241. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  242. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  243. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  244. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  245. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  246. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  247. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  248. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  249. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  250. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  251. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  252. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  253. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  254. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  255. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  256. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  257. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  258. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  259. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  260. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  261. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  262. package/dist/shared/agent-types.d.ts +2 -0
  263. package/dist/shared/agent-types.d.ts.map +1 -1
  264. package/dist/src/cli.js +2 -2
  265. package/dist/src/cli.js.map +1 -1
  266. package/dist/src/commands/delegate.d.ts.map +1 -1
  267. package/dist/src/commands/delegate.js +11 -8
  268. package/dist/src/commands/delegate.js.map +1 -1
  269. package/dist/src/commands/install-backend.d.ts +1 -1
  270. package/dist/src/commands/install-backend.d.ts.map +1 -1
  271. package/dist/src/commands/install-backend.js +1 -1
  272. package/dist/src/commands/install-backend.js.map +1 -1
  273. package/dist/src/commands/install-ui/ExecutionView.d.ts.map +1 -1
  274. package/dist/src/commands/install-ui/ExecutionView.js +4 -1
  275. package/dist/src/commands/install-ui/ExecutionView.js.map +1 -1
  276. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  277. package/dist/src/commands/install-ui/InstallExecution.js +4 -1
  278. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  279. package/dist/src/commands/install.js +5 -5
  280. package/dist/src/commands/install.js.map +1 -1
  281. package/dist/src/commands/knowhow.d.ts +10 -0
  282. package/dist/src/commands/knowhow.d.ts.map +1 -0
  283. package/dist/src/commands/knowhow.js +217 -0
  284. package/dist/src/commands/knowhow.js.map +1 -0
  285. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  286. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  287. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  288. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  289. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  290. package/dist/src/commands/overlay-ui/index.js +70 -44
  291. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  292. package/dist/src/commands/overlay.d.ts.map +1 -1
  293. package/dist/src/commands/overlay.js +4 -3
  294. package/dist/src/commands/overlay.js.map +1 -1
  295. package/dist/src/commands/update.d.ts.map +1 -1
  296. package/dist/src/commands/update.js +31 -21
  297. package/dist/src/commands/update.js.map +1 -1
  298. package/dist/src/core/manifest.d.ts +8 -1
  299. package/dist/src/core/manifest.d.ts.map +1 -1
  300. package/dist/src/core/manifest.js +3 -1
  301. package/dist/src/core/manifest.js.map +1 -1
  302. package/dist/src/core/overlay/applier.d.ts +1 -1
  303. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  304. package/dist/src/core/overlay/applier.js +40 -13
  305. package/dist/src/core/overlay/applier.js.map +1 -1
  306. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  307. package/dist/src/core/overlay/loader.js +6 -0
  308. package/dist/src/core/overlay/loader.js.map +1 -1
  309. package/dist/src/core/overlay/types.d.ts +5 -1
  310. package/dist/src/core/overlay/types.d.ts.map +1 -1
  311. package/dist/src/core/overlay/types.js +1 -1
  312. package/dist/src/core/overlay/types.js.map +1 -1
  313. package/dist/src/hooks/context-monitor.js +1 -1
  314. package/dist/src/hooks/context-monitor.js.map +1 -1
  315. package/dist/src/hooks/skill-context.js +1 -1
  316. package/dist/src/hooks/skill-context.js.map +1 -1
  317. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  318. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  319. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  320. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  321. package/dist/src/tools/index.js +2 -2
  322. package/dist/src/tools/index.js.map +1 -1
  323. package/dist/src/tools/store-knowhow.d.ts +21 -0
  324. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  325. package/dist/src/tools/store-knowhow.js +295 -0
  326. package/dist/src/tools/store-knowhow.js.map +1 -0
  327. package/package.json +1 -1
  328. package/shared/agent-types.ts +2 -0
  329. package/workflows/analyze.md +61 -185
  330. package/workflows/brainstorm.md +3 -23
  331. package/workflows/codebase-rebuild.md +79 -191
  332. package/workflows/codebase-refresh.md +26 -124
  333. package/workflows/debug.md +21 -141
  334. package/workflows/execute.md +183 -350
  335. package/workflows/fork.md +72 -230
  336. package/workflows/harvest.md +12 -79
  337. package/workflows/init.md +3 -17
  338. package/workflows/integration-test.md +21 -190
  339. package/workflows/issue-analyze.md +35 -153
  340. package/workflows/issue-discover.md +88 -263
  341. package/workflows/issue-execute.md +29 -208
  342. package/workflows/issue-plan.md +33 -154
  343. package/workflows/issue.md +44 -202
  344. package/workflows/knowhow.md +374 -0
  345. package/workflows/learn.md +30 -177
  346. package/workflows/maestro-coordinate.codex.md +77 -362
  347. package/workflows/maestro-link-coordinate.md +12 -61
  348. package/workflows/maestro.codex.md +124 -457
  349. package/workflows/maestro.md +562 -976
  350. package/workflows/map.md +16 -53
  351. package/workflows/merge.md +42 -197
  352. package/workflows/milestone-audit.md +5 -43
  353. package/workflows/milestone-complete.md +11 -60
  354. package/workflows/plan.md +188 -387
  355. package/workflows/quick.md +25 -174
  356. package/workflows/refactor.md +28 -221
  357. package/workflows/retrospective.md +104 -443
  358. package/workflows/review.md +87 -299
  359. package/workflows/roadmap.md +117 -97
  360. package/workflows/spec-generate.md +22 -118
  361. package/workflows/specs-add.md +5 -25
  362. package/workflows/specs-load.md +1 -5
  363. package/workflows/specs-remove.md +0 -11
  364. package/workflows/specs-setup.md +11 -47
  365. package/workflows/status.md +58 -200
  366. package/workflows/sync.md +28 -141
  367. package/workflows/test-gen.md +23 -100
  368. package/workflows/test.md +15 -125
  369. package/workflows/ui-design.md +139 -465
  370. package/workflows/ui-style.md +36 -228
  371. package/workflows/verify.md +52 -273
  372. package/workflows/wiki-connect.md +9 -46
  373. package/workflows/wiki-digest.md +7 -50
  374. package/workflows/wiki-manage.md +11 -108
  375. package/.claude/commands/maestro-coordinate.md +0 -63
  376. package/.claude/commands/manage-memory-capture.md +0 -59
  377. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  378. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  379. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  380. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  381. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  382. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  383. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  384. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  385. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  386. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  387. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  388. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  389. package/workflows/maestro-coordinate.md +0 -582
  390. package/workflows/memory.md +0 -451
package/workflows/map.md CHANGED
@@ -19,48 +19,20 @@ Codebase scanning with parallel mapper agents.
19
19
 
20
20
  ## Step 2: Spawn Parallel Mapper Agents
21
21
 
22
- Spawn 4 parallel `workflow-codebase-mapper` agents. Each agent scans the codebase independently with a specific focus and writes its output directly to `.workflow/research/`.
23
-
24
- ```
25
- Agent 1: tech focus
26
- Scan: package.json, go.mod, requirements.txt, build files, dependencies
27
- Output: .workflow/research/STACK.md
28
- Content: languages, frameworks, build tools, key dependencies, versions
29
-
30
- Agent 2: arch focus
31
- Scan: directory structure, module boundaries, entry points, data flow
32
- Output: .workflow/research/ARCHITECTURE.md
33
- Content: architecture style, layer separation, module graph, key abstractions
34
-
35
- Agent 3: features focus
36
- Scan: routes, handlers, components, services, models
37
- Output: .workflow/research/FEATURES.md
38
- Content: feature inventory, feature-to-file mapping, completeness assessment
39
-
40
- Agent 4: concerns focus
41
- Scan: error handling, logging, tests, config, security, performance
42
- Output: .workflow/research/PITFALLS.md
43
- Content: tech debt, missing tests, security gaps, performance concerns, known issues
44
- ```
45
-
46
- If `$ARGUMENTS` (focus area) is provided, pass it to each agent as a focus filter: "Prioritize analysis of {focus_area} subsystem."
47
-
48
- **Load project specs for mapper context:**
49
- ```
50
- specs_content = maestro spec load --category arch
51
- ```
52
-
53
- **Agent spawn pattern:**
54
- ```
55
- For each agent (1-4) in parallel:
56
- Agent({
57
- subagent_type: "workflow-codebase-mapper",
58
- prompt: "Focus: {focus}. Scan the codebase and write {output_file}.
59
- Project specs for reference: ${specs_content}
60
- Write directly to the file. Return only a confirmation with line count.",
61
- run_in_background: false
62
- })
63
- ```
22
+ Spawn 4 parallel `workflow-codebase-mapper` agents, each writing to `.workflow/research/`:
23
+
24
+ | Agent | Focus | Output | Content |
25
+ |-------|-------|--------|---------|
26
+ | 1 | tech | STACK.md | languages, frameworks, build tools, dependencies, versions |
27
+ | 2 | arch | ARCHITECTURE.md | architecture style, layers, module graph, key abstractions |
28
+ | 3 | features | FEATURES.md | feature inventory, feature-to-file mapping, completeness |
29
+ | 4 | concerns | PITFALLS.md | tech debt, missing tests, security gaps, performance issues |
30
+
31
+ If `$ARGUMENTS` provided, pass as focus filter to each agent.
32
+
33
+ Load project specs: `maestro spec load --category arch`
34
+
35
+ Each agent spawned in parallel as `workflow-codebase-mapper` subagent with specs context.
64
36
 
65
37
  ---
66
38
 
@@ -68,17 +40,8 @@ For each agent (1-4) in parallel:
68
40
 
69
41
  After all 4 agents complete:
70
42
 
71
- 1. Verify all documents exist with content:
72
- ```
73
- .workflow/research/STACK.md — exists, >10 lines
74
- .workflow/research/ARCHITECTURE.md — exists, >10 lines
75
- .workflow/research/FEATURES.md — exists, >10 lines
76
- .workflow/research/PITFALLS.md — exists, >10 lines
77
- ```
78
-
79
- 2. If any document is missing or empty:
80
- - Log which agent failed
81
- - Re-spawn that specific agent (max 1 retry per agent)
43
+ 1. Verify all 4 documents exist with >10 lines each.
44
+ 2. If any missing/empty → log failure, re-spawn that agent (max 1 retry).
82
45
 
83
46
  ---
84
47
 
@@ -8,25 +8,15 @@ Merges operate at the **milestone level** — one worktree per milestone, all ph
8
8
 
9
9
  ## Step 1: Parse Arguments and Flags
10
10
 
11
- ```javascript
12
- const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
13
-
14
- const force = $ARGUMENTS.includes('--force')
15
- const dryRun = $ARGUMENTS.includes('--dry-run')
16
- const noCleanup = $ARGUMENTS.includes('--no-cleanup')
17
- const continueMode = $ARGUMENTS.includes('--continue')
18
-
19
- // Parse milestone number: -m <N> or bare <N>
20
- const mFlagMatch = $ARGUMENTS.match(/-m\s+(\d+)/)
21
- const cleaned = $ARGUMENTS
22
- .replace(/--force|--dry-run|--no-cleanup|--continue|-m\s+\d+/g, '')
23
- .trim()
24
- const bareNumMatch = cleaned.match(/^(\d+)$/)
25
- const milestoneNum = mFlagMatch
26
- ? parseInt(mFlagMatch[1])
27
- : bareNumMatch
28
- ? parseInt(bareNumMatch[1])
29
- : null
11
+ ```
12
+ Timestamps use UTC+8 ISO format throughout.
13
+
14
+ Parse from $ARGUMENTS:
15
+ --force → force (skip incomplete-phase confirmation)
16
+ --dry-run → dryRun (preview only)
17
+ --no-cleanup → noCleanup (keep worktree after merge)
18
+ --continue → continueMode (resume after conflict resolution)
19
+ -m <N> or bare <N> → milestoneNum (1-based)
30
20
  ```
31
21
 
32
22
  ---
@@ -34,15 +24,9 @@ const milestoneNum = mFlagMatch
34
24
  ## Step 2: Validate Context
35
25
 
36
26
  ```
37
- IF file_exists(".workflow/worktree-scope.json"):
38
- ERROR E001: "Cannot merge from inside a worktree. Run from the main worktree."
39
- EXIT
40
-
41
- IF NOT file_exists(".workflow/worktrees.json"):
42
- ERROR E002: "No worktree registry found. Nothing to merge."
43
- EXIT
44
-
45
- Read .workflow/worktrees.json → registry
27
+ Reject: .workflow/worktree-scope.json present (E001 — must run from main worktree).
28
+ Require: .workflow/worktrees.json (E002 nothing to merge without registry).
29
+ Read registry from worktrees.json.
46
30
  ```
47
31
 
48
32
  ---
@@ -50,17 +34,8 @@ Read .workflow/worktrees.json → registry
50
34
  ## Step 3: Registry Health Check
51
35
 
52
36
  ```
53
- staleEntries = []
54
- for (entry of registry.worktrees):
55
- IF NOT directory_exists(entry.path):
56
- staleEntries.push(entry)
57
-
58
- IF staleEntries.length > 0:
59
- WARN W001: "Found {staleEntries.length} stale worktree entries (directories missing):"
60
- for (entry of staleEntries):
61
- Display " M{entry.milestone_num} ({entry.milestone}): {entry.path} — MISSING"
62
- registry.worktrees = registry.worktrees.filter(w => !staleEntries.includes(w))
63
- Write .workflow/worktrees.json: registry
37
+ Detect worktree entries whose directories no longer exist.
38
+ If stale entries found → warn (W001), remove from registry, rewrite worktrees.json.
64
39
  ```
65
40
 
66
41
  ---
@@ -68,31 +43,9 @@ IF staleEntries.length > 0:
68
43
  ## Step 4: Resolve Merge Target
69
44
 
70
45
  ```
71
- IF continueMode:
72
- IF NOT file_exists(".workflow/.merge-state.json"):
73
- ERROR E003: "--continue but no merge state found. Start a fresh merge."
74
- EXIT
75
- Read .workflow/.merge-state.json → mergeState
76
- target = mergeState.target
77
- GOTO Step_7
78
-
79
- ELSE IF milestoneNum !== null:
80
- target = registry.worktrees.find(w =>
81
- w.milestone_num === milestoneNum && w.status === "active"
82
- )
83
- ELSE:
84
- ERROR E004: "Milestone number required. Usage: maestro-merge -m <number>"
85
- EXIT
86
-
87
- IF NOT target:
88
- activeList = registry.worktrees
89
- .filter(w => w.status === "active")
90
- .map(w => " M" + w.milestone_num + ": " + w.milestone + " (" + w.path + ")")
91
- .join("\n")
92
- Display "No active worktree for milestone {milestoneNum}."
93
- IF activeList:
94
- Display "Active worktrees:\n{activeList}"
95
- EXIT
46
+ --continue → load target from .workflow/.merge-state.json (E003 if missing), skip to Step 7.
47
+ Otherwise find active worktree for milestoneNum in registry (E004 if no milestone specified).
48
+ If no matching target display active worktrees and exit.
96
49
  ```
97
50
 
98
51
  ---
@@ -100,37 +53,9 @@ IF NOT target:
100
53
  ## Step 5: Validate Readiness
101
54
 
102
55
  ```
103
- completedPhases = []
104
- incompletePhases = []
105
-
106
- // Read worktree state for artifact registry check
107
- Read {target.path}/.workflow/state.json → wtState (if exists)
108
- wtArtifacts = wtState?.artifacts ?? []
109
-
110
- // Check phase completeness via artifact registry
111
- for (phaseNum of target.owned_phases):
112
- execArtifacts = wtArtifacts.filter(a => a.type === 'execute' && a.phase === phaseNum)
113
- IF execArtifacts.some(a => a.status === 'completed'):
114
- completedPhases.push({ phase: phaseNum })
115
- ELSE:
116
- status = execArtifacts.length > 0 ? execArtifacts[0].status : 'no_execute_artifact'
117
- incompletePhases.push({ phase: phaseNum, status })
118
-
119
- IF incompletePhases.length > 0 AND NOT force:
120
- WARN W002: "M{target.milestone_num} ({target.milestone}) has incomplete phases:"
121
- for (p of incompletePhases):
122
- Display " Phase {p.phase}: {p.status}"
123
- IF NOT dryRun:
124
- AskUserQuestion: "Merge anyway? (y/n, or use --force)"
125
- IF response !== 'y': EXIT
126
-
127
- IF dryRun:
128
- Display "=== DRY RUN ==="
129
- Display " Would merge: {target.branch} → current branch"
130
- Display " Milestone: M{target.milestone_num} ({target.milestone})"
131
- Display " Completed: {completedPhases.map(p => p.phase).join(', ')}"
132
- Display " Incomplete: {incompletePhases.map(p => p.phase + '(' + p.status + ')').join(', ')}"
133
- EXIT
56
+ Check phase completeness via worktree artifact registry (execute artifacts → completed or incomplete).
57
+ If incomplete phases and not --force → warn (W002), confirm with user.
58
+ If --dry-run → display merge preview (branch, milestone, completed/incomplete phases) and exit.
134
59
  ```
135
60
 
136
61
  ---
@@ -138,39 +63,12 @@ IF dryRun:
138
63
  ## Step 6: Phase 1 — Git Merge
139
64
 
140
65
  ```
141
- Display "=== Merging M{target.milestone_num}: {target.milestone} ==="
142
-
143
- // 6a: Pre-merge rebase
144
- Display "Pulling main into worktree branch..."
145
- rebaseResult = Bash("cd {target.path} && git merge main --no-edit 2>&1")
146
-
147
- IF rebaseResult.exitCode !== 0:
148
- WARN W003: "Conflict pulling main into worktree. Resolve in {target.path} first."
149
- Display rebaseResult.output
150
- Display "After resolving: cd {target.path} && git merge --continue"
151
- Display "Then retry: /maestro-merge -m {target.milestone_num}"
152
- EXIT
153
-
154
- // 6b: Merge worktree branch into main
155
- Display "Merging {target.branch} into current branch..."
156
- mergeResult = Bash("git merge {target.branch} --no-ff -m 'merge: M{target.milestone_num} {target.milestone}' 2>&1")
157
-
158
- IF mergeResult.exitCode !== 0:
159
- Display "MERGE CONFLICT detected."
160
- Display mergeResult.output
161
-
162
- Write .workflow/.merge-state.json:
163
- {
164
- "target": target,
165
- "phase": "git_merge_conflict",
166
- "created_at": getUtc8ISOString()
167
- }
168
-
169
- Display ""
170
- Display "Resolve conflicts, then:"
171
- Display " git add <resolved-files> && git merge --continue"
172
- Display " /maestro-merge --continue"
173
- EXIT
66
+ 6a: Pull main into worktree branch (cd {target.path} && git merge main --no-edit).
67
+ On conflict → warn (W003), instruct to resolve in worktree, exit.
68
+
69
+ 6b: Merge worktree branch into main (git merge {target.branch} --no-ff).
70
+ On conflict save .workflow/.merge-state.json {target, phase:"git_merge_conflict"},
71
+ instruct: resolve, git merge --continue, then /maestro-merge --continue. Exit.
174
72
 
175
73
  Display "Git merge successful."
176
74
  ```
@@ -182,63 +80,19 @@ Display "Git merge successful."
182
80
  ```
183
81
  Step_7:
184
82
 
185
- Display "Syncing workflow artifacts for M{target.milestone_num} ({target.milestone})..."
186
-
187
- Read .workflow/state.json → mainState
188
-
189
- // 7a: Copy scratch dirs from worktree to main
190
- Read {target.path}/.workflow/state.json wtState
191
- wtArtifacts = wtState?.artifacts ?? []
192
- milestoneArtifacts = wtArtifacts.filter(a =>
193
- a.path && (a.milestone === target.milestone || target.owned_phases.includes(a.phase))
194
- )
195
- for (art of milestoneArtifacts):
196
- srcDir = target.path + "/.workflow/" + art.path
197
- dstDir = ".workflow/" + art.path
198
- IF directory_exists(srcDir):
199
- Bash("mkdir -p {dstDir} && cp -r {srcDir}/* {dstDir}/")
200
-
201
- // 7b: Merge artifact registries
202
- mainArtifacts = mainState.artifacts ?? []
203
- existingIds = new Set(mainArtifacts.map(a => a.id))
204
- for (art of wtArtifacts):
205
- IF existingIds.has(art.id):
206
- // Update existing artifact status
207
- idx = mainArtifacts.findIndex(a => a.id === art.id)
208
- mainArtifacts[idx] = art
209
- ELSE:
210
- mainArtifacts.push(art)
211
- mainState.artifacts = mainArtifacts
212
-
213
- // Record merge in transition history
214
- mainState.transition_history = mainState.transition_history ?? []
215
- mainState.transition_history.push({
216
- milestone_num: target.milestone_num,
217
- milestone: target.milestone,
218
- action: "worktree_merge",
219
- completed_at: getUtc8ISOString(),
220
- branch: target.branch,
221
- phases: target.owned_phases
222
- })
223
-
224
- // Merge accumulated context from worktree
225
- IF wtState?.accumulated_context:
226
- for (decision of (wtState.accumulated_context.key_decisions ?? [])):
227
- IF NOT mainState.accumulated_context.key_decisions.includes(decision):
228
- mainState.accumulated_context.key_decisions.push(decision)
229
- for (deferred of (wtState.accumulated_context.deferred ?? [])):
230
- mainState.accumulated_context.deferred.push(deferred)
231
-
232
- mainState.last_updated = getUtc8ISOString()
233
- Write .workflow/state.json: mainState
234
-
235
- // 7c: Update roadmap.md (mark completed phases)
236
- Read .workflow/roadmap.md → roadmap
237
- for (phaseNum of target.owned_phases):
238
- isCompleted = completedPhases.some(p => p.phase === phaseNum)
239
- IF isCompleted:
240
- Append " ✅ COMPLETED" to phase title line in roadmap
241
- Write .workflow/roadmap.md: roadmap
83
+ 7a: Copy milestone artifact directories from worktree → main .workflow/.
84
+ Filter: artifacts matching target.milestone or target.owned_phases.
85
+
86
+ 7b: Merge artifact registries — update existing by ID, append new entries.
87
+
88
+ 7c: Record in mainState.transition_history:
89
+ { milestone_num, milestone, action:"worktree_merge", completed_at, branch, phases }
90
+
91
+ 7d: Merge accumulated_context deduplicate key_decisions, append deferred items.
92
+
93
+ Update mainState.last_updated, write .workflow/state.json.
94
+
95
+ 7e: Mark completed phases in .workflow/roadmap.md with completion indicator.
242
96
  ```
243
97
 
244
98
  ---
@@ -246,18 +100,9 @@ Write .workflow/roadmap.md: roadmap
246
100
  ## Step 8: Cleanup
247
101
 
248
102
  ```
249
- IF NOT noCleanup:
250
- Display "Cleaning up worktree..."
251
- Bash("git worktree remove --force {target.path}")
252
- Bash("git branch -D {target.branch}")
253
-
254
- registry.worktrees = registry.worktrees.filter(w =>
255
- !(w.milestone_num === target.milestone_num && w.branch === target.branch)
256
- )
257
- Write .workflow/worktrees.json: registry
258
-
259
- IF file_exists(".workflow/.merge-state.json"):
260
- Bash("rm .workflow/.merge-state.json")
103
+ Unless --no-cleanup: remove git worktree and delete branch.
104
+ Remove target entry from worktrees.json registry.
105
+ Clean up .workflow/.merge-state.json if present.
261
106
  ```
262
107
 
263
108
  ---
@@ -12,65 +12,27 @@ Cross-phase integration audit for milestone completion. Based on artifact regist
12
12
 
13
13
  2. Parse `.workflow/roadmap.md` to identify all phases belonging to this milestone
14
14
 
15
- 3. Group artifacts by type for this milestone:
16
- ```
17
- FROM state.json.artifacts
18
- WHERE milestone = target_milestone
19
- GROUP BY type
20
-
21
- → analyze_artifacts: [ANL-001, ANL-002, ...]
22
- → plan_artifacts: [PLN-001, PLN-002, ...]
23
- → execute_artifacts: [EXC-001, EXC-002, ...]
24
- → verify_artifacts: [VRF-001, ...]
25
- ```
15
+ 3. Group milestone artifacts by type `analyze_artifacts`, `plan_artifacts`, `execute_artifacts`, `verify_artifacts`
26
16
 
27
17
  ---
28
18
 
29
19
  ## Step 2: Phase Coverage Check
30
20
 
31
- For each phase defined in roadmap for this milestone:
21
+ Parse roadmap.md phases for this milestone. For each phase, verify completed artifacts exist for analyze, plan, and execute types.
32
22
 
33
- ```
34
- phases_from_roadmap = parse roadmap.md → list of { number, slug, title }
35
-
36
- coverage = {}
37
- FOR each phase IN phases_from_roadmap:
38
- has_analyze = artifacts.some(a => a.type == "analyze" && a.phase == phase.number && a.status == "completed")
39
- has_plan = artifacts.some(a => a.type == "plan" && a.phase == phase.number && a.status == "completed")
40
- has_execute = artifacts.some(a => a.type == "execute" && a.phase == phase.number && a.status == "completed")
41
-
42
- coverage[phase.number] = { has_analyze, has_plan, has_execute }
43
-
44
- IF NOT has_execute:
45
- WARN: "Phase {phase.number} ({phase.title}) missing execute artifact"
46
- ```
23
+ WARN if any phase is missing its execute artifact: "Phase {number} ({title}) missing execute artifact"
47
24
 
48
25
  ---
49
26
 
50
27
  ## Step 3: Ad-hoc Completeness Check
51
28
 
52
- ```
53
- adhoc_artifacts = artifacts.filter(a => a.scope == "adhoc" && a.milestone == target_milestone)
54
-
55
- incomplete_adhoc = adhoc_artifacts.filter(a => a.status != "completed")
56
- IF incomplete_adhoc.length > 0:
57
- WARN: "Ad-hoc artifacts incomplete: {list ids}"
58
- ```
29
+ Check all ad-hoc artifacts (`scope == "adhoc"`) for this milestone are completed. WARN if any incomplete (list ids).
59
30
 
60
31
  ---
61
32
 
62
33
  ## Step 4: Execution Completeness Check
63
34
 
64
- For each execute artifact, verify all tasks completed:
65
-
66
- ```
67
- FOR each exc IN execute_artifacts:
68
- plan_dir = exc.path
69
- tasks = read all ${plan_dir}/.task/TASK-*.json
70
- incomplete = tasks.filter(t => t.status != "completed" && t.status != "skipped")
71
- IF incomplete.length > 0:
72
- WARN: "Plan {plan_dir}: {incomplete.length} tasks not completed"
73
- ```
35
+ For each execute artifact, read `{path}/.task/TASK-*.json` and verify all tasks are completed or skipped. WARN if any tasks remain incomplete: "Plan {plan_dir}: {N} tasks not completed"
74
36
 
75
37
  ---
76
38
 
@@ -18,13 +18,7 @@ Archive completed milestone, move artifacts to history, and prepare for next.
18
18
  - If NO → exit
19
19
  - If verdict is FAIL: ERROR E002
20
20
 
21
- 3. Verify all artifacts completed:
22
- ```
23
- milestone_artifacts = state.json.artifacts.filter(a => a.milestone == target_milestone)
24
- incomplete = milestone_artifacts.filter(a => a.status != "completed")
25
- IF incomplete.length > 0:
26
- ERROR E003: "Incomplete artifacts: {list ids and statuses}"
27
- ```
21
+ 3. Verify all milestone artifacts have status "completed" → ERROR E003 if any incomplete (list ids and statuses)
28
22
 
29
23
  ---
30
24
 
@@ -40,12 +34,7 @@ Archive completed milestone, move artifacts to history, and prepare for next.
40
34
  cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
41
35
  ```
42
36
 
43
- 3. Archive scratch directories:
44
- ```
45
- FOR each artifact IN milestone_artifacts:
46
- IF directory exists at .workflow/{artifact.path}:
47
- cp -r .workflow/{artifact.path} .workflow/milestones/{milestone}/artifacts/{basename}/
48
- ```
37
+ 3. Archive scratch directories: copy each milestone artifact's `.workflow/{artifact.path}` to `.workflow/milestones/{milestone}/artifacts/{basename}/`
49
38
 
50
39
  ---
51
40
 
@@ -66,37 +55,16 @@ Check existing entries to avoid duplicates when appending in Step 3.
66
55
  - Extract patterns discovered
67
56
  - Extract pitfalls encountered
68
57
 
69
- 2. Aggregate learnings and append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format:
58
+ 2. Aggregate learnings and append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format. Each entry (strategy adjustment, pattern, or pitfall) follows this template:
70
59
  ```
71
- For each strategy adjustment:
72
- <spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
73
-
74
- ### {summary}
75
-
76
- {content}
77
- Milestone: {milestone}
78
-
79
- </spec-entry>
80
-
81
- For each pattern:
82
- <spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
83
-
84
- ### {summary}
60
+ <spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
85
61
 
86
- {content}
87
- Milestone: {milestone}
62
+ ### {summary}
88
63
 
89
- </spec-entry>
64
+ {content}
65
+ Milestone: {milestone}
90
66
 
91
- For each pitfall:
92
- <spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
93
-
94
- ### {summary}
95
-
96
- {content}
97
- Milestone: {milestone}
98
-
99
- </spec-entry>
67
+ </spec-entry>
100
68
  ```
101
69
 
102
70
  **Keyword extraction**: Extract 3-5 domain-specific terms from the content (same rules as `spec-add`).
@@ -121,21 +89,9 @@ Check existing entries to avoid duplicates when appending in Step 3.
121
89
  }
122
90
  ```
123
91
 
124
- 2. Clear artifacts array (remove milestone-affiliated entries):
125
- ```
126
- state.json.artifacts = state.json.artifacts.filter(a => a.milestone != target_milestone)
127
- ```
92
+ 2. Clear artifacts array: remove all entries where `milestone == target_milestone`
128
93
 
129
- 3. Advance to next milestone:
130
- ```
131
- next_milestone = state.json.milestones.find(m => m.status == "pending")
132
- IF next_milestone:
133
- state.json.current_milestone = next_milestone.id
134
- next_milestone.status = "active"
135
- ELSE:
136
- state.json.current_milestone = null
137
- state.json.status = "completed"
138
- ```
94
+ 3. Advance to next milestone: activate first pending milestone → set as `current_milestone`. If none pending → set `current_milestone = null`, `status = "completed"`
139
95
 
140
96
  4. Write state.json (atomic)
141
97
 
@@ -143,12 +99,7 @@ Check existing entries to avoid duplicates when appending in Step 3.
143
99
 
144
100
  ## Step 5: Clean Scratch
145
101
 
146
- Remove archived scratch directories:
147
- ```
148
- FOR each artifact IN archived_artifacts:
149
- IF directory exists at .workflow/{artifact.path}:
150
- rm -rf .workflow/{artifact.path}
151
- ```
102
+ Remove archived scratch directories: delete `.workflow/{artifact.path}` for each archived artifact.
152
103
 
153
104
  ---
154
105