maestro-flow 0.3.9 → 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 (281) 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-analyze.md +46 -3
  9. package/.claude/commands/maestro-coordinate.md +1 -3
  10. package/.claude/commands/maestro-execute.md +14 -0
  11. package/.claude/commands/maestro-plan.md +16 -0
  12. package/.claude/commands/manage-harvest.md +131 -131
  13. package/.claude/commands/manage-issue-discover.md +2 -2
  14. package/.claude/commands/manage-issue.md +5 -5
  15. package/.claude/commands/spec-add.md +67 -56
  16. package/.claude/commands/spec-load.md +66 -64
  17. package/.claude/commands/spec-setup.md +5 -9
  18. package/.codex/skills/learn-decompose/SKILL.md +119 -0
  19. package/.codex/skills/learn-follow/SKILL.md +83 -0
  20. package/.codex/skills/learn-investigate/SKILL.md +83 -0
  21. package/.codex/skills/learn-retro/SKILL.md +83 -0
  22. package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
  23. package/.codex/skills/maestro/SKILL.md +335 -0
  24. package/.codex/skills/maestro-analyze/SKILL.md +84 -75
  25. package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
  26. package/.codex/skills/maestro-chain/SKILL.md +233 -0
  27. package/.codex/skills/maestro-coordinate/SKILL.md +167 -278
  28. package/.codex/skills/maestro-execute/SKILL.md +435 -438
  29. package/.codex/skills/maestro-fork/SKILL.md +68 -0
  30. package/.codex/skills/maestro-init/SKILL.md +171 -167
  31. package/.codex/skills/maestro-learn/SKILL.md +80 -0
  32. package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
  33. package/.codex/skills/maestro-merge/SKILL.md +62 -0
  34. package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
  35. package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
  36. package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
  37. package/.codex/skills/maestro-overlay/SKILL.md +188 -185
  38. package/.codex/skills/maestro-plan/SKILL.md +66 -69
  39. package/.codex/skills/maestro-quick/SKILL.md +26 -23
  40. package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
  41. package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
  42. package/.codex/skills/maestro-ui-design/SKILL.md +34 -31
  43. package/.codex/skills/maestro-verify/SKILL.md +556 -566
  44. package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
  45. package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
  46. package/.codex/skills/manage-harvest/SKILL.md +82 -0
  47. package/.codex/skills/manage-issue/SKILL.md +80 -65
  48. package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
  49. package/.codex/skills/manage-learn/SKILL.md +190 -186
  50. package/.codex/skills/manage-memory/SKILL.md +95 -72
  51. package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
  52. package/.codex/skills/manage-status/SKILL.md +102 -89
  53. package/.codex/skills/quality-business-test/SKILL.md +228 -223
  54. package/.codex/skills/quality-debug/SKILL.md +54 -66
  55. package/.codex/skills/quality-integration-test/SKILL.md +532 -544
  56. package/.codex/skills/quality-refactor/SKILL.md +197 -191
  57. package/.codex/skills/quality-retrospective/SKILL.md +512 -505
  58. package/.codex/skills/quality-review/SKILL.md +93 -105
  59. package/.codex/skills/quality-sync/SKILL.md +101 -89
  60. package/.codex/skills/quality-test/SKILL.md +202 -198
  61. package/.codex/skills/quality-test-gen/SKILL.md +93 -104
  62. package/.codex/skills/spec-add/SKILL.md +58 -39
  63. package/.codex/skills/spec-load/SKILL.md +45 -40
  64. package/.codex/skills/spec-map/SKILL.md +180 -182
  65. package/.codex/skills/spec-setup/SKILL.md +94 -76
  66. package/.codex/skills/team-coordinate/SKILL.md +346 -357
  67. package/.codex/skills/team-executor/SKILL.md +70 -112
  68. package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
  69. package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
  70. package/.codex/skills/team-review/SKILL.md +232 -225
  71. package/.codex/skills/team-tech-debt/SKILL.md +78 -100
  72. package/.codex/skills/team-testing/SKILL.md +242 -235
  73. package/.codex/skills/wiki-connect/SKILL.md +75 -0
  74. package/.codex/skills/wiki-digest/SKILL.md +87 -0
  75. package/README.md +14 -11
  76. package/README.zh-CN.md +14 -11
  77. package/chains/issue-lifecycle.json +13 -13
  78. package/chains/singles/issue-analyze.json +3 -3
  79. package/chains/singles/issue-execute.json +3 -3
  80. package/chains/singles/issue-plan.json +3 -3
  81. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +2 -2
  82. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
  83. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +3 -3
  84. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  85. package/dashboard/dist-server/dashboard/src/server/routes/issues.js +34 -0
  86. package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
  87. package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
  88. package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
  89. package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
  90. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
  91. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
  92. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  93. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +2 -3
  94. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js.map +1 -1
  95. package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
  96. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  97. package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +5 -0
  98. package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
  99. package/dashboard/dist-server/dashboard/src/shared/normalize-task.d.ts +2 -0
  100. package/dashboard/dist-server/dashboard/src/shared/normalize-task.js +75 -0
  101. package/dashboard/dist-server/dashboard/src/shared/normalize-task.js.map +1 -0
  102. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +21 -0
  103. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  104. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
  105. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
  106. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  107. package/dashboard/dist-server/src/hooks/constants.d.ts +92 -12
  108. package/dashboard/dist-server/src/hooks/constants.js +151 -16
  109. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  110. package/dashboard/dist-server/src/types/index.d.ts +5 -0
  111. package/dist/src/commands/collab.d.ts +1 -34
  112. package/dist/src/commands/collab.d.ts.map +1 -1
  113. package/dist/src/commands/collab.js +8 -76
  114. package/dist/src/commands/collab.js.map +1 -1
  115. package/dist/src/commands/hooks.d.ts +5 -1
  116. package/dist/src/commands/hooks.d.ts.map +1 -1
  117. package/dist/src/commands/hooks.js +115 -10
  118. package/dist/src/commands/hooks.js.map +1 -1
  119. package/dist/src/commands/install-ui/InstallConfirm.d.ts +3 -1
  120. package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
  121. package/dist/src/commands/install-ui/InstallConfirm.js +3 -1
  122. package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
  123. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  124. package/dist/src/commands/install-ui/InstallExecution.js +5 -1
  125. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  126. package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
  127. package/dist/src/commands/install-ui/InstallFlow.js +7 -3
  128. package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
  129. package/dist/src/commands/install-ui/StatuslineConfig.d.ts +6 -1
  130. package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
  131. package/dist/src/commands/install-ui/StatuslineConfig.js +27 -5
  132. package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
  133. package/dist/src/commands/spec.d.ts.map +1 -1
  134. package/dist/src/commands/spec.js +7 -2
  135. package/dist/src/commands/spec.js.map +1 -1
  136. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +7 -0
  137. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -0
  138. package/dist/src/hooks/__tests__/statusline-visual-test.js +236 -0
  139. package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -0
  140. package/dist/src/hooks/constants.d.ts +92 -12
  141. package/dist/src/hooks/constants.d.ts.map +1 -1
  142. package/dist/src/hooks/constants.js +151 -16
  143. package/dist/src/hooks/constants.js.map +1 -1
  144. package/dist/src/hooks/guards/index.d.ts +2 -0
  145. package/dist/src/hooks/guards/index.d.ts.map +1 -1
  146. package/dist/src/hooks/guards/index.js +2 -0
  147. package/dist/src/hooks/guards/index.js.map +1 -1
  148. package/dist/src/hooks/guards/preflight-guard.d.ts +29 -0
  149. package/dist/src/hooks/guards/preflight-guard.d.ts.map +1 -0
  150. package/dist/src/hooks/guards/preflight-guard.js +95 -0
  151. package/dist/src/hooks/guards/preflight-guard.js.map +1 -0
  152. package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
  153. package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
  154. package/dist/src/hooks/guards/spec-validator.js +66 -0
  155. package/dist/src/hooks/guards/spec-validator.js.map +1 -0
  156. package/dist/src/hooks/index.d.ts +1 -0
  157. package/dist/src/hooks/index.d.ts.map +1 -1
  158. package/dist/src/hooks/index.js +1 -0
  159. package/dist/src/hooks/index.js.map +1 -1
  160. package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
  161. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
  162. package/dist/src/hooks/keyword-spec-injector.js +96 -0
  163. package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
  164. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
  165. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
  166. package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
  167. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  168. package/dist/src/hooks/preflight-core.d.ts +37 -0
  169. package/dist/src/hooks/preflight-core.d.ts.map +1 -0
  170. package/dist/src/hooks/preflight-core.js +86 -0
  171. package/dist/src/hooks/preflight-core.js.map +1 -0
  172. package/dist/src/hooks/spec-bridge.d.ts +40 -0
  173. package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
  174. package/dist/src/hooks/spec-bridge.js +97 -0
  175. package/dist/src/hooks/spec-bridge.js.map +1 -0
  176. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  177. package/dist/src/hooks/spec-injector.js +18 -12
  178. package/dist/src/hooks/spec-injector.js.map +1 -1
  179. package/dist/src/hooks/statusline.d.ts +8 -17
  180. package/dist/src/hooks/statusline.d.ts.map +1 -1
  181. package/dist/src/hooks/statusline.js +269 -112
  182. package/dist/src/hooks/statusline.js.map +1 -1
  183. package/dist/src/i18n/locales/en.d.ts.map +1 -1
  184. package/dist/src/i18n/locales/en.js +5 -0
  185. package/dist/src/i18n/locales/en.js.map +1 -1
  186. package/dist/src/i18n/locales/zh.d.ts.map +1 -1
  187. package/dist/src/i18n/locales/zh.js +5 -0
  188. package/dist/src/i18n/locales/zh.js.map +1 -1
  189. package/dist/src/i18n/types.d.ts +5 -0
  190. package/dist/src/i18n/types.d.ts.map +1 -1
  191. package/dist/src/team/phase-orchestrator.d.ts +52 -0
  192. package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
  193. package/dist/src/team/phase-orchestrator.js +165 -0
  194. package/dist/src/team/phase-orchestrator.js.map +1 -0
  195. package/dist/src/team/phase-types.d.ts +51 -0
  196. package/dist/src/team/phase-types.d.ts.map +1 -0
  197. package/dist/src/team/phase-types.js +41 -0
  198. package/dist/src/team/phase-types.js.map +1 -0
  199. package/dist/src/tools/collab-adapter.d.ts +17 -0
  200. package/dist/src/tools/collab-adapter.d.ts.map +1 -1
  201. package/dist/src/tools/collab-adapter.js +138 -0
  202. package/dist/src/tools/collab-adapter.js.map +1 -1
  203. package/dist/src/tools/index.d.ts.map +1 -1
  204. package/dist/src/tools/index.js +6 -0
  205. package/dist/src/tools/index.js.map +1 -1
  206. package/dist/src/tools/merge-validator.d.ts +24 -0
  207. package/dist/src/tools/merge-validator.d.ts.map +1 -0
  208. package/dist/src/tools/merge-validator.js +220 -0
  209. package/dist/src/tools/merge-validator.js.map +1 -0
  210. package/dist/src/tools/spec-entry-parser.d.ts +56 -0
  211. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
  212. package/dist/src/tools/spec-entry-parser.js +196 -0
  213. package/dist/src/tools/spec-entry-parser.js.map +1 -0
  214. package/dist/src/tools/spec-init.d.ts.map +1 -1
  215. package/dist/src/tools/spec-init.js +66 -92
  216. package/dist/src/tools/spec-init.js.map +1 -1
  217. package/dist/src/tools/spec-keyword-index.d.ts +30 -0
  218. package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
  219. package/dist/src/tools/spec-keyword-index.js +101 -0
  220. package/dist/src/tools/spec-keyword-index.js.map +1 -0
  221. package/dist/src/tools/spec-loader.d.ts +3 -3
  222. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  223. package/dist/src/tools/spec-loader.js +49 -23
  224. package/dist/src/tools/spec-loader.js.map +1 -1
  225. package/dist/src/tools/team-agents.d.ts +27 -0
  226. package/dist/src/tools/team-agents.d.ts.map +1 -0
  227. package/dist/src/tools/team-agents.js +362 -0
  228. package/dist/src/tools/team-agents.js.map +1 -0
  229. package/dist/src/tools/team-mailbox.d.ts +40 -0
  230. package/dist/src/tools/team-mailbox.d.ts.map +1 -0
  231. package/dist/src/tools/team-mailbox.js +384 -0
  232. package/dist/src/tools/team-mailbox.js.map +1 -0
  233. package/dist/src/tools/team-msg.d.ts +17 -8
  234. package/dist/src/tools/team-msg.d.ts.map +1 -1
  235. package/dist/src/tools/team-msg.js +110 -13
  236. package/dist/src/tools/team-msg.js.map +1 -1
  237. package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
  238. package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
  239. package/dist/src/tools/team-tasks-mcp.js +408 -0
  240. package/dist/src/tools/team-tasks-mcp.js.map +1 -0
  241. package/dist/src/types/index.d.ts +5 -0
  242. package/dist/src/types/index.d.ts.map +1 -1
  243. package/package.json +2 -1
  244. package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +3 -3
  245. package/templates/cli/prompts/workflow-skill-lessons-learned.txt +3 -3
  246. package/templates/search-tools.md +1 -1
  247. package/workflows/analyze.md +816 -816
  248. package/workflows/brainstorm.md +471 -471
  249. package/workflows/cli-tools-usage.md +44 -27
  250. package/workflows/codebase-rebuild.md +332 -332
  251. package/workflows/codebase-refresh.md +240 -240
  252. package/workflows/delegate-usage.md +3 -3
  253. package/workflows/execute.md +1 -1
  254. package/workflows/harvest.md +420 -420
  255. package/workflows/integration-test.md +343 -343
  256. package/workflows/issue-analyze.md +6 -2
  257. package/workflows/issue-discover.md +414 -414
  258. package/workflows/issue-execute.md +6 -3
  259. package/workflows/issue-plan.md +5 -2
  260. package/workflows/maestro-coordinate.codex.md +281 -470
  261. package/workflows/maestro-coordinate.md +14 -14
  262. package/workflows/maestro-link-coordinate.md +2 -2
  263. package/workflows/maestro.codex.md +710 -0
  264. package/workflows/maestro.md +10 -11
  265. package/workflows/map.md +111 -111
  266. package/workflows/milestone-complete.md +176 -176
  267. package/workflows/plan.md +1 -1
  268. package/workflows/quick.md +497 -497
  269. package/workflows/refactor.md +300 -300
  270. package/workflows/retrospective.md +1 -1
  271. package/workflows/roadmap.md +335 -335
  272. package/workflows/spec-generate.md +640 -640
  273. package/workflows/specs-add.md +46 -81
  274. package/workflows/specs-load.md +15 -17
  275. package/workflows/specs-setup.md +40 -161
  276. package/.claude/commands/manage-issue-analyze.md +0 -62
  277. package/.claude/commands/manage-issue-execute.md +0 -73
  278. package/.claude/commands/manage-issue-plan.md +0 -62
  279. package/.codex/skills/manage-issue-analyze/SKILL.md +0 -207
  280. package/.codex/skills/manage-issue-execute/SKILL.md +0 -200
  281. package/.codex/skills/manage-issue-plan/SKILL.md +0 -186
@@ -1,299 +1,311 @@
1
- ---
2
- name: team-lifecycle-v4
3
- description: Full lifecycle team skill with clean architecture. SKILL.md is a universal router — all roles read it. Beat model is coordinator-only. Structure is roles/ + specs/ + templates/. Triggers on "team lifecycle v4".
4
- allowed-tools: spawn_agent(*), wait_agent(*), send_message(*), followup_task(*), close_agent(*), list_agents(*), report_agent_job_result(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), request_user_input(*), mcp__maestro-tools__team_msg(*)
5
- ---
6
-
7
- # Team Lifecycle v4
8
-
9
- Orchestrate multi-agent software development: specification -> planning -> implementation -> testing -> review.
10
-
11
- ## Architecture
12
-
13
- ```
14
- Skill(skill="team-lifecycle-v4", 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 -> wait -> collect
26
- |
27
- +--------+---+--------+
28
- v v v
29
- spawn_agent ... spawn_agent
30
- (team_worker) (team_supervisor)
31
- per-task resident agent
32
- lifecycle followup_task-driven
33
- | |
34
- +-- wait_agent --------+
35
- |
36
- collect results
37
- ```
38
-
39
- ## Role Registry
40
-
41
- | Role | Path | Prefix | Inner Loop |
42
- |------|------|--------|------------|
43
- | coordinator | [roles/coordinator/role.md](roles/coordinator/role.md) | -- | -- |
44
- | analyst | [roles/analyst/role.md](roles/analyst/role.md) | RESEARCH-* | false |
45
- | writer | [roles/writer/role.md](roles/writer/role.md) | DRAFT-* | true |
46
- | planner | [roles/planner/role.md](roles/planner/role.md) | PLAN-* | true |
47
- | executor | [roles/executor/role.md](roles/executor/role.md) | IMPL-* | true |
48
- | tester | [roles/tester/role.md](roles/tester/role.md) | TEST-* | false |
49
- | reviewer | [roles/reviewer/role.md](roles/reviewer/role.md) | REVIEW-*, QUALITY-*, IMPROVE-* | false |
50
- | supervisor | [roles/supervisor/role.md](roles/supervisor/role.md) | CHECKPOINT-* | false |
51
-
52
- ## Role Router
53
-
54
- Parse `$ARGUMENTS`:
55
- - Has `--role <name>` -> Read `roles/<name>/role.md`, execute Phase 2-4
56
- - No `--role` -> `roles/coordinator/role.md`, execute entry router
57
-
58
- ## Delegation Lock
59
-
60
- **Coordinator is a PURE ORCHESTRATOR. It coordinates, it does NOT do.**
61
-
62
- Before calling ANY tool, apply this check:
63
-
64
- | Tool Call | Verdict | Reason |
65
- |-----------|---------|--------|
66
- | `spawn_agent`, `wait_agent`, `close_agent`, `send_message`, `followup_task` | ALLOWED | Orchestration |
67
- | `list_agents` | ALLOWED | Agent health check |
68
- | `request_user_input` | ALLOWED | User interaction |
69
- | `mcp__maestro-tools__team_msg` | ALLOWED | Message bus |
70
- | `Read/Write` on `.workflow/.team/` files | ALLOWED | Session state |
71
- | `Read` on `roles/`, `commands/`, `specs/`, `templates/` | ALLOWED | Loading own instructions |
72
- | `Read/Grep/Glob` on project source code | BLOCKED | Delegate to worker |
73
- | `Edit` on any file outside `.workflow/` | BLOCKED | Delegate to worker |
74
- | `Bash("maestro delegate ...")` | BLOCKED | Only workers call CLI |
75
- | `Bash` running build/test/lint commands | BLOCKED | Delegate to worker |
76
-
77
- **If a tool call is BLOCKED**: STOP. Create a task, spawn a worker.
78
-
79
- **No exceptions for "simple" tasks.** Even a single-file read-and-report MUST go through spawn_agent.
80
-
81
- ---
82
-
83
- ## Shared Constants
84
-
85
- - **Session prefix**: `TLV4`
86
- - **Session path**: `.workflow/.team/TLV4-<slug>-<date>/`
87
- - **State file**: `<session>/tasks.json`
88
- - **Discovery files**: `<session>/discoveries/{task_id}.json`
89
- - **CLI tools**: `maestro delegate --mode analysis` (read-only), `maestro delegate --mode write` (modifications)
90
-
91
- ## Worker Spawn Template
92
-
93
- Coordinator spawns workers using this template:
94
-
95
- ```
96
- spawn_agent({
97
- agent_type: "team_worker",
98
- task_name: "<task-id>",
99
- fork_turns: "none",
100
- message: `## Role Assignment
101
- role: <role>
102
- role_spec: <skill_root>/roles/<role>/role.md
103
- session: <session-folder>
104
- session_id: <session-id>
105
- requirement: <task-description>
106
- inner_loop: <true|false>
107
-
108
- Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
109
- Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).
110
-
111
- ## Task Context
112
- task_id: <task-id>
113
- title: <task-title>
114
- description: <task-description>
115
- pipeline_phase: <pipeline-phase>
116
-
117
- ## Upstream Context
118
- <prev_context>`
119
- })
120
- ```
121
-
122
- ## Supervisor Spawn Template
123
-
124
- Supervisor is a **resident agent** (independent from team_worker). Spawned once during session init, woken via followup_task for each CHECKPOINT task.
125
-
126
- ### Spawn (Phase 2 -- once per session)
127
-
128
- ```
129
- supervisorId = spawn_agent({
130
- agent_type: "team_supervisor",
131
- task_name: "supervisor",
132
- fork_turns: "none",
133
- message: `## Role Assignment
134
- role: supervisor
135
- role_spec: <skill_root>/roles/supervisor/role.md
136
- session: <session-folder>
137
- session_id: <session-id>
138
- requirement: <task-description>
139
-
140
- Read role_spec file (<skill_root>/roles/supervisor/role.md) to load checkpoint definitions.
141
- Init: load baseline context, report ready, go idle.
142
- Wake cycle: orchestrator sends checkpoint requests via followup_task.`
143
- })
144
- ```
145
-
146
- ### Wake (per CHECKPOINT task)
147
-
148
- ```
149
- followup_task({
150
- target: "supervisor",
151
- message: `## Checkpoint Request
152
- task_id: <CHECKPOINT-NNN>
153
- scope: [<upstream-task-ids>]
154
- pipeline_progress: <done>/<total> tasks completed`
155
- })
156
- wait_agent({ timeout_ms: 1800000 }) // 30 min
157
- ```
158
-
159
- ### Shutdown (pipeline complete)
160
-
161
- ```
162
- close_agent({ target: "supervisor" })
163
- ```
164
-
165
-
166
- ### Model Selection Guide
167
-
168
- | Role | model | reasoning_effort | Rationale |
169
- |------|-------|-------------------|-----------|
170
- | Analyst (RESEARCH-*) | (default) | medium | Read-heavy exploration, less reasoning needed |
171
- | Writer (DRAFT-*) | (default) | high | Spec writing requires precision and completeness |
172
- | Planner (PLAN-*) | (default) | high | Architecture decisions need full reasoning |
173
- | Executor (IMPL-*) | (default) | high | Code generation needs precision |
174
- | Tester (TEST-*) | (default) | high | Test generation requires deep code understanding |
175
- | Reviewer (REVIEW-*, QUALITY-*, IMPROVE-*) | (default) | high | Deep analysis for quality assessment |
176
- | Supervisor (CHECKPOINT-*) | (default) | medium | Gate checking, report aggregation |
177
-
178
- Override model/reasoning_effort in spawn_agent when cost optimization is needed:
179
- ```
180
- spawn_agent({
181
- agent_type: "team_worker",
182
- task_name: "<task-id>",
183
- fork_turns: "none",
184
- model: "<model-override>",
185
- reasoning_effort: "<effort-level>",
186
- message: "..."
187
- })
188
- ```
189
-
190
- ## Wave Execution Engine
191
-
192
- For each wave in the pipeline:
193
-
194
- 1. **Load state** -- Read `<session>/tasks.json`, filter tasks for current wave
195
- 2. **Skip failed deps** -- Mark tasks whose dependencies failed/skipped as `skipped`
196
- 3. **Build upstream context** -- For each task, gather findings from `context_from` tasks via tasks.json and `discoveries/{id}.json`
197
- 4. **Separate task types** -- Split into regular tasks and CHECKPOINT tasks
198
- 5. **Spawn regular tasks** -- For each regular task, call `spawn_agent({ agent_type: "team_worker", message: "..." })`, collect agent IDs
199
- 6. **Wait** -- `wait_agent({ timeout_ms: 1800000 })` (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.
200
- 7. **Collect results** -- Read `discoveries/{task_id}.json` for each agent, update tasks.json status/findings/error, then `close_agent({ target })` each worker
201
- 8. **Execute checkpoints** -- For each CHECKPOINT task, `followup_task` to supervisor, `wait_agent`, read checkpoint report from `artifacts/`, parse verdict
202
- 9. **Handle block** -- If verdict is `block`, prompt user via `request_user_input` with options: Override / Revise upstream / Abort
203
- 10. **Persist** -- Write updated state to `<session>/tasks.json`
204
-
205
- ## User Commands
206
-
207
- | Command | Action |
208
- |---------|--------|
209
- | `check` / `status` | View execution status graph |
210
- | `resume` / `continue` | Advance to next step |
211
- | `revise <TASK-ID> [feedback]` | Revise specific task |
212
- | `feedback <text>` | Inject feedback for revision |
213
- | `recheck` | Re-run quality check |
214
- | `improve [dimension]` | Auto-improve weakest dimension |
215
-
216
- ## v4 Agent Coordination
217
-
218
- ### Message Semantics
219
-
220
- | Intent | API | Example |
221
- |--------|-----|---------|
222
- | Queue supplementary info (don't interrupt) | `send_message` | Send planning results to running implementers |
223
- | Wake resident supervisor for checkpoint | `followup_task` | Trigger CHECKPOINT-* evaluation on supervisor |
224
- | Supervisor reports back to coordinator | `send_message` | Supervisor sends checkpoint verdict as supplementary info |
225
- | Check running agents | `list_agents` | Verify agent + supervisor health during resume |
226
-
227
- **CRITICAL**: The supervisor is a **resident agent** woken via `followup_task`, NOT `send_message`. Regular workers complete and are closed; the supervisor persists across checkpoints. See "Supervisor Spawn Template" above.
228
-
229
- ### Agent Health Check
230
-
231
- Use `list_agents({})` in handleResume and handleComplete:
232
-
233
- ```
234
- // Reconcile session state with actual running agents
235
- const running = list_agents({})
236
- // Compare with tasks.json active_agents
237
- // Reset orphaned tasks (in_progress but agent gone) to pending
238
- // ALSO check supervisor: if supervisor missing but CHECKPOINT tasks pending -> respawn
239
- ```
240
-
241
- ### Named Agent Targeting
242
-
243
- Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
244
- - `send_message({ target: "IMPL-001", message: "..." })` -- queue planning context to running implementer
245
- - `followup_task({ target: "supervisor", message: "..." })` -- wake supervisor for checkpoint
246
- - `close_agent({ target: "IMPL-001" })` -- cleanup regular worker by name
247
- - `close_agent({ target: "supervisor" })` -- shutdown supervisor at pipeline end
248
-
249
- ## Completion Action
250
-
251
- When pipeline completes, coordinator presents:
252
-
253
- ```
254
- request_user_input({
255
- questions: [{
256
- question: "Pipeline complete. What would you like to do?",
257
- header: "Completion",
258
- multiSelect: false,
259
- options: [
260
- { label: "Archive & Clean (Recommended)", description: "Archive session, clean up resources" },
261
- { label: "Keep Active", description: "Keep session for follow-up work" },
262
- { label: "Export Results", description: "Export deliverables to target directory" }
263
- ]
264
- }]
265
- })
266
- ```
267
-
268
- ## Specs Reference
269
-
270
- - [specs/pipelines.md](specs/pipelines.md) -- Pipeline definitions and task registry
271
- - [specs/quality-gates.md](specs/quality-gates.md) -- Quality gate criteria and scoring
272
- - [specs/knowledge-transfer.md](specs/knowledge-transfer.md) -- Artifact and state transfer protocols
273
-
274
- ## Session Directory
275
-
276
- ```
277
- .workflow/.team/TLV4-<slug>-<date>/
278
- ├── tasks.json # Task state (JSON)
279
- ├── discoveries/ # Per-task findings ({task_id}.json)
280
- ├── spec/ # Spec phase outputs
281
- ├── plan/ # Implementation plan
282
- ├── artifacts/ # All deliverables
283
- ├── wisdom/ # Cross-task knowledge
284
- ├── explorations/ # Shared explore cache
285
- └── discussions/ # Discuss round records
286
- ```
287
-
288
- ## Error Handling
289
-
290
- | Scenario | Resolution |
291
- |----------|------------|
292
- | Unknown command | Error with available command list |
293
- | Role not found | Error with role registry |
294
- | CLI tool fails | Worker fallback to direct implementation |
295
- | Supervisor crash | Respawn with `recovery: true`, auto-rebuilds from existing reports |
296
- | Supervisor not ready for CHECKPOINT | Spawn/respawn supervisor, wait for ready, then wake |
297
- | Completion action fails | Default to Keep Active |
298
- | Worker timeout | Mark task as failed, continue wave |
299
- | Discovery file missing | Mark task as failed with "No discovery file produced" |
1
+ ---
2
+ name: team-lifecycle-v4
3
+ description: Full lifecycle team skill with clean architecture. SKILL.md is a universal router — all roles read it. Beat model is coordinator-only. Structure is roles/ + specs/ + templates/. Triggers on "team lifecycle v4".
4
+ allowed-tools: spawn_agent(*), wait_agent(*), send_message(*), followup_task(*), close_agent(*), list_agents(*), report_agent_job_result(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), request_user_input(*), mcp__maestro-tools__team_msg(*)
5
+ ---
6
+
7
+ <purpose>
8
+ Orchestrate multi-agent software development: specification -> planning -> implementation -> testing -> review.
9
+
10
+ ```
11
+ Skill(skill="team-lifecycle-v4", 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 -> wait -> collect
23
+ |
24
+ +--------+---+--------+
25
+ v v v
26
+ spawn_agent ... spawn_agent
27
+ (team_worker) (team_supervisor)
28
+ per-task resident agent
29
+ lifecycle followup_task-driven
30
+ | |
31
+ +-- wait_agent --------+
32
+ |
33
+ collect results
34
+ ```
35
+ </purpose>
36
+
37
+ <context>
38
+ ### Role Registry
39
+
40
+ | Role | Path | Prefix | Inner Loop |
41
+ |------|------|--------|------------|
42
+ | coordinator | [roles/coordinator/role.md](roles/coordinator/role.md) | -- | -- |
43
+ | analyst | [roles/analyst/role.md](roles/analyst/role.md) | RESEARCH-* | false |
44
+ | writer | [roles/writer/role.md](roles/writer/role.md) | DRAFT-* | true |
45
+ | planner | [roles/planner/role.md](roles/planner/role.md) | PLAN-* | true |
46
+ | executor | [roles/executor/role.md](roles/executor/role.md) | IMPL-* | true |
47
+ | tester | [roles/tester/role.md](roles/tester/role.md) | TEST-* | false |
48
+ | reviewer | [roles/reviewer/role.md](roles/reviewer/role.md) | REVIEW-*, QUALITY-*, IMPROVE-* | false |
49
+ | supervisor | [roles/supervisor/role.md](roles/supervisor/role.md) | CHECKPOINT-* | false |
50
+
51
+ ### Role Router
52
+
53
+ Parse `$ARGUMENTS`:
54
+ - Has `--role <name>` -> Read `roles/<name>/role.md`, execute Phase 2-4
55
+ - No `--role` -> `roles/coordinator/role.md`, execute entry router
56
+
57
+ ### Delegation Lock
58
+
59
+ **Coordinator is a PURE ORCHESTRATOR. It coordinates, it does NOT do.**
60
+
61
+ Before calling ANY tool, apply this check:
62
+
63
+ | Tool Call | Verdict | Reason |
64
+ |-----------|---------|--------|
65
+ | `spawn_agent`, `wait_agent`, `close_agent`, `send_message`, `followup_task` | ALLOWED | Orchestration |
66
+ | `list_agents` | ALLOWED | Agent health check |
67
+ | `request_user_input` | ALLOWED | User interaction |
68
+ | `mcp__maestro-tools__team_msg` | ALLOWED | Message bus |
69
+ | `Read/Write` on `.workflow/.team/` files | ALLOWED | Session state |
70
+ | `Read` on `roles/`, `commands/`, `specs/`, `templates/` | ALLOWED | Loading own instructions |
71
+ | `Read/Grep/Glob` on project source code | BLOCKED | Delegate to worker |
72
+ | `Edit` on any file outside `.workflow/` | BLOCKED | Delegate to worker |
73
+ | `Bash("maestro delegate ...")` | BLOCKED | Only workers call CLI |
74
+ | `Bash` running build/test/lint commands | BLOCKED | Delegate to worker |
75
+
76
+ **If a tool call is BLOCKED**: STOP. Create a task, spawn a worker.
77
+
78
+ **No exceptions for "simple" tasks.** Even a single-file read-and-report MUST go through spawn_agent.
79
+
80
+ ### Shared Constants
81
+
82
+ - **Session prefix**: `TLV4`
83
+ - **Session path**: `.workflow/.team/TLV4-<slug>-<date>/`
84
+ - **State file**: `<session>/tasks.json`
85
+ - **Discovery files**: `<session>/discoveries/{task_id}.json`
86
+ - **CLI tools**: `maestro delegate --mode analysis` (read-only), `maestro delegate --mode write` (modifications)
87
+
88
+ ### Worker Spawn Template
89
+
90
+ Coordinator spawns workers using this template:
91
+
92
+ ```
93
+ spawn_agent({
94
+ agent_type: "team_worker",
95
+ task_name: "<task-id>",
96
+ fork_turns: "none",
97
+ message: `## Role Assignment
98
+ role: <role>
99
+ role_spec: <skill_root>/roles/<role>/role.md
100
+ session: <session-folder>
101
+ session_id: <session-id>
102
+ requirement: <task-description>
103
+ inner_loop: <true|false>
104
+
105
+ Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
106
+ Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).
107
+
108
+ ## Task Context
109
+ task_id: <task-id>
110
+ title: <task-title>
111
+ description: <task-description>
112
+ pipeline_phase: <pipeline-phase>
113
+
114
+ ## Upstream Context
115
+ <prev_context>`
116
+ })
117
+ ```
118
+
119
+ ### Supervisor Spawn Template
120
+
121
+ Supervisor is a **resident agent** (independent from team_worker). Spawned once during session init, woken via followup_task for each CHECKPOINT task.
122
+
123
+ #### Spawn (Phase 2 -- once per session)
124
+
125
+ ```
126
+ supervisorId = spawn_agent({
127
+ agent_type: "team_supervisor",
128
+ task_name: "supervisor",
129
+ fork_turns: "none",
130
+ message: `## Role Assignment
131
+ role: supervisor
132
+ role_spec: <skill_root>/roles/supervisor/role.md
133
+ session: <session-folder>
134
+ session_id: <session-id>
135
+ requirement: <task-description>
136
+
137
+ Read role_spec file (<skill_root>/roles/supervisor/role.md) to load checkpoint definitions.
138
+ Init: load baseline context, report ready, go idle.
139
+ Wake cycle: orchestrator sends checkpoint requests via followup_task.`
140
+ })
141
+ ```
142
+
143
+ #### Wake (per CHECKPOINT task)
144
+
145
+ ```
146
+ followup_task({
147
+ target: "supervisor",
148
+ message: `## Checkpoint Request
149
+ task_id: <CHECKPOINT-NNN>
150
+ scope: [<upstream-task-ids>]
151
+ pipeline_progress: <done>/<total> tasks completed`
152
+ })
153
+ wait_agent({ timeout_ms: 1800000 }) // 30 min
154
+ ```
155
+
156
+ #### Shutdown (pipeline complete)
157
+
158
+ ```
159
+ close_agent({ target: "supervisor" })
160
+ ```
161
+
162
+ ### Model Selection Guide
163
+
164
+ | Role | model | reasoning_effort | Rationale |
165
+ |------|-------|-------------------|-----------|
166
+ | Analyst (RESEARCH-*) | (default) | medium | Read-heavy exploration, less reasoning needed |
167
+ | Writer (DRAFT-*) | (default) | high | Spec writing requires precision and completeness |
168
+ | Planner (PLAN-*) | (default) | high | Architecture decisions need full reasoning |
169
+ | Executor (IMPL-*) | (default) | high | Code generation needs precision |
170
+ | Tester (TEST-*) | (default) | high | Test generation requires deep code understanding |
171
+ | Reviewer (REVIEW-*, QUALITY-*, IMPROVE-*) | (default) | high | Deep analysis for quality assessment |
172
+ | Supervisor (CHECKPOINT-*) | (default) | medium | Gate checking, report aggregation |
173
+
174
+ Override model/reasoning_effort in spawn_agent when cost optimization is needed:
175
+ ```
176
+ spawn_agent({
177
+ agent_type: "team_worker",
178
+ task_name: "<task-id>",
179
+ fork_turns: "none",
180
+ model: "<model-override>",
181
+ reasoning_effort: "<effort-level>",
182
+ message: "..."
183
+ })
184
+ ```
185
+
186
+ ### v4 Agent Coordination
187
+
188
+ #### Message Semantics
189
+
190
+ | Intent | API | Example |
191
+ |--------|-----|---------|
192
+ | Queue supplementary info (don't interrupt) | `send_message` | Send planning results to running implementers |
193
+ | Wake resident supervisor for checkpoint | `followup_task` | Trigger CHECKPOINT-* evaluation on supervisor |
194
+ | Supervisor reports back to coordinator | `send_message` | Supervisor sends checkpoint verdict as supplementary info |
195
+ | Check running agents | `list_agents` | Verify agent + supervisor health during resume |
196
+
197
+ **CRITICAL**: The supervisor is a **resident agent** woken via `followup_task`, NOT `send_message`. Regular workers complete and are closed; the supervisor persists across checkpoints. See "Supervisor Spawn Template" above.
198
+
199
+ #### Agent Health Check
200
+
201
+ Use `list_agents({})` in handleResume and handleComplete:
202
+
203
+ ```
204
+ // Reconcile session state with actual running agents
205
+ const running = list_agents({})
206
+ // Compare with tasks.json active_agents
207
+ // Reset orphaned tasks (in_progress but agent gone) to pending
208
+ // ALSO check supervisor: if supervisor missing but CHECKPOINT tasks pending -> respawn
209
+ ```
210
+
211
+ #### Named Agent Targeting
212
+
213
+ Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
214
+ - `send_message({ target: "IMPL-001", message: "..." })` -- queue planning context to running implementer
215
+ - `followup_task({ target: "supervisor", message: "..." })` -- wake supervisor for checkpoint
216
+ - `close_agent({ target: "IMPL-001" })` -- cleanup regular worker by name
217
+ - `close_agent({ target: "supervisor" })` -- shutdown supervisor at pipeline end
218
+
219
+ ### User Commands
220
+
221
+ | Command | Action |
222
+ |---------|--------|
223
+ | `check` / `status` | View execution status graph |
224
+ | `resume` / `continue` | Advance to next step |
225
+ | `revise <TASK-ID> [feedback]` | Revise specific task |
226
+ | `feedback <text>` | Inject feedback for revision |
227
+ | `recheck` | Re-run quality check |
228
+ | `improve [dimension]` | Auto-improve weakest dimension |
229
+
230
+ ### Completion Action
231
+
232
+ When pipeline completes, coordinator presents:
233
+
234
+ ```
235
+ request_user_input({
236
+ questions: [{
237
+ question: "Pipeline complete. What would you like to do?",
238
+ header: "Completion",
239
+ multiSelect: false,
240
+ options: [
241
+ { label: "Archive & Clean (Recommended)", description: "Archive session, clean up resources" },
242
+ { label: "Keep Active", description: "Keep session for follow-up work" },
243
+ { label: "Export Results", description: "Export deliverables to target directory" }
244
+ ]
245
+ }]
246
+ })
247
+ ```
248
+
249
+ ### Specs Reference
250
+
251
+ - [specs/pipelines.md](specs/pipelines.md) -- Pipeline definitions and task registry
252
+ - [specs/quality-gates.md](specs/quality-gates.md) -- Quality gate criteria and scoring
253
+ - [specs/knowledge-transfer.md](specs/knowledge-transfer.md) -- Artifact and state transfer protocols
254
+
255
+ ### Session Directory
256
+
257
+ ```
258
+ .workflow/.team/TLV4-<slug>-<date>/
259
+ +-- tasks.json # Task state (JSON)
260
+ +-- discoveries/ # Per-task findings ({task_id}.json)
261
+ +-- spec/ # Spec phase outputs
262
+ +-- plan/ # Implementation plan
263
+ +-- artifacts/ # All deliverables
264
+ +-- wisdom/ # Cross-task knowledge
265
+ +-- explorations/ # Shared explore cache
266
+ +-- discussions/ # Discuss round records
267
+ ```
268
+ </context>
269
+
270
+ <execution>
271
+
272
+ ### Wave Execution Engine
273
+
274
+ For each wave in the pipeline:
275
+
276
+ 1. **Load state** -- Read `<session>/tasks.json`, filter tasks for current wave
277
+ 2. **Skip failed deps** -- Mark tasks whose dependencies failed/skipped as `skipped`
278
+ 3. **Build upstream context** -- For each task, gather findings from `context_from` tasks via tasks.json and `discoveries/{id}.json`
279
+ 4. **Separate task types** -- Split into regular tasks and CHECKPOINT tasks
280
+ 5. **Spawn regular tasks** -- For each regular task, call `spawn_agent({ agent_type: "team_worker", message: "..." })`, collect agent IDs
281
+ 6. **Wait** -- `wait_agent({ timeout_ms: 1800000 })` (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.
282
+ 7. **Collect results** -- Read `discoveries/{task_id}.json` for each agent, update tasks.json status/findings/error, then `close_agent({ target })` each worker
283
+ 8. **Execute checkpoints** -- For each CHECKPOINT task, `followup_task` to supervisor, `wait_agent`, read checkpoint report from `artifacts/`, parse verdict
284
+ 9. **Handle block** -- If verdict is `block`, prompt user via `request_user_input` with options: Override / Revise upstream / Abort
285
+ 10. **Persist** -- Write updated state to `<session>/tasks.json`
286
+ </execution>
287
+
288
+ <error_codes>
289
+
290
+ | Scenario | Resolution |
291
+ |----------|------------|
292
+ | Unknown command | Error with available command list |
293
+ | Role not found | Error with role registry |
294
+ | CLI tool fails | Worker fallback to direct implementation |
295
+ | Supervisor crash | Respawn with `recovery: true`, auto-rebuilds from existing reports |
296
+ | Supervisor not ready for CHECKPOINT | Spawn/respawn supervisor, wait for ready, then wake |
297
+ | Completion action fails | Default to Keep Active |
298
+ | Worker timeout | Mark task as failed, continue wave |
299
+ | Discovery file missing | Mark task as failed with "No discovery file produced" |
300
+ </error_codes>
301
+
302
+ <success_criteria>
303
+ - [ ] Role router correctly dispatches to coordinator or worker based on --role flag
304
+ - [ ] Coordinator spawns workers with correct role-spec paths and task context
305
+ - [ ] Supervisor spawned once and woken via followup_task for checkpoints
306
+ - [ ] Wave execution engine processes tasks in dependency order
307
+ - [ ] Checkpoint verdicts respected (block prompts user, pass continues)
308
+ - [ ] Session state persisted in tasks.json after each wave
309
+ - [ ] Agent health reconciled on resume (orphaned tasks reset to pending)
310
+ - [ ] Completion action presented and handled correctly
311
+ </success_criteria>