maestro-flow 0.3.46 → 0.3.47

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 (241) hide show
  1. package/.claude/agents/ui-design-agent.md +1 -0
  2. package/.claude/agents/workflow-executor.md +3 -0
  3. package/.claude/commands/learn-decompose.md +91 -146
  4. package/.claude/commands/learn-follow.md +102 -137
  5. package/.claude/commands/learn-investigate.md +102 -167
  6. package/.claude/commands/learn-retro.md +100 -243
  7. package/.claude/commands/learn-second-opinion.md +95 -135
  8. package/.claude/commands/maestro-amend.md +95 -232
  9. package/.claude/commands/maestro-analyze.md +1 -6
  10. package/.claude/commands/maestro-collab.md +104 -265
  11. package/.claude/commands/maestro-composer.md +113 -293
  12. package/.claude/commands/maestro-execute.md +10 -17
  13. package/.claude/commands/maestro-impeccable.md +89 -0
  14. package/.claude/commands/maestro-plan.md +1 -6
  15. package/.claude/commands/maestro-player.md +111 -340
  16. package/.claude/commands/maestro-quick.md +9 -0
  17. package/.claude/commands/maestro-ralph-execute.md +167 -210
  18. package/.claude/commands/maestro-ralph.md +245 -426
  19. package/.claude/commands/maestro-ui-codify.md +13 -0
  20. package/.claude/commands/maestro-ui-craft.md +364 -0
  21. package/.claude/commands/maestro-ui-design.md +12 -1
  22. package/.claude/commands/maestro-verify.md +12 -13
  23. package/.claude/commands/maestro.md +142 -72
  24. package/.claude/commands/manage-knowhow-capture.md +45 -170
  25. package/.claude/commands/quality-auto-test.md +9 -0
  26. package/.claude/commands/quality-debug.md +11 -25
  27. package/.claude/commands/quality-refactor.md +9 -0
  28. package/.claude/commands/quality-review.md +5 -14
  29. package/.claude/commands/spec-add.md +1 -1
  30. package/.claude/commands/spec-load.md +3 -2
  31. package/.claude/skills/maestro-impeccable/SKILL.md +169 -0
  32. package/.codex/skills/learn-decompose/SKILL.md +1 -1
  33. package/.codex/skills/learn-investigate/SKILL.md +2 -1
  34. package/.codex/skills/maestro/SKILL.md +278 -313
  35. package/.codex/skills/maestro-analyze/SKILL.md +126 -417
  36. package/.codex/skills/maestro-brainstorm/SKILL.md +129 -451
  37. package/.codex/skills/maestro-collab/SKILL.md +134 -547
  38. package/.codex/skills/maestro-execute/SKILL.md +3 -1
  39. package/.codex/skills/maestro-impeccable/SKILL.md +112 -0
  40. package/.codex/skills/maestro-plan/SKILL.md +88 -437
  41. package/.codex/skills/maestro-player/SKILL.md +191 -333
  42. package/.codex/skills/maestro-quick/SKILL.md +2 -0
  43. package/.codex/skills/maestro-ralph/SKILL.md +307 -710
  44. package/.codex/skills/maestro-roadmap/SKILL.md +201 -518
  45. package/.codex/skills/maestro-ui-codify/SKILL.md +1 -0
  46. package/.codex/skills/maestro-ui-craft/SKILL.md +341 -0
  47. package/.codex/skills/maestro-ui-design/SKILL.md +10 -0
  48. package/.codex/skills/maestro-verify/SKILL.md +116 -409
  49. package/.codex/skills/quality-auto-test/SKILL.md +145 -443
  50. package/.codex/skills/quality-refactor/SKILL.md +1 -1
  51. package/.codex/skills/quality-test/SKILL.md +229 -517
  52. package/.codex/skills/spec-add/SKILL.md +1 -1
  53. package/README.md +4 -1
  54. package/README.zh-CN.md +3 -1
  55. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +3 -0
  56. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
  57. package/dashboard/dist-server/dashboard/src/server/routes/install.js +110 -1
  58. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  59. package/dashboard/dist-server/dashboard/src/server/routes/settings.js +56 -0
  60. package/dashboard/dist-server/dashboard/src/server/routes/settings.js.map +1 -1
  61. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +2 -0
  62. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  63. package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js +2 -2
  64. package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js.map +1 -1
  65. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +2 -0
  66. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  67. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +3 -1
  68. package/dashboard/dist-server/dashboard/src/shared/constants.d.ts +2 -0
  69. package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -0
  70. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  71. package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
  72. package/dist/src/agents/cli-agent-runner.js +1 -3
  73. package/dist/src/agents/cli-agent-runner.js.map +1 -1
  74. package/dist/src/agents/cli-history-store.d.ts +5 -0
  75. package/dist/src/agents/cli-history-store.d.ts.map +1 -1
  76. package/dist/src/agents/cli-history-store.js +65 -13
  77. package/dist/src/agents/cli-history-store.js.map +1 -1
  78. package/dist/src/cli.js +13 -0
  79. package/dist/src/cli.js.map +1 -1
  80. package/dist/src/commands/command-help.d.ts +3 -0
  81. package/dist/src/commands/command-help.d.ts.map +1 -0
  82. package/dist/src/commands/command-help.js +60 -0
  83. package/dist/src/commands/command-help.js.map +1 -0
  84. package/dist/src/commands/config.d.ts.map +1 -1
  85. package/dist/src/commands/config.js +17 -0
  86. package/dist/src/commands/config.js.map +1 -1
  87. package/dist/src/commands/delegate.d.ts.map +1 -1
  88. package/dist/src/commands/delegate.js +12 -2
  89. package/dist/src/commands/delegate.js.map +1 -1
  90. package/dist/src/commands/impeccable.d.ts +10 -0
  91. package/dist/src/commands/impeccable.d.ts.map +1 -0
  92. package/dist/src/commands/impeccable.js +181 -0
  93. package/dist/src/commands/impeccable.js.map +1 -0
  94. package/dist/src/commands/spec.js +1 -1
  95. package/dist/src/commands/spec.js.map +1 -1
  96. package/dist/src/commands/wiki.d.ts.map +1 -1
  97. package/dist/src/commands/wiki.js +5 -1
  98. package/dist/src/commands/wiki.js.map +1 -1
  99. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  100. package/dist/src/config/cli-tools-config.js +10 -7
  101. package/dist/src/config/cli-tools-config.js.map +1 -1
  102. package/dist/src/core/addon-registry.d.ts +31 -0
  103. package/dist/src/core/addon-registry.d.ts.map +1 -0
  104. package/dist/src/core/addon-registry.js +28 -0
  105. package/dist/src/core/addon-registry.js.map +1 -0
  106. package/dist/src/hooks/plugins/spec-injection-plugin.js +2 -0
  107. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  108. package/dist/src/hooks/spec-injector.js +2 -2
  109. package/dist/src/hooks/spec-injector.js.map +1 -1
  110. package/dist/src/index.d.ts +2 -0
  111. package/dist/src/index.d.ts.map +1 -1
  112. package/dist/src/index.js +1 -0
  113. package/dist/src/index.js.map +1 -1
  114. package/dist/src/tools/impeccable/critique-storage.d.ts +28 -0
  115. package/dist/src/tools/impeccable/critique-storage.d.ts.map +1 -0
  116. package/dist/src/tools/impeccable/critique-storage.js +120 -0
  117. package/dist/src/tools/impeccable/critique-storage.js.map +1 -0
  118. package/dist/src/tools/impeccable/design-parser.d.ts +90 -0
  119. package/dist/src/tools/impeccable/design-parser.d.ts.map +1 -0
  120. package/dist/src/tools/impeccable/design-parser.js +696 -0
  121. package/dist/src/tools/impeccable/design-parser.js.map +1 -0
  122. package/dist/src/tools/impeccable/detect-csp.d.ts +6 -0
  123. package/dist/src/tools/impeccable/detect-csp.d.ts.map +1 -0
  124. package/dist/src/tools/impeccable/detect-csp.js +130 -0
  125. package/dist/src/tools/impeccable/detect-csp.js.map +1 -0
  126. package/dist/src/tools/impeccable/is-generated.d.ts +4 -0
  127. package/dist/src/tools/impeccable/is-generated.d.ts.map +1 -0
  128. package/dist/src/tools/impeccable/is-generated.js +56 -0
  129. package/dist/src/tools/impeccable/is-generated.js.map +1 -0
  130. package/dist/src/tools/impeccable/live/accept.d.ts +50 -0
  131. package/dist/src/tools/impeccable/live/accept.d.ts.map +1 -0
  132. package/dist/src/tools/impeccable/live/accept.js +556 -0
  133. package/dist/src/tools/impeccable/live/accept.js.map +1 -0
  134. package/dist/src/tools/impeccable/live/bootstrap.d.ts +2 -0
  135. package/dist/src/tools/impeccable/live/bootstrap.d.ts.map +1 -0
  136. package/dist/src/tools/impeccable/live/bootstrap.js +244 -0
  137. package/dist/src/tools/impeccable/live/bootstrap.js.map +1 -0
  138. package/dist/src/tools/impeccable/live/complete.d.ts +7 -0
  139. package/dist/src/tools/impeccable/live/complete.d.ts.map +1 -0
  140. package/dist/src/tools/impeccable/live/complete.js +67 -0
  141. package/dist/src/tools/impeccable/live/complete.js.map +1 -0
  142. package/dist/src/tools/impeccable/live/completion.d.ts +24 -0
  143. package/dist/src/tools/impeccable/live/completion.d.ts.map +1 -0
  144. package/dist/src/tools/impeccable/live/completion.js +26 -0
  145. package/dist/src/tools/impeccable/live/completion.js.map +1 -0
  146. package/dist/src/tools/impeccable/live/inject.d.ts +41 -0
  147. package/dist/src/tools/impeccable/live/inject.d.ts.map +1 -0
  148. package/dist/src/tools/impeccable/live/inject.js +394 -0
  149. package/dist/src/tools/impeccable/live/inject.js.map +1 -0
  150. package/dist/src/tools/impeccable/live/poll.d.ts +24 -0
  151. package/dist/src/tools/impeccable/live/poll.d.ts.map +1 -0
  152. package/dist/src/tools/impeccable/live/poll.js +180 -0
  153. package/dist/src/tools/impeccable/live/poll.js.map +1 -0
  154. package/dist/src/tools/impeccable/live/resume.d.ts +5 -0
  155. package/dist/src/tools/impeccable/live/resume.d.ts.map +1 -0
  156. package/dist/src/tools/impeccable/live/resume.js +30 -0
  157. package/dist/src/tools/impeccable/live/resume.js.map +1 -0
  158. package/dist/src/tools/impeccable/live/server.d.ts +6 -0
  159. package/dist/src/tools/impeccable/live/server.d.ts.map +1 -0
  160. package/dist/src/tools/impeccable/live/server.js +867 -0
  161. package/dist/src/tools/impeccable/live/server.js.map +1 -0
  162. package/dist/src/tools/impeccable/live/session-store.d.ts +72 -0
  163. package/dist/src/tools/impeccable/live/session-store.d.ts.map +1 -0
  164. package/dist/src/tools/impeccable/live/session-store.js +281 -0
  165. package/dist/src/tools/impeccable/live/session-store.js.map +1 -0
  166. package/dist/src/tools/impeccable/live/static/live-browser-session.js +123 -0
  167. package/dist/src/tools/impeccable/live/static/live-browser.js +4860 -0
  168. package/dist/src/tools/impeccable/live/static/modern-screenshot.umd.js +14 -0
  169. package/dist/src/tools/impeccable/live/status.d.ts +2 -0
  170. package/dist/src/tools/impeccable/live/status.d.ts.map +1 -0
  171. package/dist/src/tools/impeccable/live/status.js +52 -0
  172. package/dist/src/tools/impeccable/live/status.js.map +1 -0
  173. package/dist/src/tools/impeccable/live/wrap.d.ts +33 -0
  174. package/dist/src/tools/impeccable/live/wrap.d.ts.map +1 -0
  175. package/dist/src/tools/impeccable/live/wrap.js +572 -0
  176. package/dist/src/tools/impeccable/live/wrap.js.map +1 -0
  177. package/dist/src/tools/impeccable/load-context.d.ts +13 -0
  178. package/dist/src/tools/impeccable/load-context.d.ts.map +1 -0
  179. package/dist/src/tools/impeccable/load-context.js +79 -0
  180. package/dist/src/tools/impeccable/load-context.js.map +1 -0
  181. package/dist/src/tools/impeccable/paths.d.ts +34 -0
  182. package/dist/src/tools/impeccable/paths.d.ts.map +1 -0
  183. package/dist/src/tools/impeccable/paths.js +102 -0
  184. package/dist/src/tools/impeccable/paths.js.map +1 -0
  185. package/dist/src/tools/spec-entry-parser.d.ts +1 -1
  186. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -1
  187. package/dist/src/tools/spec-entry-parser.js +1 -1
  188. package/dist/src/tools/spec-entry-parser.js.map +1 -1
  189. package/dist/src/tools/spec-init.d.ts.map +1 -1
  190. package/dist/src/tools/spec-init.js +26 -1
  191. package/dist/src/tools/spec-init.js.map +1 -1
  192. package/dist/src/tools/spec-loader.d.ts +1 -1
  193. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  194. package/dist/src/tools/spec-loader.js +2 -0
  195. package/dist/src/tools/spec-loader.js.map +1 -1
  196. package/package.json +2 -2
  197. package/workflows/claude-instructions.md +17 -5
  198. package/workflows/cli-tools-usage.md +10 -3
  199. package/workflows/delegate-usage.md +3 -2
  200. package/workflows/impeccable/adapt.md +190 -0
  201. package/workflows/impeccable/animate.md +175 -0
  202. package/workflows/impeccable/audit.md +133 -0
  203. package/workflows/impeccable/bolder.md +113 -0
  204. package/workflows/impeccable/brand.md +118 -0
  205. package/workflows/impeccable/clarify.md +174 -0
  206. package/workflows/impeccable/codex.md +105 -0
  207. package/workflows/impeccable/cognitive-load.md +106 -0
  208. package/workflows/impeccable/color-and-contrast.md +105 -0
  209. package/workflows/impeccable/colorize.md +154 -0
  210. package/workflows/impeccable/craft.md +123 -0
  211. package/workflows/impeccable/critique.md +261 -0
  212. package/workflows/impeccable/delight.md +302 -0
  213. package/workflows/impeccable/distill.md +111 -0
  214. package/workflows/impeccable/document.md +439 -0
  215. package/workflows/impeccable/extract.md +69 -0
  216. package/workflows/impeccable/harden.md +347 -0
  217. package/workflows/impeccable/heuristics-scoring.md +234 -0
  218. package/workflows/impeccable/interaction-design.md +195 -0
  219. package/workflows/impeccable/layout.md +141 -0
  220. package/workflows/impeccable/live.md +622 -0
  221. package/workflows/impeccable/motion-design.md +109 -0
  222. package/workflows/impeccable/onboard.md +234 -0
  223. package/workflows/impeccable/optimize.md +258 -0
  224. package/workflows/impeccable/overdrive.md +130 -0
  225. package/workflows/impeccable/personas.md +179 -0
  226. package/workflows/impeccable/polish.md +242 -0
  227. package/workflows/impeccable/product.md +62 -0
  228. package/workflows/impeccable/quieter.md +99 -0
  229. package/workflows/impeccable/responsive-design.md +114 -0
  230. package/workflows/impeccable/shape.md +165 -0
  231. package/workflows/impeccable/spatial-design.md +100 -0
  232. package/workflows/impeccable/teach.md +168 -0
  233. package/workflows/impeccable/typeset.md +124 -0
  234. package/workflows/impeccable/typography.md +159 -0
  235. package/workflows/impeccable/ux-writing.md +107 -0
  236. package/workflows/impeccable.md +164 -0
  237. package/workflows/maestro.md +7 -3
  238. package/workflows/skill-authoring.md +265 -0
  239. package/workflows/specs-add.md +3 -2
  240. package/workflows/specs-load.md +2 -1
  241. package/workflows/specs-setup.md +21 -1
@@ -13,321 +13,160 @@ allowed-tools:
13
13
  ---
14
14
 
15
15
  <purpose>
16
- Multi-CLI collaboration: fan-out the same requirement to multiple CLI tools in parallel, cross-verify outputs for consensus/conflicts, then synthesize into a unified report with standard downstream artifacts (context.md + conclusions.json).
17
-
18
- Each CLI tool independently analyzes the requirement. Results are compared and merged via evidence-weighted synthesis.
16
+ Fan-out requirement to multiple CLI tools in parallel cross-verify for consensus/conflicts synthesize into unified report with downstream artifacts (context.md + conclusions.json).
19
17
  </purpose>
20
18
 
21
19
  <context>
22
20
  $ARGUMENTS — requirement text and optional flags.
23
21
 
24
- ```bash
25
- /maestro-collab "analyze the auth module for security vulnerabilities"
26
- /maestro-collab "design a caching strategy" --tools gemini,qwen,claude
27
- /maestro-collab -y "review error handling patterns"
28
- /maestro-collab "refactor user service" --mode write --tools gemini,claude
29
- ```
30
-
31
22
  **Flags**:
32
- - `--tools <list>`: Comma-separated CLI tools (default: auto-select first 3 enabled)
23
+ - `--tools <list>`: Comma-separated CLI tools (default: first 3 enabled)
33
24
  - `--mode analysis|write`: Delegate mode (default: analysis)
34
25
  - `--rule <template>`: Shared rule template for all delegates
35
- - `-y` / `--yes`: Skip plan confirmation
26
+ - `-y`: Skip plan confirmation
27
+
28
+ **Pre-load** (optional): `maestro spec load --category arch` + `maestro wiki list --category arch` → include in delegate prompts.
36
29
 
37
30
  **Output**: `.workflow/scratch/{YYYYMMDD}-collab-{slug}/`
38
- - `collab-report.md` — full collaboration report
39
- - `context.md` — standard Locked/Free/Deferred decisions (plan/analyze compatible)
40
- - `conclusions.json` — structured conclusions (plan fast-track compatible)
41
- - `per-tool/{tool}-output.md` — raw per-tool outputs
31
+ - `collab-report.md` — merged findings with consensus/conflict/unique tags
32
+ - `context.md` — Locked/Free/Deferred decisions (plan compatible)
33
+ - `conclusions.json` — structured: session_id, tools[], consensus_level, recommendation, confidence, dimensions[], decisions[]
34
+ - `per-tool/{tool}-output.md` — raw outputs
42
35
  </context>
43
36
 
44
- <execution>
45
-
46
- ### Step 1: Parse Arguments
47
-
48
- Extract from `$ARGUMENTS`:
49
- - `requirement` — remaining text after flag removal (error if empty)
50
- - `--tools` → `selectedTools` (comma-split)
51
- - `--mode` → `delegateMode` (default: `analysis`)
52
- - `--rule` → `ruleTemplate`
53
- - `-y` / `--yes` → `autoYes`
37
+ <state_machine>
54
38
 
55
- ### Step 2: Discover Available CLI Tools
39
+ <states>
40
+ S_PARSE — 解析参数、提取 flags PERSIST: —
41
+ S_DISCOVER — 发现可用 CLI 工具 PERSIST: —
42
+ S_CONFIRM — 展示计划、用户确认(-y 跳过) PERSIST: —
43
+ S_FANOUT — 构建 prompt、并行启动 delegate、STOP PERSIST: —
44
+ S_COLLECT — 回调到达、收集结果 PERSIST: per-tool outputs
45
+ S_CROSS_VERIFY — 分类发现(共识/冲突/独有) PERSIST: —
46
+ S_SYNTHESIZE — 解决冲突、生成 3 个输出文件 PERSIST: outputs
47
+ S_REGISTER — 注册 CLB artifact PERSIST: state.json
48
+ S_REPORT — 显示摘要 + next-step routing PERSIST: —
49
+ </states>
56
50
 
57
- ```bash
58
- Bash("maestro tools list --json 2>/dev/null || cat ~/.maestro/cli-tools.json")
59
- ```
60
-
61
- Parse tool entries. Build eligible list:
62
- - `enabled == true`
63
- - If `--mode write`: exclude `type == "api-endpoint"`
51
+ <transitions>
64
52
 
65
- Auto-select (when `--tools` omitted): first 3 eligible in config order.
66
- Validate: minimum 2 eligible tools (abort if fewer).
53
+ S_PARSE:
54
+ → S_DISCOVER WHEN: requirement non-empty DO: extract requirement, tools, mode, rule, autoYes
55
+ → S_PARSE WHEN: requirement empty DO: AskUserQuestion for requirement
67
56
 
68
- ### Step 3: Present Collaboration Plan
57
+ S_DISCOVER:
58
+ → S_CONFIRM WHEN: eligible tools >= 2 DO: A_DISCOVER_TOOLS
59
+ → ERROR(E002) WHEN: eligible tools < 2
69
60
 
70
- **(Skip if `-y`)**
61
+ S_CONFIRM:
62
+ → S_FANOUT WHEN: autoYes DO: A_SETUP_SESSION
63
+ → S_FANOUT WHEN: user confirms "执行" DO: A_SETUP_SESSION
64
+ → S_DISCOVER WHEN: user selects "修改工具选择" DO: re-select tools, validate >= 2
65
+ → END WHEN: user cancels
71
66
 
72
- Display plan, then ask user:
67
+ S_FANOUT:
68
+ → S_COLLECT DO: A_PARALLEL_DELEGATE then STOP — wait for callbacks
73
69
 
74
- ```
75
- ============================================================
76
- COLLABORATION PLAN
77
- ============================================================
78
- Requirement: {requirement}
79
- Mode: {delegateMode}
80
- Rule: {ruleTemplate || "none"}
81
-
82
- Available CLI Tools (from cli-tools.json):
83
- [✓] gemini — gemini-3.1-pro-preview [fullstack, frontend]
84
- [✓] claude — claude-sonnet-4-6 [fullstack]
85
- [✓] codex — gpt-5.5 [fullstack, backend]
86
- [ ] opencode — (no model) [fullstack]
87
-
88
- Selected: gemini, claude, codex (3 tools)
89
-
90
- Pipeline:
91
- 1. Fan-out → parallel delegate to each tool
92
- 2. Cross-verification → consensus/conflict analysis
93
- 3. Synthesis → context.md + conclusions.json
94
- ============================================================
95
- ```
70
+ S_COLLECT:
71
+ → S_CROSS_VERIFY WHEN: all callbacks arrived DO: A_COLLECT_OUTPUTS
72
+ ERROR(E004) WHEN: all delegates failed
73
+ GUARD: 1+ succeeded → continue with partial results (W001)
96
74
 
97
- Use `AskUserQuestion` with options:
98
- - **执行** — proceed with selected tools
99
- - **修改工具选择** — let user specify different tool combination
100
- - **取消** — abort
75
+ S_CROSS_VERIFY:
76
+ S_SYNTHESIZE DO: A_CLASSIFY_FINDINGS
101
77
 
102
- If **修改工具选择**: ask user which tools to use (show eligible list), validate ≥ 2, re-display plan.
78
+ S_SYNTHESIZE:
79
+ → S_REGISTER DO: A_GENERATE_OUTPUTS
103
80
 
104
- ### Step 4: Setup Session
81
+ S_REGISTER:
82
+ → S_REPORT DO: append CLB artifact to state.json (type: collab, scope: adhoc)
105
83
 
106
- ```
107
- slug = requirement kebab-cased, max 40 chars
108
- outputDir = .workflow/scratch/{YYYYMMDD}-collab-{slug}/
109
- ```
84
+ S_REPORT:
85
+ END DO: display summary (requirement, tools, consensus_level, per-tool status, artifact id, output dir)
110
86
 
111
- Create `outputDir` + `outputDir/per-tool/`.
87
+ </transitions>
112
88
 
113
- ### Step 5: Build Delegate Prompt
89
+ <actions>
114
90
 
115
- Shared prompt for all tools:
91
+ ### A_DISCOVER_TOOLS
116
92
 
117
93
  ```
118
- PURPOSE: {requirement}; success = actionable findings with evidence
119
- TASK: {auto-decomposed into 3-5 specific verbs}
120
- MODE: {delegateMode}
121
- CONTEXT: @**/*
122
- EXPECTED: Structured findings with file:line references, confidence score (0-100), prioritized recommendations. Sections: ## Findings, ## Recommendations, ## Confidence
123
- CONSTRAINTS: {extracted from requirement}
94
+ Bash("maestro tools list --json 2>/dev/null || cat ~/.maestro/cli-tools.json")
124
95
  ```
96
+ Filter: enabled == true. If --mode write: exclude type == "api-endpoint".
97
+ Auto-select (no --tools): first 3 eligible in config order.
125
98
 
126
- ### Step 6: Parallel Fan-Out
127
-
128
- Launch ALL delegate calls simultaneously using multiple `Bash(run_in_background: true)` in a **single message**:
99
+ ### A_SETUP_SESSION
129
100
 
130
- ```
131
- // Launch all in ONE message — do NOT wait between calls
132
- Bash({
133
- command: `maestro delegate "${prompt}" --to gemini --mode ${mode} ${rule}`,
134
- run_in_background: true
135
- })
136
- Bash({
137
- command: `maestro delegate "${prompt}" --to claude --mode ${mode} ${rule}`,
138
- run_in_background: true
139
- })
140
- Bash({
141
- command: `maestro delegate "${prompt}" --to codex --mode ${mode} ${rule}`,
142
- run_in_background: true
143
- })
144
- ```
101
+ Create: `.workflow/scratch/{YYYYMMDD}-collab-{slug}/` + `per-tool/`.
145
102
 
146
- **After launching all calls → STOP immediately. Do not output anything. Wait for background completion callbacks.**
103
+ ### A_PARALLEL_DELEGATE
147
104
 
148
- ### Step 7: Collect Results
105
+ 1. Build shared prompt:
106
+ ```
107
+ PURPOSE: {requirement}; success = actionable findings with evidence
108
+ TASK: {auto-decomposed into 3-5 specific verbs}
109
+ MODE: {delegateMode}
110
+ CONTEXT: @**/*
111
+ EXPECTED: Structured findings with file:line refs, confidence (0-100), prioritized recommendations
112
+ CONSTRAINTS: {from requirement}
113
+ ```
114
+ 2. Launch ALL delegates in ONE message — multiple `Bash(run_in_background: true)`:
115
+ ```
116
+ maestro delegate "${prompt}" --to {tool} --mode ${mode} [--rule ${rule}]
117
+ ```
118
+ 3. **STOP immediately after launch. Wait for background callbacks.**
149
119
 
150
- As each background callback arrives:
151
- 1. Extract exec ID from output (`[MAESTRO_EXEC_ID=...]`)
152
- 2. Run `maestro delegate output <id>` to get full result
153
- 3. Write raw output to `per-tool/{tool}-output.md`
120
+ ### A_COLLECT_OUTPUTS
154
121
 
155
- **Wait until ALL callbacks have arrived before proceeding.**
122
+ On each callback: `maestro delegate output <id>` → write `per-tool/{tool}-output.md`.
156
123
 
157
- ### Step 8: Cross-Verify
124
+ ### A_CLASSIFY_FINDINGS
158
125
 
159
- Read all `per-tool/{tool}-output.md` files. Compare findings across tools:
126
+ Read all per-tool outputs. For each finding:
160
127
 
161
- For each finding, classify:
162
- - **[CONSENSUS]**: 2+ tools agree on same finding/recommendation
163
- - **[CONFLICT]**: Tools disagree on approach or assessment
164
- - **[UNIQUE]**: Finding from only one tool
128
+ | Condition | Tag |
129
+ |-----------|-----|
130
+ | 2+ tools agree | CONSENSUS |
131
+ | Tools disagree | CONFLICT |
132
+ | 1 tool only | UNIQUE |
165
133
 
166
- Compute `consensus_level = (consensus_count / total_findings) * 100`.
134
+ consensus_level = consensus_count / total_findings * 100.
135
+ If consensus_level < 40%: W003.
167
136
 
168
- ### Step 9: Synthesize Outputs
137
+ ### A_GENERATE_OUTPUTS
169
138
 
170
139
  Resolve conflicts via evidence-weighted voting:
171
- - Higher confidence tool's position wins
172
- - More specific evidence (file:line refs) wins over general statements
173
- - If tied: mark as `[SUGGESTED]`
174
-
175
- Generate three output files:
176
-
177
- #### collab-report.md
178
-
179
- ```markdown
180
- # Multi-CLI Collaboration Report — {requirement}
181
-
182
- ## Summary
183
- - Tools: {tool_list}
184
- - Consensus level: {N}%
185
- - Key finding: {top finding}
186
-
187
- ## Consensus Findings
188
- {findings agreed by 2+ tools}
189
-
190
- ## Resolved Conflicts
191
- {conflicts resolved with rationale and winning tool}
192
-
193
- ## Unresolved Items
194
- {items requiring human judgment}
140
+ - Higher confidence wins; more specific evidence (file:line) wins over general; tied → SUGGESTED
195
141
 
196
- ## Unique Insights
197
- {valuable unique findings with source tool attribution}
142
+ Write 3 files:
143
+ 1. **collab-report.md**: Summary, Consensus Findings, Resolved Conflicts, Unresolved Items, Unique Insights, Recommendations, Per-Tool Confidence table
144
+ 2. **context.md**: Locked (CONSENSUS items), Free (UNIQUE with strong evidence), Deferred (UNRESOLVED conflicts). Standard Locked/Free/Deferred format for plan compatibility.
145
+ 3. **conclusions.json**: session_id, subject, mode, tools[], consensus_level, recommendation (Go/No-Go/Conditional), confidence, dimensions[{name, score, findings}], decisions[{title, classification, source_tools, rationale}]
198
146
 
199
- ## Recommendations
200
- {prioritized, merged recommendations}
147
+ </actions>
201
148
 
202
- ## Per-Tool Confidence
203
- | Tool | Confidence | Key Strength |
204
- |------|-----------|--------------|
205
- ```
206
-
207
- #### context.md (standard downstream format)
208
-
209
- ```markdown
210
- # Context: {requirement}
211
-
212
- **Date**: {date}
213
- **Mode**: collab ({tool_list})
214
- **Consensus Level**: {N}%
215
-
216
- ## Decisions
217
-
218
- ### Decision N: {TITLE}
219
- - **Context**: {what and why}
220
- - **Options**: 1. {opt1} 2. {opt2}
221
- - **Chosen**: {selected}
222
- - **Reason**: {rationale — which tools agreed/disagreed}
223
-
224
- ## Constraints
225
-
226
- ### Locked
227
- {[CONSENSUS] items — treat as confirmed decisions}
228
-
229
- ### Free
230
- {[UNIQUE] items with strong evidence — implementer discretion}
231
-
232
- ### Deferred
233
- {[UNRESOLVED] conflicts — require human judgment}
234
-
235
- ## Code Context
236
- {file:line references from per-tool findings}
237
- ```
238
-
239
- #### conclusions.json
240
-
241
- ```json
242
- {
243
- "session_id": "{sessionId}",
244
- "subject": "{requirement}",
245
- "mode": "collab",
246
- "tools": ["gemini", "claude", "codex"],
247
- "consensus_level": 85,
248
- "recommendation": "Go|No-Go|Conditional",
249
- "confidence": "high|medium|low",
250
- "dimensions": [
251
- { "name": "gemini", "score": 80, "findings": "...", "recommendations": "..." }
252
- ],
253
- "decisions": [
254
- { "title": "...", "classification": "locked|free|deferred", "source_tools": [], "rationale": "..." }
255
- ],
256
- "timestamp": "<ISO>"
257
- }
258
- ```
259
-
260
- ### Step 10: Register Artifact
261
-
262
- Append to `.workflow/state.json`:
263
-
264
- ```json
265
- {
266
- "id": "CLB-{next_id}",
267
- "type": "collab",
268
- "milestone": "{current_milestone}",
269
- "phase": null,
270
- "scope": "adhoc",
271
- "path": "scratch/{YYYYMMDD}-collab-{slug}",
272
- "status": "completed",
273
- "depends_on": null,
274
- "harvested": false,
275
- "created_at": "<ISO>",
276
- "completed_at": "<ISO>"
277
- }
278
- ```
279
-
280
- ### Step 11: Display Summary
281
-
282
- ```
283
- ============================================================
284
- MULTI-CLI COLLABORATION COMPLETE
285
- ============================================================
286
- Requirement: {requirement}
287
- Tools: {tool_list}
288
- Consensus Level: {N}%
289
-
290
- Per-Tool:
291
- gemini: completed (confidence: {N}%)
292
- claude: completed (confidence: {N}%)
293
- codex: completed (confidence: {N}%)
294
-
295
- Artifact: CLB-{id}
296
- Output: {outputDir}/
297
-
298
- Next steps:
299
- /maestro-analyze "{topic}" — Deep feasibility analysis
300
- /maestro-plan "{phase} --dir {dir}" — Plan from collab conclusions
301
- /maestro-brainstorm "{topic}" — Expand with multi-role brainstorm
302
- ============================================================
303
- ```
304
-
305
- </execution>
149
+ </state_machine>
306
150
 
307
151
  <error_codes>
308
-
309
- | Code | Severity | Condition | Recovery |
310
- |------|----------|-----------|----------|
311
- | E001 | error | Requirement argument missing | Prompt for requirement |
312
- | E002 | error | Fewer than 2 CLI tools eligible | Check cli-tools.json, enable more tools |
313
- | E003 | error | Specified tool not found/enabled | Show available tools |
314
- | E004 | error | All delegates failed | Abort with per-tool error details |
315
- | W001 | warning | One tool failed | Continue with remaining tools |
316
- | W002 | warning | >50% conflicts in cross-verify | Highlight in report, recommend manual review |
317
- | W003 | warning | Low consensus level (<40%) | Flag in summary |
318
-
152
+ | Code | Condition | Recovery |
153
+ |------|-----------|----------|
154
+ | E002 | Fewer than 2 eligible tools | Check cli-tools.json, enable more tools |
155
+ | E004 | All delegates failed | Abort with per-tool error details |
156
+ | W001 | One tool failed | Continue with remaining (partial degradation) |
157
+ | W003 | consensus_level < 40% | Flag in summary, recommend manual review |
319
158
  </error_codes>
320
159
 
321
160
  <success_criteria>
322
- - [ ] Available tools discovered from cli-tools.json with eligibility filtering
323
- - [ ] Plan presented via AskUserQuestion with tool modification option (unless -y)
324
- - [ ] All delegates launched in parallel via Bash(run_in_background: true)
325
- - [ ] Execution stopped after launch — waited for all callbacks
326
- - [ ] Per-tool outputs written to per-tool/{tool}-output.md
327
- - [ ] Cross-verification: consensus/conflict/unique classification complete
328
- - [ ] collab-report.md produced with merged findings
329
- - [ ] context.md produced in Locked/Free/Deferred format (downstream compatible)
330
- - [ ] conclusions.json produced (plan fast-track compatible)
161
+ - [ ] All delegates launched in parallel via Bash(run_in_background: true), STOP after launch
162
+ - [ ] Cross-verification: consensus/conflict/unique classification with consensus_level
163
+ - [ ] 3 output files produced (collab-report.md, context.md, conclusions.json)
331
164
  - [ ] CLB artifact registered in state.json
332
165
  - [ ] Partial degradation: continued if 1+ tools succeeded
333
166
  </success_criteria>
167
+
168
+ <next_step_routing>
169
+ - Deep feasibility → `/maestro-analyze "{topic}"`
170
+ - Plan from conclusions → `/maestro-plan --dir {dir}`
171
+ - Expand → `/maestro-brainstorm "{topic}"`
172
+ </next_step_routing>