maestro-flow 0.3.10 → 0.3.11

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 (184) hide show
  1. package/.claude/agents/workflow-collab-planner.md +1 -1
  2. package/.claude/agents/workflow-executor.md +1 -1
  3. package/.claude/agents/workflow-plan-checker.md +1 -1
  4. package/.claude/agents/workflow-planner.md +1 -1
  5. package/.claude/commands/learn-decompose.md +176 -176
  6. package/.claude/commands/learn-follow.md +167 -167
  7. package/.claude/commands/learn-retro.md +1 -1
  8. package/.claude/commands/maestro-coordinate.md +1 -3
  9. package/.claude/commands/manage-harvest.md +131 -131
  10. package/.claude/commands/manage-issue.md +2 -2
  11. package/.claude/commands/spec-add.md +67 -56
  12. package/.claude/commands/spec-load.md +66 -64
  13. package/.claude/commands/spec-setup.md +5 -9
  14. package/.codex/skills/learn-decompose/SKILL.md +119 -0
  15. package/.codex/skills/learn-follow/SKILL.md +83 -0
  16. package/.codex/skills/learn-investigate/SKILL.md +83 -0
  17. package/.codex/skills/learn-retro/SKILL.md +83 -0
  18. package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
  19. package/.codex/skills/maestro/SKILL.md +151 -279
  20. package/.codex/skills/maestro-analyze/SKILL.md +59 -71
  21. package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
  22. package/.codex/skills/maestro-chain/SKILL.md +95 -110
  23. package/.codex/skills/maestro-coordinate/SKILL.md +68 -234
  24. package/.codex/skills/maestro-execute/SKILL.md +435 -446
  25. package/.codex/skills/maestro-fork/SKILL.md +68 -0
  26. package/.codex/skills/maestro-init/SKILL.md +171 -167
  27. package/.codex/skills/maestro-learn/SKILL.md +80 -0
  28. package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
  29. package/.codex/skills/maestro-merge/SKILL.md +62 -0
  30. package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
  31. package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
  32. package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
  33. package/.codex/skills/maestro-overlay/SKILL.md +188 -185
  34. package/.codex/skills/maestro-plan/SKILL.md +58 -69
  35. package/.codex/skills/maestro-quick/SKILL.md +26 -23
  36. package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
  37. package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
  38. package/.codex/skills/maestro-ui-design/SKILL.md +34 -31
  39. package/.codex/skills/maestro-verify/SKILL.md +556 -566
  40. package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
  41. package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
  42. package/.codex/skills/manage-harvest/SKILL.md +82 -0
  43. package/.codex/skills/manage-issue/SKILL.md +80 -65
  44. package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
  45. package/.codex/skills/manage-learn/SKILL.md +190 -186
  46. package/.codex/skills/manage-memory/SKILL.md +95 -72
  47. package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
  48. package/.codex/skills/manage-status/SKILL.md +102 -89
  49. package/.codex/skills/quality-business-test/SKILL.md +228 -223
  50. package/.codex/skills/quality-debug/SKILL.md +54 -66
  51. package/.codex/skills/quality-integration-test/SKILL.md +532 -544
  52. package/.codex/skills/quality-refactor/SKILL.md +197 -191
  53. package/.codex/skills/quality-retrospective/SKILL.md +512 -505
  54. package/.codex/skills/quality-review/SKILL.md +93 -105
  55. package/.codex/skills/quality-sync/SKILL.md +101 -89
  56. package/.codex/skills/quality-test/SKILL.md +202 -198
  57. package/.codex/skills/quality-test-gen/SKILL.md +93 -104
  58. package/.codex/skills/spec-add/SKILL.md +58 -39
  59. package/.codex/skills/spec-load/SKILL.md +45 -40
  60. package/.codex/skills/spec-map/SKILL.md +180 -182
  61. package/.codex/skills/spec-setup/SKILL.md +94 -76
  62. package/.codex/skills/team-coordinate/SKILL.md +346 -357
  63. package/.codex/skills/team-executor/SKILL.md +70 -112
  64. package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
  65. package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
  66. package/.codex/skills/team-review/SKILL.md +232 -225
  67. package/.codex/skills/team-tech-debt/SKILL.md +78 -100
  68. package/.codex/skills/team-testing/SKILL.md +242 -235
  69. package/.codex/skills/wiki-connect/SKILL.md +75 -0
  70. package/.codex/skills/wiki-digest/SKILL.md +87 -0
  71. package/README.md +7 -4
  72. package/README.zh-CN.md +7 -4
  73. package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
  74. package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
  75. package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
  76. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
  77. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
  78. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  79. package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
  80. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  81. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +21 -0
  82. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  83. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
  84. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
  85. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  86. package/dashboard/dist-server/src/hooks/constants.d.ts +2 -0
  87. package/dashboard/dist-server/src/hooks/constants.js +2 -0
  88. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  89. package/dist/src/commands/collab.js +4 -4
  90. package/dist/src/commands/collab.js.map +1 -1
  91. package/dist/src/commands/hooks.d.ts.map +1 -1
  92. package/dist/src/commands/hooks.js +66 -1
  93. package/dist/src/commands/hooks.js.map +1 -1
  94. package/dist/src/commands/spec.d.ts.map +1 -1
  95. package/dist/src/commands/spec.js +7 -2
  96. package/dist/src/commands/spec.js.map +1 -1
  97. package/dist/src/hooks/constants.d.ts +2 -0
  98. package/dist/src/hooks/constants.d.ts.map +1 -1
  99. package/dist/src/hooks/constants.js +2 -0
  100. package/dist/src/hooks/constants.js.map +1 -1
  101. package/dist/src/hooks/guards/index.d.ts +1 -0
  102. package/dist/src/hooks/guards/index.d.ts.map +1 -1
  103. package/dist/src/hooks/guards/index.js +1 -0
  104. package/dist/src/hooks/guards/index.js.map +1 -1
  105. package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
  106. package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
  107. package/dist/src/hooks/guards/spec-validator.js +66 -0
  108. package/dist/src/hooks/guards/spec-validator.js.map +1 -0
  109. package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
  110. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
  111. package/dist/src/hooks/keyword-spec-injector.js +96 -0
  112. package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
  113. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
  114. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
  115. package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
  116. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  117. package/dist/src/hooks/spec-bridge.d.ts +40 -0
  118. package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
  119. package/dist/src/hooks/spec-bridge.js +97 -0
  120. package/dist/src/hooks/spec-bridge.js.map +1 -0
  121. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  122. package/dist/src/hooks/spec-injector.js +18 -12
  123. package/dist/src/hooks/spec-injector.js.map +1 -1
  124. package/dist/src/team/phase-orchestrator.d.ts +52 -0
  125. package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
  126. package/dist/src/team/phase-orchestrator.js +165 -0
  127. package/dist/src/team/phase-orchestrator.js.map +1 -0
  128. package/dist/src/team/phase-types.d.ts +51 -0
  129. package/dist/src/team/phase-types.d.ts.map +1 -0
  130. package/dist/src/team/phase-types.js +41 -0
  131. package/dist/src/team/phase-types.js.map +1 -0
  132. package/dist/src/tools/index.d.ts.map +1 -1
  133. package/dist/src/tools/index.js +6 -0
  134. package/dist/src/tools/index.js.map +1 -1
  135. package/dist/src/tools/spec-entry-parser.d.ts +56 -0
  136. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
  137. package/dist/src/tools/spec-entry-parser.js +196 -0
  138. package/dist/src/tools/spec-entry-parser.js.map +1 -0
  139. package/dist/src/tools/spec-init.d.ts.map +1 -1
  140. package/dist/src/tools/spec-init.js +66 -92
  141. package/dist/src/tools/spec-init.js.map +1 -1
  142. package/dist/src/tools/spec-keyword-index.d.ts +30 -0
  143. package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
  144. package/dist/src/tools/spec-keyword-index.js +101 -0
  145. package/dist/src/tools/spec-keyword-index.js.map +1 -0
  146. package/dist/src/tools/spec-loader.d.ts +3 -3
  147. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  148. package/dist/src/tools/spec-loader.js +49 -23
  149. package/dist/src/tools/spec-loader.js.map +1 -1
  150. package/dist/src/tools/team-agents.d.ts +27 -0
  151. package/dist/src/tools/team-agents.d.ts.map +1 -0
  152. package/dist/src/tools/team-agents.js +362 -0
  153. package/dist/src/tools/team-agents.js.map +1 -0
  154. package/dist/src/tools/team-mailbox.d.ts +40 -0
  155. package/dist/src/tools/team-mailbox.d.ts.map +1 -0
  156. package/dist/src/tools/team-mailbox.js +384 -0
  157. package/dist/src/tools/team-mailbox.js.map +1 -0
  158. package/dist/src/tools/team-msg.d.ts +17 -8
  159. package/dist/src/tools/team-msg.d.ts.map +1 -1
  160. package/dist/src/tools/team-msg.js +110 -13
  161. package/dist/src/tools/team-msg.js.map +1 -1
  162. package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
  163. package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
  164. package/dist/src/tools/team-tasks-mcp.js +408 -0
  165. package/dist/src/tools/team-tasks-mcp.js.map +1 -0
  166. package/package.json +2 -1
  167. package/workflows/analyze.md +816 -816
  168. package/workflows/brainstorm.md +471 -471
  169. package/workflows/codebase-rebuild.md +332 -332
  170. package/workflows/codebase-refresh.md +240 -240
  171. package/workflows/execute.md +1 -1
  172. package/workflows/harvest.md +420 -420
  173. package/workflows/integration-test.md +343 -343
  174. package/workflows/issue-discover.md +414 -414
  175. package/workflows/map.md +111 -111
  176. package/workflows/milestone-complete.md +176 -176
  177. package/workflows/plan.md +1 -1
  178. package/workflows/quick.md +497 -497
  179. package/workflows/refactor.md +300 -300
  180. package/workflows/roadmap.md +335 -335
  181. package/workflows/spec-generate.md +640 -640
  182. package/workflows/specs-add.md +46 -81
  183. package/workflows/specs-load.md +15 -17
  184. package/workflows/specs-setup.md +40 -161
@@ -1,225 +1,232 @@
1
- ---
2
- name: team-review
3
- description: "Unified team skill for code review. 3-role pipeline: scanner, reviewer, fixer. Triggers on team-review."
4
- allowed-tools: spawn_agent(*), wait_agent(*), send_message(*), followup_task(*), close_agent(*), list_agents(*), report_agent_job_result(*), request_user_input(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*), mcp__maestro-tools__team_msg(*)
5
- ---
6
-
7
- # Team Review
8
-
9
- Orchestrate multi-agent code review: scanner -> reviewer -> fixer. Toolchain + LLM scan, deep analysis with root cause enrichment, and automated fix with rollback-on-failure.
10
-
11
- ## Architecture
12
-
13
- ```
14
- Skill(skill="team-review", args="task description")
15
- |
16
- SKILL.md (this file) = Router
17
- |
18
- +--------------+--------------+
19
- | |
20
- no --role flag --role <name>
21
- | |
22
- Coordinator Worker
23
- roles/coordinator/role.md roles/<name>/role.md
24
- |
25
- +-- analyze -> dispatch -> spawn workers -> STOP
26
- |
27
- +-------+-------+-------+
28
- v v v
29
- [scan] [review] [fix]
30
- team-worker agents, each loads roles/<role>/role.md
31
- ```
32
-
33
- ## Role Registry
34
-
35
- | Role | Path | Prefix | Inner Loop |
36
- |------|------|--------|------------|
37
- | coordinator | [roles/coordinator/role.md](roles/coordinator/role.md) | | |
38
- | scanner | [roles/scanner/role.md](roles/scanner/role.md) | SCAN-* | false |
39
- | reviewer | [roles/reviewer/role.md](roles/reviewer/role.md) | REV-* | false |
40
- | fixer | [roles/fixer/role.md](roles/fixer/role.md) | FIX-* | true |
41
-
42
- ## Role Router
43
-
44
- Parse `$ARGUMENTS`:
45
- - Has `--role <name>` -> Read `roles/<name>/role.md`, execute Phase 2-4
46
- - No `--role` -> `roles/coordinator/role.md`, execute entry router
47
-
48
- ## Delegation Lock
49
-
50
- **Coordinator is a PURE ORCHESTRATOR. It coordinates, it does NOT do.**
51
-
52
- Before calling ANY tool, apply this check:
53
-
54
- | Tool Call | Verdict | Reason |
55
- |-----------|---------|--------|
56
- | `spawn_agent`, `wait_agent`, `close_agent`, `send_message`, `followup_task` | ALLOWED | Orchestration |
57
- | `list_agents` | ALLOWED | Agent health check |
58
- | `request_user_input` | ALLOWED | User interaction |
59
- | `mcp__maestro-tools__team_msg` | ALLOWED | Message bus |
60
- | `Read/Write` on `.workflow/.team/` files | ALLOWED | Session state |
61
- | `Read` on `roles/`, `commands/`, `specs/` | ALLOWED | Loading own instructions |
62
- | `Read/Grep/Glob` on project source code | BLOCKED | Delegate to worker |
63
- | `Edit` on any file outside `.workflow/` | BLOCKED | Delegate to worker |
64
- | `Bash("maestro delegate ...")` | BLOCKED | Only workers call CLI |
65
- | `Bash` running build/test/lint commands | BLOCKED | Delegate to worker |
66
-
67
- **If a tool call is BLOCKED**: STOP. Create a task, spawn a worker.
68
-
69
- **No exceptions for "simple" tasks.** Even a single-file read-and-report MUST go through spawn_agent.
70
-
71
- ---
72
-
73
- ## Shared Constants
74
-
75
- - **Session prefix**: `RV`
76
- - **Session path**: `.workflow/.team/RV-<slug>-<date>/`
77
- - **Team name**: `review`
78
- - **CLI tools**: `maestro delegate --mode analysis` (read-only), `maestro delegate --mode write` (modifications)
79
- - **Message bus**: `mcp__maestro-tools__team_msg(session_id=<session-id>, ...)`
80
-
81
- ## Worker Spawn Template
82
-
83
- Coordinator spawns workers using this template:
84
-
85
- ```
86
- spawn_agent({
87
- agent_type: "team_worker",
88
- task_name: "<task-id>",
89
- fork_turns: "none",
90
- message: `## Role Assignment
91
- role: <role>
92
- role_spec: <skill_root>/roles/<role>/role.md
93
- session: <session-folder>
94
- session_id: <session-id>
95
- requirement: <task-description>
96
- inner_loop: <true|false>
97
-
98
- Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
99
-
100
- ## Task Context
101
- task_id: <task-id>
102
- title: <task-title>
103
- description: <task-description>
104
- pipeline_phase: <pipeline-phase>
105
-
106
- ## Upstream Context
107
- <prev_context>`
108
- })
109
- ```
110
-
111
- After spawning, use `wait_agent({ timeout_ms: 1800000 })` to collect results (30 min). If `result.timed_out`, send STATUS_CHECK via followup_task (wait 3 min), then FINALIZE with interrupt (wait 3 min), then mark timed_out and close agents. Use `close_agent({ target })` each worker.
112
-
113
-
114
- ### Model Selection Guide
115
-
116
- | Role | model | reasoning_effort | Rationale |
117
- |------|-------|-------------------|-----------|
118
- | Scanner (SCAN-*) | (default) | medium | Toolchain scanning + pattern matching, less reasoning |
119
- | Reviewer (REV-*) | (default) | high | Deep root cause analysis requires full reasoning |
120
- | Fixer (FIX-*) | (default) | high | Code modification needs precision |
121
-
122
- Override model/reasoning_effort in spawn_agent when cost optimization is needed:
123
- ```
124
- spawn_agent({
125
- agent_type: "team_worker",
126
- task_name: "<task-id>",
127
- fork_turns: "none",
128
- model: "<model-override>",
129
- reasoning_effort: "<effort-level>",
130
- message: "..."
131
- })
132
- ```
133
-
134
- ## User Commands
135
-
136
- | Command | Action |
137
- |---------|--------|
138
- | `check` / `status` | View pipeline status graph |
139
- | `resume` / `continue` | Advance to next step |
140
- | `--full` | Enable scan + review + fix pipeline |
141
- | `--fix` | Fix-only mode (skip scan/review) |
142
- | `-q` / `--quick` | Quick scan only |
143
- | `--dimensions=sec,cor,prf,mnt` | Custom dimensions |
144
- | `-y` / `--yes` | Skip confirmations |
145
-
146
- ## v4 Agent Coordination
147
-
148
- ### Message Semantics
149
-
150
- | Intent | API | Example |
151
- |--------|-----|---------|
152
- | Send scan findings to running reviewer | `send_message` | Queue scan results to REV-* as supplementary context |
153
- | Not used in this skill | `followup_task` | No resident agents -- sequential 3-stage pipeline |
154
- | Check running agents | `list_agents` | Verify agent health during resume |
155
-
156
- ### Pipeline Pattern
157
-
158
- This is a **sequential 3-stage pipeline** (scan -> review -> fix). No parallel phases. Each stage completes before the next starts. The coordinator may skip stages (0 findings -> skip review+fix; user declines fix -> skip fix).
159
-
160
- ### Agent Health Check
161
-
162
- Use `list_agents({})` in handleResume and handleComplete:
163
-
164
- ```
165
- // Reconcile session state with actual running agents
166
- const running = list_agents({})
167
- // Compare with tasks.json active_agents
168
- // Reset orphaned tasks (in_progress but agent gone) to pending
169
- ```
170
-
171
- ### Named Agent Targeting
172
-
173
- Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
174
- - `send_message({ target: "REV-001", message: "..." })` -- queue scan findings to running reviewer
175
- - `close_agent({ target: "SCAN-001" })` -- cleanup by name after completion
176
-
177
- ## Completion Action
178
-
179
- When pipeline completes, coordinator presents:
180
-
181
- ```
182
- request_user_input({
183
- questions: [{
184
- question: "Review pipeline complete. What would you like to do?",
185
- header: "Completion",
186
- multiSelect: false,
187
- options: [
188
- { label: "Archive & Clean (Recommended)", description: "Archive session, clean up" },
189
- { label: "Keep Active", description: "Keep session for follow-up work" },
190
- { label: "Export Results", description: "Export deliverables to target directory" }
191
- ]
192
- }]
193
- })
194
- ```
195
-
196
- ## Session Directory
197
-
198
- ```
199
- .workflow/.team/RV-<slug>-<date>/
200
- ├── .msg/messages.jsonl # Team message bus
201
- ├── .msg/meta.json # Session state + cross-role state
202
- ├── wisdom/ # Cross-task knowledge
203
- ├── scan/ # Scanner output
204
- ├── review/ # Reviewer output
205
- └── fix/ # Fixer output
206
- ```
207
-
208
- ## Specs Reference
209
-
210
- - [specs/pipelines.md](specs/pipelines.md) — Pipeline definitions and task registry
211
- - [specs/dimensions.md](specs/dimensions.md) — Review dimension definitions (SEC/COR/PRF/MNT)
212
- - [specs/finding-schema.json](specs/finding-schema.json) — Finding data schema
213
- - [specs/team-config.json](specs/team-config.json) — Team configuration
214
-
215
- ## Error Handling
216
-
217
- | Scenario | Resolution |
218
- |----------|------------|
219
- | Unknown --role value | Error with available role list |
220
- | Role not found | Error with expected path (roles/<name>/role.md) |
221
- | CLI tool fails | Worker fallback to direct implementation |
222
- | Scanner finds 0 findings | Report clean, skip review + fix |
223
- | User declines fix | Delete FIX tasks, complete with review-only results |
224
- | Fast-advance conflict | Coordinator reconciles on next callback |
225
- | Completion action fails | Default to Keep Active |
1
+ ---
2
+ name: team-review
3
+ description: "Unified team skill for code review. 3-role pipeline: scanner, reviewer, fixer. Triggers on team-review."
4
+ allowed-tools: spawn_agent(*), wait_agent(*), send_message(*), followup_task(*), close_agent(*), list_agents(*), report_agent_job_result(*), request_user_input(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*), mcp__maestro-tools__team_msg(*)
5
+ ---
6
+
7
+ <purpose>
8
+ Orchestrate multi-agent code review: scanner -> reviewer -> fixer. Toolchain + LLM scan, deep analysis with root cause enrichment, and automated fix with rollback-on-failure.
9
+
10
+ ```
11
+ Skill(skill="team-review", args="task description")
12
+ |
13
+ SKILL.md (this file) = Router
14
+ |
15
+ +--------------+--------------+
16
+ | |
17
+ no --role flag --role <name>
18
+ | |
19
+ Coordinator Worker
20
+ roles/coordinator/role.md roles/<name>/role.md
21
+ |
22
+ +-- analyze -> dispatch -> spawn workers -> STOP
23
+ |
24
+ +-------+-------+-------+
25
+ v v v
26
+ [scan] [review] [fix]
27
+ team-worker agents, each loads roles/<role>/role.md
28
+ ```
29
+ </purpose>
30
+
31
+ <context>
32
+ ### Role Registry
33
+
34
+ | Role | Path | Prefix | Inner Loop |
35
+ |------|------|--------|------------|
36
+ | coordinator | [roles/coordinator/role.md](roles/coordinator/role.md) | -- | -- |
37
+ | scanner | [roles/scanner/role.md](roles/scanner/role.md) | SCAN-* | false |
38
+ | reviewer | [roles/reviewer/role.md](roles/reviewer/role.md) | REV-* | false |
39
+ | fixer | [roles/fixer/role.md](roles/fixer/role.md) | FIX-* | true |
40
+
41
+ ### Role Router
42
+
43
+ Parse `$ARGUMENTS`:
44
+ - Has `--role <name>` -> Read `roles/<name>/role.md`, execute Phase 2-4
45
+ - No `--role` -> `roles/coordinator/role.md`, execute entry router
46
+
47
+ ### Delegation Lock
48
+
49
+ **Coordinator is a PURE ORCHESTRATOR. It coordinates, it does NOT do.**
50
+
51
+ Before calling ANY tool, apply this check:
52
+
53
+ | Tool Call | Verdict | Reason |
54
+ |-----------|---------|--------|
55
+ | `spawn_agent`, `wait_agent`, `close_agent`, `send_message`, `followup_task` | ALLOWED | Orchestration |
56
+ | `list_agents` | ALLOWED | Agent health check |
57
+ | `request_user_input` | ALLOWED | User interaction |
58
+ | `mcp__maestro-tools__team_msg` | ALLOWED | Message bus |
59
+ | `Read/Write` on `.workflow/.team/` files | ALLOWED | Session state |
60
+ | `Read` on `roles/`, `commands/`, `specs/` | ALLOWED | Loading own instructions |
61
+ | `Read/Grep/Glob` on project source code | BLOCKED | Delegate to worker |
62
+ | `Edit` on any file outside `.workflow/` | BLOCKED | Delegate to worker |
63
+ | `Bash("maestro delegate ...")` | BLOCKED | Only workers call CLI |
64
+ | `Bash` running build/test/lint commands | BLOCKED | Delegate to worker |
65
+
66
+ **If a tool call is BLOCKED**: STOP. Create a task, spawn a worker.
67
+
68
+ **No exceptions for "simple" tasks.** Even a single-file read-and-report MUST go through spawn_agent.
69
+
70
+ ### Shared Constants
71
+
72
+ - **Session prefix**: `RV`
73
+ - **Session path**: `.workflow/.team/RV-<slug>-<date>/`
74
+ - **Team name**: `review`
75
+ - **CLI tools**: `maestro delegate --mode analysis` (read-only), `maestro delegate --mode write` (modifications)
76
+ - **Message bus**: `mcp__maestro-tools__team_msg(session_id=<session-id>, ...)`
77
+
78
+ ### Worker Spawn Template
79
+
80
+ Coordinator spawns workers using this template:
81
+
82
+ ```
83
+ spawn_agent({
84
+ agent_type: "team_worker",
85
+ task_name: "<task-id>",
86
+ fork_turns: "none",
87
+ message: `## Role Assignment
88
+ role: <role>
89
+ role_spec: <skill_root>/roles/<role>/role.md
90
+ session: <session-folder>
91
+ session_id: <session-id>
92
+ requirement: <task-description>
93
+ inner_loop: <true|false>
94
+
95
+ Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
96
+
97
+ ## Task Context
98
+ task_id: <task-id>
99
+ title: <task-title>
100
+ description: <task-description>
101
+ pipeline_phase: <pipeline-phase>
102
+
103
+ ## Upstream Context
104
+ <prev_context>`
105
+ })
106
+ ```
107
+
108
+ After spawning, use `wait_agent({ timeout_ms: 1800000 })` to collect results (30 min). If `result.timed_out`, send STATUS_CHECK via followup_task (wait 3 min), then FINALIZE with interrupt (wait 3 min), then mark timed_out and close agents. Use `close_agent({ target })` each worker.
109
+
110
+ ### Model Selection Guide
111
+
112
+ | Role | model | reasoning_effort | Rationale |
113
+ |------|-------|-------------------|-----------|
114
+ | Scanner (SCAN-*) | (default) | medium | Toolchain scanning + pattern matching, less reasoning |
115
+ | Reviewer (REV-*) | (default) | high | Deep root cause analysis requires full reasoning |
116
+ | Fixer (FIX-*) | (default) | high | Code modification needs precision |
117
+
118
+ Override model/reasoning_effort in spawn_agent when cost optimization is needed:
119
+ ```
120
+ spawn_agent({
121
+ agent_type: "team_worker",
122
+ task_name: "<task-id>",
123
+ fork_turns: "none",
124
+ model: "<model-override>",
125
+ reasoning_effort: "<effort-level>",
126
+ message: "..."
127
+ })
128
+ ```
129
+
130
+ ### User Commands
131
+
132
+ | Command | Action |
133
+ |---------|--------|
134
+ | `check` / `status` | View pipeline status graph |
135
+ | `resume` / `continue` | Advance to next step |
136
+ | `--full` | Enable scan + review + fix pipeline |
137
+ | `--fix` | Fix-only mode (skip scan/review) |
138
+ | `-q` / `--quick` | Quick scan only |
139
+ | `--dimensions=sec,cor,prf,mnt` | Custom dimensions |
140
+ | `-y` / `--yes` | Skip confirmations |
141
+
142
+ ### v4 Agent Coordination
143
+
144
+ #### Message Semantics
145
+
146
+ | Intent | API | Example |
147
+ |--------|-----|---------|
148
+ | Send scan findings to running reviewer | `send_message` | Queue scan results to REV-* as supplementary context |
149
+ | Not used in this skill | `followup_task` | No resident agents -- sequential 3-stage pipeline |
150
+ | Check running agents | `list_agents` | Verify agent health during resume |
151
+
152
+ #### Pipeline Pattern
153
+
154
+ This is a **sequential 3-stage pipeline** (scan -> review -> fix). No parallel phases. Each stage completes before the next starts. The coordinator may skip stages (0 findings -> skip review+fix; user declines fix -> skip fix).
155
+
156
+ #### Agent Health Check
157
+
158
+ Use `list_agents({})` in handleResume and handleComplete:
159
+
160
+ ```
161
+ // Reconcile session state with actual running agents
162
+ const running = list_agents({})
163
+ // Compare with tasks.json active_agents
164
+ // Reset orphaned tasks (in_progress but agent gone) to pending
165
+ ```
166
+
167
+ #### Named Agent Targeting
168
+
169
+ Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
170
+ - `send_message({ target: "REV-001", message: "..." })` -- queue scan findings to running reviewer
171
+ - `close_agent({ target: "SCAN-001" })` -- cleanup by name after completion
172
+
173
+ ### Completion Action
174
+
175
+ When pipeline completes, coordinator presents:
176
+
177
+ ```
178
+ request_user_input({
179
+ questions: [{
180
+ question: "Review pipeline complete. What would you like to do?",
181
+ header: "Completion",
182
+ multiSelect: false,
183
+ options: [
184
+ { label: "Archive & Clean (Recommended)", description: "Archive session, clean up" },
185
+ { label: "Keep Active", description: "Keep session for follow-up work" },
186
+ { label: "Export Results", description: "Export deliverables to target directory" }
187
+ ]
188
+ }]
189
+ })
190
+ ```
191
+
192
+ ### Session Directory
193
+
194
+ ```
195
+ .workflow/.team/RV-<slug>-<date>/
196
+ +-- .msg/messages.jsonl # Team message bus
197
+ +-- .msg/meta.json # Session state + cross-role state
198
+ +-- wisdom/ # Cross-task knowledge
199
+ +-- scan/ # Scanner output
200
+ +-- review/ # Reviewer output
201
+ +-- fix/ # Fixer output
202
+ ```
203
+
204
+ ### Specs Reference
205
+
206
+ - [specs/pipelines.md](specs/pipelines.md) -- Pipeline definitions and task registry
207
+ - [specs/dimensions.md](specs/dimensions.md) -- Review dimension definitions (SEC/COR/PRF/MNT)
208
+ - [specs/finding-schema.json](specs/finding-schema.json) -- Finding data schema
209
+ - [specs/team-config.json](specs/team-config.json) -- Team configuration
210
+ </context>
211
+
212
+ <error_codes>
213
+
214
+ | Scenario | Resolution |
215
+ |----------|------------|
216
+ | Unknown --role value | Error with available role list |
217
+ | Role not found | Error with expected path (roles/<name>/role.md) |
218
+ | CLI tool fails | Worker fallback to direct implementation |
219
+ | Scanner finds 0 findings | Report clean, skip review + fix |
220
+ | User declines fix | Delete FIX tasks, complete with review-only results |
221
+ | Fast-advance conflict | Coordinator reconciles on next callback |
222
+ | Completion action fails | Default to Keep Active |
223
+ </error_codes>
224
+
225
+ <success_criteria>
226
+ - [ ] Role router correctly dispatches to coordinator or worker based on --role flag
227
+ - [ ] Sequential pipeline: scan -> review -> fix executed in order
228
+ - [ ] Scanner findings passed as upstream context to reviewer
229
+ - [ ] Fix stage skipped when scanner finds 0 findings or user declines
230
+ - [ ] Session state persisted after each pipeline stage
231
+ - [ ] Completion action presented and handled correctly
232
+ </success_criteria>