maestro-flow 0.3.14 → 0.3.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/.claude/commands/maestro-amend.md +300 -0
  2. package/.claude/commands/maestro-analyze.md +1 -49
  3. package/.claude/commands/maestro-composer.md +354 -0
  4. package/.claude/commands/maestro-execute.md +2 -56
  5. package/.claude/commands/maestro-fork.md +3 -50
  6. package/.claude/commands/maestro-merge.md +2 -26
  7. package/.claude/commands/maestro-milestone-audit.md +1 -5
  8. package/.claude/commands/maestro-milestone-complete.md +1 -7
  9. package/.claude/commands/maestro-plan.md +6 -127
  10. package/.claude/commands/maestro-player.md +404 -0
  11. package/.claude/commands/maestro-roadmap.md +3 -101
  12. package/.claude/commands/maestro-spec-generate.md +1 -25
  13. package/.claude/commands/maestro-ui-design.md +14 -73
  14. package/.claude/commands/maestro-verify.md +1 -32
  15. package/.claude/commands/maestro.md +13 -30
  16. package/.claude/commands/manage-harvest.md +7 -44
  17. package/.claude/commands/manage-knowhow-capture.md +193 -0
  18. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  19. package/.claude/commands/manage-learn.md +3 -28
  20. package/.claude/commands/manage-status.md +1 -20
  21. package/.claude/commands/manage-wiki.md +1 -1
  22. package/.claude/commands/quality-business-test.md +1 -1
  23. package/.claude/commands/quality-debug.md +3 -18
  24. package/.claude/commands/quality-integration-test.md +3 -23
  25. package/.claude/commands/quality-retrospective.md +1 -28
  26. package/.claude/commands/quality-review.md +3 -52
  27. package/.claude/commands/quality-test-gen.md +1 -10
  28. package/.claude/commands/quality-test.md +3 -25
  29. package/.claude/commands/spec-add.md +1 -21
  30. package/.claude/commands/spec-load.md +1 -16
  31. package/.claude/commands/wiki-connect.md +2 -112
  32. package/.claude/commands/wiki-digest.md +2 -141
  33. package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
  34. package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
  35. package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
  36. package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
  37. package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
  38. package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
  39. package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
  40. package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
  41. package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
  42. package/.claude/skills/workflow-skill-designer/SKILL.md +496 -0
  43. package/.claude/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
  44. package/.claude/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
  45. package/.claude/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
  46. package/.claude/skills/workflow-skill-designer/phases/04-validation.md +471 -0
  47. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  48. package/.codex/skills/maestro/SKILL.md +60 -146
  49. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  50. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  51. package/.codex/skills/maestro-composer/SKILL.md +213 -0
  52. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  53. package/.codex/skills/maestro-init/SKILL.md +7 -51
  54. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  55. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  56. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  57. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  58. package/.codex/skills/maestro-plan/SKILL.md +42 -166
  59. package/.codex/skills/maestro-player/SKILL.md +323 -0
  60. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  61. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  62. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  63. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  64. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  65. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  66. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  67. package/.codex/skills/manage-issue/SKILL.md +1 -6
  68. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  69. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  70. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  71. package/.codex/skills/manage-learn/SKILL.md +17 -71
  72. package/.codex/skills/manage-status/SKILL.md +4 -35
  73. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  74. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  75. package/.codex/skills/quality-debug/SKILL.md +41 -133
  76. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  77. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  78. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  79. package/.codex/skills/quality-review/SKILL.md +30 -65
  80. package/.codex/skills/quality-sync/SKILL.md +2 -11
  81. package/.codex/skills/quality-test/SKILL.md +4 -45
  82. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  83. package/.codex/skills/spec-add/SKILL.md +2 -9
  84. package/.codex/skills/spec-load/SKILL.md +4 -14
  85. package/.codex/skills/spec-map/SKILL.md +4 -37
  86. package/.codex/skills/spec-remove/SKILL.md +3 -35
  87. package/.codex/skills/spec-setup/SKILL.md +2 -19
  88. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  89. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  90. package/.codex/skills/team-executor/SKILL.md +7 -66
  91. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  92. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  93. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  94. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  95. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  96. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  97. package/.codex/skills/team-review/SKILL.md +12 -86
  98. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  99. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  100. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  101. package/.codex/skills/team-testing/SKILL.md +14 -99
  102. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  103. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  104. package/README.md +6 -0
  105. package/README.zh-CN.md +6 -0
  106. package/chains/_intent-map.json +7 -7
  107. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  108. package/chains/singles/{memory.json → knowhow.json} +6 -6
  109. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  110. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  111. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  112. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  113. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  114. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  115. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  116. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  117. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  118. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  119. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  120. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  121. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  122. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  123. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  124. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  125. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  126. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  127. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  128. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  129. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  130. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  131. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  132. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  133. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  134. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  135. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  136. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  137. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  138. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  139. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  140. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  141. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  142. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  143. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  144. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  145. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  146. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  147. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  148. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  149. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  150. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  151. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  152. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  153. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  154. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  155. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  156. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  157. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  158. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  159. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  160. package/dashboard/dist/index.html +2 -2
  161. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  162. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  163. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  164. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  165. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  166. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  167. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  168. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  169. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  170. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  171. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  172. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  173. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  174. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  175. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  176. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  200. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  201. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  202. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  203. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  204. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  205. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  206. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  207. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  208. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  209. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  210. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  211. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  212. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  213. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  214. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  215. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  218. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  219. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  221. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  222. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  223. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  224. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  226. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  227. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  228. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  229. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  230. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  231. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  232. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  233. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  234. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  235. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  236. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  237. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  238. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  239. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  240. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  241. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  242. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  243. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  244. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  245. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  246. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  247. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  248. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  249. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  250. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  251. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  252. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  253. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  254. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  255. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  256. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  257. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  258. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  259. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  260. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  261. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  262. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  263. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  264. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  265. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  266. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  267. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  268. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  269. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  270. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  271. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  272. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  273. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  274. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  275. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  276. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  277. package/dist/shared/agent-types.d.ts +2 -0
  278. package/dist/shared/agent-types.d.ts.map +1 -1
  279. package/dist/src/cli.js +2 -2
  280. package/dist/src/cli.js.map +1 -1
  281. package/dist/src/commands/delegate.d.ts.map +1 -1
  282. package/dist/src/commands/delegate.js +11 -8
  283. package/dist/src/commands/delegate.js.map +1 -1
  284. package/dist/src/commands/install-backend.d.ts +1 -1
  285. package/dist/src/commands/install-backend.d.ts.map +1 -1
  286. package/dist/src/commands/install-backend.js +1 -1
  287. package/dist/src/commands/install-backend.js.map +1 -1
  288. package/dist/src/commands/knowhow.d.ts +10 -0
  289. package/dist/src/commands/knowhow.d.ts.map +1 -0
  290. package/dist/src/commands/knowhow.js +217 -0
  291. package/dist/src/commands/knowhow.js.map +1 -0
  292. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  293. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  294. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  295. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  296. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  297. package/dist/src/commands/overlay-ui/index.js +70 -44
  298. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  299. package/dist/src/commands/overlay.d.ts.map +1 -1
  300. package/dist/src/commands/overlay.js +4 -3
  301. package/dist/src/commands/overlay.js.map +1 -1
  302. package/dist/src/core/overlay/applier.d.ts +1 -1
  303. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  304. package/dist/src/core/overlay/applier.js +40 -13
  305. package/dist/src/core/overlay/applier.js.map +1 -1
  306. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  307. package/dist/src/core/overlay/loader.js +6 -0
  308. package/dist/src/core/overlay/loader.js.map +1 -1
  309. package/dist/src/core/overlay/types.d.ts +5 -1
  310. package/dist/src/core/overlay/types.d.ts.map +1 -1
  311. package/dist/src/core/overlay/types.js +1 -1
  312. package/dist/src/core/overlay/types.js.map +1 -1
  313. package/dist/src/hooks/context-monitor.js +1 -1
  314. package/dist/src/hooks/context-monitor.js.map +1 -1
  315. package/dist/src/hooks/skill-context.js +1 -1
  316. package/dist/src/hooks/skill-context.js.map +1 -1
  317. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  318. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  319. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  320. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  321. package/dist/src/tools/index.js +2 -2
  322. package/dist/src/tools/index.js.map +1 -1
  323. package/dist/src/tools/store-knowhow.d.ts +21 -0
  324. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  325. package/dist/src/tools/store-knowhow.js +295 -0
  326. package/dist/src/tools/store-knowhow.js.map +1 -0
  327. package/package.json +1 -1
  328. package/shared/agent-types.ts +2 -0
  329. package/templates/workflows/specs/node-catalog.md +170 -0
  330. package/templates/workflows/specs/template-schema.md +157 -0
  331. package/workflows/analyze.md +61 -185
  332. package/workflows/brainstorm.md +3 -23
  333. package/workflows/codebase-rebuild.md +79 -191
  334. package/workflows/codebase-refresh.md +26 -124
  335. package/workflows/debug.md +21 -141
  336. package/workflows/execute.md +183 -350
  337. package/workflows/fork.md +72 -230
  338. package/workflows/harvest.md +12 -79
  339. package/workflows/init.md +3 -17
  340. package/workflows/integration-test.md +21 -190
  341. package/workflows/issue-analyze.md +35 -153
  342. package/workflows/issue-discover.md +88 -263
  343. package/workflows/issue-execute.md +29 -208
  344. package/workflows/issue-plan.md +33 -154
  345. package/workflows/issue.md +44 -202
  346. package/workflows/knowhow.md +374 -0
  347. package/workflows/learn.md +30 -177
  348. package/workflows/maestro-coordinate.codex.md +77 -362
  349. package/workflows/maestro-link-coordinate.md +12 -61
  350. package/workflows/maestro.codex.md +124 -457
  351. package/workflows/maestro.md +562 -976
  352. package/workflows/map.md +16 -53
  353. package/workflows/merge.md +42 -197
  354. package/workflows/milestone-audit.md +5 -43
  355. package/workflows/milestone-complete.md +11 -60
  356. package/workflows/plan.md +176 -387
  357. package/workflows/quick.md +25 -174
  358. package/workflows/refactor.md +28 -221
  359. package/workflows/retrospective.md +104 -443
  360. package/workflows/review.md +87 -299
  361. package/workflows/roadmap.md +117 -97
  362. package/workflows/spec-generate.md +22 -118
  363. package/workflows/specs-add.md +5 -25
  364. package/workflows/specs-load.md +1 -5
  365. package/workflows/specs-remove.md +0 -11
  366. package/workflows/specs-setup.md +11 -47
  367. package/workflows/status.md +58 -200
  368. package/workflows/sync.md +28 -141
  369. package/workflows/test-gen.md +23 -100
  370. package/workflows/test.md +15 -125
  371. package/workflows/ui-design.md +139 -465
  372. package/workflows/ui-style.md +36 -228
  373. package/workflows/verify.md +52 -273
  374. package/workflows/wiki-connect.md +9 -46
  375. package/workflows/wiki-digest.md +7 -50
  376. package/workflows/wiki-manage.md +11 -108
  377. package/.claude/commands/maestro-coordinate.md +0 -63
  378. package/.claude/commands/manage-memory-capture.md +0 -59
  379. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  380. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  381. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  382. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  383. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  384. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  385. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  386. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  387. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  388. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  389. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  390. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  391. package/workflows/maestro-coordinate.md +0 -582
  392. package/workflows/memory.md +0 -451
@@ -16,15 +16,9 @@ Tiered multi-dimensional code review with parallel agents, severity classificati
16
16
  ```
17
17
  Input: <phase> argument (number or slug)
18
18
 
19
- Read .workflow/state.json state
20
- artifacts = state.artifacts ?? []
21
-
22
- IF number: art = artifacts.find(a => a.type === 'execute' && a.phase === number)
23
- IF slug: art = artifacts.find(a => a.type === 'execute' && a.slug?.includes(slug))
24
- IF art: PHASE_DIR = ".workflow/" + art.path
25
- ELSE: ERROR "Phase not found in artifact registry"
26
-
27
- Validate execution has occurred (tasks_completed > 0 or .task/ exists)
19
+ Resolve phase from .workflow/state.json artifacts (type=execute, match by phase number or slug)
20
+ PHASE_DIR = ".workflow/" + artifact.path
21
+ → Error if not found or no completed tasks
28
22
  ```
29
23
 
30
24
  ---
@@ -61,25 +55,16 @@ Three tiers that scale with task depth:
61
55
  ### 1a: Extract from task summaries
62
56
 
63
57
  ```
64
- changed_files = []
65
- FOR each .summaries/TASK-{NNN}-summary.md in PHASE_DIR:
66
- Parse summary for file paths mentioned (created, modified, deleted)
67
- Add to changed_files[]
68
-
69
- FOR each .task/TASK-{NNN}.json in PHASE_DIR:
70
- Extract files[].path where action is "create" or "modify"
71
- Add to changed_files[]
72
-
73
- Deduplicate changed_files
58
+ Collect changed_files from PHASE_DIR:
59
+ - .summaries/TASK-{NNN}-summary.md extract referenced file paths (created/modified/deleted)
60
+ - .task/TASK-{NNN}.json extract files[].path where action is create|modify
61
+ Deduplicate result
74
62
  ```
75
63
 
76
64
  ### 1b: Validate files exist
77
65
 
78
66
  ```
79
- review_files = []
80
- FOR each file in changed_files:
81
- IF file exists on disk AND is not in excluded patterns:
82
- review_files.push(file)
67
+ review_files = changed_files filtered to: exists on disk AND not in excluded patterns
83
68
 
84
69
  Excluded patterns:
85
70
  - node_modules/**, vendor/**, dist/**, build/**
@@ -90,8 +75,7 @@ Excluded patterns:
90
75
  ### 1c: Error if empty
91
76
 
92
77
  ```
93
- IF review_files.length == 0:
94
- Abort with E004: "No changed files detected in phase"
78
+ Abort E004 if review_files is empty
95
79
  ```
96
80
 
97
81
  ---
@@ -99,18 +83,8 @@ IF review_files.length == 0:
99
83
  ## Step 2: Determine Review Level
100
84
 
101
85
  ```
102
- IF --level flag provided:
103
- level = flag value (quick | standard | deep)
104
- ELSE:
105
- is_critical_phase = index.json.priority == "critical" || index.json.tags?.includes("critical")
106
- file_count = review_files.length
107
-
108
- IF file_count <= 3:
109
- level = "quick"
110
- ELSE IF file_count >= 20 OR is_critical_phase:
111
- level = "deep"
112
- ELSE:
113
- level = "standard"
86
+ level = --level flag value, or auto-detect:
87
+ ≤3 files quick | ≥20 files or critical phase → deep | otherwise → standard
114
88
 
115
89
  Log: "Review level: {level} ({file_count} files)"
116
90
  ```
@@ -118,12 +92,9 @@ Log: "Review level: {level} ({file_count} files)"
118
92
  ### Determine dimensions
119
93
 
120
94
  ```
121
- IF --dimensions flag provided:
122
- dimensions = parse comma-separated list, validate each
123
- ELSE IF level == "quick":
124
- dimensions = ["correctness", "security"]
125
- ELSE:
126
- dimensions = ["correctness", "security", "performance", "architecture", "maintainability", "best-practices"]
95
+ dimensions = --dimensions flag (comma-separated), or level defaults:
96
+ quick [correctness, security]
97
+ standard|deep [correctness, security, performance, architecture, maintainability, best-practices]
127
98
  ```
128
99
 
129
100
  ---
@@ -150,13 +121,8 @@ review_context = {
150
121
  success_criteria: index.json.success_criteria,
151
122
  tech_stack: detect from package.json / pyproject.toml / go.mod / Cargo.toml,
152
123
  specs: specs_content (from Step 3),
153
- verification_gaps: [] // from verification.json if exists
124
+ verification_gaps: load from ${PHASE_DIR}/verification.json .gaps if exists, else []
154
125
  }
155
-
156
- IF file exists "${PHASE_DIR}/verification.json":
157
- Load verification.json
158
- review_context.verification_gaps = verification.json.gaps
159
- (Reviewers use this to focus on areas with known issues)
160
126
  ```
161
127
 
162
128
  ---
@@ -170,30 +136,15 @@ IF file exists "${PHASE_DIR}/verification.json":
170
136
  No agents spawned. The orchestrator performs the review directly.
171
137
 
172
138
  ```
173
- all_findings = []
174
-
175
- FOR each dimension in dimensions: // correctness, security
176
- FOR each file in review_files:
177
- Read file content
178
- Apply dimension-specific checks:
179
-
180
- IF dimension == "correctness":
181
- - Scan for: unhandled null/undefined, missing error propagation, type mismatches
182
- - Scan for: off-by-one patterns, missing boundary checks
183
- - Scan for: unreachable code, logic contradictions
139
+ Scan each review_file against each dimension, collecting findings:
184
140
 
185
- IF dimension == "security":
186
- - Scan for: SQL/command injection (string interpolation in queries)
187
- - Scan for: hardcoded secrets, API keys, passwords
188
- - Scan for: missing input validation on external inputs
189
- - Scan for: XSS vectors (unsanitized user content in output)
141
+ correctness: unhandled null/undefined, missing error propagation, type mismatches,
142
+ off-by-one, missing boundary checks, unreachable code, logic contradictions
143
+ security: SQL/command injection, hardcoded secrets/keys/passwords,
144
+ missing input validation, XSS vectors
190
145
 
191
- FOR each issue found:
192
- all_findings.push({
193
- id: "{PREFIX}-{NNN}",
194
- dimension, severity, title, file, line, snippet,
195
- description, impact, suggestion
196
- })
146
+ Each finding: { id: "{PREFIX}-{NNN}", dimension, severity, title, file, line, snippet,
147
+ description, impact, suggestion }
197
148
  ```
198
149
 
199
150
  **After inline scan, skip to Step 6 (Aggregate).**
@@ -203,91 +154,32 @@ FOR each dimension in dimensions: // correctness, security
203
154
  Spawn one workflow-reviewer agent per dimension, all in parallel:
204
155
 
205
156
  ```
206
- Agent({
207
- subagent_type: "workflow-reviewer",
208
- run_in_background: false,
209
- description: "Review: {dimension}",
210
- prompt: `
211
- ## Assignment
212
- Dimension: {dimension}
213
- Phase: {phase_name} {phase_goal}
214
-
215
- ## Files to Review
216
- {review_files joined by newline}
217
-
218
- ## Phase Context
219
- Success criteria: {success_criteria}
220
- Tech stack: {tech_stack}
221
-
222
- ## Project Specs
223
- {specs_content or "No specs loaded"}
224
-
225
- ## Known Issues (from verification)
226
- {verification_gaps or "No prior verification gaps"}
227
-
228
- ## Instructions
229
- 1. Read each file listed above
230
- 2. Analyze for {dimension}-specific issues only
231
- 3. Classify each finding: critical / high / medium / low
232
- 4. Return findings as JSON array with: id, dimension, severity, title, file, line, snippet, description, impact, suggestion, spec_violation (if applicable)
233
- 5. Limit to top 20 findings, prioritized by severity
234
- 6. Every finding MUST have file:line evidence
235
- `
236
- })
157
+ Per dimension → spawn workflow-reviewer agent (all parallel):
158
+ Context: dimension, phase_name, phase_goal, review_files, success_criteria,
159
+ tech_stack, specs_content, verification_gaps
160
+ Instructions:
161
+ - Read each file, analyze for {dimension}-specific issues only
162
+ - Classify: critical / high / medium / low
163
+ - Return JSON array: id, dimension, severity, title, file, line, snippet,
164
+ description, impact, suggestion, spec_violation (if applicable)
165
+ - Top 20 findings by severity, each with file:line evidence
237
166
  ```
238
167
 
239
168
  **Launch ALL dimension agents in a single message** (parallel execution).
240
169
 
241
- Collect results:
242
- ```
243
- dimension_results = {}
244
- FOR each completed agent:
245
- Parse JSON findings array from agent output
246
- dimension_results[dimension] = findings[]
247
- IF agent failed:
248
- Log warning W001, continue with partial results
249
- ```
170
+ Collect dimension_results from each agent (JSON findings array). Log W001 on agent failure, continue with partial results.
250
171
 
251
172
  ### Deep Level — Enhanced Agent Review
252
173
 
253
174
  Same parallel agent spawning as standard, but with enhanced prompt:
254
175
 
255
176
  ```
256
- Agent({
257
- subagent_type: "workflow-reviewer",
258
- run_in_background: false,
259
- description: "Review: {dimension}",
260
- prompt: `
261
- ## Assignment
262
- Dimension: {dimension}
263
- Phase: {phase_name} — {phase_goal}
264
- Review Level: DEEP — thorough analysis required
265
-
266
- ## Files to Review
267
- {review_files joined by newline}
268
-
269
- ## Phase Context
270
- Success criteria: {success_criteria}
271
- Tech stack: {tech_stack}
272
-
273
- ## Project Specs
274
- {specs_content or "No specs loaded"}
275
-
276
- ## Known Issues (from verification)
277
- {verification_gaps or "No prior verification gaps"}
278
-
279
- ## Instructions (Deep Mode)
280
- 1. Read each file listed above completely
281
- 2. For each file, also read its direct imports to understand context
282
- 3. Analyze for {dimension}-specific issues
283
- 4. Classify each finding: critical / high / medium / low
284
- 5. For critical/high findings: trace callers and dependents
285
- 6. Cross-reference patterns across files (duplication, inconsistency)
286
- 7. Return findings as JSON array with: id, dimension, severity, title, file, line, snippet, description, impact, suggestion, spec_violation, related_files[]
287
- 8. Limit to top 30 findings, prioritized by severity
288
- 9. Every finding MUST have file:line evidence
289
- `
290
- })
177
+ Same parallel agent spawning as standard, with deep-mode enhancements:
178
+ - Also read direct imports for context
179
+ - Trace callers/dependents for critical/high findings
180
+ - Cross-reference patterns across files (duplication, inconsistency)
181
+ - Return includes additional field: related_files[]
182
+ - Top 30 findings (vs 20 for standard)
291
183
  ```
292
184
 
293
185
  Collect results same as standard.
@@ -299,50 +191,30 @@ Collect results same as standard.
299
191
  ### 6a: Merge all findings
300
192
 
301
193
  ```
302
- all_findings = []
303
- FOR each dimension in dimension_results (or inline results for quick):
304
- all_findings.push(...findings)
305
-
306
- Sort all_findings by severity (critical > high > medium > low), then by dimension
194
+ all_findings = merge all dimension results, sorted by severity (critical > high > medium > low), then dimension
307
195
  ```
308
196
 
309
197
  ### 6b: Severity distribution
310
198
 
311
199
  ```
312
- severity_dist = {
313
- critical: all_findings.filter(f => f.severity == "critical").length,
314
- high: all_findings.filter(f => f.severity == "high").length,
315
- medium: all_findings.filter(f => f.severity == "medium").length,
316
- low: all_findings.filter(f => f.severity == "low").length
317
- }
200
+ severity_dist = count all_findings by severity {critical, high, medium, low}
318
201
  ```
319
202
 
320
203
  ### 6c: Identify critical files (standard + deep only)
321
204
 
322
205
  ```
323
206
  IF level != "quick":
324
- file_dimension_map = {}
325
- FOR each finding in all_findings:
326
- IF finding.severity in ["critical", "high"]:
327
- file_dimension_map[finding.file] = file_dimension_map[finding.file] || new Set()
328
- file_dimension_map[finding.file].add(finding.dimension)
329
-
330
- critical_files = Object.entries(file_dimension_map)
331
- .filter(([file, dims]) => dims.size >= 3)
332
- .map(([file, dims]) => ({ file, dimensions: [...dims] }))
207
+ critical_files = files with critical/high findings across 3+ distinct dimensions
208
+ [{ file, dimensions[] }]
333
209
  ```
334
210
 
335
211
  ### 6d: Determine verdict
336
212
 
337
213
  ```
338
- IF severity_dist.critical > 0:
339
- verdict = "BLOCK" // Must fix before proceeding
340
- ELSE IF severity_dist.high > 5:
341
- verdict = "BLOCK" // Too many high-severity issues
342
- ELSE IF severity_dist.high > 0:
343
- verdict = "WARN" // Should fix, can proceed with acknowledgment
344
- ELSE:
345
- verdict = "PASS" // Good to proceed
214
+ verdict:
215
+ BLOCK any critical, or >5 high
216
+ WARN → any high (≤5)
217
+ PASS → no critical or high
346
218
  ```
347
219
 
348
220
  ---
@@ -360,73 +232,34 @@ ELSE:
360
232
  ### 7a: Select deep-dive targets
361
233
 
362
234
  ```
363
- IF level == "deep":
364
- deep_dive_targets = all_findings
365
- .filter(f => f.severity in ["critical", "high"])
366
- .slice(0, 15) // More targets for deep level
367
- ELSE:
368
- deep_dive_targets = all_findings
369
- .filter(f => f.severity == "critical")
370
- .slice(0, 10)
235
+ deep_dive_targets:
236
+ deep → critical + high findings, top 15
237
+ standard critical findings only, top 10
371
238
  ```
372
239
 
373
240
  ### 7b: Deep-dive iteration
374
241
 
375
242
  ```
376
- max_iterations = level == "deep" ? 3 : 1
377
- deep_dive_results = []
378
-
379
- FOR iteration = 1 TO max_iterations:
380
- unresolved = deep_dive_targets.filter(t => !t.deep_dive_complete)
381
- IF unresolved.length == 0: break
382
-
383
- FOR each target in unresolved:
384
- Agent({
385
- subagent_type: "workflow-reviewer",
386
- run_in_background: false,
387
- description: "Deep-dive: {target.id}",
388
- prompt: `
389
- ## Deep-Dive Analysis (Iteration {iteration})
390
- Original finding: {target as JSON}
391
- {IF iteration > 1: "Previous analysis: {previous_result}"}
392
-
393
- ## Extended Context
394
- 1. Read the affected file completely: {target.file}
395
- 2. Find all imports/callers of the affected code:
396
- grep -r "{identifier}" src/ --include="*.ts" --include="*.tsx" --include="*.py"
397
- 3. Check related test files for coverage
398
-
399
- ## Analyze
400
- - Root cause: Why does this issue exist?
401
- - Impact radius: What other code is affected?
402
- - Remediation: Specific fix with code example
403
- - Risk: What could go wrong if unfixed?
404
-
405
- ## Output
406
- Return JSON:
407
- {
408
- "finding_id": "{target.id}",
409
- "root_cause": "...",
410
- "impact_radius": ["file1.ts", "file2.ts"],
411
- "remediation": { "approach": "...", "code_example": "..." },
412
- "risk_if_unfixed": "...",
413
- "reassessed_severity": "critical|high|medium|low",
414
- "confidence": 0.0-1.0
415
- }
416
- `
417
- })
418
-
419
- Merge results:
420
- FOR each result:
421
- Find original finding by finding_id
422
- Enrich with root_cause, impact_radius, remediation, risk_if_unfixed
423
- IF result.confidence >= 0.8:
424
- target.deep_dive_complete = true
425
- Update severity if reassessed differently (with justification)
426
- deep_dive_results.push(result)
427
-
428
- IF level == "deep" AND iteration < max_iterations:
429
- Log: "Deep-dive iteration {iteration} complete. {unresolved remaining} findings need further analysis."
243
+ Iterate up to max_iterations (deep=3, standard=1) over unresolved targets:
244
+
245
+ Per target → spawn workflow-reviewer agent:
246
+ Context: original finding JSON, previous analysis (if iteration > 1)
247
+ Tasks: read affected file, find callers/imports, check test coverage
248
+ Analyze: root cause, impact radius, remediation (with code example), risk if unfixed
249
+
250
+ Return JSON:
251
+ {
252
+ "finding_id": "{target.id}",
253
+ "root_cause": "...",
254
+ "impact_radius": ["file1.ts", "file2.ts"],
255
+ "remediation": { "approach": "...", "code_example": "..." },
256
+ "risk_if_unfixed": "...",
257
+ "reassessed_severity": "critical|high|medium|low",
258
+ "confidence": 0.0-1.0
259
+ }
260
+
261
+ Merge: enrich original finding, mark complete if confidence >= 0.8,
262
+ update severity if reassessed. Stop early if all resolved.
430
263
  ```
431
264
 
432
265
  ---
@@ -442,56 +275,20 @@ FOR iteration = 1 TO max_iterations:
442
275
  | Deep | Critical + High + Medium |
443
276
 
444
277
  ```
445
- IF level == "quick":
446
- issue_findings = all_findings.filter(f => f.severity == "critical")
447
- ELSE IF level == "standard":
448
- issue_findings = all_findings.filter(f => f.severity in ["critical", "high"])
449
- ELSE:
450
- issue_findings = all_findings.filter(f => f.severity in ["critical", "high", "medium"])
451
-
452
- IF issue_findings.length > 0:
453
- mkdir -p ".workflow/issues"
454
- existing_ids = []
455
- IF file exists ".workflow/issues/issues.jsonl":
456
- Read .workflow/issues/issues.jsonl
457
- Extract all id fields matching today's date prefix ISS-YYYYMMDD-*
458
- existing_ids = collected IDs
459
-
460
- today = format(now(), "YYYYMMDD")
461
- counter = max sequence number from existing_ids for today + 1 (start at 1 if none)
462
-
463
- FOR each finding IN issue_findings:
464
- issue_id = "ISS-{today}-{counter padded to 3 digits}"
465
- issue = {
466
- id: issue_id,
467
- title: "[{finding.dimension}] {finding.title}" (truncated to 100 chars),
468
- status: "registered",
469
- priority: severity_to_priority(finding.severity),
470
- severity: finding.severity,
471
- source: "review",
472
- phase_ref: PHASE_NUM,
473
- gap_ref: finding.id,
474
- description: finding.description,
475
- fix_direction: finding.suggestion,
476
- context: {
477
- location: "{finding.file}:{finding.line}",
478
- suggested_fix: finding.suggestion,
479
- notes: finding.impact
480
- },
481
- tags: ["review", finding.dimension],
482
- affected_components: [],
483
- feedback: [],
484
- issue_history: [],
485
- created_at: now(),
486
- updated_at: now(),
487
- resolved_at: null,
488
- resolution: null
489
- }
490
- Append JSON line to .workflow/issues/issues.jsonl
491
- finding.issue_id = issue_id
492
- counter++
278
+ Filter findings by level threshold (quick=critical, standard=critical+high, deep=+medium)
279
+
280
+ For each qualifying finding → append issue to .workflow/issues/issues.jsonl:
281
+ id: "ISS-{YYYYMMDD}-{NNN}" (auto-increment from existing today's entries)
282
+ title: "[{dimension}] {title}" (max 100 chars)
283
+ status: "registered"
284
+ priority: severity_to_priority (critical→1, high→2, medium→3)
285
+ severity, source: "review", phase_ref, gap_ref: finding.id
286
+ description, fix_direction: finding.suggestion
287
+ context: { location: "{file}:{line}", suggested_fix, notes: impact }
288
+ tags: ["review", dimension]
289
+ Timestamps: created_at, updated_at = now()
493
290
 
494
- Print: "Created {issue_findings.length} issues from review findings"
291
+ Link finding.issue_id back to created issue
495
292
  ```
496
293
 
497
294
  **severity_to_priority mapping**: critical → 1, high → 2, medium → 3
@@ -502,10 +299,7 @@ IF issue_findings.length > 0:
502
299
 
503
300
  **Archive previous review artifacts** before writing:
504
301
  ```
505
- IF file exists "${PHASE_DIR}/review.json":
506
- mkdir -p "${PHASE_DIR}/.history"
507
- TIMESTAMP = current timestamp formatted as "YYYY-MM-DDTHH-mm-ss"
508
- mv "${PHASE_DIR}/review.json" "${PHASE_DIR}/.history/review-${TIMESTAMP}.json"
302
+ Archive existing review.json ${PHASE_DIR}/.history/review-{YYYY-MM-DDTHH-mm-ss}.json
509
303
  ```
510
304
 
511
305
  ```
@@ -537,15 +331,9 @@ Write ${PHASE_DIR}/review.json:
537
331
  ## Step 10: Update index.json
538
332
 
539
333
  ```
540
- index.json.updated_at = now()
541
- index.json.review = {
542
- level: review.json.level,
543
- verdict: review.json.verdict,
544
- reviewed_at: review.json.reviewed_at,
545
- severity_distribution: review.json.severity_distribution,
546
- findings_count: review.json.severity_distribution.total,
547
- issues_created: review.json.issues_created.length
548
- }
334
+ Update index.json.updated_at = now()
335
+ Set index.json.review = { level, verdict, reviewed_at, severity_distribution,
336
+ findings_count, issues_created count }
549
337
  ```
550
338
 
551
339
  ---
@@ -592,7 +380,7 @@ Next steps:
592
380
 
593
381
  | Verdict | Suggestion |
594
382
  |---------|------------|
595
- | PASS | Skill({ skill: "quality-test", args: "{phase}" }) for UAT, or Skill({ skill: "maestro-phase-transition", args: "{phase}" }) if UAT already passed |
383
+ | PASS | Skill({ skill: "quality-test", args: "{phase}" }) for UAT, or Skill({ skill: "maestro-milestone-audit" }) if UAT already passed |
596
384
  | WARN | Review findings, then Skill({ skill: "quality-test", args: "{phase}" }) — acknowledge warnings before proceeding |
597
385
  | BLOCK | Fix critical issues first: Skill({ skill: "maestro-plan", args: "{phase} --gaps" }) -> Skill({ skill: "maestro-execute", args: "{phase}" }) -> re-run Skill({ skill: "quality-review", args: "{phase}" }) |
598
386