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.
- 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 +278 -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 +307 -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,518 +1,201 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: maestro-roadmap
|
|
3
|
-
description: Generate roadmap from requirements (light or full mode)
|
|
4
|
-
argument-hint: "\"<requirements>\" [--mode light|full] [-y|--yes] [-c] [--phases N] [--skip-research] [--from-brainstorm SESSION-ID] [--revise [instructions]] [--review]"
|
|
5
|
-
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, request_user_input
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
<purpose>
|
|
9
|
-
Unified 2-wave roadmap generation using `spawn_agents_on_csv` with dual
|
|
10
|
-
|
|
11
|
-
- **Light
|
|
12
|
-
- **Full
|
|
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
|
-
|
|
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
|
-
- `brainstormSession` from `--from-brainstorm <SESSION-ID>`
|
|
203
|
-
- `requirementArg` = remaining text after stripping all flags
|
|
204
|
-
- `slug` = requirementArg lowercased, non-alphanumeric → `-`, max 40 chars
|
|
205
|
-
|
|
206
|
-
**Mode routing:**
|
|
207
|
-
- If `--revise` or `--review`: force `mode = light`, bypass CSV pipeline
|
|
208
|
-
- **Revise**: Load `.workflow/roadmap.md`, apply instructions (preserve completed phases), write updated roadmap. If instructions provided inline, apply directly; if omitted, ask user via `request_user_input`.
|
|
209
|
-
- **Review**: Read `.workflow/roadmap.md` + `state.json`, assess health (phase completion, dependency validity, scope creep), report read-only. No writes.
|
|
210
|
-
- Both skip Phase 1-3 CSV pipeline, go directly to operation-specific logic
|
|
211
|
-
- If `-c` / `--continue`: Resume from last checkpoint in existing session
|
|
212
|
-
- Otherwise: proceed with CSV pipeline
|
|
213
|
-
|
|
214
|
-
Session ID: `{YYYYMMDD}-roadmap-{slug}` (light) or `{YYYYMMDD}-roadmap-full-{slug}` (full)
|
|
215
|
-
Session folder: `.workflow/.csv-wave/{sessionId}/` — create via `mkdir -p`
|
|
216
|
-
|
|
217
|
-
### Phase 1: Input Parsing + CSV Generation
|
|
218
|
-
|
|
219
|
-
**Shared steps**:
|
|
220
|
-
1. **Input parsing**: Parse `{requirementArg}` -- direct text or `@file` reference
|
|
221
|
-
2. **Brainstorm import**: If `--from-brainstorm`, read `guidance-specification.md` for enriched context
|
|
222
|
-
3. **Codebase detection**: Check for source files; if found, add context to analysis/research prompts
|
|
223
|
-
4. **Load project specs**: Run `maestro spec load --category arch` for constraint awareness and discoverable knowhow tools
|
|
224
|
-
|
|
225
|
-
**Light mode specific**:
|
|
226
|
-
5. **Uncertainty assessment**:
|
|
227
|
-
|
|
228
|
-
| Factor | Low | Medium | High |
|
|
229
|
-
|--------|-----|--------|------|
|
|
230
|
-
| Scope clarity | Requirements explicit | Some ambiguity | Vague/open-ended |
|
|
231
|
-
| Technical risk | Proven stack | Some unknowns | New technology |
|
|
232
|
-
| Dependency unknown | All mapped | Some unclear | Many external |
|
|
233
|
-
| Domain familiarity | Expert | Moderate | New domain |
|
|
234
|
-
| Requirement stability | Locked | Some flux | Evolving |
|
|
235
|
-
|
|
236
|
-
Strategy: >=3 high → progressive, >=3 low → direct, else → ask (or auto if -y).
|
|
237
|
-
|
|
238
|
-
6. **CSV generation**: 3 analysis tasks (wave 1) + 1 assembly task (wave 2)
|
|
239
|
-
|
|
240
|
-
**Full mode specific**:
|
|
241
|
-
5. **Session init**: Create `spec-config.json` with session metadata
|
|
242
|
-
6. **CSV generation**: 3 research tasks (wave 1) + 1 document chain task (wave 2). If `--skip-research`: 0 research + 1 doc chain (wave 1).
|
|
243
|
-
|
|
244
|
-
**User validation**: Display task breakdown + strategy (skip if AUTO_YES).
|
|
245
|
-
|
|
246
|
-
### Phase 2: Wave Execution Engine
|
|
247
|
-
|
|
248
|
-
#### Wave 1 (Parallel)
|
|
249
|
-
|
|
250
|
-
Filter master `tasks.csv` for `wave == 1 AND status == pending` → write `wave-1.csv`.
|
|
251
|
-
|
|
252
|
-
```javascript
|
|
253
|
-
spawn_agents_on_csv({
|
|
254
|
-
csv_path: `${sessionFolder}/wave-1.csv`,
|
|
255
|
-
id_column: "id",
|
|
256
|
-
instruction: mode === 'light'
|
|
257
|
-
? buildAnalysisInstruction(sessionFolder, requirementArg, strategy)
|
|
258
|
-
: buildResearchInstruction(sessionFolder, requirementArg), // agent: ~/.codex/agents/workflow-project-researcher.toml
|
|
259
|
-
max_concurrency: 3,
|
|
260
|
-
max_runtime_seconds: 3600,
|
|
261
|
-
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
262
|
-
output_schema: {
|
|
263
|
-
type: "object",
|
|
264
|
-
properties: {
|
|
265
|
-
id: { type: "string" },
|
|
266
|
-
status: { type: "string", enum: ["completed", "failed"] },
|
|
267
|
-
findings: { type: "string" },
|
|
268
|
-
output_file: { type: "string" }, // full mode only
|
|
269
|
-
error: { type: "string" }
|
|
270
|
-
},
|
|
271
|
-
required: ["id", "status", "findings"]
|
|
272
|
-
}
|
|
273
|
-
})
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
Merge results into master `tasks.csv`, delete `wave-1.csv`.
|
|
277
|
-
|
|
278
|
-
#### Wave 2 (Sequential)
|
|
279
|
-
|
|
280
|
-
Filter for `wave == 2 AND status == pending`. If all wave 1 tasks failed, use degraded mode (requirement/seed text only).
|
|
281
|
-
|
|
282
|
-
Build `prev_context` from wave 1 findings. Format: `[Task N: Title] summary...` per completed task. Inject decomposition strategy and `--phases N` constraint (light mode) into assembly prompt.
|
|
283
|
-
|
|
284
|
-
Write `wave-2.csv` with `prev_context` column → execute `spawn_agents_on_csv` → merge → delete temp CSV.
|
|
285
|
-
|
|
286
|
-
**Light mode**: Assembly agent produces roadmap.md with phases, milestones, success criteria.
|
|
287
|
-
**Full mode**: Document chain agent produces 7-phase spec package + glossary.json. If agent fails, export partial output and log quality issues (do NOT abort).
|
|
288
|
-
|
|
289
|
-
#### Phase 2.5: Spec Package Generation (Full Mode Only)
|
|
290
|
-
|
|
291
|
-
After Wave 2 completes, read `~/.maestro/workflows/spec-generate.md` and follow its process to generate the 7-phase specification document chain:
|
|
292
|
-
|
|
293
|
-
1. **Product Brief** (`product-brief.md`): Vision, goals, scope, multi-perspective synthesis
|
|
294
|
-
2. **PRD** (`requirements/`): `_index.md` + individual `REQ-*.md` + `NFR-*.md` files with RFC 2119 keywords and acceptance criteria
|
|
295
|
-
3. **Architecture** (`architecture/`): `_index.md` + individual `ADR-*.md` files, state machine, config model, error handling, observability
|
|
296
|
-
4. **Data Model**: Entity definitions and relationships
|
|
297
|
-
5. **API Specification**: Endpoint definitions and contracts
|
|
298
|
-
6. **UI Wireframes**: Interface layout descriptions
|
|
299
|
-
7. **Epic-to-Roadmap** (`epics/`): `_index.md` + individual `EPIC-*.md` with cross-Epic dependency map (Mermaid) and MVP subset tagged
|
|
300
|
-
|
|
301
|
-
Additional outputs:
|
|
302
|
-
- `glossary.json` with 5+ core terms for cross-document terminology consistency
|
|
303
|
-
- `spec-summary.md` with one-page executive summary
|
|
304
|
-
- All documents have valid YAML frontmatter with `session_id`
|
|
305
|
-
|
|
306
|
-
Output location: `.workflow/.spec/SPEC-{slug}-{date}/`
|
|
307
|
-
|
|
308
|
-
### Phase 3: Results Aggregation
|
|
309
|
-
|
|
310
|
-
Export master `tasks.csv` as `results.csv`.
|
|
311
|
-
|
|
312
|
-
**Interactive refinement** (skip if AUTO_YES): Present overview, collect feedback via `request_user_input` (max 3 rounds).
|
|
313
|
-
|
|
314
|
-
Each round:
|
|
315
|
-
```json
|
|
316
|
-
{
|
|
317
|
-
"questions": [{
|
|
318
|
-
"id": "refinement_round_N",
|
|
319
|
-
"header": "Roadmap Refinement (Round N/3)",
|
|
320
|
-
"question": "Review the generated roadmap. Any adjustments needed?",
|
|
321
|
-
"options": [
|
|
322
|
-
{ "label": "Approve", "description": "Accept the current roadmap as-is" },
|
|
323
|
-
{ "label": "Refine", "description": "Provide specific changes to apply" },
|
|
324
|
-
{ "label": "Regenerate", "description": "Discard and regenerate from scratch" }
|
|
325
|
-
]
|
|
326
|
-
}]
|
|
327
|
-
}
|
|
328
|
-
```
|
|
329
|
-
If user selects "Refine", apply changes and re-present. After 3 rounds, force proceed with current output.
|
|
330
|
-
|
|
331
|
-
**Full mode only — Readiness Assessment**: Score spec package on 4 dimensions (25% each):
|
|
332
|
-
|
|
333
|
-
| Dimension | Weight | Checks |
|
|
334
|
-
|-----------|--------|--------|
|
|
335
|
-
| Completeness | 25% | All 7 phases produced, glossary has 5+ terms, all REQ/NFR/ADR/EPIC files present |
|
|
336
|
-
| Consistency | 25% | Glossary terms used consistently, cross-references valid, no contradictions |
|
|
337
|
-
| Traceability | 25% | Every requirement maps to an epic, every epic maps to a roadmap phase, traceability matrix complete |
|
|
338
|
-
| Depth | 25% | Acceptance criteria present, architecture covers error handling/observability, NFRs have measurable targets |
|
|
339
|
-
|
|
340
|
-
Gate thresholds:
|
|
341
|
-
- **Pass** (>=80%): Spec package ready for implementation
|
|
342
|
-
- **Review** (60-79%): Proceed with documented caveats, note gaps in `readiness-report.md`
|
|
343
|
-
- **Fail** (<60%): Attempt auto-fix (up to 2 iterations), then present manual fix options via `request_user_input`
|
|
344
|
-
|
|
345
|
-
Output: `readiness-report.md` with per-dimension scores and traceability matrix
|
|
346
|
-
|
|
347
|
-
Generate `context.md`:
|
|
348
|
-
|
|
349
|
-
**Light mode template**:
|
|
350
|
-
```markdown
|
|
351
|
-
# Roadmap Generation Report
|
|
352
|
-
|
|
353
|
-
## Summary
|
|
354
|
-
- Requirements: {requirement_summary}
|
|
355
|
-
- Strategy: {progressive|direct}
|
|
356
|
-
- Analysis agents: 3 ({completed_count} completed)
|
|
357
|
-
- Phases generated: {phase_count}
|
|
358
|
-
- Milestones: {milestone_count}
|
|
359
|
-
|
|
360
|
-
## Analysis Findings
|
|
361
|
-
### Scope Analysis
|
|
362
|
-
{findings}
|
|
363
|
-
### Risk Analysis
|
|
364
|
-
{findings}
|
|
365
|
-
### Dependency Analysis
|
|
366
|
-
{findings}
|
|
367
|
-
|
|
368
|
-
## Roadmap
|
|
369
|
-
- Phases: {phase_count}
|
|
370
|
-
- Strategy: {strategy}
|
|
371
|
-
- MVP scope: {mvp_description}
|
|
372
|
-
- Deferred: {deferred_items}
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
**Full mode template**:
|
|
376
|
-
```markdown
|
|
377
|
-
# Spec Generate Report
|
|
378
|
-
|
|
379
|
-
## Summary
|
|
380
|
-
- Topic: {topic}
|
|
381
|
-
- Research agents: 3 ({completed_count} completed)
|
|
382
|
-
- Document phases: 7
|
|
383
|
-
- Quality score: {score}% ({gate})
|
|
384
|
-
|
|
385
|
-
## Research Findings
|
|
386
|
-
### Domain Research
|
|
387
|
-
{findings}
|
|
388
|
-
### Competitive Analysis
|
|
389
|
-
{findings}
|
|
390
|
-
### Tech Stack Analysis
|
|
391
|
-
{findings}
|
|
392
|
-
|
|
393
|
-
## Document Chain Output
|
|
394
|
-
- Product Brief: {status}
|
|
395
|
-
- Requirements: {req_count} REQs + {nfr_count} NFRs
|
|
396
|
-
- Architecture: {adr_count} ADRs
|
|
397
|
-
- Epics: {epic_count} Epics
|
|
398
|
-
- Roadmap: {phase_count} phases
|
|
399
|
-
|
|
400
|
-
## Readiness
|
|
401
|
-
- Completeness: {score}%
|
|
402
|
-
- Consistency: {score}%
|
|
403
|
-
- Traceability: {score}%
|
|
404
|
-
- Depth: {score}%
|
|
405
|
-
- Overall: {score}% ({gate})
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
**Write outputs**:
|
|
409
|
-
- `.workflow/roadmap.md` (both modes)
|
|
410
|
-
- `.workflow/.spec/SPEC-{slug}-{date}/` (full mode only)
|
|
411
|
-
- Ensure `.workflow/scratch/` exists
|
|
412
|
-
- Update `state.json` milestones array and `current_milestone`
|
|
413
|
-
|
|
414
|
-
Display summary with next steps:
|
|
415
|
-
```
|
|
416
|
-
=== ROADMAP CREATED ===
|
|
417
|
-
Mode: {light|full}
|
|
418
|
-
Strategy: {progressive|direct}
|
|
419
|
-
Phases: {phase_count} across {milestone_count} milestones
|
|
420
|
-
Roadmap: .workflow/roadmap.md
|
|
421
|
-
[Full] Spec: .workflow/.spec/SPEC-{slug}-{date}/
|
|
422
|
-
[Full] Quality: {score}% ({gate})
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
**Next-step routing:**
|
|
426
|
-
|
|
427
|
-
| Condition | Next Step |
|
|
428
|
-
|-----------|-----------|
|
|
429
|
-
| Roadmap approved, need analysis | `$maestro-analyze "1"` |
|
|
430
|
-
| Simple project, ready to plan | `$maestro-plan "1"` |
|
|
431
|
-
| Need UI design first | `$maestro-ui-design "1"` |
|
|
432
|
-
| View project dashboard | `$manage-status` |
|
|
433
|
-
| Need project setup (full mode) | `$maestro-init` |
|
|
434
|
-
|
|
435
|
-
### Shared Discovery Board Protocol
|
|
436
|
-
|
|
437
|
-
#### Standard Discovery Types
|
|
438
|
-
|
|
439
|
-
| Type | Dedup Key | Data Schema | Description |
|
|
440
|
-
|------|-----------|-------------|-------------|
|
|
441
|
-
| `code_pattern` | `data.name` | `{name, file, description}` | Reusable code pattern found |
|
|
442
|
-
| `integration_point` | `data.file` | `{file, description, exports[]}` | Module connection point |
|
|
443
|
-
| `convention` | singleton | `{naming, imports, formatting}` | Project code conventions |
|
|
444
|
-
| `tech_stack` | singleton | `{framework, language, tools[]}` | Technology stack info |
|
|
445
|
-
|
|
446
|
-
#### Light Mode Discovery Types
|
|
447
|
-
|
|
448
|
-
| Type | Dedup Key | Data Schema | Description |
|
|
449
|
-
|------|-----------|-------------|-------------|
|
|
450
|
-
| `scope_boundary` | `data.feature` | `{feature, inclusion, rationale}` | Scope decision |
|
|
451
|
-
| `risk_factor` | `data.name` | `{name, severity, probability, mitigation}` | Identified risk |
|
|
452
|
-
| `dependency_constraint` | `data.from+data.to` | `{from, to, type, strength}` | Feature dependency |
|
|
453
|
-
| `external_dependency` | `data.name` | `{name, type, risk, alternative}` | External system dependency |
|
|
454
|
-
|
|
455
|
-
#### Full Mode Discovery Types
|
|
456
|
-
|
|
457
|
-
| Type | Dedup Key | Data Schema | Description |
|
|
458
|
-
|------|-----------|-------------|-------------|
|
|
459
|
-
| `domain_term` | `data.term` | `{term, definition, aliases}` | Domain terminology |
|
|
460
|
-
| `competitor` | `data.name` | `{name, features[], gaps[]}` | Competitive product |
|
|
461
|
-
| `market_trend` | `data.name` | `{name, impact, relevance}` | Market trend |
|
|
462
|
-
| `tech_constraint` | `data.name` | `{name, type, severity, mitigation}` | Technical constraint |
|
|
463
|
-
|
|
464
|
-
#### Protocol
|
|
465
|
-
|
|
466
|
-
Read `{session_folder}/discoveries.ndjson` before own analysis. Deduplicate by type + dedup key before writing. Append-only — never modify or delete.
|
|
467
|
-
|
|
468
|
-
```bash
|
|
469
|
-
# Light mode example
|
|
470
|
-
echo '{"ts":"<ISO>","worker":"{id}","type":"risk_factor","data":{"name":"OAuth provider rate limits","severity":"medium","probability":"high","mitigation":"Implement token caching and retry logic"}}' >> {session_folder}/discoveries.ndjson
|
|
471
|
-
|
|
472
|
-
# Full mode example
|
|
473
|
-
echo '{"ts":"<ISO>","worker":"{id}","type":"domain_term","data":{"term":"workflow","definition":"A sequence of orchestrated tasks","aliases":["pipeline","process"]}}' >> {session_folder}/discoveries.ndjson
|
|
474
|
-
```
|
|
475
|
-
</execution>
|
|
476
|
-
|
|
477
|
-
<error_codes>
|
|
478
|
-
| Error | Resolution |
|
|
479
|
-
|-------|------------|
|
|
480
|
-
| No requirement/idea text provided | Abort with error: "Requirement text or @file required" |
|
|
481
|
-
| Brainstorm session not found | Abort with error: "Session {id} not found" -- list available sessions |
|
|
482
|
-
| @file not found | Abort with error: "File {path} not found" |
|
|
483
|
-
| roadmap.md not found (--revise/--review) | Run maestro-roadmap first to create |
|
|
484
|
-
| Revision invalidates completed phase | Warn user, ask to confirm or adjust |
|
|
485
|
-
| .workflow/ not initialized (full mode) | Run maestro-init first |
|
|
486
|
-
| Wave 1 agent timeout | Mark as failed, Wave 2 uses available findings |
|
|
487
|
-
| All Wave 1 agents failed | Wave 2 runs in degraded mode (seed input only) |
|
|
488
|
-
| Wave 2 agent failed (light) | Abort with error: "Roadmap generation failed" |
|
|
489
|
-
| Wave 2 agent failed (full) | Export partial output, log quality issues |
|
|
490
|
-
| Circular dependency detected | Prompt user to re-decompose (light mode) |
|
|
491
|
-
| CSV parse error | Validate format, show line number |
|
|
492
|
-
| discoveries.ndjson corrupt | Ignore malformed lines |
|
|
493
|
-
| Max refinement rounds (3) | Force proceed with current output |
|
|
494
|
-
| Readiness score < 60% (full) | Log issues, proceed with available output |
|
|
495
|
-
</error_codes>
|
|
496
|
-
|
|
497
|
-
<success_criteria>
|
|
498
|
-
|
|
499
|
-
**Both modes**:
|
|
500
|
-
- [ ] Input parsed from text, @file, or brainstorm session
|
|
501
|
-
- [ ] Wave 1 agents completed (analysis or research)
|
|
502
|
-
- [ ] Wave 2 agent produced output
|
|
503
|
-
- [ ] Interactive refinement offered (or skipped with -y)
|
|
504
|
-
- [ ] .workflow/roadmap.md written
|
|
505
|
-
- [ ] state.json updated with milestones
|
|
506
|
-
- [ ] context.md generated
|
|
507
|
-
- [ ] Completion report displayed with next steps
|
|
508
|
-
|
|
509
|
-
**Light mode additional**:
|
|
510
|
-
- [ ] Uncertainty assessed and decomposition strategy selected
|
|
511
|
-
- [ ] Roadmap has phases with milestones and success criteria
|
|
512
|
-
|
|
513
|
-
**Full mode additional**:
|
|
514
|
-
- [ ] spec-config.json created with session metadata
|
|
515
|
-
- [ ] Spec package written to .workflow/.spec/SPEC-{slug}-{date}/
|
|
516
|
-
- [ ] Readiness check scored on 4 dimensions
|
|
517
|
-
- [ ] Quality score and gate reported
|
|
518
|
-
</success_criteria>
|
|
1
|
+
---
|
|
2
|
+
name: maestro-roadmap
|
|
3
|
+
description: Generate roadmap from requirements (light or full mode)
|
|
4
|
+
argument-hint: "\"<requirements>\" [--mode light|full] [-y|--yes] [-c] [--phases N] [--skip-research] [--from-brainstorm SESSION-ID] [--revise [instructions]] [--review]"
|
|
5
|
+
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, request_user_input
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<purpose>
|
|
9
|
+
Unified 2-wave roadmap generation using `spawn_agents_on_csv` with dual modes:
|
|
10
|
+
|
|
11
|
+
- **Light** (default): Wave 1 parallel analysis (scope, risk, dependency). Wave 2 assembly -> roadmap.md.
|
|
12
|
+
- **Full** (`--mode full`): Wave 1 parallel research (domain, competitive, tech stack). Wave 2 synthesis -> 7-phase spec chain + roadmap.md.
|
|
13
|
+
|
|
14
|
+
Additional: `--revise` (modify existing roadmap), `--review` (read-only health check).
|
|
15
|
+
</purpose>
|
|
16
|
+
|
|
17
|
+
<context>
|
|
18
|
+
$ARGUMENTS -- requirement/idea text or @file reference, plus optional flags.
|
|
19
|
+
|
|
20
|
+
**Flags**:
|
|
21
|
+
- `--mode light|full`: Execution mode (default: light)
|
|
22
|
+
- `-y, --yes`: Skip all confirmations
|
|
23
|
+
- `-m progressive|direct|auto`: Decomposition strategy (default: auto, light only)
|
|
24
|
+
- `--phases N`: Target phase count (light only)
|
|
25
|
+
- `--revise [instructions]`: Revise existing roadmap preserving completed phases (light only)
|
|
26
|
+
- `--review`: Read-only roadmap health assessment (light only)
|
|
27
|
+
- `--skip-research`: Skip Wave 1, jump to doc generation (full only)
|
|
28
|
+
- `--from-brainstorm SESSION-ID`: Import guidance-specification.md as seed
|
|
29
|
+
|
|
30
|
+
**Session**: `.workflow/.csv-wave/{YYYYMMDD}-roadmap[-full]-{slug}/`
|
|
31
|
+
**Output**: tasks.csv, results.csv, discoveries.ndjson, context.md, `.workflow/roadmap.md`
|
|
32
|
+
**Full mode additional**: Spec package in `.workflow/.spec/SPEC-{slug}-{date}/`
|
|
33
|
+
</context>
|
|
34
|
+
|
|
35
|
+
<csv_schema>
|
|
36
|
+
|
|
37
|
+
### tasks.csv -- Light Mode
|
|
38
|
+
|
|
39
|
+
```csv
|
|
40
|
+
id,title,description,analysis_focus,deps,context_from,wave,status,findings,error
|
|
41
|
+
"1","Scope Analysis","Identify features, MVP boundaries, must-have vs nice-to-have, size estimates.","scope","","","1","","",""
|
|
42
|
+
"2","Risk Analysis","Technical/project risks, unknowns, feasibility, risk levels, mitigations.","risk","","","1","","",""
|
|
43
|
+
"3","Dependency Analysis","Feature dependencies, ordering constraints, parallel-safe groups, external deps.","dependency","","","1","","",""
|
|
44
|
+
"4","Roadmap Assembly","Synthesize findings into roadmap.md: phases, milestones, success criteria.","","1;2;3","1;2;3","2","","",""
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### tasks.csv -- Full Mode
|
|
48
|
+
|
|
49
|
+
```csv
|
|
50
|
+
id,title,description,research_focus,doc_phase,deps,context_from,wave,status,findings,output_file,error
|
|
51
|
+
"1","Domain Research","Target users, market needs, existing solutions, terminology.","domain","","","","1","","","",""
|
|
52
|
+
"2","Competitive Analysis","Feature comparison, UX patterns, gaps, opportunities.","competitive","","","","1","","","",""
|
|
53
|
+
"3","Tech Stack Analysis","Languages, frameworks, databases, constraints, scalability.","tech_stack","","","","1","","","",""
|
|
54
|
+
"4","Document Chain","7-phase spec: Product Brief, PRD (REQ-*/NFR-*), Architecture (ADR-*), Data Model, API, UI Wireframes, Epic-to-Roadmap (EPIC-*). + glossary.json.","","1-7","1;2;3","1;2;3","2","","","",""
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Shared column semantics**:
|
|
58
|
+
- Input: id (unique string), title, description (detailed instructions), deps (semicolon-sep IDs), context_from (IDs whose findings needed), wave (1=analysis/research, 2=assembly/synthesis)
|
|
59
|
+
- Output: status (pending->completed/failed/skipped), findings (max 500 chars), error
|
|
60
|
+
- Light-only: analysis_focus (scope/risk/dependency)
|
|
61
|
+
- Full-only: research_focus (domain/competitive/tech_stack), doc_phase (1-7), output_file
|
|
62
|
+
|
|
63
|
+
Wave 1: 3 analysis/research rows (parallel). Wave 2: 1 assembly/synthesis row.
|
|
64
|
+
</csv_schema>
|
|
65
|
+
|
|
66
|
+
<invariants>
|
|
67
|
+
1. **Wave order sacred**: Never execute wave 2 before wave 1 completes
|
|
68
|
+
2. **CSV is source of truth**: Master tasks.csv holds all state
|
|
69
|
+
3. **Context propagation**: prev_context from master CSV, not memory
|
|
70
|
+
4. **Discovery board append-only**: Never modify/delete discoveries.ndjson
|
|
71
|
+
5. **Graceful degradation**: Wave 1 fails -> Wave 2 proceeds with seed input only
|
|
72
|
+
</invariants>
|
|
73
|
+
|
|
74
|
+
<state_machine>
|
|
75
|
+
|
|
76
|
+
<states>
|
|
77
|
+
S_PARSE -- 解析参数、检测 mode/operation PERSIST: --
|
|
78
|
+
S_INPUT -- 解析输入(text/@file/brainstorm) PERSIST: --
|
|
79
|
+
S_CSV_GEN -- 生成 tasks.csv PERSIST: tasks.csv
|
|
80
|
+
S_WAVE_1 -- Analysis/Research (parallel spawn) PERSIST: findings + tasks.csv
|
|
81
|
+
S_WAVE_2 -- Assembly/Synthesis (single agent spawn) PERSIST: roadmap.md [+ spec package]
|
|
82
|
+
S_SPEC_GEN -- Spec package generation (full mode only) PERSIST: .workflow/.spec/SPEC-*/
|
|
83
|
+
S_AGGREGATE -- 精炼、评估、输出 PERSIST: context.md + .workflow/roadmap.md
|
|
84
|
+
</states>
|
|
85
|
+
|
|
86
|
+
<transitions>
|
|
87
|
+
|
|
88
|
+
S_PARSE:
|
|
89
|
+
-> S_INPUT WHEN: create mode (default)
|
|
90
|
+
-> REVISE_FLOW WHEN: --revise (load roadmap.md, apply changes, preserve completed phases)
|
|
91
|
+
-> REVIEW_FLOW WHEN: --review (read-only health assessment)
|
|
92
|
+
|
|
93
|
+
S_INPUT:
|
|
94
|
+
-> S_CSV_GEN DO: parse requirement (text/@file), import brainstorm if --from-brainstorm, codebase detection, load specs
|
|
95
|
+
|
|
96
|
+
S_CSV_GEN:
|
|
97
|
+
-> S_WAVE_1 WHEN: normal pipeline DO: generate mode-specific CSV
|
|
98
|
+
-> S_WAVE_2 WHEN: --skip-research DO: generate wave 2 only
|
|
99
|
+
|
|
100
|
+
S_WAVE_1:
|
|
101
|
+
-> S_WAVE_2 DO: A_SPAWN_WAVE_1
|
|
102
|
+
|
|
103
|
+
S_WAVE_2:
|
|
104
|
+
-> S_SPEC_GEN WHEN: full mode DO: A_SPAWN_WAVE_2
|
|
105
|
+
-> S_AGGREGATE WHEN: light mode DO: A_SPAWN_WAVE_2
|
|
106
|
+
|
|
107
|
+
S_SPEC_GEN:
|
|
108
|
+
-> S_AGGREGATE DO: generate 7-phase spec package per spec-generate.md
|
|
109
|
+
|
|
110
|
+
S_AGGREGATE:
|
|
111
|
+
-> END DO: A_AGGREGATE_RESULTS
|
|
112
|
+
|
|
113
|
+
</transitions>
|
|
114
|
+
|
|
115
|
+
<actions>
|
|
116
|
+
|
|
117
|
+
### A_SPAWN_WAVE_1
|
|
118
|
+
|
|
119
|
+
Filter wave==1 -> write wave-1.csv -> `spawn_agents_on_csv`.
|
|
120
|
+
|
|
121
|
+
**Light mode agents**: scope analysis (feature inventory + priority), risk analysis (unknowns + mitigations), dependency analysis (dependency graph + critical path).
|
|
122
|
+
**Full mode agents**: domain research (users, market, solutions), competitive analysis (feature matrix, gaps), tech stack analysis (feasibility, constraints).
|
|
123
|
+
|
|
124
|
+
Merge results -> master tasks.csv.
|
|
125
|
+
|
|
126
|
+
### A_SPAWN_WAVE_2
|
|
127
|
+
|
|
128
|
+
Build prev_context from wave 1. Inject strategy + --phases constraint (light mode). Spawn.
|
|
129
|
+
|
|
130
|
+
**Light mode**: Assembly agent produces roadmap.md with phases (goal, depends-on, requirements, success criteria), milestones, scope decisions.
|
|
131
|
+
|
|
132
|
+
**Strategy selection** via uncertainty assessment (5 factors):
|
|
133
|
+
| Factor | Low | Medium | High |
|
|
134
|
+
|--------|-----|--------|------|
|
|
135
|
+
| Scope clarity | explicit | some ambiguity | vague/open-ended |
|
|
136
|
+
| Technical risk | proven stack | some unknowns | new technology |
|
|
137
|
+
| Dependency unknown | all mapped | some unclear | many external |
|
|
138
|
+
| Domain familiarity | expert | moderate | new domain |
|
|
139
|
+
| Requirement stability | locked | some flux | evolving |
|
|
140
|
+
|
|
141
|
+
>=3 high -> progressive, >=3 low -> direct, else -> ask (or auto if -y).
|
|
142
|
+
**Full mode**: Document chain agent produces 7-phase spec package + glossary.json.
|
|
143
|
+
|
|
144
|
+
### A_AGGREGATE_RESULTS
|
|
145
|
+
|
|
146
|
+
1. Export results.csv
|
|
147
|
+
2. Interactive refinement (max 3 rounds, skip if -y): Approve / Refine / Regenerate
|
|
148
|
+
3. **Full mode readiness** (4 dimensions, 25% each): Completeness, Consistency, Traceability, Depth. Gate: >=80% pass, 60-79% review with caveats, <60% auto-fix attempt
|
|
149
|
+
4. Generate context.md (light: summary + analysis findings + roadmap stats; full: research findings + doc chain status + readiness scores)
|
|
150
|
+
5. Write .workflow/roadmap.md (both modes)
|
|
151
|
+
6. Write spec package to .workflow/.spec/SPEC-{slug}-{date}/ (full mode):
|
|
152
|
+
```
|
|
153
|
+
SPEC-{slug}-{date}/
|
|
154
|
+
+-- spec-config.json, product-brief.md, glossary.json, spec-summary.md
|
|
155
|
+
+-- requirements/ (_index.md, REQ-NNN-{slug}.md, NFR-{type}-NNN-{slug}.md)
|
|
156
|
+
+-- architecture/ (_index.md, ADR-NNN-{slug}.md)
|
|
157
|
+
+-- epics/ (_index.md, EPIC-NNN-{slug}.md)
|
|
158
|
+
+-- readiness-report.md
|
|
159
|
+
```
|
|
160
|
+
7. Update state.json milestones + current_milestone
|
|
161
|
+
8. Next-step routing: need analysis -> maestro-analyze; ready to plan -> maestro-plan; UI first -> maestro-ui-design; full mode setup -> maestro-init
|
|
162
|
+
|
|
163
|
+
</actions>
|
|
164
|
+
|
|
165
|
+
</state_machine>
|
|
166
|
+
|
|
167
|
+
<discovery_board>
|
|
168
|
+
|
|
169
|
+
| Type | Dedup Key | Data |
|
|
170
|
+
|------|-----------|------|
|
|
171
|
+
| scope_boundary | data.feature | {feature, inclusion, rationale} |
|
|
172
|
+
| risk_factor | data.name | {name, severity, probability, mitigation} |
|
|
173
|
+
| dependency_constraint | data.from+data.to | {from, to, type, strength} |
|
|
174
|
+
| domain_term | data.term | {term, definition, aliases} |
|
|
175
|
+
| competitor | data.name | {name, features[], gaps[]} |
|
|
176
|
+
| tech_constraint | data.name | {name, type, severity, mitigation} |
|
|
177
|
+
|
|
178
|
+
Protocol: read before analysis, append-only, dedup by type+key.
|
|
179
|
+
</discovery_board>
|
|
180
|
+
|
|
181
|
+
<error_codes>
|
|
182
|
+
| Condition | Recovery |
|
|
183
|
+
|-----------|----------|
|
|
184
|
+
| No requirement text provided | Abort: "Requirement text or @file required" |
|
|
185
|
+
| Brainstorm session not found | Abort with available sessions list |
|
|
186
|
+
| roadmap.md not found (--revise/--review) | Run maestro-roadmap first |
|
|
187
|
+
| All Wave 1 agents failed | Wave 2 in degraded mode (seed only) |
|
|
188
|
+
| Wave 2 agent failed (light) | Abort: "Roadmap generation failed" |
|
|
189
|
+
| Wave 2 agent failed (full) | Export partial output, log issues |
|
|
190
|
+
| Readiness < 60% (full) | Log issues, proceed with available output |
|
|
191
|
+
</error_codes>
|
|
192
|
+
|
|
193
|
+
<success_criteria>
|
|
194
|
+
- [ ] Wave 1 agents completed (analysis or research)
|
|
195
|
+
- [ ] Wave 2 produced output (roadmap.md + optional spec package)
|
|
196
|
+
- [ ] .workflow/roadmap.md written, state.json updated
|
|
197
|
+
- [ ] context.md generated
|
|
198
|
+
- [ ] Light: uncertainty assessed, strategy selected, phases with milestones + success criteria
|
|
199
|
+
- [ ] Full: spec package in .workflow/.spec/, readiness scored on 4 dimensions
|
|
200
|
+
</success_criteria>
|
|
201
|
+
</output>
|