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,235 +1,242 @@
1
- ---
2
- name: team-testing
3
- description: Unified team skill for testing team. Progressive test coverage through Generator-Critic loops, shared memory, and dynamic layer selection. Triggers on "team testing".
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__maestro-tools__team_msg(*)
5
- ---
6
-
7
- # Team Testing
8
-
9
- Orchestrate multi-agent test pipeline: strategist -> generator -> executor -> analyst. Progressive layer coverage (L1/L2/L3) with Generator-Critic loops for coverage convergence.
10
-
11
- ## Architecture
12
-
13
- ```
14
- Skill(skill="team-testing", 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 v
29
- [strat] [gen] [exec] [analyst]
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
- | strategist | [roles/strategist/role.md](roles/strategist/role.md) | STRATEGY-* | false |
39
- | generator | [roles/generator/role.md](roles/generator/role.md) | TESTGEN-* | true |
40
- | executor | [roles/executor/role.md](roles/executor/role.md) | TESTRUN-* | true |
41
- | analyst | [roles/analyst/role.md](roles/analyst/role.md) | TESTANA-* | false |
42
-
43
- ## Role Router
44
-
45
- Parse `$ARGUMENTS`:
46
- - Has `--role <name>` -> Read `roles/<name>/role.md`, execute Phase 2-4
47
- - No `--role` -> `roles/coordinator/role.md`, execute entry router
48
-
49
- ## Delegation Lock
50
-
51
- **Coordinator is a PURE ORCHESTRATOR. It coordinates, it does NOT do.**
52
-
53
- Before calling ANY tool, apply this check:
54
-
55
- | Tool Call | Verdict | Reason |
56
- |-----------|---------|--------|
57
- | `spawn_agent`, `wait_agent`, `close_agent`, `send_message`, `followup_task` | ALLOWED | Orchestration |
58
- | `list_agents` | ALLOWED | Agent health check |
59
- | `request_user_input` | ALLOWED | User interaction |
60
- | `mcp__maestro-tools__team_msg` | ALLOWED | Message bus |
61
- | `Read/Write` on `.workflow/.team/` files | ALLOWED | Session state |
62
- | `Read` on `roles/`, `commands/`, `specs/` | ALLOWED | Loading own instructions |
63
- | `Read/Grep/Glob` on project source code | BLOCKED | Delegate to worker |
64
- | `Edit` on any file outside `.workflow/` | BLOCKED | Delegate to worker |
65
- | `Bash("maestro delegate ...")` | BLOCKED | Only workers call CLI |
66
- | `Bash` running build/test/lint commands | BLOCKED | Delegate to worker |
67
-
68
- **If a tool call is BLOCKED**: STOP. Create a task, spawn a worker.
69
-
70
- **No exceptions for "simple" tasks.** Even a single-file read-and-report MUST go through spawn_agent.
71
-
72
- ---
73
-
74
- ## Shared Constants
75
-
76
- - **Session prefix**: `TST`
77
- - **Session path**: `.workflow/.team/TST-<slug>-<date>/`
78
- - **Team name**: `testing`
79
- - **CLI tools**: `maestro delegate --mode analysis` (read-only), `maestro delegate --mode write` (modifications)
80
- - **Message bus**: `mcp__maestro-tools__team_msg(session_id=<session-id>, ...)`
81
-
82
- ## Worker Spawn Template
83
-
84
- Coordinator spawns workers using this template:
85
-
86
- ```
87
- spawn_agent({
88
- agent_type: "team_worker",
89
- task_name: "<task-id>",
90
- fork_turns: "none",
91
- message: `## Role Assignment
92
- role: <role>
93
- role_spec: <skill_root>/roles/<role>/role.md
94
- session: <session-folder>
95
- session_id: <session-id>
96
- requirement: <task-description>
97
- inner_loop: <true|false>
98
-
99
- Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
100
-
101
- ## Task Context
102
- task_id: <task-id>
103
- title: <task-title>
104
- description: <task-description>
105
- pipeline_phase: <pipeline-phase>
106
-
107
- ## Upstream Context
108
- <prev_context>`
109
- })
110
- ```
111
-
112
- 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.
113
-
114
-
115
- ### Model Selection Guide
116
-
117
- | Role | model | reasoning_effort | Rationale |
118
- |------|-------|-------------------|-----------|
119
- | Strategist (STRATEGY-*) | (default) | high | Test strategy requires deep code understanding |
120
- | Generator (TESTGEN-*) | (default) | high | Test code generation needs precision |
121
- | Executor (TESTRUN-*) | (default) | medium | Running tests and collecting results, less reasoning |
122
- | Analyst (TESTANA-*) | (default) | high | Coverage analysis and quality assessment |
123
-
124
- Override model/reasoning_effort in spawn_agent when cost optimization is needed:
125
- ```
126
- spawn_agent({
127
- agent_type: "team_worker",
128
- task_name: "<task-id>",
129
- fork_turns: "none",
130
- model: "<model-override>",
131
- reasoning_effort: "<effort-level>",
132
- message: "..."
133
- })
134
- ```
135
-
136
- ## User Commands
137
-
138
- | Command | Action |
139
- |---------|--------|
140
- | `check` / `status` | View pipeline status graph |
141
- | `resume` / `continue` | Advance to next step |
142
- | `revise <TASK-ID>` | Revise specific task |
143
- | `feedback <text>` | Inject feedback for revision |
144
-
145
- ## v4 Agent Coordination
146
-
147
- ### Message Semantics
148
-
149
- | Intent | API | Example |
150
- |--------|-----|---------|
151
- | Send strategy to running generators | `send_message` | Queue test strategy findings to TESTGEN-* workers |
152
- | Not used in this skill | `followup_task` | No resident agents -- all workers are one-shot |
153
- | Check running agents | `list_agents` | Verify parallel generator/executor health |
154
-
155
- ### Parallel Test Generation
156
-
157
- Comprehensive pipeline spawns multiple generators (per layer) and executors in parallel:
158
-
159
- ```
160
- // Spawn parallel generators for L1 and L2
161
- const genNames = ["TESTGEN-001", "TESTGEN-002"]
162
- for (const name of genNames) {
163
- spawn_agent({ agent_type: "team_worker", task_name: name, ... })
164
- }
165
- wait_agent({ timeout_ms: 1800000 }) // 30 min
166
- ```
167
-
168
- ### GC Loop Coordination
169
-
170
- Generator-Critic loops create dynamic TESTGEN-fix and TESTRUN-fix tasks. The coordinator tracks `gc_rounds[layer]` and creates fix tasks dynamically when coverage is below target.
171
-
172
- ### Agent Health Check
173
-
174
- Use `list_agents({})` in handleResume and handleComplete:
175
-
176
- ```
177
- // Reconcile session state with actual running agents
178
- const running = list_agents({})
179
- // Compare with tasks.json active_agents
180
- // Reset orphaned tasks (in_progress but agent gone) to pending
181
- ```
182
-
183
- ### Named Agent Targeting
184
-
185
- Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
186
- - `send_message({ target: "TESTGEN-001", message: "..." })` -- queue strategy context to running generator
187
- - `close_agent({ target: "TESTRUN-001" })` -- cleanup by name after wait_agent returns
188
-
189
- ## Completion Action
190
-
191
- When pipeline completes, coordinator presents:
192
-
193
- ```
194
- request_user_input({
195
- questions: [{
196
- question: "Testing pipeline complete. What would you like to do?",
197
- header: "Completion",
198
- multiSelect: false,
199
- options: [
200
- { label: "Archive & Clean (Recommended)", description: "Archive session, clean up team" },
201
- { label: "Keep Active", description: "Keep session for follow-up work" },
202
- { label: "Deepen Coverage", description: "Add more test layers or increase coverage targets" }
203
- ]
204
- }]
205
- })
206
- ```
207
-
208
- ## Session Directory
209
-
210
- ```
211
- .workflow/.team/TST-<slug>-<date>/
212
- ├── .msg/messages.jsonl # Team message bus
213
- ├── .msg/meta.json # Session metadata
214
- ├── wisdom/ # Cross-task knowledge
215
- ├── strategy/ # Strategist output
216
- ├── tests/ # Generator output (L1-unit/, L2-integration/, L3-e2e/)
217
- ├── results/ # Executor output
218
- └── analysis/ # Analyst output
219
- ```
220
-
221
- ## Specs Reference
222
-
223
- - [specs/pipelines.md](specs/pipelines.md) — Pipeline definitions and task registry
224
- - [specs/team-config.json](specs/team-config.json) — Team configuration
225
-
226
- ## Error Handling
227
-
228
- | Scenario | Resolution |
229
- |----------|------------|
230
- | Unknown --role value | Error with available role list |
231
- | Role not found | Error with expected path (roles/<name>/role.md) |
232
- | CLI tool fails | Worker fallback to direct implementation |
233
- | GC loop exceeded | Accept current coverage with warning |
234
- | Fast-advance conflict | Coordinator reconciles on next callback |
235
- | Completion action fails | Default to Keep Active |
1
+ ---
2
+ name: team-testing
3
+ description: Unified team skill for testing team. Progressive test coverage through Generator-Critic loops, shared memory, and dynamic layer selection. Triggers on "team testing".
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__maestro-tools__team_msg(*)
5
+ ---
6
+
7
+ <purpose>
8
+ Orchestrate multi-agent test pipeline: strategist -> generator -> executor -> analyst. Progressive layer coverage (L1/L2/L3) with Generator-Critic loops for coverage convergence.
9
+
10
+ ```
11
+ Skill(skill="team-testing", 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 v
26
+ [strat] [gen] [exec] [analyst]
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
+ | strategist | [roles/strategist/role.md](roles/strategist/role.md) | STRATEGY-* | false |
38
+ | generator | [roles/generator/role.md](roles/generator/role.md) | TESTGEN-* | true |
39
+ | executor | [roles/executor/role.md](roles/executor/role.md) | TESTRUN-* | true |
40
+ | analyst | [roles/analyst/role.md](roles/analyst/role.md) | TESTANA-* | false |
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
+ ### Shared Constants
72
+
73
+ - **Session prefix**: `TST`
74
+ - **Session path**: `.workflow/.team/TST-<slug>-<date>/`
75
+ - **Team name**: `testing`
76
+ - **CLI tools**: `maestro delegate --mode analysis` (read-only), `maestro delegate --mode write` (modifications)
77
+ - **Message bus**: `mcp__maestro-tools__team_msg(session_id=<session-id>, ...)`
78
+
79
+ ### Worker Spawn Template
80
+
81
+ Coordinator spawns workers using this template:
82
+
83
+ ```
84
+ spawn_agent({
85
+ agent_type: "team_worker",
86
+ task_name: "<task-id>",
87
+ fork_turns: "none",
88
+ message: `## Role Assignment
89
+ role: <role>
90
+ role_spec: <skill_root>/roles/<role>/role.md
91
+ session: <session-folder>
92
+ session_id: <session-id>
93
+ requirement: <task-description>
94
+ inner_loop: <true|false>
95
+
96
+ Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
97
+
98
+ ## Task Context
99
+ task_id: <task-id>
100
+ title: <task-title>
101
+ description: <task-description>
102
+ pipeline_phase: <pipeline-phase>
103
+
104
+ ## Upstream Context
105
+ <prev_context>`
106
+ })
107
+ ```
108
+
109
+ 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.
110
+
111
+ ### Model Selection Guide
112
+
113
+ | Role | model | reasoning_effort | Rationale |
114
+ |------|-------|-------------------|-----------|
115
+ | Strategist (STRATEGY-*) | (default) | high | Test strategy requires deep code understanding |
116
+ | Generator (TESTGEN-*) | (default) | high | Test code generation needs precision |
117
+ | Executor (TESTRUN-*) | (default) | medium | Running tests and collecting results, less reasoning |
118
+ | Analyst (TESTANA-*) | (default) | high | Coverage analysis and quality assessment |
119
+
120
+ Override model/reasoning_effort in spawn_agent when cost optimization is needed:
121
+ ```
122
+ spawn_agent({
123
+ agent_type: "team_worker",
124
+ task_name: "<task-id>",
125
+ fork_turns: "none",
126
+ model: "<model-override>",
127
+ reasoning_effort: "<effort-level>",
128
+ message: "..."
129
+ })
130
+ ```
131
+
132
+ ### User Commands
133
+
134
+ | Command | Action |
135
+ |---------|--------|
136
+ | `check` / `status` | View pipeline status graph |
137
+ | `resume` / `continue` | Advance to next step |
138
+ | `revise <TASK-ID>` | Revise specific task |
139
+ | `feedback <text>` | Inject feedback for revision |
140
+
141
+ ### v4 Agent Coordination
142
+
143
+ #### Message Semantics
144
+
145
+ | Intent | API | Example |
146
+ |--------|-----|---------|
147
+ | Send strategy to running generators | `send_message` | Queue test strategy findings to TESTGEN-* workers |
148
+ | Not used in this skill | `followup_task` | No resident agents -- all workers are one-shot |
149
+ | Check running agents | `list_agents` | Verify parallel generator/executor health |
150
+
151
+ #### Parallel Test Generation
152
+
153
+ Comprehensive pipeline spawns multiple generators (per layer) and executors in parallel:
154
+
155
+ ```
156
+ // Spawn parallel generators for L1 and L2
157
+ const genNames = ["TESTGEN-001", "TESTGEN-002"]
158
+ for (const name of genNames) {
159
+ spawn_agent({ agent_type: "team_worker", task_name: name, ... })
160
+ }
161
+ wait_agent({ timeout_ms: 1800000 }) // 30 min
162
+ ```
163
+
164
+ #### GC Loop Coordination
165
+
166
+ Generator-Critic loops create dynamic TESTGEN-fix and TESTRUN-fix tasks. The coordinator tracks `gc_rounds[layer]` and creates fix tasks dynamically when coverage is below target.
167
+
168
+ #### Agent Health Check
169
+
170
+ Use `list_agents({})` in handleResume and handleComplete:
171
+
172
+ ```
173
+ // Reconcile session state with actual running agents
174
+ const running = list_agents({})
175
+ // Compare with tasks.json active_agents
176
+ // Reset orphaned tasks (in_progress but agent gone) to pending
177
+ ```
178
+
179
+ #### Named Agent Targeting
180
+
181
+ Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
182
+ - `send_message({ target: "TESTGEN-001", message: "..." })` -- queue strategy context to running generator
183
+ - `close_agent({ target: "TESTRUN-001" })` -- cleanup by name after wait_agent returns
184
+
185
+ ### Completion Action
186
+
187
+ When pipeline completes, coordinator presents:
188
+
189
+ ```
190
+ request_user_input({
191
+ questions: [{
192
+ question: "Testing pipeline complete. What would you like to do?",
193
+ header: "Completion",
194
+ multiSelect: false,
195
+ options: [
196
+ { label: "Archive & Clean (Recommended)", description: "Archive session, clean up team" },
197
+ { label: "Keep Active", description: "Keep session for follow-up work" },
198
+ { label: "Deepen Coverage", description: "Add more test layers or increase coverage targets" }
199
+ ]
200
+ }]
201
+ })
202
+ ```
203
+
204
+ ### Session Directory
205
+
206
+ ```
207
+ .workflow/.team/TST-<slug>-<date>/
208
+ +-- .msg/messages.jsonl # Team message bus
209
+ +-- .msg/meta.json # Session metadata
210
+ +-- wisdom/ # Cross-task knowledge
211
+ +-- strategy/ # Strategist output
212
+ +-- tests/ # Generator output (L1-unit/, L2-integration/, L3-e2e/)
213
+ +-- results/ # Executor output
214
+ +-- analysis/ # Analyst output
215
+ ```
216
+
217
+ ### Specs Reference
218
+
219
+ - [specs/pipelines.md](specs/pipelines.md) -- Pipeline definitions and task registry
220
+ - [specs/team-config.json](specs/team-config.json) -- Team configuration
221
+ </context>
222
+
223
+ <error_codes>
224
+
225
+ | Scenario | Resolution |
226
+ |----------|------------|
227
+ | Unknown --role value | Error with available role list |
228
+ | Role not found | Error with expected path (roles/<name>/role.md) |
229
+ | CLI tool fails | Worker fallback to direct implementation |
230
+ | GC loop exceeded | Accept current coverage with warning |
231
+ | Fast-advance conflict | Coordinator reconciles on next callback |
232
+ | Completion action fails | Default to Keep Active |
233
+ </error_codes>
234
+
235
+ <success_criteria>
236
+ - [ ] Role router correctly dispatches to coordinator or worker based on --role flag
237
+ - [ ] Pipeline executes strategist -> generator -> executor -> analyst in order
238
+ - [ ] Parallel generators spawned per test layer (L1/L2/L3)
239
+ - [ ] GC loops create fix tasks dynamically when coverage is below target
240
+ - [ ] Session state persisted after each wave
241
+ - [ ] Completion action presented and handled correctly
242
+ </success_criteria>
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: wiki-connect
3
+ description: Wiki knowledge graph link discovery and health improvement. Finds orphaned entries, missing connections, transitive gaps. Scores candidates and optionally auto-applies new related links via --fix.
4
+ argument-hint: "[--scope <type>] [--min-similarity N] [--fix] [--max N]"
5
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
+ ---
7
+
8
+ <purpose>
9
+ Knowledge graph link discovery. Analyzes wiki index to find orphaned entries, missing
10
+ bidirectional links, and transitive closure gaps. Scores connection candidates and
11
+ optionally auto-applies new `related` links to improve graph connectivity.
12
+ </purpose>
13
+
14
+ <context>
15
+ $ARGUMENTS — optional flags.
16
+
17
+ **Flags:**
18
+ - `--scope <type>` — Limit to wiki type (spec, phase, memory, note, lesson, issue). Default: all.
19
+ - `--min-similarity N` — Threshold 0.0-1.0 (default: 0.3)
20
+ - `--fix` — Auto-apply top suggestions
21
+ - `--max N` — Max suggestions (default: 20)
22
+
23
+ **Output**: `.workflow/learning/wiki-connections-{date}.md`
24
+ </context>
25
+
26
+ <execution>
27
+
28
+ ### Stage 1: Load Wiki State
29
+ Parallel `maestro wiki` commands: `list --json`, `health`, `orphans`, `hubs --top 10`.
30
+
31
+ ### Stage 2: Identify Connection Candidates
32
+ - **Orphan rescue**: BM25 search by title, tag overlap, same phase
33
+ - **Missing bidirectional**: A→B exists but B→A missing
34
+ - **Transitive closure**: A→B and B→C but no A→C (with shared tags/phase)
35
+ - **Type bridge**: Different types referencing same concept but unlinked
36
+
37
+ ### Stage 3: Score Candidates
38
+ ```
39
+ score = 0.4 × tag_overlap + 0.3 × title_bm25 + 0.2 × same_phase + 0.1 × type_bridge
40
+ ```
41
+ Filter by `--min-similarity`, rank desc, limit by `--max`.
42
+
43
+ ### Stage 4: Present Suggestions
44
+ Display ranked suggestions with scores, reasons, projected health delta.
45
+ If not `--fix`: display and exit.
46
+
47
+ ### Stage 5: Apply (--fix only)
48
+ For each suggestion: get entry → append target to `related` → update via `maestro wiki update`.
49
+ Re-run `maestro wiki health` for delta.
50
+
51
+ ### Stage 6: Persist
52
+ Write `wiki-connections-{date}.md`. Append graph insights to `lessons.jsonl` (source: "wiki-connect").
53
+
54
+ **Next steps:** `/wiki-digest <topic>`, `/learn-follow <wiki-id>`, `maestro wiki graph`
55
+ </execution>
56
+
57
+ <error_codes>
58
+ | Code | Severity | Condition | Recovery |
59
+ |------|----------|-----------|----------|
60
+ | E001 | error | No wiki entries found | Initialize wiki content |
61
+ | W001 | warning | No candidates above threshold | Lower --min-similarity |
62
+ | W002 | warning | Some wiki updates failed during --fix | Retry manually |
63
+ | W003 | warning | Health score unchanged after fix | Connections may not affect specific metrics |
64
+ </error_codes>
65
+
66
+ <success_criteria>
67
+ - [ ] Wiki index loaded with type distribution
68
+ - [ ] Baseline health score recorded
69
+ - [ ] Orphans identified and rescue candidates generated
70
+ - [ ] Candidates scored and ranked
71
+ - [ ] Suggestions displayed with scores and reasons
72
+ - [ ] If --fix: entries updated, new health score reported
73
+ - [ ] Report written to `wiki-connections-{date}.md`
74
+ - [ ] Graph insights appended to `lessons.jsonl`
75
+ </success_criteria>
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: wiki-digest
3
+ description: Knowledge synthesis from wiki entries. Theme clustering, gap analysis, coverage heatmap (type × theme matrix). Optionally creates knowledge-gap issues. Persists meta-insights to lessons.jsonl.
4
+ argument-hint: "[<topic>|--recent N] [--type <type>] [--format brief|full] [--create-issues]"
5
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
+ ---
7
+
8
+ <purpose>
9
+ Knowledge synthesis that generates actionable digests from the wiki knowledge graph.
10
+ Clusters entries by semantic theme, identifies knowledge gaps, and produces a coverage
11
+ heatmap. Unlike `maestro wiki list` (raw entries), this synthesizes and interprets
12
+ the knowledge base with gap analysis and recommended actions.
13
+ </purpose>
14
+
15
+ <context>
16
+ $ARGUMENTS — scope and optional flags.
17
+
18
+ **Scope resolution:**
19
+ - `<topic>` — Search wiki for matching entries
20
+ - `--recent N` — Entries updated in last N days
21
+ - `--type <type>` — Filter by wiki type
22
+ - No args — entire wiki
23
+
24
+ **Flags:**
25
+ - `--format brief` — Compact summary (default)
26
+ - `--format full` — Detailed with per-entry summaries
27
+ - `--create-issues` — Auto-create knowledge-gap issues in issues.jsonl
28
+
29
+ **Output**: `.workflow/learning/digest-{slug}-{date}.md`
30
+ </context>
31
+
32
+ <execution>
33
+
34
+ ### Stage 1: Scope & Load
35
+ Load entries via `maestro wiki list/search`. Run `maestro wiki health` for baseline.
36
+
37
+ ### Stage 2: Theme Clustering
38
+ Group entries into 3-5 themes via: tag co-occurrence, title BM25 similarity, relationship proximity, type grouping.
39
+
40
+ ### Stage 3: Per-Theme Analysis
41
+ Per theme: summary paragraph, key entries (by hub score), gap detection (broken links, orphans, TODO markers, missing perspectives), health score.
42
+
43
+ ### Stage 4: Cross-Reference with Lessons
44
+ Search `lessons.jsonl` for related insights. Flag unlinked insights (lessons matching theme but not referenced by wiki entries).
45
+
46
+ ### Stage 5: Coverage Heatmap
47
+ Type × theme matrix showing knowledge density:
48
+ ```
49
+ Theme 1 Theme 2 Theme 3
50
+ spec ███░░ ░░░░░ █████
51
+ phase ████░ ███░░ ░░░░░
52
+ lesson █░░░░ ██░░░ ████░
53
+ ```
54
+ Empty cells = knowledge gaps.
55
+
56
+ ### Stage 6: Write Digest
57
+ Produce `digest-{slug}-{date}.md` with themes, heatmap, gaps, unlinked insights, recommended actions.
58
+
59
+ ### Stage 7: Gap → Issue (if --create-issues)
60
+ For each gap: dedup against issues.jsonl, append with `type: "knowledge-gap"`, `source: "wiki-digest"`.
61
+
62
+ ### Stage 8: Persist
63
+ Append meta-insights to `lessons.jsonl` (source: "wiki-digest"). Display summary.
64
+
65
+ **Next steps:** `/learn-follow <wiki-id>`, `/wiki-connect --fix`, `/learn-decompose <path>`
66
+ </execution>
67
+
68
+ <error_codes>
69
+ | Code | Severity | Condition | Recovery |
70
+ |------|----------|-----------|----------|
71
+ | E001 | error | No wiki entries found | Initialize wiki content |
72
+ | E002 | error | Topic search returned 0 | Broaden topic |
73
+ | W001 | warning | Too few entries (<5) | Themes may be trivial |
74
+ | W002 | warning | lessons.jsonl not found | Skip cross-reference |
75
+ | W003 | warning | Some entry bodies failed to load | Partial summaries |
76
+ </error_codes>
77
+
78
+ <success_criteria>
79
+ - [ ] Scope parsed and entries loaded
80
+ - [ ] Entries clustered into 3-5 semantic themes
81
+ - [ ] Per-theme analysis with gaps identified
82
+ - [ ] Cross-reference with lessons.jsonl completed
83
+ - [ ] Coverage heatmap generated
84
+ - [ ] If --create-issues: gap issues created (deduped)
85
+ - [ ] Digest written to `digest-{slug}-{date}.md`
86
+ - [ ] Meta-insights appended to lessons.jsonl
87
+ </success_criteria>