maestro-flow 0.3.10 → 0.3.12

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 (311) hide show
  1. package/.claude/agents/conceptual-planning-agent.md +1 -0
  2. package/.claude/agents/workflow-analyzer.md +114 -114
  3. package/.claude/agents/workflow-collab-planner.md +144 -144
  4. package/.claude/agents/workflow-debugger.md +102 -103
  5. package/.claude/agents/workflow-executor.md +127 -128
  6. package/.claude/agents/workflow-integration-checker.md +82 -82
  7. package/.claude/agents/workflow-nyquist-auditor.md +85 -84
  8. package/.claude/agents/workflow-phase-researcher.md +85 -85
  9. package/.claude/agents/workflow-plan-checker.md +90 -90
  10. package/.claude/agents/workflow-planner.md +178 -178
  11. package/.claude/agents/workflow-roadmapper.md +81 -83
  12. package/.claude/agents/workflow-verifier.md +119 -119
  13. package/.claude/commands/learn-decompose.md +176 -176
  14. package/.claude/commands/learn-follow.md +167 -167
  15. package/.claude/commands/learn-retro.md +3 -3
  16. package/.claude/commands/learn-second-opinion.md +2 -2
  17. package/.claude/commands/maestro-brainstorm.md +1 -0
  18. package/.claude/commands/maestro-coordinate.md +1 -3
  19. package/.claude/commands/maestro-fork.md +133 -111
  20. package/.claude/commands/maestro-merge.md +85 -77
  21. package/.claude/commands/maestro-plan.md +88 -2
  22. package/.claude/commands/maestro-roadmap.md +113 -2
  23. package/.claude/commands/maestro.md +1 -0
  24. package/.claude/commands/manage-harvest.md +131 -131
  25. package/.claude/commands/manage-issue.md +2 -2
  26. package/.claude/commands/quality-business-test.md +5 -5
  27. package/.claude/commands/quality-debug.md +3 -2
  28. package/.claude/commands/quality-retrospective.md +6 -4
  29. package/.claude/commands/quality-review.md +1 -1
  30. package/.claude/commands/quality-test-gen.md +5 -4
  31. package/.claude/commands/spec-add.md +67 -56
  32. package/.claude/commands/spec-load.md +66 -64
  33. package/.claude/commands/spec-setup.md +5 -9
  34. package/.codex/skills/learn-decompose/SKILL.md +119 -0
  35. package/.codex/skills/learn-follow/SKILL.md +83 -0
  36. package/.codex/skills/learn-investigate/SKILL.md +83 -0
  37. package/.codex/skills/learn-retro/SKILL.md +83 -0
  38. package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
  39. package/.codex/skills/maestro/SKILL.md +151 -279
  40. package/.codex/skills/maestro-analyze/SKILL.md +59 -71
  41. package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
  42. package/.codex/skills/maestro-chain/SKILL.md +95 -110
  43. package/.codex/skills/maestro-coordinate/SKILL.md +68 -234
  44. package/.codex/skills/maestro-execute/SKILL.md +435 -446
  45. package/.codex/skills/maestro-fork/SKILL.md +98 -0
  46. package/.codex/skills/maestro-init/SKILL.md +172 -167
  47. package/.codex/skills/maestro-learn/SKILL.md +80 -0
  48. package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
  49. package/.codex/skills/maestro-merge/SKILL.md +69 -0
  50. package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
  51. package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
  52. package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
  53. package/.codex/skills/maestro-overlay/SKILL.md +188 -185
  54. package/.codex/skills/maestro-plan/SKILL.md +58 -69
  55. package/.codex/skills/maestro-quick/SKILL.md +26 -23
  56. package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
  57. package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
  58. package/.codex/skills/maestro-ui-design/SKILL.md +35 -32
  59. package/.codex/skills/maestro-verify/SKILL.md +556 -566
  60. package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
  61. package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
  62. package/.codex/skills/manage-harvest/SKILL.md +82 -0
  63. package/.codex/skills/manage-issue/SKILL.md +80 -65
  64. package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
  65. package/.codex/skills/manage-learn/SKILL.md +190 -186
  66. package/.codex/skills/manage-memory/SKILL.md +95 -72
  67. package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
  68. package/.codex/skills/manage-status/SKILL.md +102 -89
  69. package/.codex/skills/quality-business-test/SKILL.md +228 -223
  70. package/.codex/skills/quality-debug/SKILL.md +54 -66
  71. package/.codex/skills/quality-integration-test/SKILL.md +532 -544
  72. package/.codex/skills/quality-refactor/SKILL.md +197 -191
  73. package/.codex/skills/quality-retrospective/SKILL.md +512 -505
  74. package/.codex/skills/quality-review/SKILL.md +95 -107
  75. package/.codex/skills/quality-sync/SKILL.md +101 -89
  76. package/.codex/skills/quality-test/SKILL.md +202 -198
  77. package/.codex/skills/quality-test-gen/SKILL.md +94 -105
  78. package/.codex/skills/spec-add/SKILL.md +58 -39
  79. package/.codex/skills/spec-load/SKILL.md +45 -40
  80. package/.codex/skills/spec-map/SKILL.md +180 -182
  81. package/.codex/skills/spec-setup/SKILL.md +94 -76
  82. package/.codex/skills/team-coordinate/SKILL.md +346 -357
  83. package/.codex/skills/team-executor/SKILL.md +70 -112
  84. package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
  85. package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
  86. package/.codex/skills/team-review/SKILL.md +232 -225
  87. package/.codex/skills/team-tech-debt/SKILL.md +78 -100
  88. package/.codex/skills/team-testing/SKILL.md +242 -235
  89. package/.codex/skills/wiki-connect/SKILL.md +75 -0
  90. package/.codex/skills/wiki-digest/SKILL.md +87 -0
  91. package/README.md +9 -4
  92. package/README.zh-CN.md +9 -4
  93. package/dashboard/dist/assets/{ArtifactsPage-DZNCi6tn.js → ArtifactsPage-CUrrDGgN.js} +1 -1
  94. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +49 -0
  95. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +27 -0
  96. package/dashboard/dist/assets/{CollabPage-B4NAHXS2.js → CollabPage-DIUXeazv.js} +1 -1
  97. package/dashboard/dist/assets/{ExecutionPanel-CFt4LJyq.js → ExecutionPanel-VmYeADFj.js} +1 -1
  98. package/dashboard/dist/assets/KanbanPage-DLq8v7hg.js +21 -0
  99. package/dashboard/dist/assets/{MarkdownRenderer-X4af_WNb.js → MarkdownRenderer-D7AehrnR.js} +1 -1
  100. package/dashboard/dist/assets/{McpPage-BKfCVIyU.js → McpPage-BY0SjTgw.js} +2 -2
  101. package/dashboard/dist/assets/{OutputPanel-BlBQFJSW.js → OutputPanel-B-Rjwgmv.js} +1 -1
  102. package/dashboard/dist/assets/{ProblemsPanel-De3DLvoI.js → ProblemsPanel-GEpF-oi4.js} +1 -1
  103. package/dashboard/dist/assets/RequirementBoardPage-xs8uDM7I.js +6 -0
  104. package/dashboard/dist/assets/{RequirementPage-Bllxe2XI.js → RequirementPage-BKDSFwjA.js} +5 -10
  105. package/dashboard/dist/assets/SpecsPage-DLFb9ZH0.js +36 -0
  106. package/dashboard/dist/assets/SupervisorPage-SOki_kgz.js +6 -0
  107. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +11 -0
  108. package/dashboard/dist/assets/{TreeBrowser-Q12qobZs.js → TreeBrowser-B9DHdULE.js} +1 -1
  109. package/dashboard/dist/assets/{WorkflowPage-D_Fzdy3_.js → WorkflowPage-C8hWbYim.js} +1 -1
  110. package/dashboard/dist/assets/{check-u6fGOwQO.js → check-DJDk3A2a.js} +1 -1
  111. package/dashboard/dist/assets/{chevron-right-Csu22t58.js → chevron-right-C7bVDreZ.js} +1 -1
  112. package/dashboard/dist/assets/{circle-CMrkbRNg.js → circle-Qfgy4LB_.js} +1 -1
  113. package/dashboard/dist/assets/{circle-alert-c3tH1P4z.js → circle-alert-Na1vf6qQ.js} +1 -1
  114. package/dashboard/dist/assets/{circle-check-gYxxSYuH.js → circle-check-CEGgy3NV.js} +1 -1
  115. package/dashboard/dist/assets/{circle-check-big-TDSeWstm.js → circle-check-big-3JB8zRYj.js} +1 -1
  116. package/dashboard/dist/assets/{code-CFN2uX9V.js → code-Ble63Idz.js} +1 -1
  117. package/dashboard/dist/assets/{columns-3-38xIDlzy.js → columns-3-BUcKlxve.js} +1 -1
  118. package/dashboard/dist/assets/{download-DC7KkKyP.js → download-CMqkfn8x.js} +1 -1
  119. package/dashboard/dist/assets/{folder-CWq_lAnf.js → folder-B9ewx9LL.js} +1 -1
  120. package/dashboard/dist/assets/index-C2Mcb4TJ.js +231 -0
  121. package/dashboard/dist/assets/index-DyBbPc18.css +1 -0
  122. package/dashboard/dist/assets/{index-Do71weNR.js → index-JTmGteaT.js} +1 -1
  123. package/dashboard/dist/assets/{list-CgIP_2A-.js → list-DI8Wn2aT.js} +1 -1
  124. package/dashboard/dist/assets/loader-B5F6PzFT.js +11 -0
  125. package/dashboard/dist/assets/{minus-DYoN5UGk.js → minus-Lp_BfctG.js} +1 -1
  126. package/dashboard/dist/assets/{pen-line-Bh_WKYHm.js → pen-line-Ch7sphzZ.js} +1 -1
  127. package/dashboard/dist/assets/pencil-_yRMHmGT.js +6 -0
  128. package/dashboard/dist/assets/{proxy-BKxDAKTj.js → proxy-D72Y8a4Y.js} +1 -1
  129. package/dashboard/dist/assets/{search-SieXnOgr.js → search-BS6fI6Bg.js} +1 -1
  130. package/dashboard/dist/assets/{shallow-Bme1JY57.js → shallow-BXasQBvr.js} +1 -1
  131. package/dashboard/dist/assets/table-CeGlFjlP.js +6 -0
  132. package/dashboard/dist/assets/{terminal-BB3Xfuv5.js → terminal-BJic2yW-.js} +1 -1
  133. package/dashboard/dist/assets/{trash-2-C8f4vFFM.js → trash-2-Czz4X8Fb.js} +1 -1
  134. package/dashboard/dist/assets/{zap-4uwlzVm0.js → zap-C3H0jVFA.js} +1 -1
  135. package/dashboard/dist/index.html +2 -2
  136. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +16 -1
  137. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  138. package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js +1 -2
  139. package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js.map +1 -1
  140. package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.d.ts +1 -1
  141. package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js +2 -1
  142. package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js.map +1 -1
  143. package/dashboard/dist-server/dashboard/src/server/index.js +3 -0
  144. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  145. package/dashboard/dist-server/dashboard/src/server/routes/collab.js +124 -0
  146. package/dashboard/dist-server/dashboard/src/server/routes/collab.js.map +1 -1
  147. package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
  148. package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
  149. package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
  150. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
  151. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
  152. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  153. package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.d.ts +10 -0
  154. package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js +73 -0
  155. package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js.map +1 -0
  156. package/dashboard/dist-server/dashboard/src/shared/collab-types.d.ts +31 -0
  157. package/dashboard/dist-server/dashboard/src/shared/collab-types.js +28 -0
  158. package/dashboard/dist-server/dashboard/src/shared/collab-types.js.map +1 -1
  159. package/dashboard/dist-server/dashboard/src/shared/constants.js +10 -0
  160. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  161. package/dashboard/dist-server/dashboard/src/shared/coordinate-types.d.ts +22 -0
  162. package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +12 -0
  163. package/dashboard/dist-server/dashboard/src/shared/issue-types.js +12 -0
  164. package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
  165. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +22 -0
  166. package/dashboard/dist-server/dashboard/src/shared/team-types.js +7 -0
  167. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  168. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
  169. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +28 -2
  170. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  171. package/dashboard/dist-server/shared/agent-types.d.ts +4 -0
  172. package/dashboard/dist-server/src/hooks/constants.d.ts +3 -1
  173. package/dashboard/dist-server/src/hooks/constants.js +4 -2
  174. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  175. package/dist/shared/agent-types.d.ts +4 -0
  176. package/dist/shared/agent-types.d.ts.map +1 -1
  177. package/dist/src/commands/collab.js +4 -4
  178. package/dist/src/commands/collab.js.map +1 -1
  179. package/dist/src/commands/hooks.d.ts.map +1 -1
  180. package/dist/src/commands/hooks.js +66 -1
  181. package/dist/src/commands/hooks.js.map +1 -1
  182. package/dist/src/commands/install-backend.d.ts.map +1 -1
  183. package/dist/src/commands/install-backend.js +29 -18
  184. package/dist/src/commands/install-backend.js.map +1 -1
  185. package/dist/src/commands/spec.d.ts.map +1 -1
  186. package/dist/src/commands/spec.js +7 -2
  187. package/dist/src/commands/spec.js.map +1 -1
  188. package/dist/src/hooks/__tests__/statusline-visual-test.js +23 -1
  189. package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -1
  190. package/dist/src/hooks/constants.d.ts +3 -1
  191. package/dist/src/hooks/constants.d.ts.map +1 -1
  192. package/dist/src/hooks/constants.js +4 -2
  193. package/dist/src/hooks/constants.js.map +1 -1
  194. package/dist/src/hooks/guards/index.d.ts +1 -0
  195. package/dist/src/hooks/guards/index.d.ts.map +1 -1
  196. package/dist/src/hooks/guards/index.js +1 -0
  197. package/dist/src/hooks/guards/index.js.map +1 -1
  198. package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
  199. package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
  200. package/dist/src/hooks/guards/spec-validator.js +66 -0
  201. package/dist/src/hooks/guards/spec-validator.js.map +1 -0
  202. package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
  203. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
  204. package/dist/src/hooks/keyword-spec-injector.js +96 -0
  205. package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
  206. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
  207. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
  208. package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
  209. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  210. package/dist/src/hooks/skill-context.d.ts +3 -0
  211. package/dist/src/hooks/skill-context.d.ts.map +1 -1
  212. package/dist/src/hooks/skill-context.js +95 -9
  213. package/dist/src/hooks/skill-context.js.map +1 -1
  214. package/dist/src/hooks/spec-bridge.d.ts +40 -0
  215. package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
  216. package/dist/src/hooks/spec-bridge.js +97 -0
  217. package/dist/src/hooks/spec-bridge.js.map +1 -0
  218. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  219. package/dist/src/hooks/spec-injector.js +18 -12
  220. package/dist/src/hooks/spec-injector.js.map +1 -1
  221. package/dist/src/hooks/statusline.d.ts.map +1 -1
  222. package/dist/src/hooks/statusline.js +6 -3
  223. package/dist/src/hooks/statusline.js.map +1 -1
  224. package/dist/src/team/phase-orchestrator.d.ts +52 -0
  225. package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
  226. package/dist/src/team/phase-orchestrator.js +165 -0
  227. package/dist/src/team/phase-orchestrator.js.map +1 -0
  228. package/dist/src/team/phase-types.d.ts +51 -0
  229. package/dist/src/team/phase-types.d.ts.map +1 -0
  230. package/dist/src/team/phase-types.js +41 -0
  231. package/dist/src/team/phase-types.js.map +1 -0
  232. package/dist/src/tools/index.d.ts.map +1 -1
  233. package/dist/src/tools/index.js +6 -0
  234. package/dist/src/tools/index.js.map +1 -1
  235. package/dist/src/tools/merge-validator.d.ts.map +1 -1
  236. package/dist/src/tools/merge-validator.js +114 -16
  237. package/dist/src/tools/merge-validator.js.map +1 -1
  238. package/dist/src/tools/spec-entry-parser.d.ts +56 -0
  239. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
  240. package/dist/src/tools/spec-entry-parser.js +196 -0
  241. package/dist/src/tools/spec-entry-parser.js.map +1 -0
  242. package/dist/src/tools/spec-init.d.ts.map +1 -1
  243. package/dist/src/tools/spec-init.js +66 -92
  244. package/dist/src/tools/spec-init.js.map +1 -1
  245. package/dist/src/tools/spec-keyword-index.d.ts +30 -0
  246. package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
  247. package/dist/src/tools/spec-keyword-index.js +101 -0
  248. package/dist/src/tools/spec-keyword-index.js.map +1 -0
  249. package/dist/src/tools/spec-loader.d.ts +3 -3
  250. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  251. package/dist/src/tools/spec-loader.js +49 -23
  252. package/dist/src/tools/spec-loader.js.map +1 -1
  253. package/dist/src/tools/team-agents.d.ts +27 -0
  254. package/dist/src/tools/team-agents.d.ts.map +1 -0
  255. package/dist/src/tools/team-agents.js +362 -0
  256. package/dist/src/tools/team-agents.js.map +1 -0
  257. package/dist/src/tools/team-mailbox.d.ts +40 -0
  258. package/dist/src/tools/team-mailbox.d.ts.map +1 -0
  259. package/dist/src/tools/team-mailbox.js +384 -0
  260. package/dist/src/tools/team-mailbox.js.map +1 -0
  261. package/dist/src/tools/team-msg.d.ts +17 -8
  262. package/dist/src/tools/team-msg.d.ts.map +1 -1
  263. package/dist/src/tools/team-msg.js +110 -13
  264. package/dist/src/tools/team-msg.js.map +1 -1
  265. package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
  266. package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
  267. package/dist/src/tools/team-tasks-mcp.js +408 -0
  268. package/dist/src/tools/team-tasks-mcp.js.map +1 -0
  269. package/package.json +2 -1
  270. package/shared/agent-types.ts +4 -0
  271. package/templates/worktree-scope.json +9 -10
  272. package/templates/worktrees.json +26 -27
  273. package/workflows/analyze.md +816 -816
  274. package/workflows/brainstorm.md +480 -471
  275. package/workflows/codebase-rebuild.md +332 -332
  276. package/workflows/codebase-refresh.md +240 -240
  277. package/workflows/debug.md +16 -6
  278. package/workflows/execute.md +1 -1
  279. package/workflows/fork.md +100 -36
  280. package/workflows/harvest.md +420 -420
  281. package/workflows/integration-test.md +355 -343
  282. package/workflows/issue-discover.md +414 -414
  283. package/workflows/issue.md +14 -4
  284. package/workflows/learn.md +19 -5
  285. package/workflows/maestro.md +1 -0
  286. package/workflows/map.md +111 -111
  287. package/workflows/merge.md +113 -55
  288. package/workflows/milestone-complete.md +176 -176
  289. package/workflows/plan.md +1 -1
  290. package/workflows/quick.md +497 -497
  291. package/workflows/refactor.md +300 -300
  292. package/workflows/retrospective.md +61 -22
  293. package/workflows/review.md +17 -4
  294. package/workflows/roadmap.md +335 -335
  295. package/workflows/spec-generate.md +640 -640
  296. package/workflows/specs-add.md +46 -81
  297. package/workflows/specs-load.md +15 -17
  298. package/workflows/specs-setup.md +40 -161
  299. package/workflows/test.md +12 -2
  300. package/workflows/ui-style.md +9 -2
  301. package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +0 -49
  302. package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +0 -22
  303. package/dashboard/dist/assets/KanbanPage-C8USth6H.js +0 -21
  304. package/dashboard/dist/assets/RequirementBoardPage-Bf1trzqs.js +0 -11
  305. package/dashboard/dist/assets/SpecsPage-9lwxKT27.js +0 -36
  306. package/dashboard/dist/assets/SupervisorPage-SusdfHFq.js +0 -6
  307. package/dashboard/dist/assets/TeamsPage-DsuM6OwC.js +0 -6
  308. package/dashboard/dist/assets/arrow-left-Bqtb2hle.js +0 -6
  309. package/dashboard/dist/assets/index-DWG-WrzT.js +0 -231
  310. package/dashboard/dist/assets/index-GUNJodSR.css +0 -1
  311. package/dashboard/dist/assets/table-llyEtj-7.js +0 -6
@@ -1,414 +1,414 @@
1
- # Workflow: Issue Discovery
2
-
3
- Automated issue discovery via multi-perspective analysis or prompt-driven exploration.
4
-
5
- ## Input
6
-
7
- - `$ARGUMENTS`: empty (multi-perspective) or `by-prompt [prompt text]`
8
- - Operates on `.workflow/issues/`
9
-
10
- ---
11
-
12
- ### Step 1: Parse Mode
13
-
14
- ```
15
- 1. Extract mode from $ARGUMENTS:
16
- - empty or no arguments → MULTI_PERSPECTIVE mode (Step 3)
17
- - "by-prompt" → PROMPT_DRIVEN mode (Step 7)
18
-
19
- 2. Remaining tokens after mode keyword = DISCOVERY_ARGS
20
- For by-prompt: join remaining tokens as USER_PROMPT
21
- ```
22
-
23
- ---
24
-
25
- ### Step 2: Validate Environment
26
-
27
- ```
28
- 1. Check .workflow/ exists
29
- If not → fatal: "No project initialized. Run /maestro-init first."
30
-
31
- 2. Check .workflow/issues/ exists
32
- If not → mkdir -p .workflow/issues/
33
-
34
- 3. Ensure issues.jsonl exists
35
- If not → touch .workflow/issues/issues.jsonl
36
-
37
- 4. Generate discovery session ID:
38
- DBP-{YYYYMMDD}-{HHmmss}
39
-
40
- 5. Create discovery session directory:
41
- mkdir -p .workflow/issues/discoveries/{SESSION_ID}/
42
-
43
- 6. Initialize discovery-state.json:
44
- {
45
- "id": "{SESSION_ID}",
46
- "mode": "{discover|discover-by-prompt}",
47
- "status": "in_progress",
48
- "started_at": "{NOW_ISO}",
49
- "completed_at": null,
50
- "perspectives_completed": [],
51
- "issues_found": 0,
52
- "issues_deduplicated": 0
53
- }
54
- ```
55
-
56
- ---
57
-
58
- ## Multi-Perspective Discovery (discover)
59
-
60
- ### Step 3: Define Analysis Perspectives
61
-
62
- ```
63
- 8 analysis perspectives, each with a focus area and guiding questions:
64
-
65
- 1. SECURITY
66
- Focus: Authentication, authorization, input validation, secrets, injection
67
- Question: "What security vulnerabilities or unsafe patterns exist?"
68
-
69
- 2. PERFORMANCE
70
- Focus: N+1 queries, unbounded loops, missing caching, memory leaks, large payloads
71
- Question: "What performance bottlenecks or inefficiencies exist?"
72
-
73
- 3. RELIABILITY
74
- Focus: Error handling, retry logic, race conditions, data integrity, graceful degradation
75
- Question: "What failure modes are unhandled or could cause data loss?"
76
-
77
- 4. MAINTAINABILITY
78
- Focus: Code duplication, tight coupling, missing abstractions, unclear naming, dead code
79
- Question: "What makes this codebase harder to understand or change?"
80
-
81
- 5. SCALABILITY
82
- Focus: Hardcoded limits, single-threaded bottlenecks, stateful assumptions, schema rigidity
83
- Question: "What will break or degrade as load/data/users increase?"
84
-
85
- 6. UX
86
- Focus: Confusing flows, missing feedback, inconsistent behavior, accessibility gaps
87
- Question: "What creates friction or confusion for end users?"
88
-
89
- 7. ACCESSIBILITY
90
- Focus: Screen reader support, keyboard navigation, color contrast, ARIA labels, focus management
91
- Question: "What barriers exist for users with disabilities?"
92
-
93
- 8. COMPLIANCE
94
- Focus: Logging gaps, audit trails, data retention, privacy controls, regulatory requirements
95
- Question: "What regulatory or policy requirements are not met?"
96
- ```
97
-
98
- ### Step 3.5: Load Project Specs
99
-
100
- ```
101
- specs_content = maestro spec load --category execution
102
- ```
103
-
104
- Pass to each analysis agent so severity assessments align with project quality standards.
105
-
106
- ---
107
-
108
- ### Step 4: Launch Parallel Analysis
109
-
110
- ```
111
- Launch analysis agents in batches of up to 4 concurrent:
112
-
113
- Batch 1: security, performance, reliability, maintainability
114
- Batch 2: scalability, ux, accessibility, compliance
115
-
116
- For each perspective, launch a CLI analysis:
117
-
118
- maestro delegate "PURPOSE: Discover {PERSPECTIVE} issues in the codebase.
119
- Focus: {FOCUS_AREA}
120
- Guiding question: {QUESTION}
121
-
122
- TASK:
123
- - Scan all source files for {PERSPECTIVE}-related problems
124
- - Identify concrete issues with file:line references
125
- - Rate each finding: critical / high / medium / low severity
126
- - Provide brief fix direction for each finding
127
-
128
- MODE: analysis
129
- CONTEXT: @**/*
130
- EXPECTED: JSON array of findings, each with:
131
- title, severity, description, location (file:line), fix_direction, affected_components[]
132
- CONSTRAINTS: Only report real issues with evidence, no speculative findings
133
- " --to gemini --mode analysis
134
-
135
- Store results per perspective in:
136
- .workflow/issues/discoveries/{SESSION_ID}/{PERSPECTIVE}-findings.json
137
-
138
- Update discovery-state.json:
139
- perspectives_completed += ["{PERSPECTIVE}"]
140
- ```
141
-
142
- ### Step 5: Deduplicate Findings
143
-
144
- ```
145
- 1. Load all *-findings.json from the session directory
146
- 2. Merge all findings into a single list
147
- 3. Deduplicate by similarity:
148
- - Group findings by affected file path
149
- - Within each file group, compare descriptions
150
- - If two findings describe the same issue (>80% description overlap
151
- or same file:line), keep the one with higher severity
152
- 4. Track: issues_found (pre-dedup), issues_deduplicated (post-dedup)
153
- 5. Update discovery-state.json with counts
154
- ```
155
-
156
- ### Step 6: Create Issues from Findings
157
-
158
- ```
159
- For each unique finding:
160
- 1. Generate ISS-YYYYMMDD-NNN ID (same logic as create handler in issue.md)
161
- 2. Build issue record:
162
- {
163
- "id": "{ID}",
164
- "title": "{finding.title}",
165
- "status": "registered",
166
- "priority": {severity_to_priority},
167
- "severity": "{finding.severity}",
168
- "source": "discovery",
169
- "phase_ref": null,
170
- "gap_ref": null,
171
- "description": "{finding.description}",
172
- "fix_direction": "{finding.fix_direction}",
173
- "context": {
174
- "location": "{finding.location}",
175
- "suggested_fix": "",
176
- "notes": "Discovered by {PERSPECTIVE} analysis in session {SESSION_ID}"
177
- },
178
- "tags": ["{PERSPECTIVE}"],
179
- "affected_components": {finding.affected_components},
180
- "feedback": [],
181
- "issue_history": [
182
- {
183
- "timestamp": "{NOW_ISO}",
184
- "from_status": null,
185
- "to_status": "registered",
186
- "actor": "discovery-agent",
187
- "note": "Auto-discovered via {PERSPECTIVE} perspective"
188
- }
189
- ],
190
- "created_at": "{NOW_ISO}",
191
- "updated_at": "{NOW_ISO}",
192
- "resolved_at": null,
193
- "resolution": null
194
- }
195
-
196
- Severity-to-priority mapping:
197
- critical → 1
198
- high → 2
199
- medium → 3
200
- low → 4
201
-
202
- 3. Append to .workflow/issues/issues.jsonl
203
- 4. Also append to .workflow/issues/discoveries/{SESSION_ID}/discovery-issues.jsonl
204
-
205
- 5. Update discovery-state.json:
206
- status = "completed"
207
- completed_at = NOW_ISO
208
-
209
- 6. Display summary:
210
- ====================================================
211
- DISCOVERY COMPLETE: {SESSION_ID}
212
- Mode: multi-perspective (8 perspectives)
213
- Findings: {issues_found} raw, {issues_deduplicated} unique
214
- Issues created: {issues_deduplicated}
215
- ====================================================
216
-
217
- BREAKDOWN BY PERSPECTIVE:
218
- Security: {count}
219
- Performance: {count}
220
- Reliability: {count}
221
- Maintainability: {count}
222
- Scalability: {count}
223
- UX: {count}
224
- Accessibility: {count}
225
- Compliance: {count}
226
-
227
- BREAKDOWN BY SEVERITY:
228
- Critical: {count}
229
- High: {count}
230
- Medium: {count}
231
- Low: {count}
232
-
233
- 7. Suggest next steps:
234
- - Skill({ skill: "manage-issue", args: "list --severity critical" }) -- Review critical issues
235
- - Skill({ skill: "manage-issue", args: "list" }) -- View all issues
236
- - Skill({ skill: "manage-issue-discover", args: "by-prompt \"...\"" }) -- Explore specific area deeper
237
- ```
238
-
239
- ---
240
-
241
- ## Prompt-Driven Discovery (discover-by-prompt)
242
-
243
- ### Step 7: Parse User Prompt
244
-
245
- ```
246
- 1. Extract USER_PROMPT from DISCOVERY_ARGS
247
- If empty → AskUserQuestion({
248
- question: "What kind of issues should I look for?",
249
- options: [
250
- { label: "Error handling gaps", description: "Missing try/catch, unhandled promises, swallowed errors" },
251
- { label: "API contract violations", description: "Mismatched types, missing validation, undocumented endpoints" },
252
- { label: "Test coverage gaps", description: "Untested code paths, missing edge cases" },
253
- { label: "Custom", description: "Describe what to look for" }
254
- ]
255
- })
256
-
257
- 2. Store USER_PROMPT for exploration context
258
- ```
259
-
260
- ### Step 8: Plan Exploration Dimensions
261
-
262
- ```
263
- Use Gemini CLI to decompose the user prompt into exploration dimensions:
264
-
265
- maestro delegate "PURPOSE: Decompose this issue discovery prompt into 3-5 specific exploration dimensions.
266
-
267
- User wants to find: {USER_PROMPT}
268
-
269
- TASK:
270
- - Break down the prompt into concrete, searchable dimensions
271
- - For each dimension: provide search patterns (regex/keywords), file patterns, and what constitutes a finding
272
- - Output as JSON array of dimensions
273
-
274
- MODE: analysis
275
- EXPECTED: JSON array:
276
- [{
277
- name: string,
278
- description: string,
279
- search_patterns: string[],
280
- file_patterns: string[],
281
- finding_criteria: string
282
- }]
283
- " --to gemini --mode analysis
284
-
285
- Store dimensions in:
286
- .workflow/issues/discoveries/{SESSION_ID}/exploration-plan.json
287
- ```
288
-
289
- ### Step 9: Gather Codebase Context
290
-
291
- ```
292
- For each exploration dimension:
293
-
294
- 1. Use @~/.maestro/templates/search-tool.json for semantic search:
295
- {search_tool}(
296
- project_root_path="{PROJECT_ROOT}",
297
- query="{dimension.description}"
298
- )
299
-
300
- 2. Use ripgrep for pattern-based search:
301
- For each pattern in dimension.search_patterns:
302
- rg "{pattern}" --type-add "src:*.{ts,tsx,js,jsx,py,java,go}" --type src -n
303
-
304
- 3. Collect matching files and code snippets
305
- 4. Store context per dimension in:
306
- .workflow/issues/discoveries/{SESSION_ID}/{dimension.name}-context.md
307
- ```
308
-
309
- ### Step 10: Iterative Exploration Loop
310
-
311
- ```
312
- Max 3 rounds of exploration:
313
-
314
- Round 1: Initial analysis
315
- - Analyze gathered context from Step 9
316
- - Identify concrete issues with evidence
317
- - Identify gaps in coverage (areas not yet explored)
318
-
319
- Round 2: Deepen search (if gaps found)
320
- - For each identified gap:
321
- - Refine search patterns
322
- - Search adjacent files/modules
323
- - Cross-reference with related code
324
- - Merge new findings with Round 1
325
-
326
- Round 3: Final sweep (if significant gaps remain)
327
- - Focus on high-severity patterns not yet covered
328
- - Check cross-module interactions
329
- - Finalize findings list
330
-
331
- After each round:
332
- - Log findings count and coverage assessment
333
- - If no new gaps or no new findings → exit loop early
334
-
335
- Store exploration log:
336
- .workflow/issues/discoveries/{SESSION_ID}/exploration-log.md
337
-
338
- ## Round {N}
339
- - Files analyzed: {count}
340
- - Findings: {count} new, {total} cumulative
341
- - Gaps remaining: {list or "none"}
342
- ```
343
-
344
- ### Step 11: Generate Issues from Findings
345
-
346
- ```
347
- 1. Collect all findings from exploration rounds
348
- 2. Deduplicate (same logic as Step 5):
349
- - Group by affected file
350
- - Merge similar descriptions
351
- - Keep higher-severity duplicate
352
-
353
- 3. For each unique finding:
354
- - Generate ISS-YYYYMMDD-NNN ID
355
- - Build issue record (same structure as Step 6)
356
- - Set source = "discovery"
357
- - Set tags = ["prompt-discovery", "{relevant dimension name}"]
358
- - Set context.notes = "Discovered via prompt: {USER_PROMPT}"
359
-
360
- 4. Append to .workflow/issues/issues.jsonl
361
- 5. Append to .workflow/issues/discoveries/{SESSION_ID}/discovery-issues.jsonl
362
-
363
- 6. Update discovery-state.json:
364
- status = "completed"
365
- completed_at = NOW_ISO
366
-
367
- 7. Display summary:
368
- ====================================================
369
- DISCOVERY COMPLETE: {SESSION_ID}
370
- Mode: prompt-driven
371
- Prompt: "{USER_PROMPT}"
372
- Rounds: {rounds_executed}
373
- Findings: {raw_count} raw, {deduped_count} unique
374
- Issues created: {deduped_count}
375
- ====================================================
376
-
377
- FINDINGS BY DIMENSION:
378
- {dimension.name}: {count}
379
- ...
380
-
381
- BREAKDOWN BY SEVERITY:
382
- Critical: {count}
383
- High: {count}
384
- Medium: {count}
385
- Low: {count}
386
-
387
- 8. Suggest next steps:
388
- - Skill({ skill: "manage-issue", args: "list --source discovery" }) -- View discovered issues
389
- - Skill({ skill: "manage-issue-discover" }) -- Run full 8-perspective scan
390
- - Skill({ skill: "manage-issue-discover", args: "by-prompt \"...\"" }) -- Explore another area
391
- ```
392
-
393
- ---
394
-
395
- ## Output
396
-
397
- - **Session artifacts**: `.workflow/issues/discoveries/{SESSION_ID}/`
398
- - `discovery-state.json` -- session metadata and progress
399
- - `discovery-issues.jsonl` -- issues found in this session
400
- - `*-findings.json` -- raw findings per perspective (discover mode)
401
- - `exploration-plan.json` -- dimensions (discover-by-prompt mode)
402
- - `*-context.md` -- gathered context per dimension
403
- - `exploration-log.md` -- round-by-round exploration log
404
- - **Issues**: appended to `.workflow/issues/issues.jsonl`
405
-
406
- ## Quality Criteria
407
-
408
- - Multi-perspective mode covers all 8 analysis angles
409
- - Prompt-driven mode decomposes user intent into searchable dimensions
410
- - Findings backed by concrete file:line evidence
411
- - Deduplication prevents duplicate issue records
412
- - Discovery session fully traceable via session directory
413
- - All created issues follow the issue.json template schema
414
- - ID generation avoids collisions with existing issues
1
+ # Workflow: Issue Discovery
2
+
3
+ Automated issue discovery via multi-perspective analysis or prompt-driven exploration.
4
+
5
+ ## Input
6
+
7
+ - `$ARGUMENTS`: empty (multi-perspective) or `by-prompt [prompt text]`
8
+ - Operates on `.workflow/issues/`
9
+
10
+ ---
11
+
12
+ ### Step 1: Parse Mode
13
+
14
+ ```
15
+ 1. Extract mode from $ARGUMENTS:
16
+ - empty or no arguments → MULTI_PERSPECTIVE mode (Step 3)
17
+ - "by-prompt" → PROMPT_DRIVEN mode (Step 7)
18
+
19
+ 2. Remaining tokens after mode keyword = DISCOVERY_ARGS
20
+ For by-prompt: join remaining tokens as USER_PROMPT
21
+ ```
22
+
23
+ ---
24
+
25
+ ### Step 2: Validate Environment
26
+
27
+ ```
28
+ 1. Check .workflow/ exists
29
+ If not → fatal: "No project initialized. Run /maestro-init first."
30
+
31
+ 2. Check .workflow/issues/ exists
32
+ If not → mkdir -p .workflow/issues/
33
+
34
+ 3. Ensure issues.jsonl exists
35
+ If not → touch .workflow/issues/issues.jsonl
36
+
37
+ 4. Generate discovery session ID:
38
+ DBP-{YYYYMMDD}-{HHmmss}
39
+
40
+ 5. Create discovery session directory:
41
+ mkdir -p .workflow/issues/discoveries/{SESSION_ID}/
42
+
43
+ 6. Initialize discovery-state.json:
44
+ {
45
+ "id": "{SESSION_ID}",
46
+ "mode": "{discover|discover-by-prompt}",
47
+ "status": "in_progress",
48
+ "started_at": "{NOW_ISO}",
49
+ "completed_at": null,
50
+ "perspectives_completed": [],
51
+ "issues_found": 0,
52
+ "issues_deduplicated": 0
53
+ }
54
+ ```
55
+
56
+ ---
57
+
58
+ ## Multi-Perspective Discovery (discover)
59
+
60
+ ### Step 3: Define Analysis Perspectives
61
+
62
+ ```
63
+ 8 analysis perspectives, each with a focus area and guiding questions:
64
+
65
+ 1. SECURITY
66
+ Focus: Authentication, authorization, input validation, secrets, injection
67
+ Question: "What security vulnerabilities or unsafe patterns exist?"
68
+
69
+ 2. PERFORMANCE
70
+ Focus: N+1 queries, unbounded loops, missing caching, memory leaks, large payloads
71
+ Question: "What performance bottlenecks or inefficiencies exist?"
72
+
73
+ 3. RELIABILITY
74
+ Focus: Error handling, retry logic, race conditions, data integrity, graceful degradation
75
+ Question: "What failure modes are unhandled or could cause data loss?"
76
+
77
+ 4. MAINTAINABILITY
78
+ Focus: Code duplication, tight coupling, missing abstractions, unclear naming, dead code
79
+ Question: "What makes this codebase harder to understand or change?"
80
+
81
+ 5. SCALABILITY
82
+ Focus: Hardcoded limits, single-threaded bottlenecks, stateful assumptions, schema rigidity
83
+ Question: "What will break or degrade as load/data/users increase?"
84
+
85
+ 6. UX
86
+ Focus: Confusing flows, missing feedback, inconsistent behavior, accessibility gaps
87
+ Question: "What creates friction or confusion for end users?"
88
+
89
+ 7. ACCESSIBILITY
90
+ Focus: Screen reader support, keyboard navigation, color contrast, ARIA labels, focus management
91
+ Question: "What barriers exist for users with disabilities?"
92
+
93
+ 8. COMPLIANCE
94
+ Focus: Logging gaps, audit trails, data retention, privacy controls, regulatory requirements
95
+ Question: "What regulatory or policy requirements are not met?"
96
+ ```
97
+
98
+ ### Step 3.5: Load Project Specs
99
+
100
+ ```
101
+ specs_content = maestro spec load --category coding
102
+ ```
103
+
104
+ Pass to each analysis agent so severity assessments align with project quality standards.
105
+
106
+ ---
107
+
108
+ ### Step 4: Launch Parallel Analysis
109
+
110
+ ```
111
+ Launch analysis agents in batches of up to 4 concurrent:
112
+
113
+ Batch 1: security, performance, reliability, maintainability
114
+ Batch 2: scalability, ux, accessibility, compliance
115
+
116
+ For each perspective, launch a CLI analysis:
117
+
118
+ maestro delegate "PURPOSE: Discover {PERSPECTIVE} issues in the codebase.
119
+ Focus: {FOCUS_AREA}
120
+ Guiding question: {QUESTION}
121
+
122
+ TASK:
123
+ - Scan all source files for {PERSPECTIVE}-related problems
124
+ - Identify concrete issues with file:line references
125
+ - Rate each finding: critical / high / medium / low severity
126
+ - Provide brief fix direction for each finding
127
+
128
+ MODE: analysis
129
+ CONTEXT: @**/*
130
+ EXPECTED: JSON array of findings, each with:
131
+ title, severity, description, location (file:line), fix_direction, affected_components[]
132
+ CONSTRAINTS: Only report real issues with evidence, no speculative findings
133
+ " --to gemini --mode analysis
134
+
135
+ Store results per perspective in:
136
+ .workflow/issues/discoveries/{SESSION_ID}/{PERSPECTIVE}-findings.json
137
+
138
+ Update discovery-state.json:
139
+ perspectives_completed += ["{PERSPECTIVE}"]
140
+ ```
141
+
142
+ ### Step 5: Deduplicate Findings
143
+
144
+ ```
145
+ 1. Load all *-findings.json from the session directory
146
+ 2. Merge all findings into a single list
147
+ 3. Deduplicate by similarity:
148
+ - Group findings by affected file path
149
+ - Within each file group, compare descriptions
150
+ - If two findings describe the same issue (>80% description overlap
151
+ or same file:line), keep the one with higher severity
152
+ 4. Track: issues_found (pre-dedup), issues_deduplicated (post-dedup)
153
+ 5. Update discovery-state.json with counts
154
+ ```
155
+
156
+ ### Step 6: Create Issues from Findings
157
+
158
+ ```
159
+ For each unique finding:
160
+ 1. Generate ISS-YYYYMMDD-NNN ID (same logic as create handler in issue.md)
161
+ 2. Build issue record:
162
+ {
163
+ "id": "{ID}",
164
+ "title": "{finding.title}",
165
+ "status": "registered",
166
+ "priority": {severity_to_priority},
167
+ "severity": "{finding.severity}",
168
+ "source": "discovery",
169
+ "phase_ref": null,
170
+ "gap_ref": null,
171
+ "description": "{finding.description}",
172
+ "fix_direction": "{finding.fix_direction}",
173
+ "context": {
174
+ "location": "{finding.location}",
175
+ "suggested_fix": "",
176
+ "notes": "Discovered by {PERSPECTIVE} analysis in session {SESSION_ID}"
177
+ },
178
+ "tags": ["{PERSPECTIVE}"],
179
+ "affected_components": {finding.affected_components},
180
+ "feedback": [],
181
+ "issue_history": [
182
+ {
183
+ "timestamp": "{NOW_ISO}",
184
+ "from_status": null,
185
+ "to_status": "registered",
186
+ "actor": "discovery-agent",
187
+ "note": "Auto-discovered via {PERSPECTIVE} perspective"
188
+ }
189
+ ],
190
+ "created_at": "{NOW_ISO}",
191
+ "updated_at": "{NOW_ISO}",
192
+ "resolved_at": null,
193
+ "resolution": null
194
+ }
195
+
196
+ Severity-to-priority mapping:
197
+ critical → 1
198
+ high → 2
199
+ medium → 3
200
+ low → 4
201
+
202
+ 3. Append to .workflow/issues/issues.jsonl
203
+ 4. Also append to .workflow/issues/discoveries/{SESSION_ID}/discovery-issues.jsonl
204
+
205
+ 5. Update discovery-state.json:
206
+ status = "completed"
207
+ completed_at = NOW_ISO
208
+
209
+ 6. Display summary:
210
+ ====================================================
211
+ DISCOVERY COMPLETE: {SESSION_ID}
212
+ Mode: multi-perspective (8 perspectives)
213
+ Findings: {issues_found} raw, {issues_deduplicated} unique
214
+ Issues created: {issues_deduplicated}
215
+ ====================================================
216
+
217
+ BREAKDOWN BY PERSPECTIVE:
218
+ Security: {count}
219
+ Performance: {count}
220
+ Reliability: {count}
221
+ Maintainability: {count}
222
+ Scalability: {count}
223
+ UX: {count}
224
+ Accessibility: {count}
225
+ Compliance: {count}
226
+
227
+ BREAKDOWN BY SEVERITY:
228
+ Critical: {count}
229
+ High: {count}
230
+ Medium: {count}
231
+ Low: {count}
232
+
233
+ 7. Suggest next steps:
234
+ - Skill({ skill: "manage-issue", args: "list --severity critical" }) -- Review critical issues
235
+ - Skill({ skill: "manage-issue", args: "list" }) -- View all issues
236
+ - Skill({ skill: "manage-issue-discover", args: "by-prompt \"...\"" }) -- Explore specific area deeper
237
+ ```
238
+
239
+ ---
240
+
241
+ ## Prompt-Driven Discovery (discover-by-prompt)
242
+
243
+ ### Step 7: Parse User Prompt
244
+
245
+ ```
246
+ 1. Extract USER_PROMPT from DISCOVERY_ARGS
247
+ If empty → AskUserQuestion({
248
+ question: "What kind of issues should I look for?",
249
+ options: [
250
+ { label: "Error handling gaps", description: "Missing try/catch, unhandled promises, swallowed errors" },
251
+ { label: "API contract violations", description: "Mismatched types, missing validation, undocumented endpoints" },
252
+ { label: "Test coverage gaps", description: "Untested code paths, missing edge cases" },
253
+ { label: "Custom", description: "Describe what to look for" }
254
+ ]
255
+ })
256
+
257
+ 2. Store USER_PROMPT for exploration context
258
+ ```
259
+
260
+ ### Step 8: Plan Exploration Dimensions
261
+
262
+ ```
263
+ Use Gemini CLI to decompose the user prompt into exploration dimensions:
264
+
265
+ maestro delegate "PURPOSE: Decompose this issue discovery prompt into 3-5 specific exploration dimensions.
266
+
267
+ User wants to find: {USER_PROMPT}
268
+
269
+ TASK:
270
+ - Break down the prompt into concrete, searchable dimensions
271
+ - For each dimension: provide search patterns (regex/keywords), file patterns, and what constitutes a finding
272
+ - Output as JSON array of dimensions
273
+
274
+ MODE: analysis
275
+ EXPECTED: JSON array:
276
+ [{
277
+ name: string,
278
+ description: string,
279
+ search_patterns: string[],
280
+ file_patterns: string[],
281
+ finding_criteria: string
282
+ }]
283
+ " --to gemini --mode analysis
284
+
285
+ Store dimensions in:
286
+ .workflow/issues/discoveries/{SESSION_ID}/exploration-plan.json
287
+ ```
288
+
289
+ ### Step 9: Gather Codebase Context
290
+
291
+ ```
292
+ For each exploration dimension:
293
+
294
+ 1. Use @~/.maestro/templates/search-tool.json for semantic search:
295
+ {search_tool}(
296
+ project_root_path="{PROJECT_ROOT}",
297
+ query="{dimension.description}"
298
+ )
299
+
300
+ 2. Use ripgrep for pattern-based search:
301
+ For each pattern in dimension.search_patterns:
302
+ rg "{pattern}" --type-add "src:*.{ts,tsx,js,jsx,py,java,go}" --type src -n
303
+
304
+ 3. Collect matching files and code snippets
305
+ 4. Store context per dimension in:
306
+ .workflow/issues/discoveries/{SESSION_ID}/{dimension.name}-context.md
307
+ ```
308
+
309
+ ### Step 10: Iterative Exploration Loop
310
+
311
+ ```
312
+ Max 3 rounds of exploration:
313
+
314
+ Round 1: Initial analysis
315
+ - Analyze gathered context from Step 9
316
+ - Identify concrete issues with evidence
317
+ - Identify gaps in coverage (areas not yet explored)
318
+
319
+ Round 2: Deepen search (if gaps found)
320
+ - For each identified gap:
321
+ - Refine search patterns
322
+ - Search adjacent files/modules
323
+ - Cross-reference with related code
324
+ - Merge new findings with Round 1
325
+
326
+ Round 3: Final sweep (if significant gaps remain)
327
+ - Focus on high-severity patterns not yet covered
328
+ - Check cross-module interactions
329
+ - Finalize findings list
330
+
331
+ After each round:
332
+ - Log findings count and coverage assessment
333
+ - If no new gaps or no new findings → exit loop early
334
+
335
+ Store exploration log:
336
+ .workflow/issues/discoveries/{SESSION_ID}/exploration-log.md
337
+
338
+ ## Round {N}
339
+ - Files analyzed: {count}
340
+ - Findings: {count} new, {total} cumulative
341
+ - Gaps remaining: {list or "none"}
342
+ ```
343
+
344
+ ### Step 11: Generate Issues from Findings
345
+
346
+ ```
347
+ 1. Collect all findings from exploration rounds
348
+ 2. Deduplicate (same logic as Step 5):
349
+ - Group by affected file
350
+ - Merge similar descriptions
351
+ - Keep higher-severity duplicate
352
+
353
+ 3. For each unique finding:
354
+ - Generate ISS-YYYYMMDD-NNN ID
355
+ - Build issue record (same structure as Step 6)
356
+ - Set source = "discovery"
357
+ - Set tags = ["prompt-discovery", "{relevant dimension name}"]
358
+ - Set context.notes = "Discovered via prompt: {USER_PROMPT}"
359
+
360
+ 4. Append to .workflow/issues/issues.jsonl
361
+ 5. Append to .workflow/issues/discoveries/{SESSION_ID}/discovery-issues.jsonl
362
+
363
+ 6. Update discovery-state.json:
364
+ status = "completed"
365
+ completed_at = NOW_ISO
366
+
367
+ 7. Display summary:
368
+ ====================================================
369
+ DISCOVERY COMPLETE: {SESSION_ID}
370
+ Mode: prompt-driven
371
+ Prompt: "{USER_PROMPT}"
372
+ Rounds: {rounds_executed}
373
+ Findings: {raw_count} raw, {deduped_count} unique
374
+ Issues created: {deduped_count}
375
+ ====================================================
376
+
377
+ FINDINGS BY DIMENSION:
378
+ {dimension.name}: {count}
379
+ ...
380
+
381
+ BREAKDOWN BY SEVERITY:
382
+ Critical: {count}
383
+ High: {count}
384
+ Medium: {count}
385
+ Low: {count}
386
+
387
+ 8. Suggest next steps:
388
+ - Skill({ skill: "manage-issue", args: "list --source discovery" }) -- View discovered issues
389
+ - Skill({ skill: "manage-issue-discover" }) -- Run full 8-perspective scan
390
+ - Skill({ skill: "manage-issue-discover", args: "by-prompt \"...\"" }) -- Explore another area
391
+ ```
392
+
393
+ ---
394
+
395
+ ## Output
396
+
397
+ - **Session artifacts**: `.workflow/issues/discoveries/{SESSION_ID}/`
398
+ - `discovery-state.json` -- session metadata and progress
399
+ - `discovery-issues.jsonl` -- issues found in this session
400
+ - `*-findings.json` -- raw findings per perspective (discover mode)
401
+ - `exploration-plan.json` -- dimensions (discover-by-prompt mode)
402
+ - `*-context.md` -- gathered context per dimension
403
+ - `exploration-log.md` -- round-by-round exploration log
404
+ - **Issues**: appended to `.workflow/issues/issues.jsonl`
405
+
406
+ ## Quality Criteria
407
+
408
+ - Multi-perspective mode covers all 8 analysis angles
409
+ - Prompt-driven mode decomposes user intent into searchable dimensions
410
+ - Findings backed by concrete file:line evidence
411
+ - Deduplication prevents duplicate issue records
412
+ - Discovery session fully traceable via session directory
413
+ - All created issues follow the issue.json template schema
414
+ - ID generation avoids collisions with existing issues