maestro-flow 0.3.45 → 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 (289) 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 +11 -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-tools-register.md +28 -7
  20. package/.claude/commands/maestro-ui-codify.md +13 -0
  21. package/.claude/commands/maestro-ui-craft.md +364 -0
  22. package/.claude/commands/maestro-ui-design.md +12 -1
  23. package/.claude/commands/maestro-verify.md +12 -13
  24. package/.claude/commands/maestro.md +142 -72
  25. package/.claude/commands/manage-knowhow-capture.md +45 -161
  26. package/.claude/commands/quality-auto-test.md +9 -0
  27. package/.claude/commands/quality-debug.md +11 -24
  28. package/.claude/commands/quality-refactor.md +9 -0
  29. package/.claude/commands/quality-review.md +5 -13
  30. package/.claude/commands/quality-test.md +5 -0
  31. package/.claude/commands/spec-add.md +1 -1
  32. package/.claude/commands/spec-load.md +3 -2
  33. package/.claude/skills/maestro-help/SKILL.md +264 -0
  34. package/.claude/skills/maestro-help/index/catalog.json +182 -0
  35. package/.claude/skills/maestro-help/phases/01-parse-intent.md +122 -0
  36. package/.claude/skills/maestro-help/phases/02-search-present.md +181 -0
  37. package/.claude/skills/maestro-help/phases/03-workflow-guide.md +186 -0
  38. package/.claude/skills/maestro-impeccable/SKILL.md +169 -0
  39. package/.codex/agents/team-supervisor.toml +40 -0
  40. package/.codex/agents/team-worker.toml +63 -0
  41. package/.codex/skills/learn-decompose/SKILL.md +1 -1
  42. package/.codex/skills/learn-investigate/SKILL.md +2 -1
  43. package/.codex/skills/maestro/SKILL.md +278 -313
  44. package/.codex/skills/maestro-analyze/SKILL.md +126 -417
  45. package/.codex/skills/maestro-brainstorm/SKILL.md +129 -451
  46. package/.codex/skills/maestro-collab/SKILL.md +134 -547
  47. package/.codex/skills/maestro-execute/SKILL.md +4 -2
  48. package/.codex/skills/maestro-help/SKILL.md +213 -0
  49. package/.codex/skills/maestro-help/catalog.json +182 -0
  50. package/.codex/skills/maestro-impeccable/SKILL.md +112 -0
  51. package/.codex/skills/maestro-plan/SKILL.md +88 -437
  52. package/.codex/skills/maestro-player/SKILL.md +191 -333
  53. package/.codex/skills/maestro-quick/SKILL.md +2 -0
  54. package/.codex/skills/maestro-ralph/SKILL.md +307 -710
  55. package/.codex/skills/maestro-roadmap/SKILL.md +201 -518
  56. package/.codex/skills/maestro-tools-register/SKILL.md +29 -7
  57. package/.codex/skills/maestro-ui-codify/SKILL.md +1 -0
  58. package/.codex/skills/maestro-ui-craft/SKILL.md +341 -0
  59. package/.codex/skills/maestro-ui-design/SKILL.md +10 -0
  60. package/.codex/skills/maestro-verify/SKILL.md +116 -409
  61. package/.codex/skills/manage-knowhow-capture/SKILL.md +18 -3
  62. package/.codex/skills/quality-auto-test/SKILL.md +145 -443
  63. package/.codex/skills/quality-debug/SKILL.md +2 -1
  64. package/.codex/skills/quality-refactor/SKILL.md +1 -1
  65. package/.codex/skills/quality-review/SKILL.md +1 -1
  66. package/.codex/skills/quality-test/SKILL.md +229 -507
  67. package/.codex/skills/spec-add/SKILL.md +1 -1
  68. package/README.md +4 -1
  69. package/README.zh-CN.md +3 -1
  70. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +3 -0
  71. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
  72. package/dashboard/dist-server/dashboard/src/server/index.js +5 -3
  73. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  74. package/dashboard/dist-server/dashboard/src/server/routes/board-state.integration.test.js +3 -3
  75. package/dashboard/dist-server/dashboard/src/server/routes/board-state.integration.test.js.map +1 -1
  76. package/dashboard/dist-server/dashboard/src/server/routes/index.js +14 -5
  77. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  78. package/dashboard/dist-server/dashboard/src/server/routes/install.js +110 -1
  79. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  80. package/dashboard/dist-server/dashboard/src/server/routes/maestro-coordinate.d.ts +2 -0
  81. package/dashboard/dist-server/dashboard/src/server/routes/maestro-coordinate.js +181 -0
  82. package/dashboard/dist-server/dashboard/src/server/routes/maestro-coordinate.js.map +1 -0
  83. package/dashboard/dist-server/dashboard/src/server/routes/settings.js +56 -0
  84. package/dashboard/dist-server/dashboard/src/server/routes/settings.js.map +1 -1
  85. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +2 -0
  86. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  87. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +2 -0
  88. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +2 -0
  89. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  90. package/dashboard/dist-server/dashboard/src/server/state/fs-watcher.d.ts +2 -0
  91. package/dashboard/dist-server/dashboard/src/server/state/fs-watcher.js +58 -0
  92. package/dashboard/dist-server/dashboard/src/server/state/fs-watcher.js.map +1 -1
  93. package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js +2 -2
  94. package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js.map +1 -1
  95. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +2 -0
  96. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  97. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +3 -1
  98. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +7 -2
  99. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +7 -1
  100. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  101. package/dashboard/dist-server/dashboard/src/shared/constants.d.ts +2 -0
  102. package/dashboard/dist-server/dashboard/src/shared/constants.js +9 -9
  103. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  104. package/dashboard/dist-server/dashboard/src/shared/maestro-session-types.d.ts +113 -0
  105. package/dashboard/dist-server/dashboard/src/shared/maestro-session-types.js +6 -0
  106. package/dashboard/dist-server/dashboard/src/shared/maestro-session-types.js.map +1 -0
  107. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +4 -3
  108. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
  109. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  110. package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
  111. package/dist/src/agents/cli-agent-runner.js +1 -3
  112. package/dist/src/agents/cli-agent-runner.js.map +1 -1
  113. package/dist/src/agents/cli-history-store.d.ts +5 -0
  114. package/dist/src/agents/cli-history-store.d.ts.map +1 -1
  115. package/dist/src/agents/cli-history-store.js +65 -13
  116. package/dist/src/agents/cli-history-store.js.map +1 -1
  117. package/dist/src/cli.js +13 -0
  118. package/dist/src/cli.js.map +1 -1
  119. package/dist/src/commands/command-help.d.ts +3 -0
  120. package/dist/src/commands/command-help.d.ts.map +1 -0
  121. package/dist/src/commands/command-help.js +60 -0
  122. package/dist/src/commands/command-help.js.map +1 -0
  123. package/dist/src/commands/config.d.ts.map +1 -1
  124. package/dist/src/commands/config.js +17 -0
  125. package/dist/src/commands/config.js.map +1 -1
  126. package/dist/src/commands/delegate.d.ts.map +1 -1
  127. package/dist/src/commands/delegate.js +12 -2
  128. package/dist/src/commands/delegate.js.map +1 -1
  129. package/dist/src/commands/impeccable.d.ts +10 -0
  130. package/dist/src/commands/impeccable.d.ts.map +1 -0
  131. package/dist/src/commands/impeccable.js +181 -0
  132. package/dist/src/commands/impeccable.js.map +1 -0
  133. package/dist/src/commands/knowhow.d.ts.map +1 -1
  134. package/dist/src/commands/knowhow.js +7 -4
  135. package/dist/src/commands/knowhow.js.map +1 -1
  136. package/dist/src/commands/spec.js +1 -1
  137. package/dist/src/commands/spec.js.map +1 -1
  138. package/dist/src/commands/wiki.d.ts.map +1 -1
  139. package/dist/src/commands/wiki.js +5 -1
  140. package/dist/src/commands/wiki.js.map +1 -1
  141. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  142. package/dist/src/config/cli-tools-config.js +10 -7
  143. package/dist/src/config/cli-tools-config.js.map +1 -1
  144. package/dist/src/core/addon-registry.d.ts +31 -0
  145. package/dist/src/core/addon-registry.d.ts.map +1 -0
  146. package/dist/src/core/addon-registry.js +28 -0
  147. package/dist/src/core/addon-registry.js.map +1 -0
  148. package/dist/src/hooks/plugins/spec-injection-plugin.js +9 -4
  149. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  150. package/dist/src/hooks/spec-injector.js +2 -2
  151. package/dist/src/hooks/spec-injector.js.map +1 -1
  152. package/dist/src/index.d.ts +2 -0
  153. package/dist/src/index.d.ts.map +1 -1
  154. package/dist/src/index.js +1 -0
  155. package/dist/src/index.js.map +1 -1
  156. package/dist/src/tools/impeccable/critique-storage.d.ts +28 -0
  157. package/dist/src/tools/impeccable/critique-storage.d.ts.map +1 -0
  158. package/dist/src/tools/impeccable/critique-storage.js +120 -0
  159. package/dist/src/tools/impeccable/critique-storage.js.map +1 -0
  160. package/dist/src/tools/impeccable/design-parser.d.ts +90 -0
  161. package/dist/src/tools/impeccable/design-parser.d.ts.map +1 -0
  162. package/dist/src/tools/impeccable/design-parser.js +696 -0
  163. package/dist/src/tools/impeccable/design-parser.js.map +1 -0
  164. package/dist/src/tools/impeccable/detect-csp.d.ts +6 -0
  165. package/dist/src/tools/impeccable/detect-csp.d.ts.map +1 -0
  166. package/dist/src/tools/impeccable/detect-csp.js +130 -0
  167. package/dist/src/tools/impeccable/detect-csp.js.map +1 -0
  168. package/dist/src/tools/impeccable/is-generated.d.ts +4 -0
  169. package/dist/src/tools/impeccable/is-generated.d.ts.map +1 -0
  170. package/dist/src/tools/impeccable/is-generated.js +56 -0
  171. package/dist/src/tools/impeccable/is-generated.js.map +1 -0
  172. package/dist/src/tools/impeccable/live/accept.d.ts +50 -0
  173. package/dist/src/tools/impeccable/live/accept.d.ts.map +1 -0
  174. package/dist/src/tools/impeccable/live/accept.js +556 -0
  175. package/dist/src/tools/impeccable/live/accept.js.map +1 -0
  176. package/dist/src/tools/impeccable/live/bootstrap.d.ts +2 -0
  177. package/dist/src/tools/impeccable/live/bootstrap.d.ts.map +1 -0
  178. package/dist/src/tools/impeccable/live/bootstrap.js +244 -0
  179. package/dist/src/tools/impeccable/live/bootstrap.js.map +1 -0
  180. package/dist/src/tools/impeccable/live/complete.d.ts +7 -0
  181. package/dist/src/tools/impeccable/live/complete.d.ts.map +1 -0
  182. package/dist/src/tools/impeccable/live/complete.js +67 -0
  183. package/dist/src/tools/impeccable/live/complete.js.map +1 -0
  184. package/dist/src/tools/impeccable/live/completion.d.ts +24 -0
  185. package/dist/src/tools/impeccable/live/completion.d.ts.map +1 -0
  186. package/dist/src/tools/impeccable/live/completion.js +26 -0
  187. package/dist/src/tools/impeccable/live/completion.js.map +1 -0
  188. package/dist/src/tools/impeccable/live/inject.d.ts +41 -0
  189. package/dist/src/tools/impeccable/live/inject.d.ts.map +1 -0
  190. package/dist/src/tools/impeccable/live/inject.js +394 -0
  191. package/dist/src/tools/impeccable/live/inject.js.map +1 -0
  192. package/dist/src/tools/impeccable/live/poll.d.ts +24 -0
  193. package/dist/src/tools/impeccable/live/poll.d.ts.map +1 -0
  194. package/dist/src/tools/impeccable/live/poll.js +180 -0
  195. package/dist/src/tools/impeccable/live/poll.js.map +1 -0
  196. package/dist/src/tools/impeccable/live/resume.d.ts +5 -0
  197. package/dist/src/tools/impeccable/live/resume.d.ts.map +1 -0
  198. package/dist/src/tools/impeccable/live/resume.js +30 -0
  199. package/dist/src/tools/impeccable/live/resume.js.map +1 -0
  200. package/dist/src/tools/impeccable/live/server.d.ts +6 -0
  201. package/dist/src/tools/impeccable/live/server.d.ts.map +1 -0
  202. package/dist/src/tools/impeccable/live/server.js +867 -0
  203. package/dist/src/tools/impeccable/live/server.js.map +1 -0
  204. package/dist/src/tools/impeccable/live/session-store.d.ts +72 -0
  205. package/dist/src/tools/impeccable/live/session-store.d.ts.map +1 -0
  206. package/dist/src/tools/impeccable/live/session-store.js +281 -0
  207. package/dist/src/tools/impeccable/live/session-store.js.map +1 -0
  208. package/dist/src/tools/impeccable/live/static/live-browser-session.js +123 -0
  209. package/dist/src/tools/impeccable/live/static/live-browser.js +4860 -0
  210. package/dist/src/tools/impeccable/live/static/modern-screenshot.umd.js +14 -0
  211. package/dist/src/tools/impeccable/live/status.d.ts +2 -0
  212. package/dist/src/tools/impeccable/live/status.d.ts.map +1 -0
  213. package/dist/src/tools/impeccable/live/status.js +52 -0
  214. package/dist/src/tools/impeccable/live/status.js.map +1 -0
  215. package/dist/src/tools/impeccable/live/wrap.d.ts +33 -0
  216. package/dist/src/tools/impeccable/live/wrap.d.ts.map +1 -0
  217. package/dist/src/tools/impeccable/live/wrap.js +572 -0
  218. package/dist/src/tools/impeccable/live/wrap.js.map +1 -0
  219. package/dist/src/tools/impeccable/load-context.d.ts +13 -0
  220. package/dist/src/tools/impeccable/load-context.d.ts.map +1 -0
  221. package/dist/src/tools/impeccable/load-context.js +79 -0
  222. package/dist/src/tools/impeccable/load-context.js.map +1 -0
  223. package/dist/src/tools/impeccable/paths.d.ts +34 -0
  224. package/dist/src/tools/impeccable/paths.d.ts.map +1 -0
  225. package/dist/src/tools/impeccable/paths.js +102 -0
  226. package/dist/src/tools/impeccable/paths.js.map +1 -0
  227. package/dist/src/tools/spec-entry-parser.d.ts +1 -1
  228. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -1
  229. package/dist/src/tools/spec-entry-parser.js +1 -1
  230. package/dist/src/tools/spec-entry-parser.js.map +1 -1
  231. package/dist/src/tools/spec-init.d.ts.map +1 -1
  232. package/dist/src/tools/spec-init.js +26 -1
  233. package/dist/src/tools/spec-init.js.map +1 -1
  234. package/dist/src/tools/spec-loader.d.ts +1 -1
  235. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  236. package/dist/src/tools/spec-loader.js +2 -0
  237. package/dist/src/tools/spec-loader.js.map +1 -1
  238. package/dist/src/tools/store-knowhow.d.ts.map +1 -1
  239. package/dist/src/tools/store-knowhow.js +15 -6
  240. package/dist/src/tools/store-knowhow.js.map +1 -1
  241. package/package.json +5 -3
  242. package/workflows/claude-instructions.md +17 -5
  243. package/workflows/cli-tools-usage.md +10 -3
  244. package/workflows/delegate-usage.md +3 -2
  245. package/workflows/impeccable/adapt.md +190 -0
  246. package/workflows/impeccable/animate.md +175 -0
  247. package/workflows/impeccable/audit.md +133 -0
  248. package/workflows/impeccable/bolder.md +113 -0
  249. package/workflows/impeccable/brand.md +118 -0
  250. package/workflows/impeccable/clarify.md +174 -0
  251. package/workflows/impeccable/codex.md +105 -0
  252. package/workflows/impeccable/cognitive-load.md +106 -0
  253. package/workflows/impeccable/color-and-contrast.md +105 -0
  254. package/workflows/impeccable/colorize.md +154 -0
  255. package/workflows/impeccable/craft.md +123 -0
  256. package/workflows/impeccable/critique.md +261 -0
  257. package/workflows/impeccable/delight.md +302 -0
  258. package/workflows/impeccable/distill.md +111 -0
  259. package/workflows/impeccable/document.md +439 -0
  260. package/workflows/impeccable/extract.md +69 -0
  261. package/workflows/impeccable/harden.md +347 -0
  262. package/workflows/impeccable/heuristics-scoring.md +234 -0
  263. package/workflows/impeccable/interaction-design.md +195 -0
  264. package/workflows/impeccable/layout.md +141 -0
  265. package/workflows/impeccable/live.md +622 -0
  266. package/workflows/impeccable/motion-design.md +109 -0
  267. package/workflows/impeccable/onboard.md +234 -0
  268. package/workflows/impeccable/optimize.md +258 -0
  269. package/workflows/impeccable/overdrive.md +130 -0
  270. package/workflows/impeccable/personas.md +179 -0
  271. package/workflows/impeccable/polish.md +242 -0
  272. package/workflows/impeccable/product.md +62 -0
  273. package/workflows/impeccable/quieter.md +99 -0
  274. package/workflows/impeccable/responsive-design.md +114 -0
  275. package/workflows/impeccable/shape.md +165 -0
  276. package/workflows/impeccable/spatial-design.md +100 -0
  277. package/workflows/impeccable/teach.md +168 -0
  278. package/workflows/impeccable/typeset.md +124 -0
  279. package/workflows/impeccable/typography.md +159 -0
  280. package/workflows/impeccable/ux-writing.md +107 -0
  281. package/workflows/impeccable.md +164 -0
  282. package/workflows/maestro.md +7 -3
  283. package/workflows/skill-authoring.md +265 -0
  284. package/workflows/specs-add.md +3 -2
  285. package/workflows/specs-load.md +2 -1
  286. package/workflows/specs-setup.md +21 -1
  287. package/workflows/tools-spec.md +20 -13
  288. package/.claude/commands/maestro-link-coordinate.md +0 -71
  289. package/.codex/skills/maestro-link-coordinate/SKILL.md +0 -257
@@ -1,313 +1,278 @@
1
- ---
2
- name: maestro
3
- description: Auto-route intent to optimal command chain
4
- argument-hint: "\"intent text\" [-y] [-c|--continue] [--dry-run] [--super]"
5
- allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
- ---
7
-
8
- <purpose>
9
- Wave-based pipeline coordinator. All skill execution happens exclusively in spawned sub-agents
10
- via `spawn_agents_on_csv` — the coordinator never executes skills directly.
11
-
12
- Coordinator loop: classify intent → resolve chain → build wave CSV → spawn → read results →
13
- (barrier: read artifacts, update context, assemble next skill_call args) next wave report.
14
-
15
- Each wave = 1 barrier task (solo) or N parallel non-barrier tasks.
16
- </purpose>
17
-
18
- <required_reading>
19
- @~/.maestro/workflows/maestro.codex.md — authoritative `detectTaskType`, `detectNextAction`, `chainMap` (35+ intent patterns, 40+ chain types). Read before executing any step.
20
- </required_reading>
21
-
22
- <deferred_reading>
23
- - [maestro-super.md](~/.maestro/workflows/maestro-super.md) — read when `--super` flag is active
24
- </deferred_reading>
25
-
26
- <context>
27
- $ARGUMENTS — user intent text, or special flags.
28
-
29
- **Flags:**
30
- - `-y, --yes` — Auto mode: skip all prompts; propagate `-y` to each skill
31
- - `--continue` — Resume latest paused session from last incomplete wave
32
- - `--dry-run` — Display planned chain without executing
33
- - `--super` — Super mode: deliver production-ready complete software system. Read `maestro-super.md` from deferred_reading, then follow it completely.
34
-
35
- **Session state**: `.workflow/.maestro/{session-id}/`
36
- **Core output**: `tasks.csv` (master) + `wave-{N}-results.csv` (per wave) + `context.md` (report)
37
- </context>
38
-
39
- <invariants>
40
- 1. **ALL skills via spawn_agents_on_csv**: Every skill invocation barrier or non-barrier — MUST go through `spawn_agents_on_csv`. Coordinator NEVER directly executes any skill. No exceptions.
41
- 2. **Coordinator = prompt assembler only**: Classify intent → build CSV → spawn → read results → assemble next CSV. It never runs skill logic itself.
42
- 3. **Barrier execution**: Barrier designation only means the coordinator **pauses after the wave** to read artifacts and assemble the next wave's prompt args. Coordinator role at barrier: **discover artifacts → read → update context → assemble next skill_call args**. Nothing more.
43
- 4. **Barrier = solo wave**: A barrier skill always executes alone in its wave (wave size = 1).
44
- 5. **Non-barriers can parallel**: Consecutive non-barrier skills grouped into one wave (`max_workers = N`).
45
- 6. **Wave-by-wave**: Never start wave N+1 before wave N results are read and analyzed.
46
- 7. **Coordinator owns context**: Sub-agents never read prior results coordinator assembles the full `skill_call` with resolved args.
47
- 8. **Simple instruction**: Sub-agent instruction is minimal — just "execute {skill_call}, report result".
48
- 9. **Abort on failure**: Failed step → mark remaining as skipped → report.
49
- 10. **Resume from wave**: `--continue` finds last completed wave, resumes from next pending step.
50
- </invariants>
51
-
52
- <chain_map>
53
- | Intent keywords | Chain | Steps (skills, in order) |
54
- |----------------|-------|--------------------------|
55
- | fix, bug, error, broken, crash | `quality-fix` | $maestro-analyze --gaps → $maestro-plan --gaps → $maestro-execute → $maestro-verify |
56
- | test, spec, coverage | `quality-test` | $quality-test |
57
- | refactor, cleanup, debt | `quality-refactor` | $quality-refactor |
58
- | feature, implement, add, build | `feature` | $maestro-plan $maestro-execute $maestro-verify |
59
- | review, check, audit | `quality-review` | $quality-review |
60
- | deploy, release, ship | `deploy` | $maestro-verify → $maestro-milestone-release |
61
- | brainstorm, explore, ideate | `brainstorm-driven` | $maestro-brainstorm → $maestro-plan → $maestro-execute → $maestro-verify |
62
- | plan, design, architect | `plan` | $maestro-plan |
63
- | debug, diagnose, troubleshoot | `debug` | $quality-debug |
64
- | continue, next, go | `state_continue` | (from project state) |
65
- | status, dashboard | `status` | $manage-status |
66
-
67
- Full chain map with 40+ chains: see `@~/.maestro/workflows/maestro.codex.md` §3c
68
- </chain_map>
69
-
70
- <barrier_skills>
71
- Skills that produce artifacts the coordinator must read before assembling the next wave.
72
- After a barrier skill completes **in its spawned sub-agent**, coordinator reads output and updates `state.context`.
73
-
74
- | Skill | Artifacts to Read | Context Updates |
75
- |-------|------------------|-----------------|
76
- | `maestro-analyze` | `.workflow/.csv-wave/*/context.md`, `state.json` | `gaps`, `phase`, `analysis_dir` |
77
- | `maestro-plan` | `{artifact_dir}/plan.json`, `{artifact_dir}/.task/TASK-*.json` | `plan_dir`, `task_count`, `wave_count` |
78
- | `maestro-brainstorm` | `.workflow/.csv-wave/*/.brainstorming/` | `brainstorm_dir`, `features` |
79
- | `maestro-roadmap` | `.workflow/.csv-wave/*/specs/` | `spec_session_id` |
80
- | `maestro-execute` | `.workflow/.csv-wave/*/results.csv` | `exec_status`, `completed_tasks`, `failed_tasks` |
81
-
82
- **Non-barrier skills** (groupable into multi-task waves): `maestro-verify`, `quality-review`, `quality-test`, `quality-debug`, `quality-refactor`, `quality-sync`, `manage-*`
83
-
84
- ### Barrier Analysis Logic
85
-
86
- After each barrier skill completes, read its artifacts and update `state.context`:
87
-
88
- | Barrier Skill | Read | Context Updates |
89
- |---------------|------|-----------------|
90
- | `maestro-analyze` | `{artifacts}/context.md` | `analysis_dir`, `gaps` (extracted), `phase` (if unset) |
91
- | `maestro-plan` | `{artifacts}/plan.json` | `plan_dir`, `task_count`, `wave_count` from plan JSON |
92
- | `maestro-brainstorm` | `{artifacts}/` | `brainstorm_dir` |
93
- | `maestro-roadmap` | `{artifacts}/` | `spec_session_id` (extracted) |
94
- | `maestro-execute` | `{artifacts}/results.csv` | `exec_completed`, `exec_failed` (counted by status) |
95
- </barrier_skills>
96
-
97
- <execution>
98
-
99
- ### Phase 1: Resolve Intent and Chain
100
-
101
- **`--continue`**: Glob `.workflow/.maestro/maestro-*/status.json` sorted desc; load most recent; resume from first pending wave.
102
-
103
- **Fresh mode**:
104
- 1. Read `.workflow/state.json` for project context (derive current phase from artifact registry, `workflow_name`)
105
- 2. Classify intent via keyword heuristics (see chain_map)
106
- 4. No match + not AUTO_YES → one clarifying question via `AskUserQuestion`
107
- 5. Resolve chain's skill list
108
- 6. Create session dir `.workflow/.maestro/maestro-{YYYYMMDD-HHMMSS}/` and write `status.json`:
109
-
110
- ```json
111
- {
112
- "session_id": "maestro-{YYYYMMDD-HHMMSS}",
113
- "source": "maestro",
114
- "created_at": "ISO",
115
- "updated_at": "ISO",
116
- "intent": "...",
117
- "task_type": "...",
118
- "chain_name": "...",
119
- "phase": null,
120
- "milestone": null,
121
- "auto_mode": false,
122
- "exec_mode": "auto",
123
- "cli_tool": "codex",
124
- "lifecycle_position": null,
125
- "target": null,
126
- "context": {
127
- "issue_id": null,
128
- "milestone_num": null,
129
- "spec_session_id": null,
130
- "scratch_dir": null,
131
- "plan_dir": null,
132
- "analysis_dir": null,
133
- "brainstorm_dir": null
134
- },
135
- "waves": [],
136
- "steps": [{ "index": 0, "skill": "...", "args": "", "type": "skill", "status": "pending", "started_at": null, "completed_at": null, "error": null, "wave_n": null }],
137
- "current_step": 0,
138
- "status": "running"
139
- }
140
- ```
141
-
142
- 7. **Initialize tracking** (goal constraintplan sub-items):
143
-
144
- ```
145
- // Goal = outer constraint ensures entire chain completes
146
- functions.create_goal({
147
- objective: `Maestro ${chain_name}: ${steps.length} steps [${steps.map(s => s.skill).join(' ')}]`
148
- })
149
-
150
- // Plan = inner tracking sub-step progress
151
- functions.update_plan({
152
- plan: steps.map((step, i) => ({
153
- id: `step-${i}`,
154
- title: `[${i + 1}/${steps.length}] ${step.skill}${barrier(step) ? ' [BARRIER]' : ''}`,
155
- status: "open"
156
- }))
157
- })
158
- ```
159
-
160
- **`--dry-run`**: Display chain with `[BARRIER]` markers, stop.
161
-
162
- **User confirmation** (skip if AUTO_YES): Display plan, prompt `Proceed? (yes/no)`.
163
-
164
- **`--continue` plan rebuild**: When resuming, rebuild `update_plan` from status.json completed steps `"completed"`, current → `"in_progress"`, rest → `"open"`.
165
-
166
- ### Phase 2: Wave Execution Loop
167
-
168
- **While pending steps remain**, increment `waveNum` and repeat:
169
-
170
- 1. **Build wave**: Select next wave steps via `buildNextWave` (barrier = solo, non-barriers = grouped)
171
- 2. **Write CSV**: `{sessionDir}/wave-{N}.csv` with columns `id,skill_call,topic` one row per step, skill_call assembled with resolved context
172
- 3. **Spawn**:
173
- ```
174
- spawn_agents_on_csv({
175
- csv_path: "{sessionDir}/wave-{N}.csv",
176
- id_column: "id", instruction: WAVE_INSTRUCTION,
177
- max_workers: <wave size>, max_runtime_seconds: 3600,
178
- output_csv_path: "{sessionDir}/wave-{N}-results.csv",
179
- output_schema: RESULT_SCHEMA
180
- })
181
- ```
182
- 4. **Read results**: Update each step's `status`, `wave_n` from results CSV
183
- 5. **Barrier check**: If wave was a barrier skill, run barrier analysis logic (read artifacts, update context)
184
- 6. **Dual-track persist**:
185
- - status.json: Append wave to `state.waves[]`, update step statuses, write `status.json`
186
- - update_plan: Sync plan items from status.json step statuses:
187
- ```
188
- functions.update_plan({
189
- plan: steps.map((step, i) => ({
190
- id: `step-${i}`,
191
- title: `[${i + 1}/${steps.length}] ${step.skill}`,
192
- status: step.status === 'completed' ? 'completed'
193
- : step.status === 'pending' && i === nextPendingIndex ? 'in_progress'
194
- : step.status
195
- }))
196
- })
197
- ```
198
- 7. **Abort on failure**: If any result `status === 'failed'` → mark remaining steps `skipped` in both status.json and update_plan, set `state.status = 'aborted'`, break
199
-
200
- ### Skill Call Assembly
201
-
202
- **Barrier skills**: `maestro-analyze`, `maestro-plan`, `maestro-brainstorm`, `maestro-roadmap`, `maestro-execute`
203
-
204
- **Auto-yes flag map** (appended when `status.auto_mode` is true):
205
-
206
- | Skill | Flag |
207
- |-------|------|
208
- | `maestro-init`, `maestro-analyze`, `maestro-brainstorm`, `maestro-ui-design`, `maestro-roadmap` | `-y` |
209
- | `maestro-plan`, `maestro-execute`, `maestro-milestone-complete` | `-y` |
210
- | `quality-auto-test`, `quality-retrospective` | `-y` |
211
- | `quality-test` | `-y --auto-fix` |
212
-
213
- **`buildSkillCall(step, ctx)`**: Replace placeholders `{phase}`, `{description}`, `{issue_id}`, `{plan_dir}`, `{analysis_dir}`, `{brainstorm_dir}`, `{spec_session_id}` in `step.args` with corresponding `ctx` values. Append auto-yes flag if applicable. Return `$<skill> <args>`.
214
-
215
- **`buildNextWave(steps)`**: Take first pending step. If it is a barrier skill, return it solo. Otherwise, collect consecutive non-barrier pending steps into one wave (stop at first barrier).
216
-
217
- ### Sub-Agent Instruction Template
218
-
219
- ```
220
- 你是 CSV job agent。
221
-
222
- 先原样执行这一段技能调用:
223
- {skill_call}
224
-
225
- 然后基于结果完成这一行任务说明:
226
- {topic}
227
-
228
- 限制:
229
- - 不要修改 .workflow/.maestro/ 下的 status 文件
230
- - skill 内部有自己的 session 管理,按 skill SKILL.md 执行即可
231
-
232
- 最后必须调用 `report_agent_job_result`,返回 JSON:
233
- {"status":"completed|failed","skill_call":"{skill_call}","summary":"一句话结果","artifacts":"产物路径或空字符串","error":"失败原因或空字符串"}
234
- ```
235
-
236
- ### Result Schema
237
-
238
- Object with all fields required: `status` ("completed"|"failed"), `skill_call` (string), `summary` (string), `artifacts` (path or ""), `error` (reason or "").
239
-
240
- ### Phase 3: Completion Report
241
-
242
- Finalize tracking:
243
- - status.json: `state.status = 'completed'`
244
- - update_plan: all steps `"completed"` (skipped steps also marked completed)
245
- - **update_goal**: `functions.update_goal({ status: "complete" })` release goal constraint
246
-
247
- **Note**: Abort path (Phase 2 step 7) does NOT call `update_goal` — goal stays running for `--continue` resume.
248
-
249
- ```
250
- === COORDINATE COMPLETE ===
251
- Session: <sessionId>
252
- Chain: <chain>
253
- Waves: <N> executed
254
- Steps: <completed>/<total>
255
-
256
- WAVE RESULTS:
257
- [W1] $maestro-analyze --gaps → ✓ found 3 gaps
258
- [W2] $maestro-plan --gaps → ✓ 12 tasks in 3 waves
259
- [W3] $maestro-execute → ✓ 12/12 tasks done
260
- [W4] $maestro-verify → ✓ all criteria met
261
-
262
- State: .workflow/.maestro/<sessionId>/status.json
263
- Resume: $maestro --continue
264
- ```
265
- </execution>
266
-
267
- <csv_schema>
268
- ### wave-{N}.csv (Per-Wave Input)
269
-
270
- ```csv
271
- id,skill_call,topic
272
- "1","$maestro-analyze --gaps \"fix auth\" -y","Chain \"quality-fix\" step 1/4"
273
- ```
274
-
275
- | Column | Description |
276
- |--------|-------------|
277
- | `id` | Step number from chain (string) |
278
- | `skill_call` | Full skill invocation assembled by coordinator with resolved context |
279
- | `topic` | Brief description for the agent |
280
-
281
- ### tasks.csv (Master State)
282
-
283
- ```csv
284
- id,skill,args,wave_n,status,findings,artifacts,error
285
- ```
286
-
287
- Accumulated across all waves. Updated after each wave completes.
288
- </csv_schema>
289
-
290
- <error_codes>
291
- | Code | Severity | Condition | Recovery |
292
- |------|----------|-----------|----------|
293
- | E001 | error | Intent unclassifiable after clarification | Default to `feature` chain |
294
- | E002 | error | Intent unresolvable after retry | List available chains, abort |
295
- | E003 | error | Wave timeout (max_runtime_seconds) | Mark step `failed`, abort chain |
296
- | E004 | error | Barrier artifact not found | Retry wave once, then abort |
297
- | E005 | error | `--continue`: no session found | List sessions, prompt |
298
- | W001 | warning | Barrier artifact partial | Continue with available context |
299
- </error_codes>
300
-
301
- <success_criteria>
302
- - [ ] Intent classified and chain resolved (keyword heuristics or `--chain`)
303
- - [ ] Session dir initialized with `status.json` before first wave
304
- - [ ] Every skill invocation goes through `spawn_agents_on_csv` — none executed in coordinator
305
- - [ ] Barrier skills execute solo in their wave; coordinator only reads artifacts afterward
306
- - [ ] Non-barrier skills grouped into parallel waves where possible
307
- - [ ] Each wave: CSV built → spawned → results read → state updated
308
- - [ ] Barrier artifacts read and context updated before assembling next wave's skill_call args
309
- - [ ] Failed step → remaining marked skipped → abort reported
310
- - [ ] Completion report with per-wave status written to `context.md`
311
- - [ ] `--dry-run` shows chain with [BARRIER] markers, no execution
312
- - [ ] `--continue` resumes from last incomplete wave
313
- </success_criteria>
1
+ ---
2
+ name: maestro
3
+ description: Auto-route intent to optimal command chain
4
+ argument-hint: "\"intent text\" [-y] [-c|--continue] [--dry-run] [--super]"
5
+ allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
+ ---
7
+
8
+ <purpose>
9
+ Wave-based pipeline coordinator. Classify intent resolve chain wave-by-wave spawn → report.
10
+ All skill execution via `spawn_agents_on_csv` — coordinator never executes skills directly.
11
+
12
+ Entry points:
13
+ - **`$maestro "intent"`** Classifychainexecute
14
+ - **`$maestro --continue`** — Resume from last incomplete wave
15
+ - **`$maestro --dry-run "intent"`** Show chain, no execution
16
+ - **`$maestro --super "intent"`** — Production-ready mode (read maestro-super.md)
17
+ </purpose>
18
+
19
+ <required_reading>
20
+ @~/.maestro/workflows/maestro.codex.md — authoritative `detectTaskType`, `detectNextAction`, `chainMap` (35+ intent patterns, 40+ chain types). Read before executing any step.
21
+ </required_reading>
22
+
23
+ <deferred_reading>
24
+ - [maestro-super.md](~/.maestro/workflows/maestro-super.md) — read when `--super` flag is active
25
+ </deferred_reading>
26
+
27
+ <context>
28
+ $ARGUMENTS — user intent text, or special flags.
29
+
30
+ **Flags:**
31
+ - `-y, --yes` — Auto mode: skip all prompts; propagate `-y` to each skill
32
+ - `--continue` — Resume latest paused session from last incomplete wave
33
+ - `--dry-run` — Display planned chain without executing
34
+ - `--super` — Read and follow `maestro-super.md` completely
35
+
36
+ **Session state**: `.workflow/.maestro/{session-id}/`
37
+ </context>
38
+
39
+ <invariants>
40
+ 1. **ALL skills via spawn_agents_on_csv**coordinator NEVER directly executes any skill logic
41
+ 2. **Coordinator = prompt assembler** classify → build CSV → spawn → read results → assemble next
42
+ 3. **Barrier = solo wave** barrier skills always execute alone (wave size = 1)
43
+ 4. **Non-barriers can parallel** consecutive non-barrier skills grouped into one wave
44
+ 5. **Wave-by-wave** never start wave N+1 before wave N results are read
45
+ 6. **Coordinator owns context** sub-agents never read prior results; coordinator assembles full `skill_call`
46
+ 7. **Abort on failure**failed step mark remaining skipped report
47
+ </invariants>
48
+
49
+ <state_machine>
50
+
51
+ <states>
52
+ S_PARSE — 解析参数、检测 flags PERSIST: —
53
+ S_CONTINUE — 加载已有 session,定位 resume 点 PERSIST: session (loaded)
54
+ S_CLASSIFY — 意图分类、解析 chain PERSIST: —
55
+ S_CREATE — 创建 session + status.json PERSIST: session.status, session.steps[]
56
+ S_DRY_RUN — 显示 chain 后结束 PERSIST:
57
+ S_CONFIRM — 用户确认(auto_mode 跳过) PERSIST:
58
+ S_WAVE_LOOP — 构建 wave spawn 读结果循环 PERSIST: session.waves[], session.current_step, session.context
59
+ S_COMPLETE — 标记完成、释放目标 PERSIST: session.status = "completed"
60
+ S_ABORTED — 失败中止、标记剩余 skipped PERSIST: session.status = "aborted"
61
+ S_FALLBACK — 意图无法分类,请求输入 PERSIST:
62
+ </states>
63
+
64
+ <transitions>
65
+
66
+ S_PARSE:
67
+ S_CONTINUE WHEN: --continue flag
68
+ → S_CLASSIFY WHEN: intent text present
69
+ → S_FALLBACK WHEN: no intent AND no flags
70
+
71
+ S_CONTINUE:
72
+ S_WAVE_LOOP WHEN: session found, has pending steps DO: A_RESUME_SESSION
73
+ → S_FALLBACK WHEN: no session found
74
+
75
+ S_CLASSIFY:
76
+ S_CREATE WHEN: chain resolved (keyword match or maestro.codex.md lookup)
77
+ S_FALLBACK WHEN: no match AND auto_mode
78
+ S_CLASSIFY WHEN: no match AND not auto_mode DO: A_CLARIFY_INTENT
79
+ GUARD: max 1 clarification attempt S_FALLBACK
80
+
81
+ S_CREATE:
82
+ S_DRY_RUN WHEN: --dry-run flag DO: A_CREATE_SESSION
83
+ → S_CONFIRM WHEN: not auto_mode DO: A_CREATE_SESSION
84
+ S_WAVE_LOOP WHEN: auto_mode DO: A_CREATE_SESSION
85
+
86
+ S_DRY_RUN:
87
+ → END DO: display chain with [BARRIER] markers
88
+
89
+ S_CONFIRM:
90
+ S_WAVE_LOOP WHEN: user confirms
91
+ S_ABORTED WHEN: user cancels
92
+
93
+ S_WAVE_LOOP:
94
+ S_WAVE_LOOP WHEN: pending steps remain DO: A_BUILD_AND_SPAWN_WAVE
95
+ → S_COMPLETE WHEN: no pending steps
96
+ → S_ABORTED WHEN: step failed
97
+ GUARD: wave order is sacred — never skip ahead
98
+
99
+ S_COMPLETE:
100
+ → END DO: A_FINALIZE
101
+
102
+ S_ABORTED:
103
+ END DO: A_ABORT_REPORT
104
+
105
+ S_FALLBACK:
106
+ S_CLASSIFY WHEN: user provides new intent DO: AskUserQuestion
107
+ END WHEN: user cancels
108
+
109
+ </transitions>
110
+
111
+ <actions>
112
+
113
+ ### A_CREATE_SESSION
114
+
115
+ 1. Read `.workflow/state.json` for project context (current phase, milestone, workflow_name)
116
+ 2. Resolve chain's skill list from chain_map or maestro.codex.md
117
+ 3. Create `.workflow/.maestro/maestro-{YYYYMMDD-HHMMSS}/status.json`:
118
+ ```json
119
+ { "session_id", "source": "maestro", "intent", "task_type", "chain_name",
120
+ "phase", "milestone", "auto_mode", "context": { "issue_id", "scratch_dir",
121
+ "plan_dir", "analysis_dir", "brainstorm_dir" },
122
+ "steps": [{ "index", "skill", "args", "status": "pending", "wave_n": null }],
123
+ "waves": [], "current_step": 0, "status": "running" }
124
+ ```
125
+ 4. Initialize tracking:
126
+ - `create_goal({ objective: "Maestro {chain}: {N} steps [{skill list}]" })`
127
+ - `update_plan({ plan: steps.map(step => { step, status: "pending" }) })`
128
+
129
+ ### A_RESUME_SESSION
130
+
131
+ 1. Glob `.workflow/.maestro/maestro-*/status.json` sorted desc, load most recent
132
+ 2. Find first pending step → set as resume point
133
+ 3. Rebuild `update_plan` from status.json (completed→"completed", current→"in_progress", rest→"open")
134
+
135
+ ### A_CLARIFY_INTENT
136
+
137
+ 1. `AskUserQuestion` with available chain types
138
+ 2. Re-classify with user response
139
+
140
+ ### A_BUILD_AND_SPAWN_WAVE
141
+
142
+ 1. **buildNextWave**: first pending step; barrier solo wave; non-barrier → collect consecutive non-barriers
143
+ 2. **buildSkillCall** per step:
144
+ - Replace placeholders: `{phase}`, `{plan_dir}`, `{analysis_dir}`, `{brainstorm_dir}`, `{spec_session_id}`
145
+ - Append auto-yes flag if `auto_mode` (see Appendix: Auto-Yes Flag Map)
146
+ 3. Write `{sessionDir}/wave-{N}.csv` (columns: id, skill_call, topic)
147
+ 4. `spawn_agents_on_csv({ csv_path, id_column: "id", instruction: WAVE_INSTRUCTION, max_workers, max_runtime_seconds: 3600, output_csv_path, output_schema: RESULT_SCHEMA })`
148
+ 5. Read results → update step statuses in status.json
149
+ 6. **Barrier analysis** (if barrier skill): read artifacts, update `session.context`
150
+ | Barrier Skill | Read | Context Updates |
151
+ |---------------|------|-----------------|
152
+ | maestro-analyze | context.md, state.json | analysis_dir, gaps, phase |
153
+ | maestro-plan | plan.json, .task/TASK-*.json | plan_dir, task_count, wave_count |
154
+ | maestro-brainstorm | .brainstorming/ | brainstorm_dir, features |
155
+ | maestro-roadmap | specs/ | spec_session_id |
156
+ | maestro-execute | results.csv | exec_completed, exec_failed |
157
+ 7. Persist: write status.json + sync update_plan
158
+
159
+ ### A_FINALIZE
160
+
161
+ 1. Set `session.status = "completed"`, write status.json
162
+ 2. Sync update_plan: all steps "completed"
163
+ 3. `update_goal({ status: "complete" })` — release goal constraint
164
+ 4. Generate completion report (see Appendix: Report Format)
165
+
166
+ ### A_ABORT_REPORT
167
+
168
+ 1. Mark remaining steps as `skipped` in status.json
169
+ 2. Set `session.status = "aborted"`, write status.json
170
+ 3. Sync update_plan (skipped steps marked)
171
+ 4. Do NOT call update_goalgoal stays for `--continue` resume
172
+ 5. Display abort report with failure details
173
+
174
+ </actions>
175
+
176
+ </state_machine>
177
+
178
+ <appendix>
179
+
180
+ ### Chain Map (Quick Reference)
181
+
182
+ | Intent keywords | Chain | Steps |
183
+ |----------------|-------|-------|
184
+ | fix, bug, error, broken | `quality-fix` | analyze --gaps → plan --gaps → execute → verify |
185
+ | test, spec, coverage | `quality-test` | quality-test |
186
+ | refactor, cleanup, debt | `quality-refactor` | quality-refactor |
187
+ | feature, implement, add | `feature` | plan → execute → verify |
188
+ | review, check, audit | `quality-review` | quality-review |
189
+ | deploy, release, ship | `deploy` | verify → milestone-release |
190
+ | brainstorm, explore, ideate | `brainstorm-driven` | brainstorm → plan → execute → verify |
191
+ | plan, design, architect | `plan` | plan |
192
+ | debug, diagnose | `debug` | quality-debug |
193
+ | continue, next | `state_continue` | (from project state) |
194
+ | status, dashboard | `status` | manage-status |
195
+
196
+ Full chain map (40+ chains): `@~/.maestro/workflows/maestro.codex.md` §3c
197
+
198
+ ### Auto-Yes Flag Map
199
+
200
+ | Skill | Flag |
201
+ |-------|------|
202
+ | maestro-init, maestro-analyze, maestro-brainstorm, maestro-ui-design, maestro-roadmap | `-y` |
203
+ | maestro-plan, maestro-execute, maestro-milestone-complete | `-y` |
204
+ | quality-auto-test, quality-retrospective | `-y` |
205
+ | quality-test | `-y --auto-fix` |
206
+
207
+ ### Barrier Skills
208
+
209
+ `maestro-analyze`, `maestro-plan`, `maestro-brainstorm`, `maestro-roadmap`, `maestro-execute`
210
+
211
+ Non-barrier (groupable): `maestro-verify`, `quality-review`, `quality-test`, `quality-debug`, `quality-refactor`, `quality-sync`, `manage-*`
212
+
213
+ ### Worker Contract
214
+
215
+ **Instruction template:**
216
+ ```
217
+ 你是 CSV job 子 agent。
218
+ 先原样执行这一段技能调用:{skill_call}
219
+ 然后基于结果完成这一行任务说明:{topic}
220
+ 限制:不要修改 .workflow/.maestro/ 下的 status 文件
221
+ 最后必须调用 `report_agent_job_result`,返回 JSON:
222
+ {"status":"completed|failed","skill_call":"{skill_call}","summary":"一句话结果","artifacts":"产物路径","error":"失败原因"}
223
+ ```
224
+
225
+ **Result schema:** `{ status, skill_call, summary, artifacts, error }` — all string, all required
226
+
227
+ ### CSV Schema
228
+
229
+ **wave-{N}.csv:**
230
+ ```csv
231
+ id,skill_call,topic
232
+ "1","$maestro-analyze --gaps \"fix auth\" -y","Chain \"quality-fix\" step 1/4"
233
+ ```
234
+
235
+ **Session status.json:** see A_CREATE_SESSION for full schema
236
+
237
+ ### Error Codes
238
+
239
+ | Code | Severity | Condition | Recovery |
240
+ |------|----------|-----------|----------|
241
+ | E001 | error | Intent unclassifiable after clarification | Default to `feature` chain |
242
+ | E002 | error | Intent unresolvable after retry | List chains, abort |
243
+ | E003 | error | Wave timeout | Mark step failed, abort chain |
244
+ | E004 | error | Barrier artifact not found | Retry wave once, then abort |
245
+ | E005 | error | --continue: no session found | List sessions, prompt |
246
+ | W001 | warning | Barrier artifact partial | Continue with available context |
247
+
248
+ ### Success Criteria
249
+
250
+ - [ ] Intent classified and chain resolved
251
+ - [ ] Session dir initialized with status.json before first wave
252
+ - [ ] Every skill goes through spawn_agents_on_csv
253
+ - [ ] Barrier skills solo wave; non-barriers grouped parallel
254
+ - [ ] Each wave: CSV → spawn → results → state updated
255
+ - [ ] Barrier artifacts read before assembling next wave args
256
+ - [ ] Failed step → remaining skipped → abort reported
257
+ - [ ] --dry-run shows chain with [BARRIER], no execution
258
+ - [ ] --continue resumes from last incomplete wave
259
+
260
+ ### Report Format
261
+
262
+ ```
263
+ === COORDINATE COMPLETE ===
264
+ Session: {sessionId}
265
+ Chain: {chain}
266
+ Waves: {N} executed
267
+ Steps: {completed}/{total}
268
+
269
+ WAVE RESULTS:
270
+ [W1] $maestro-analyze --gaps → ✓ found 3 gaps
271
+ [W2] $maestro-plan --gaps → ✓ 12 tasks in 3 waves
272
+ ...
273
+
274
+ State: .workflow/.maestro/{sessionId}/status.json
275
+ Resume: $maestro --continue
276
+ ```
277
+
278
+ </appendix>