maestro-flow 0.3.46 → 0.3.48
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.
- package/.claude/agents/ui-design-agent.md +1 -0
- package/.claude/agents/workflow-executor.md +3 -0
- package/.claude/commands/learn-decompose.md +91 -146
- package/.claude/commands/learn-follow.md +102 -137
- package/.claude/commands/learn-investigate.md +102 -167
- package/.claude/commands/learn-retro.md +100 -243
- package/.claude/commands/learn-second-opinion.md +95 -135
- package/.claude/commands/maestro-amend.md +95 -232
- package/.claude/commands/maestro-analyze.md +1 -6
- package/.claude/commands/maestro-collab.md +104 -265
- package/.claude/commands/maestro-composer.md +113 -293
- package/.claude/commands/maestro-execute.md +10 -17
- package/.claude/commands/maestro-impeccable.md +89 -0
- package/.claude/commands/maestro-plan.md +1 -6
- package/.claude/commands/maestro-player.md +111 -340
- package/.claude/commands/maestro-quick.md +9 -0
- package/.claude/commands/maestro-ralph-execute.md +167 -210
- package/.claude/commands/maestro-ralph.md +245 -426
- package/.claude/commands/maestro-ui-codify.md +13 -0
- package/.claude/commands/maestro-ui-craft.md +364 -0
- package/.claude/commands/maestro-ui-design.md +12 -1
- package/.claude/commands/maestro-verify.md +12 -13
- package/.claude/commands/maestro.md +142 -72
- package/.claude/commands/manage-knowhow-capture.md +45 -170
- package/.claude/commands/quality-auto-test.md +9 -0
- package/.claude/commands/quality-debug.md +11 -25
- package/.claude/commands/quality-refactor.md +9 -0
- package/.claude/commands/quality-review.md +5 -14
- package/.claude/commands/spec-add.md +1 -1
- package/.claude/commands/spec-load.md +3 -2
- package/.claude/skills/maestro-impeccable/SKILL.md +169 -0
- package/.codex/skills/learn-decompose/SKILL.md +1 -1
- package/.codex/skills/learn-investigate/SKILL.md +2 -1
- package/.codex/skills/maestro/SKILL.md +420 -313
- package/.codex/skills/maestro-analyze/SKILL.md +126 -417
- package/.codex/skills/maestro-brainstorm/SKILL.md +129 -451
- package/.codex/skills/maestro-collab/SKILL.md +134 -547
- package/.codex/skills/maestro-execute/SKILL.md +3 -1
- package/.codex/skills/maestro-impeccable/SKILL.md +112 -0
- package/.codex/skills/maestro-plan/SKILL.md +88 -437
- package/.codex/skills/maestro-player/SKILL.md +191 -333
- package/.codex/skills/maestro-quick/SKILL.md +2 -0
- package/.codex/skills/maestro-ralph/SKILL.md +327 -710
- package/.codex/skills/maestro-roadmap/SKILL.md +201 -518
- package/.codex/skills/maestro-ui-codify/SKILL.md +1 -0
- package/.codex/skills/maestro-ui-craft/SKILL.md +341 -0
- package/.codex/skills/maestro-ui-design/SKILL.md +10 -0
- package/.codex/skills/maestro-verify/SKILL.md +116 -409
- package/.codex/skills/quality-auto-test/SKILL.md +145 -443
- package/.codex/skills/quality-refactor/SKILL.md +1 -1
- package/.codex/skills/quality-test/SKILL.md +229 -517
- package/.codex/skills/spec-add/SKILL.md +1 -1
- package/README.md +4 -1
- package/README.zh-CN.md +3 -1
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +3 -0
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js +110 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/settings.js +56 -0
- package/dashboard/dist-server/dashboard/src/server/routes/settings.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +2 -0
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +2 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +3 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +1 -3
- package/dist/src/agents/cli-agent-runner.js.map +1 -1
- package/dist/src/agents/cli-history-store.d.ts +5 -0
- package/dist/src/agents/cli-history-store.d.ts.map +1 -1
- package/dist/src/agents/cli-history-store.js +65 -13
- package/dist/src/agents/cli-history-store.js.map +1 -1
- package/dist/src/cli.js +13 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/command-help.d.ts +3 -0
- package/dist/src/commands/command-help.d.ts.map +1 -0
- package/dist/src/commands/command-help.js +60 -0
- package/dist/src/commands/command-help.js.map +1 -0
- package/dist/src/commands/config.d.ts.map +1 -1
- package/dist/src/commands/config.js +17 -0
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +12 -2
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/impeccable.d.ts +10 -0
- package/dist/src/commands/impeccable.d.ts.map +1 -0
- package/dist/src/commands/impeccable.js +181 -0
- package/dist/src/commands/impeccable.js.map +1 -0
- package/dist/src/commands/spec.js +1 -1
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/commands/wiki.d.ts.map +1 -1
- package/dist/src/commands/wiki.js +5 -1
- package/dist/src/commands/wiki.js.map +1 -1
- package/dist/src/config/cli-tools-config.d.ts.map +1 -1
- package/dist/src/config/cli-tools-config.js +10 -7
- package/dist/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/core/addon-registry.d.ts +31 -0
- package/dist/src/core/addon-registry.d.ts.map +1 -0
- package/dist/src/core/addon-registry.js +28 -0
- package/dist/src/core/addon-registry.js.map +1 -0
- package/dist/src/hooks/plugins/spec-injection-plugin.js +2 -0
- package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
- package/dist/src/hooks/spec-injector.js +2 -2
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/tools/impeccable/critique-storage.d.ts +28 -0
- package/dist/src/tools/impeccable/critique-storage.d.ts.map +1 -0
- package/dist/src/tools/impeccable/critique-storage.js +120 -0
- package/dist/src/tools/impeccable/critique-storage.js.map +1 -0
- package/dist/src/tools/impeccable/design-parser.d.ts +90 -0
- package/dist/src/tools/impeccable/design-parser.d.ts.map +1 -0
- package/dist/src/tools/impeccable/design-parser.js +696 -0
- package/dist/src/tools/impeccable/design-parser.js.map +1 -0
- package/dist/src/tools/impeccable/detect-csp.d.ts +6 -0
- package/dist/src/tools/impeccable/detect-csp.d.ts.map +1 -0
- package/dist/src/tools/impeccable/detect-csp.js +130 -0
- package/dist/src/tools/impeccable/detect-csp.js.map +1 -0
- package/dist/src/tools/impeccable/is-generated.d.ts +4 -0
- package/dist/src/tools/impeccable/is-generated.d.ts.map +1 -0
- package/dist/src/tools/impeccable/is-generated.js +56 -0
- package/dist/src/tools/impeccable/is-generated.js.map +1 -0
- package/dist/src/tools/impeccable/live/accept.d.ts +50 -0
- package/dist/src/tools/impeccable/live/accept.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/accept.js +556 -0
- package/dist/src/tools/impeccable/live/accept.js.map +1 -0
- package/dist/src/tools/impeccable/live/bootstrap.d.ts +2 -0
- package/dist/src/tools/impeccable/live/bootstrap.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/bootstrap.js +244 -0
- package/dist/src/tools/impeccable/live/bootstrap.js.map +1 -0
- package/dist/src/tools/impeccable/live/complete.d.ts +7 -0
- package/dist/src/tools/impeccable/live/complete.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/complete.js +67 -0
- package/dist/src/tools/impeccable/live/complete.js.map +1 -0
- package/dist/src/tools/impeccable/live/completion.d.ts +24 -0
- package/dist/src/tools/impeccable/live/completion.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/completion.js +26 -0
- package/dist/src/tools/impeccable/live/completion.js.map +1 -0
- package/dist/src/tools/impeccable/live/inject.d.ts +41 -0
- package/dist/src/tools/impeccable/live/inject.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/inject.js +394 -0
- package/dist/src/tools/impeccable/live/inject.js.map +1 -0
- package/dist/src/tools/impeccable/live/poll.d.ts +24 -0
- package/dist/src/tools/impeccable/live/poll.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/poll.js +180 -0
- package/dist/src/tools/impeccable/live/poll.js.map +1 -0
- package/dist/src/tools/impeccable/live/resume.d.ts +5 -0
- package/dist/src/tools/impeccable/live/resume.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/resume.js +30 -0
- package/dist/src/tools/impeccable/live/resume.js.map +1 -0
- package/dist/src/tools/impeccable/live/server.d.ts +6 -0
- package/dist/src/tools/impeccable/live/server.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/server.js +867 -0
- package/dist/src/tools/impeccable/live/server.js.map +1 -0
- package/dist/src/tools/impeccable/live/session-store.d.ts +72 -0
- package/dist/src/tools/impeccable/live/session-store.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/session-store.js +281 -0
- package/dist/src/tools/impeccable/live/session-store.js.map +1 -0
- package/dist/src/tools/impeccable/live/static/live-browser-session.js +123 -0
- package/dist/src/tools/impeccable/live/static/live-browser.js +4860 -0
- package/dist/src/tools/impeccable/live/static/modern-screenshot.umd.js +14 -0
- package/dist/src/tools/impeccable/live/status.d.ts +2 -0
- package/dist/src/tools/impeccable/live/status.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/status.js +52 -0
- package/dist/src/tools/impeccable/live/status.js.map +1 -0
- package/dist/src/tools/impeccable/live/wrap.d.ts +33 -0
- package/dist/src/tools/impeccable/live/wrap.d.ts.map +1 -0
- package/dist/src/tools/impeccable/live/wrap.js +572 -0
- package/dist/src/tools/impeccable/live/wrap.js.map +1 -0
- package/dist/src/tools/impeccable/load-context.d.ts +13 -0
- package/dist/src/tools/impeccable/load-context.d.ts.map +1 -0
- package/dist/src/tools/impeccable/load-context.js +79 -0
- package/dist/src/tools/impeccable/load-context.js.map +1 -0
- package/dist/src/tools/impeccable/paths.d.ts +34 -0
- package/dist/src/tools/impeccable/paths.d.ts.map +1 -0
- package/dist/src/tools/impeccable/paths.js +102 -0
- package/dist/src/tools/impeccable/paths.js.map +1 -0
- package/dist/src/tools/spec-entry-parser.d.ts +1 -1
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -1
- package/dist/src/tools/spec-entry-parser.js +1 -1
- package/dist/src/tools/spec-entry-parser.js.map +1 -1
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +26 -1
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-loader.d.ts +1 -1
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +2 -0
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/package.json +2 -2
- package/workflows/claude-instructions.md +17 -5
- package/workflows/cli-tools-usage.md +10 -3
- package/workflows/delegate-usage.md +3 -2
- package/workflows/impeccable/adapt.md +190 -0
- package/workflows/impeccable/animate.md +175 -0
- package/workflows/impeccable/audit.md +133 -0
- package/workflows/impeccable/bolder.md +113 -0
- package/workflows/impeccable/brand.md +118 -0
- package/workflows/impeccable/clarify.md +174 -0
- package/workflows/impeccable/codex.md +105 -0
- package/workflows/impeccable/cognitive-load.md +106 -0
- package/workflows/impeccable/color-and-contrast.md +105 -0
- package/workflows/impeccable/colorize.md +154 -0
- package/workflows/impeccable/craft.md +123 -0
- package/workflows/impeccable/critique.md +261 -0
- package/workflows/impeccable/delight.md +302 -0
- package/workflows/impeccable/distill.md +111 -0
- package/workflows/impeccable/document.md +439 -0
- package/workflows/impeccable/extract.md +69 -0
- package/workflows/impeccable/harden.md +347 -0
- package/workflows/impeccable/heuristics-scoring.md +234 -0
- package/workflows/impeccable/interaction-design.md +195 -0
- package/workflows/impeccable/layout.md +141 -0
- package/workflows/impeccable/live.md +622 -0
- package/workflows/impeccable/motion-design.md +109 -0
- package/workflows/impeccable/onboard.md +234 -0
- package/workflows/impeccable/optimize.md +258 -0
- package/workflows/impeccable/overdrive.md +130 -0
- package/workflows/impeccable/personas.md +179 -0
- package/workflows/impeccable/polish.md +242 -0
- package/workflows/impeccable/product.md +62 -0
- package/workflows/impeccable/quieter.md +99 -0
- package/workflows/impeccable/responsive-design.md +114 -0
- package/workflows/impeccable/shape.md +165 -0
- package/workflows/impeccable/spatial-design.md +100 -0
- package/workflows/impeccable/teach.md +168 -0
- package/workflows/impeccable/typeset.md +124 -0
- package/workflows/impeccable/typography.md +159 -0
- package/workflows/impeccable/ux-writing.md +107 -0
- package/workflows/impeccable.md +164 -0
- package/workflows/maestro.md +7 -3
- package/workflows/skill-authoring.md +265 -0
- package/workflows/specs-add.md +3 -2
- package/workflows/specs-load.md +2 -1
- package/workflows/specs-setup.md +21 -1
|
@@ -1,313 +1,420 @@
|
|
|
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.
|
|
10
|
-
via `spawn_agents_on_csv` —
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
**
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
3.
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
**
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
-
|
|
230
|
-
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
|
276
|
-
|
|
277
|
-
| `
|
|
278
|
-
| `
|
|
279
|
-
| `
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
|
292
|
-
|
|
293
|
-
|
|
|
294
|
-
|
|
|
295
|
-
|
|
|
296
|
-
|
|
|
297
|
-
|
|
|
298
|
-
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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"`** — Classify → chain → execute
|
|
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
|
+
<deferred_reading>
|
|
20
|
+
- [maestro-super.md](~/.maestro/workflows/maestro-super.md) — read when `--super` flag is active
|
|
21
|
+
</deferred_reading>
|
|
22
|
+
|
|
23
|
+
<context>
|
|
24
|
+
$ARGUMENTS — user intent text, or special flags.
|
|
25
|
+
|
|
26
|
+
**Flags:**
|
|
27
|
+
- `-y, --yes` — Auto mode: skip all prompts; propagate `-y` to each skill
|
|
28
|
+
- `--continue` — Resume latest paused session from last incomplete wave
|
|
29
|
+
- `--dry-run` — Display planned chain without executing
|
|
30
|
+
- `--super` — Read and follow `maestro-super.md` completely
|
|
31
|
+
|
|
32
|
+
**Session state**: `.workflow/.maestro/{session-id}/`
|
|
33
|
+
</context>
|
|
34
|
+
|
|
35
|
+
<invariants>
|
|
36
|
+
1. **ALL skills via spawn_agents_on_csv** — coordinator NEVER directly executes any skill logic
|
|
37
|
+
2. **Coordinator = prompt assembler** — classify → build CSV → spawn → read results → assemble next
|
|
38
|
+
3. **Barrier = solo wave** — barrier skills always execute alone (wave size = 1)
|
|
39
|
+
4. **Non-barriers can parallel** — consecutive non-barrier skills grouped into one wave
|
|
40
|
+
5. **Wave-by-wave** — never start wave N+1 before wave N results are read
|
|
41
|
+
6. **Coordinator owns context** — sub-agents never read prior results; coordinator assembles full `skill_call`
|
|
42
|
+
7. **Abort on failure** — failed step → mark remaining skipped → report
|
|
43
|
+
</invariants>
|
|
44
|
+
|
|
45
|
+
<state_machine>
|
|
46
|
+
|
|
47
|
+
<states>
|
|
48
|
+
S_PARSE — 解析参数、检测 flags PERSIST: —
|
|
49
|
+
S_CONTINUE — 加载已有 session,定位 resume 点 PERSIST: session (loaded)
|
|
50
|
+
S_CLASSIFY — 意图分类、解析 chain (A_CLASSIFY) PERSIST: —
|
|
51
|
+
S_CREATE — 创建 session + status.json PERSIST: session.status, session.steps[]
|
|
52
|
+
S_DRY_RUN — 显示 chain 后结束 PERSIST: —
|
|
53
|
+
S_CONFIRM — 用户确认(auto_mode 跳过) PERSIST: —
|
|
54
|
+
S_WAVE_LOOP — 构建 wave → spawn → 读结果 → 循环 PERSIST: session.waves[], session.current_step, session.context
|
|
55
|
+
S_COMPLETE — 标记完成、释放目标 PERSIST: session.status = "completed"
|
|
56
|
+
S_ABORTED — 失败中止、标记剩余 skipped PERSIST: session.status = "aborted"
|
|
57
|
+
S_FALLBACK — 意图无法分类,请求输入 PERSIST: —
|
|
58
|
+
</states>
|
|
59
|
+
|
|
60
|
+
<transitions>
|
|
61
|
+
|
|
62
|
+
S_PARSE:
|
|
63
|
+
→ S_CONTINUE WHEN: --continue flag
|
|
64
|
+
→ S_CLASSIFY WHEN: intent text present
|
|
65
|
+
→ S_FALLBACK WHEN: no intent AND no flags
|
|
66
|
+
|
|
67
|
+
S_CONTINUE:
|
|
68
|
+
→ S_WAVE_LOOP WHEN: session found, has pending steps DO: A_RESUME_SESSION
|
|
69
|
+
→ S_FALLBACK WHEN: no session found
|
|
70
|
+
|
|
71
|
+
S_CLASSIFY:
|
|
72
|
+
→ S_CREATE WHEN: chain resolved DO: A_CLASSIFY
|
|
73
|
+
→ S_FALLBACK WHEN: no match AND auto_mode
|
|
74
|
+
→ S_CLASSIFY WHEN: no match AND not auto_mode DO: A_CLARIFY_INTENT
|
|
75
|
+
GUARD: max 1 clarification attempt → S_FALLBACK
|
|
76
|
+
|
|
77
|
+
S_CREATE:
|
|
78
|
+
→ S_DRY_RUN WHEN: --dry-run flag DO: A_CREATE_SESSION
|
|
79
|
+
→ S_CONFIRM WHEN: not auto_mode DO: A_CREATE_SESSION
|
|
80
|
+
→ S_WAVE_LOOP WHEN: auto_mode DO: A_CREATE_SESSION
|
|
81
|
+
|
|
82
|
+
S_DRY_RUN:
|
|
83
|
+
→ END DO: display chain with [BARRIER] markers
|
|
84
|
+
|
|
85
|
+
S_CONFIRM:
|
|
86
|
+
→ S_WAVE_LOOP WHEN: user confirms
|
|
87
|
+
→ S_ABORTED WHEN: user cancels
|
|
88
|
+
|
|
89
|
+
S_WAVE_LOOP:
|
|
90
|
+
→ S_WAVE_LOOP WHEN: pending steps remain DO: A_BUILD_AND_SPAWN_WAVE
|
|
91
|
+
→ S_COMPLETE WHEN: no pending steps
|
|
92
|
+
→ S_ABORTED WHEN: step failed
|
|
93
|
+
GUARD: wave order is sacred — never skip ahead
|
|
94
|
+
|
|
95
|
+
S_COMPLETE:
|
|
96
|
+
→ END DO: A_FINALIZE
|
|
97
|
+
|
|
98
|
+
S_ABORTED:
|
|
99
|
+
→ END DO: A_ABORT_REPORT
|
|
100
|
+
|
|
101
|
+
S_FALLBACK:
|
|
102
|
+
→ S_CLASSIFY WHEN: user provides new intent DO: AskUserQuestion
|
|
103
|
+
→ END WHEN: user cancels
|
|
104
|
+
|
|
105
|
+
</transitions>
|
|
106
|
+
|
|
107
|
+
<actions>
|
|
108
|
+
|
|
109
|
+
### A_CREATE_SESSION
|
|
110
|
+
|
|
111
|
+
1. Read `.workflow/state.json` for project context (current phase, milestone, workflow_name)
|
|
112
|
+
2. Resolve chain's skill list from Chain Map (see appendix)
|
|
113
|
+
3. Create `.workflow/.maestro/maestro-{YYYYMMDD-HHMMSS}/status.json`:
|
|
114
|
+
```json
|
|
115
|
+
{ "session_id", "source": "maestro", "intent", "task_type", "chain_name",
|
|
116
|
+
"phase", "milestone", "auto_mode", "context": { "issue_id", "scratch_dir",
|
|
117
|
+
"plan_dir", "analysis_dir", "brainstorm_dir" },
|
|
118
|
+
"steps": [{ "index", "skill", "args", "status": "pending", "wave_n": null }],
|
|
119
|
+
"waves": [], "current_step": 0, "status": "running" }
|
|
120
|
+
```
|
|
121
|
+
4. Initialize tracking:
|
|
122
|
+
- `create_goal({ objective: "Maestro {chain}: {N} steps [{skill list}]" })`
|
|
123
|
+
- `update_plan({ plan: steps.map(step => { step, status: "pending" }) })`
|
|
124
|
+
|
|
125
|
+
### A_RESUME_SESSION
|
|
126
|
+
|
|
127
|
+
1. Glob `.workflow/.maestro/maestro-*/status.json` sorted desc, load most recent
|
|
128
|
+
2. Find first pending step → set as resume point
|
|
129
|
+
3. Rebuild `update_plan` from status.json (completed→"completed", current→"in_progress", rest→"open")
|
|
130
|
+
|
|
131
|
+
### A_CLASSIFY
|
|
132
|
+
|
|
133
|
+
**Layer 1: Exact-match (fast path)**
|
|
134
|
+
- `--chain <name>` flag → validate against chainMap, use directly (E002 if not found)
|
|
135
|
+
- `continue`/`next`/`go`/`继续`/`下一步` → `state_continue`
|
|
136
|
+
- `status`/`状态`/`dashboard` → `status`
|
|
137
|
+
|
|
138
|
+
If matched, skip to chain resolution.
|
|
139
|
+
|
|
140
|
+
**Layer 2: Structured intent extraction**
|
|
141
|
+
|
|
142
|
+
Extract tuple from intent using LLM semantic understanding:
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"action": "<create|fix|analyze|plan|execute|verify|review|test|debug|refactor|explore|manage|transition|continue|sync|learn|retrospect>",
|
|
146
|
+
"object": "<feature|bug|issue|code|test|spec|phase|milestone|doc|performance|security|ui|memory|codebase|config>",
|
|
147
|
+
"scope": "<module/file/area or null>",
|
|
148
|
+
"issue_id": "<ISS-XXXXXXXX-NNN or null>",
|
|
149
|
+
"phase_ref": "<integer or null>",
|
|
150
|
+
"urgency": "<low|normal|high>"
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Disambiguation: "问题"/"issue"/"problem" as broken → `object: "bug"` (→ debug); as tracked item (with ISS-ID or management context) → `object: "issue"` (→ issue management). When ambiguous, prefer `"bug"`.
|
|
155
|
+
|
|
156
|
+
**Layer 3: action × object routing matrix**
|
|
157
|
+
|
|
158
|
+
If `issue_id` present → issue pipeline directly.
|
|
159
|
+
|
|
160
|
+
| action | object-specific overrides | default |
|
|
161
|
+
|--------|--------------------------|---------|
|
|
162
|
+
| fix | bug/code/perf/security→`debug`, issue→`issue` | `debug` |
|
|
163
|
+
| create | feature→`quick`, issue→`issue`, test→`test_gen`, spec→`spec_generate`, ui→`ui_design`, config→`init` | `quick` |
|
|
164
|
+
| analyze | bug/code→`analyze`, issue→`issue_analyze`, codebase→`spec_map` | `analyze` |
|
|
165
|
+
| explore | issue→`issue_discover`, feature/ui→`brainstorm`/`ui_design` | `brainstorm` |
|
|
166
|
+
| plan | issue→`issue_plan`, spec→`spec_generate` | `plan` |
|
|
167
|
+
| execute | issue→`issue_execute` | `execute` |
|
|
168
|
+
| manage | issue→`issue`, milestone→`milestone_audit`, phase→`phase_transition`, memory/doc/codebase→`memory`/`sync`/`codebase_refresh` | `status` |
|
|
169
|
+
| transition | phase→`phase_transition`, milestone→`milestone_complete` | `phase_transition` |
|
|
170
|
+
| verify, review, test, debug, refactor, continue, sync, learn, retrospect, release, amend, compose | — | self-named |
|
|
171
|
+
|
|
172
|
+
**Clarity scoring**: 3=action+object+scope, 2=action+object, 1=action only, 0=empty.
|
|
173
|
+
If `clarity < 2` and not `auto_mode` → transition to A_CLARIFY_INTENT.
|
|
174
|
+
|
|
175
|
+
**Layer 4: State-based routing** (when `taskType === 'state_continue'`)
|
|
176
|
+
|
|
177
|
+
Read `.workflow/state.json` and route by condition:
|
|
178
|
+
|
|
179
|
+
| Condition | Chain |
|
|
180
|
+
|-----------|-------|
|
|
181
|
+
| Not initialized | `init` |
|
|
182
|
+
| No phases, no roadmap, has accumulated_context | `next-milestone` |
|
|
183
|
+
| No phases | `brainstorm-driven` |
|
|
184
|
+
| pending + has context | `plan` |
|
|
185
|
+
| pending, no context | `analyze` |
|
|
186
|
+
| exploring/planning + has plan | `execute-verify` |
|
|
187
|
+
| exploring/planning, no plan | `plan` |
|
|
188
|
+
| executing, all tasks done | `verify` |
|
|
189
|
+
| executing, tasks remain | `execute` |
|
|
190
|
+
| verifying, passed + no review | `review` |
|
|
191
|
+
| verifying, passed + BLOCK | `review-fix` |
|
|
192
|
+
| verifying, passed + UAT pending | `test` |
|
|
193
|
+
| verifying, passed + UAT passed | `milestone-close` |
|
|
194
|
+
| verifying, passed + UAT failed | `debug` |
|
|
195
|
+
| verifying, not passed | `quality-loop-partial` |
|
|
196
|
+
| testing, UAT passed | `milestone-close` |
|
|
197
|
+
| testing, UAT not passed | `debug` |
|
|
198
|
+
| completed | `milestone-close` |
|
|
199
|
+
| blocked | `debug` |
|
|
200
|
+
| fallback | `status` |
|
|
201
|
+
|
|
202
|
+
**Chain resolution order:**
|
|
203
|
+
1. `forceChain` → `chainMap[forceChain]` (E002 if not found)
|
|
204
|
+
2. `state_continue` → Layer 4 state routing → `{ chain, argsOverride? }`
|
|
205
|
+
3. `taskToChain[taskType]` → alias lookup (see Chain Aliases below)
|
|
206
|
+
4. `chainMap[taskType]` → direct lookup
|
|
207
|
+
|
|
208
|
+
**Phase resolution**: structured extraction `phase_ref` → fallback regex (`phase N` or bare number) → `projectState.current_phase`.
|
|
209
|
+
|
|
210
|
+
### A_CLARIFY_INTENT
|
|
211
|
+
|
|
212
|
+
1. `AskUserQuestion` with available chain types
|
|
213
|
+
2. Re-classify with user response
|
|
214
|
+
|
|
215
|
+
### A_BUILD_AND_SPAWN_WAVE
|
|
216
|
+
|
|
217
|
+
1. **buildNextWave**: first pending step; barrier → solo wave; non-barrier → collect consecutive non-barriers
|
|
218
|
+
2. **buildSkillCall** per step:
|
|
219
|
+
- Replace placeholders: `{phase}`, `{plan_dir}`, `{analysis_dir}`, `{brainstorm_dir}`, `{spec_session_id}`
|
|
220
|
+
- Append auto-yes flag if `auto_mode` (see Appendix: Auto-Yes Flag Map)
|
|
221
|
+
3. Write `{sessionDir}/wave-{N}.csv` (columns: id, skill_call, topic)
|
|
222
|
+
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 })`
|
|
223
|
+
5. Read results → update step statuses in status.json
|
|
224
|
+
6. **Barrier analysis** (if barrier skill): read artifacts, update `session.context`
|
|
225
|
+
| Barrier Skill | Read | Context Updates |
|
|
226
|
+
|---------------|------|-----------------|
|
|
227
|
+
| maestro-analyze | context.md, state.json | analysis_dir, gaps, phase |
|
|
228
|
+
| maestro-plan | plan.json, .task/TASK-*.json | plan_dir, task_count, wave_count |
|
|
229
|
+
| maestro-brainstorm | .brainstorming/ | brainstorm_dir, features |
|
|
230
|
+
| maestro-roadmap | specs/ | spec_session_id |
|
|
231
|
+
| maestro-execute | results.csv | exec_completed, exec_failed |
|
|
232
|
+
7. Persist: write status.json + sync update_plan
|
|
233
|
+
|
|
234
|
+
### A_FINALIZE
|
|
235
|
+
|
|
236
|
+
1. Set `session.status = "completed"`, write status.json
|
|
237
|
+
2. Sync update_plan: all steps → "completed"
|
|
238
|
+
3. `update_goal({ status: "complete" })` — release goal constraint
|
|
239
|
+
4. Generate completion report (see Appendix: Report Format)
|
|
240
|
+
|
|
241
|
+
### A_ABORT_REPORT
|
|
242
|
+
|
|
243
|
+
1. Mark remaining steps as `skipped` in status.json
|
|
244
|
+
2. Set `session.status = "aborted"`, write status.json
|
|
245
|
+
3. Sync update_plan (skipped steps marked)
|
|
246
|
+
4. Do NOT call update_goal — goal stays for `--continue` resume
|
|
247
|
+
5. Display abort report with failure details
|
|
248
|
+
|
|
249
|
+
</actions>
|
|
250
|
+
|
|
251
|
+
</state_machine>
|
|
252
|
+
|
|
253
|
+
<appendix>
|
|
254
|
+
|
|
255
|
+
### Chain Map (Full)
|
|
256
|
+
|
|
257
|
+
**Single-step chains:**
|
|
258
|
+
|
|
259
|
+
| Chain | Command + Args |
|
|
260
|
+
|-------|---------------|
|
|
261
|
+
| `status` | `manage-status` |
|
|
262
|
+
| `init` | `maestro-init` |
|
|
263
|
+
| `analyze` | `maestro-analyze {phase}` |
|
|
264
|
+
| `ui_design` | `maestro-ui-design {phase}` |
|
|
265
|
+
| `plan` | `maestro-plan {phase}` |
|
|
266
|
+
| `execute` | `maestro-execute {phase}` |
|
|
267
|
+
| `verify` | `maestro-verify {phase}` |
|
|
268
|
+
| `test_gen` | `quality-auto-test {phase}` |
|
|
269
|
+
| `auto_test` | `quality-auto-test {phase}` |
|
|
270
|
+
| `test` | `quality-test {phase}` |
|
|
271
|
+
| `debug` | `quality-debug "{description}"` |
|
|
272
|
+
| `integration_test` | `quality-auto-test {phase}` |
|
|
273
|
+
| `refactor` | `quality-refactor "{description}"` |
|
|
274
|
+
| `review` | `quality-review {phase}` |
|
|
275
|
+
| `retrospective` | `quality-retrospective {phase}` |
|
|
276
|
+
| `learn` | `maestro-learn "{description}"` |
|
|
277
|
+
| `sync` | `quality-sync` |
|
|
278
|
+
| `milestone_audit` | `maestro-milestone-audit` |
|
|
279
|
+
| `milestone_complete` | `maestro-milestone-complete` |
|
|
280
|
+
| `codebase_rebuild` | `manage-codebase-rebuild` |
|
|
281
|
+
| `codebase_refresh` | `manage-codebase-refresh` |
|
|
282
|
+
| `spec_setup` | `spec-setup` |
|
|
283
|
+
| `spec_add` | `spec-add "{description}"` |
|
|
284
|
+
| `spec_load` | `spec-load` |
|
|
285
|
+
| `spec_map` | `manage-codebase-rebuild` |
|
|
286
|
+
| `spec_remove` | `spec-remove "{description}"` |
|
|
287
|
+
| `knowhow_capture` | `manage-knowhow-capture "{description}"` |
|
|
288
|
+
| `knowhow` | `manage-knowhow "{description}"` |
|
|
289
|
+
| `issue` | `manage-issue "{description}"` |
|
|
290
|
+
| `issue_discover` | `manage-issue-discover "{description}"` |
|
|
291
|
+
| `issue_analyze` | `maestro-analyze --gaps "{description}"` |
|
|
292
|
+
| `issue_plan` | `maestro-plan --gaps` |
|
|
293
|
+
| `issue_execute` | `maestro-execute` |
|
|
294
|
+
| `quick` | `maestro-quick "{description}"` |
|
|
295
|
+
| `harvest` | `manage-harvest "{description}"` |
|
|
296
|
+
| `wiki` | `manage-wiki` |
|
|
297
|
+
| `wiki_connect` | `wiki-connect` |
|
|
298
|
+
| `wiki_digest` | `wiki-digest` |
|
|
299
|
+
| `business_test` | `quality-auto-test {phase}` |
|
|
300
|
+
| `amend` | `maestro-amend "{description}"` |
|
|
301
|
+
| `release` | `maestro-milestone-release` |
|
|
302
|
+
| `compose` | `maestro-composer "{description}"` |
|
|
303
|
+
| `play` | `maestro-player "{description}"` |
|
|
304
|
+
| `update` | `maestro-update` |
|
|
305
|
+
| `overlay` | `maestro-overlay "{description}"` |
|
|
306
|
+
| `link_coordinate` | `maestro-link-coordinate "{description}"` |
|
|
307
|
+
|
|
308
|
+
**Multi-step chains:**
|
|
309
|
+
|
|
310
|
+
| Chain | Steps (→ = sequential, [B] = barrier) |
|
|
311
|
+
|-------|---------------------------------------|
|
|
312
|
+
| `feature` | [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
313
|
+
| `quality-fix` | [B] maestro-analyze --gaps → [B] maestro-plan --gaps → [B] maestro-execute → maestro-verify |
|
|
314
|
+
| `deploy` | maestro-verify → maestro-milestone-release |
|
|
315
|
+
| `spec-driven` | maestro-init → [B] maestro-roadmap --mode full → [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
316
|
+
| `brainstorm-driven` | [B] maestro-brainstorm → [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
317
|
+
| `ui-design-driven` | maestro-ui-design → [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
318
|
+
| `roadmap-driven` | maestro-init → [B] maestro-roadmap → [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
319
|
+
| `next-milestone` | [B] maestro-roadmap → [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
320
|
+
| `full-lifecycle` | [B] maestro-plan → [B] maestro-execute → maestro-verify → quality-review → quality-test → maestro-milestone-audit → maestro-milestone-complete |
|
|
321
|
+
| `execute-verify` | [B] maestro-execute → maestro-verify |
|
|
322
|
+
| `analyze-plan-execute` | [B] maestro-analyze -q → [B] maestro-plan --dir {scratch_dir} → [B] maestro-execute --dir {scratch_dir} |
|
|
323
|
+
| `quality-loop` | maestro-verify → quality-review → quality-test → quality-debug --from-uat → [B] maestro-plan --gaps → [B] maestro-execute |
|
|
324
|
+
| `quality-loop-partial` | [B] maestro-plan --gaps → [B] maestro-execute → maestro-verify |
|
|
325
|
+
| `review-fix` | [B] maestro-plan --gaps → [B] maestro-execute → quality-review |
|
|
326
|
+
| `milestone-close` | maestro-milestone-audit → maestro-milestone-complete |
|
|
327
|
+
| `milestone-release` | maestro-milestone-audit → maestro-milestone-release |
|
|
328
|
+
| `phase_transition` | maestro-milestone-audit → maestro-milestone-complete |
|
|
329
|
+
| `issue-full` | [B] maestro-analyze --gaps → [B] maestro-plan --gaps → [B] maestro-execute → quality-review → manage-issue close |
|
|
330
|
+
| `issue-quick` | [B] maestro-plan --gaps → [B] maestro-execute → manage-issue close |
|
|
331
|
+
|
|
332
|
+
**Chain Aliases** (taskType → chain):
|
|
333
|
+
|
|
334
|
+
| taskType | Chain |
|
|
335
|
+
|----------|-------|
|
|
336
|
+
| `spec_generate` | `spec-driven` |
|
|
337
|
+
| `brainstorm` | `brainstorm-driven` |
|
|
338
|
+
| `issue_execute` | `issue-full` |
|
|
339
|
+
|
|
340
|
+
### Auto-Yes Flag Map
|
|
341
|
+
|
|
342
|
+
| Skill | Flag |
|
|
343
|
+
|-------|------|
|
|
344
|
+
| maestro-init, maestro-analyze, maestro-brainstorm, maestro-ui-design, maestro-roadmap | `-y` |
|
|
345
|
+
| maestro-plan, maestro-execute, maestro-milestone-complete | `-y` |
|
|
346
|
+
| quality-auto-test, quality-retrospective | `-y` |
|
|
347
|
+
| quality-test | `-y --auto-fix` |
|
|
348
|
+
|
|
349
|
+
### Barrier Skills
|
|
350
|
+
|
|
351
|
+
`maestro-analyze`, `maestro-plan`, `maestro-brainstorm`, `maestro-roadmap`, `maestro-execute`
|
|
352
|
+
|
|
353
|
+
Non-barrier (groupable): `maestro-verify`, `quality-review`, `quality-test`, `quality-debug`, `quality-refactor`, `quality-sync`, `manage-*`
|
|
354
|
+
|
|
355
|
+
### Worker Contract
|
|
356
|
+
|
|
357
|
+
**Instruction template:**
|
|
358
|
+
```
|
|
359
|
+
你是 CSV job 子 agent。
|
|
360
|
+
先原样执行这一段技能调用:{skill_call}
|
|
361
|
+
然后基于结果完成这一行任务说明:{topic}
|
|
362
|
+
限制:不要修改 .workflow/.maestro/ 下的 status 文件
|
|
363
|
+
最后必须调用 `report_agent_job_result`,返回 JSON:
|
|
364
|
+
{"status":"completed|failed","skill_call":"{skill_call}","summary":"一句话结果","artifacts":"产物路径","error":"失败原因"}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
**Result schema:** `{ status, skill_call, summary, artifacts, error }` — all string, all required
|
|
368
|
+
|
|
369
|
+
### CSV Schema
|
|
370
|
+
|
|
371
|
+
**wave-{N}.csv:**
|
|
372
|
+
```csv
|
|
373
|
+
id,skill_call,topic
|
|
374
|
+
"1","$maestro-analyze --gaps \"fix auth\" -y","Chain \"quality-fix\" step 1/4"
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
**Session status.json:** see A_CREATE_SESSION for full schema
|
|
378
|
+
|
|
379
|
+
### Error Codes
|
|
380
|
+
|
|
381
|
+
| Code | Severity | Condition | Recovery |
|
|
382
|
+
|------|----------|-----------|----------|
|
|
383
|
+
| E001 | error | Intent unclassifiable after clarification | Default to `feature` chain |
|
|
384
|
+
| E002 | error | Intent unresolvable after retry | List chains, abort |
|
|
385
|
+
| E003 | error | Wave timeout | Mark step failed, abort chain |
|
|
386
|
+
| E004 | error | Barrier artifact not found | Retry wave once, then abort |
|
|
387
|
+
| E005 | error | --continue: no session found | List sessions, prompt |
|
|
388
|
+
| W001 | warning | Barrier artifact partial | Continue with available context |
|
|
389
|
+
|
|
390
|
+
### Success Criteria
|
|
391
|
+
|
|
392
|
+
- [ ] Intent classified and chain resolved
|
|
393
|
+
- [ ] Session dir initialized with status.json before first wave
|
|
394
|
+
- [ ] Every skill goes through spawn_agents_on_csv
|
|
395
|
+
- [ ] Barrier skills solo wave; non-barriers grouped parallel
|
|
396
|
+
- [ ] Each wave: CSV → spawn → results → state updated
|
|
397
|
+
- [ ] Barrier artifacts read before assembling next wave args
|
|
398
|
+
- [ ] Failed step → remaining skipped → abort reported
|
|
399
|
+
- [ ] --dry-run shows chain with [BARRIER], no execution
|
|
400
|
+
- [ ] --continue resumes from last incomplete wave
|
|
401
|
+
|
|
402
|
+
### Report Format
|
|
403
|
+
|
|
404
|
+
```
|
|
405
|
+
=== COORDINATE COMPLETE ===
|
|
406
|
+
Session: {sessionId}
|
|
407
|
+
Chain: {chain}
|
|
408
|
+
Waves: {N} executed
|
|
409
|
+
Steps: {completed}/{total}
|
|
410
|
+
|
|
411
|
+
WAVE RESULTS:
|
|
412
|
+
[W1] $maestro-analyze --gaps → ✓ found 3 gaps
|
|
413
|
+
[W2] $maestro-plan --gaps → ✓ 12 tasks in 3 waves
|
|
414
|
+
...
|
|
415
|
+
|
|
416
|
+
State: .workflow/.maestro/{sessionId}/status.json
|
|
417
|
+
Resume: $maestro --continue
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
</appendix>
|