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,223 +1,228 @@
1
- ---
2
- name: quality-business-test
3
- description: PRD-forward business testing with requirement traceability, multi-layer execution (L1 Interface L2 Business Rule L3 Scenario), fixture generation, and feedback loop.
4
- argument-hint: "<phase> [--spec SPEC-xxx] [--layer L1|L2|L3] [--gen-code] [--dry-run] [--re-run] [--auto]"
5
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent, AskUserQuestion
6
- ---
7
-
8
- ## Auto Mode
9
-
10
- `--auto` skips interactive confirmation of test plan. `--dry-run` extracts scenarios only without execution.
11
-
12
- # Business Test (PRD-Forward)
13
-
14
- ## Usage
15
-
16
- ```bash
17
- $quality-business-test "3" # test phase 3 against PRD
18
- $quality-business-test "3 --layer L1" # L1 interface tests only
19
- $quality-business-test "3 --gen-code" # generate framework-specific test classes
20
- $quality-business-test "3 --dry-run" # extract scenarios only, don't execute
21
- $quality-business-test "3 --re-run" # re-run only previously failed scenarios
22
- $quality-business-test "3 --spec SPEC-auth-2026-04" # explicit spec reference
23
- $quality-business-test "3 --auto" # skip plan confirmation
24
- ```
25
-
26
- **Flags**:
27
- - `<phase>`: Phase number (required)
28
- - `--spec SPEC-xxx`: Explicit spec package reference (default: auto-detect from index.json)
29
- - `--layer L1|L2|L3`: Run only specific layer
30
- - `--gen-code`: Generate framework-specific test classes (JUnit/RestAssured, supertest/vitest, pytest/httpx)
31
- - `--dry-run`: Extract scenarios and fixtures only, don't execute
32
- - `--re-run`: Re-run only previously failed/blocked scenarios
33
- - `--auto`: Skip interactive confirmations
34
-
35
- **Output**: `{phase_dir}/.tests/business/business-test-plan.json` + `business-test-report.json` + `business-test-summary.md`
36
-
37
- ---
38
-
39
- ## Overview
40
-
41
- Validate built features against PRD acceptance criteria through automated multi-layer business testing. Unlike quality-test (interactive UAT from code gaps) and quality-test-gen (generate tests from coverage gaps), this starts from REQ-*.md acceptance criteria and works forward.
42
-
43
- **Three-track testing** (complementary, not replacements):
44
-
45
- | Command | Input Source | Verification Angle |
46
- |---------|-------------|-------------------|
47
- | `quality-business-test` | REQ-*.md acceptance criteria | **PRD-forward** are business rules satisfied? |
48
- | `quality-test` | verification.json must_haves | **Code-backward** does the code work? |
49
- | `quality-test-gen` | validation.json gaps | **Coverage-backward** is coverage sufficient? |
50
-
51
- **Layer definitions:**
52
-
53
- | Layer | Name | Tests | Source |
54
- |-------|------|-------|--------|
55
- | L1 | Interface Contract | Single endpoint request/response, input validation, schema compliance | Architecture API endpoints + REQ AC |
56
- | L2 | Business Rule | Multi-step logic, state transitions, business constraints, edge cases | REQ acceptance criteria + NFR |
57
- | L3 | Business Scenario | Full user flows, multi-service chains, error propagation | Epic user stories |
58
-
59
- ---
60
-
61
- ## Implementation
62
-
63
- ### Step 1: Resolve Target & Load Spec Package
64
-
65
- 1. Parse `$ARGUMENTS` for phase number and flags
66
- 2. Set `PHASE_DIR = .workflow/phases/{NN}-{slug}/`
67
- 3. Load `index.json` -> find `spec_ref` -> locate `.workflow/.spec/SPEC-xxx/`
68
- 4. **Full mode**: Read `requirements/_index.md` + all `REQ-*.md` + `NFR-*.md` + `architecture/_index.md` + `epics/EPIC-*.md`
69
- 5. **Degraded mode** (no spec package): Read `index.json.success_criteria` + `plan.json` convergence criteria + `.summaries/TASK-*.md`
70
- 6. If `--re-run`: load previous `business-test-report.json`, filter to failed/blocked scenarios
71
-
72
- ### Step 2: Extract Business Test Scenarios from PRD
73
-
74
- For each `REQ-NNN-{slug}.md`:
75
-
76
- 1. Parse `## Acceptance Criteria` section
77
- 2. Map RFC 2119 keywords to priority:
78
-
79
- | Keyword | Priority | Failure = |
80
- |---------|----------|-----------|
81
- | MUST / SHALL | critical | blocker |
82
- | SHOULD / RECOMMENDED | high | major |
83
- | MAY / OPTIONAL | medium | minor |
84
-
85
- 3. Classify scenario into layer:
86
-
87
- | Source | Layer | Category |
88
- |--------|-------|----------|
89
- | Architecture API endpoints + REQ AC about request/response | L1 | api_contract |
90
- | REQ AC about business logic, validation, state changes | L2 | business_rule |
91
- | Architecture state machine transitions | L2 | state_transition |
92
- | Epic user stories (multi-step flows) | L3 | user_flow |
93
- | NFR performance/security constraints | L2 | non_functional |
94
-
95
- 4. Generate scenario JSON with `id`, `req_ref` (REQ-NNN:AC-N), `layer`, `priority`, `name`, `category`, `endpoint`, `input`, `expected`, `preconditions`, `postconditions`, `mock_services`
96
-
97
- **Degraded mode**: Extract from success_criteria (each -> L2 scenario), plan.json convergence criteria (each -> L1/L2), all default priority: high. No L3 in degraded mode.
98
-
99
- ### Step 3: Generate Test Data (Fixtures)
100
-
101
- Three tiers:
102
-
103
- **Tier 1 Schema-derived**: From REQ data models, generate valid/invalid/boundary variants per entity:
104
- - valid: satisfies all constraints
105
- - invalid: violate each constraint individually (null, empty, overflow, wrong type)
106
- - boundary: edge values (min, max, min-1, max+1)
107
-
108
- **Tier 2 — Criteria-derived**: From "MUST return X when Y" -> `{ input: Y, expected: X }`. From "MUST validate Z" -> `{ input: invalid_Z, expected: error }`.
109
-
110
- **Tier 3 — Scenario-derived (L3 only)**: From Epic user stories -> scenario packs with coordinated entity IDs across steps.
111
-
112
- **Microservice mocks**: From architecture API contract -> request/response pairs for WireMock stubs.
113
-
114
- ### Step 4: Write Test Plan & Confirm
115
-
116
- 1. Archive previous `business-test-plan.json` to `.history/` if exists
117
- 2. Write `.tests/business/business-test-plan.json` with scenarios, fixtures, mock_contracts, requirement_coverage_plan
118
- 3. Display plan summary (scenario counts per layer, fixture counts, requirement coverage)
119
- 4. If not `--auto`: wait for user confirmation (yes/edit/cancel)
120
- 5. If `--dry-run`: stop here, report plan
121
-
122
- ### Step 5: Generate Test Code (if --gen-code)
123
-
124
- Detect project tech stack from `.workflow/specs/project-tech.json` or codebase scan.
125
-
126
- | Stack | L1 | L2 | L3 |
127
- |-------|----|----|-----|
128
- | Java/Spring Boot | RestAssured + MockMvc | JUnit 5 Parameterized + WireMock | TestContainers |
129
- | TypeScript/Node | supertest + vitest | vitest + nock | playwright/cypress |
130
- | Python | httpx + pytest | pytest + responses | pytest + selenium |
131
-
132
- Each test method includes REQ-NNN:AC-N reference in display name. Test files placed in `.tests/business/{layer}/`.
133
-
134
- If no `--gen-code`: scenarios stay as structured JSON for AI agent execution.
135
-
136
- ### Step 6: Execute Tests (Progressive L1 L2 L3)
137
-
138
- **Fail-fast**: L1 critical failures -> STOP (don't run L2). L2 critical failures -> STOP (don't run L3).
139
-
140
- **Generator-Critic loop per layer (max 3 iterations):**
141
-
142
- | Iteration | Action |
143
- |-----------|--------|
144
- | 1 | Run all scenarios. Critic: classify failures as test_defect / code_defect / env_issue |
145
- | 2 | Auto-fix test_defects, re-run ALL scenarios |
146
- | 3 | Final confirmation. Remaining failures = confirmed code_defects |
147
-
148
- **Execution modes:**
149
- - `--gen-code`: run via test framework (`mvn test`, `npx vitest`, etc.)
150
- - default: AI agent executes scenarios against running application
151
-
152
- Record results in `.tests/business/test-results-iter-{N}.json`.
153
-
154
- ### Step 7: Build Traceability Matrix
155
-
156
- Map each result to `REQ-NNN:AC-N`:
157
-
158
- ```
159
- FOR each REQ:
160
- FOR each AC:
161
- ac_status = "passed" if ALL scenarios passed
162
- "failed" if ANY failed
163
- "blocked" if ANY blocked (none failed)
164
- "untested" if no scenarios mapped
165
- verdict = "verified" if all MUST+SHOULD passed
166
- "partial" if some failed
167
- "unverified" if all failed/untested
168
- ```
169
-
170
- ### Step 8: Generate Reports
171
-
172
- 1. Archive previous report/summary to `.history/`
173
- 2. Write `.tests/business/business-test-report.json` with:
174
- - `layers`: per-layer stats (total, passed, failed, blocked, pass_rate)
175
- - `requirement_coverage`: per-REQ criteria results with failure details
176
- - `failures`: each with req_ref, severity, expected/actual, fix_suggestion
177
- - `summary`: total_requirements, fully_verified, partially_verified, unverified, coverage_pct
178
- 3. Write `.tests/business/business-test-summary.md` (human-readable tables)
179
- 4. Update `index.json` with `business_test` section
180
-
181
- ### Step 9: Feedback Loop
182
-
183
- 1. Auto-create issues from failures in `.workflow/issues/issues.jsonl` (each with `req_ref`, `source: "business-test"`)
184
- 2. Report results
185
- 3. Route next step:
186
-
187
- | Result | Suggestion |
188
- |--------|------------|
189
- | All requirements verified | Skill({ skill: "maestro-phase-transition", args: "{phase}" }) |
190
- | Failures found | Skill({ skill: "quality-debug", args: "--from-business-test {phase}" }) |
191
- | `--re-run` all pass | Skill({ skill: "maestro-verify", args: "{phase}" }) |
192
- | Low coverage (< 60%) | Skill({ skill: "quality-test-gen", args: "{phase}" }) |
193
-
194
- **Closure criteria**: Requirement marked "verified" ONLY when ALL MUST+SHOULD acceptance criteria pass.
195
-
196
- ---
197
-
198
- ## Error Handling
199
-
200
- | Code | Severity | Condition | Recovery |
201
- |------|----------|-----------|----------|
202
- | E001 | error | Phase number required | Prompt user for phase number |
203
- | E002 | error | Phase directory not found | Verify phase exists in .workflow/phases/ |
204
- | E003 | error | No spec package AND no success_criteria | Run maestro-spec-generate or maestro-plan first |
205
- | E004 | error | L1 critical failures block L2/L3 | Fix blockers via quality-debug |
206
- | W001 | warning | Degraded mode (no spec package) | Consider running maestro-spec-generate |
207
- | W002 | warning | Some REQs have no testable AC | Note in report |
208
- | W003 | warning | Generator-Critic loop exhausted | Accept current state |
209
- | W004 | warning | Mock services unavailable for L3 | Skip L3 or use --gen-code |
210
-
211
- ---
212
-
213
- ## Core Rules
214
-
215
- - **PRD is source of truth** -- business rules drive test scenarios, not code structure
216
- - **RFC 2119 keyword priority** -- MUST = critical, SHOULD = high, MAY = medium
217
- - **Fail-fast across layers** -- critical L1 failures block L2/L3
218
- - **Generator-Critic loop max 3 iterations** per layer
219
- - **Traceability on every result** -- every pass/fail maps to REQ-NNN:AC-N
220
- - **Agent calls use `run_in_background: false`** for synchronous execution
221
- - **Auto-create issues** in `.workflow/issues/issues.jsonl` for every failure
222
- - **Degraded mode** works without spec package (from success_criteria + plan.json)
223
- - **Never modify source code** -- this command tests, it doesn't fix
1
+ ---
2
+ name: quality-business-test
3
+ description: PRD-forward business testing with requirement traceability, multi-layer execution (L1 Interface -> L2 Business Rule -> L3 Scenario), fixture generation, and feedback loop.
4
+ argument-hint: "<phase> [--spec SPEC-xxx] [--layer L1|L2|L3] [--gen-code] [--dry-run] [--re-run] [--auto]"
5
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent, AskUserQuestion
6
+ ---
7
+
8
+ <purpose>
9
+ Validate built features against PRD acceptance criteria through automated multi-layer business testing. Unlike quality-test (interactive UAT from code gaps) and quality-test-gen (generate tests from coverage gaps), this starts from REQ-*.md acceptance criteria and works forward.
10
+
11
+ **Three-track testing** (complementary, not replacements):
12
+
13
+ | Command | Input Source | Verification Angle |
14
+ |---------|-------------|-------------------|
15
+ | `quality-business-test` | REQ-*.md acceptance criteria | **PRD-forward** -- are business rules satisfied? |
16
+ | `quality-test` | verification.json must_haves | **Code-backward** -- does the code work? |
17
+ | `quality-test-gen` | validation.json gaps | **Coverage-backward** -- is coverage sufficient? |
18
+
19
+ **Layer definitions:**
20
+
21
+ | Layer | Name | Tests | Source |
22
+ |-------|------|-------|--------|
23
+ | L1 | Interface Contract | Single endpoint request/response, input validation, schema compliance | Architecture API endpoints + REQ AC |
24
+ | L2 | Business Rule | Multi-step logic, state transitions, business constraints, edge cases | REQ acceptance criteria + NFR |
25
+ | L3 | Business Scenario | Full user flows, multi-service chains, error propagation | Epic user stories |
26
+ </purpose>
27
+
28
+ <context>
29
+ $ARGUMENTS -- phase number plus optional flags.
30
+
31
+ **Usage**:
32
+
33
+ ```bash
34
+ $quality-business-test "3" # test phase 3 against PRD
35
+ $quality-business-test "3 --layer L1" # L1 interface tests only
36
+ $quality-business-test "3 --gen-code" # generate framework-specific test classes
37
+ $quality-business-test "3 --dry-run" # extract scenarios only, don't execute
38
+ $quality-business-test "3 --re-run" # re-run only previously failed scenarios
39
+ $quality-business-test "3 --spec SPEC-auth-2026-04" # explicit spec reference
40
+ $quality-business-test "3 --auto" # skip plan confirmation
41
+ ```
42
+
43
+ **Flags**:
44
+ - `<phase>`: Phase number (required)
45
+ - `--spec SPEC-xxx`: Explicit spec package reference (default: auto-detect from index.json)
46
+ - `--layer L1|L2|L3`: Run only specific layer
47
+ - `--gen-code`: Generate framework-specific test classes (JUnit/RestAssured, supertest/vitest, pytest/httpx)
48
+ - `--dry-run`: Extract scenarios and fixtures only, don't execute
49
+ - `--re-run`: Re-run only previously failed/blocked scenarios
50
+ - `--auto`: Skip interactive confirmations
51
+
52
+ `--auto` skips interactive confirmation of test plan. `--dry-run` extracts scenarios only without execution.
53
+
54
+ **Output**: `{phase_dir}/.tests/business/business-test-plan.json` + `business-test-report.json` + `business-test-summary.md`
55
+ </context>
56
+
57
+ <invariants>
58
+ 1. **PRD is source of truth** -- business rules drive test scenarios, not code structure
59
+ 2. **RFC 2119 keyword priority** -- MUST = critical, SHOULD = high, MAY = medium
60
+ 3. **Fail-fast across layers** -- critical L1 failures block L2/L3
61
+ 4. **Generator-Critic loop max 3 iterations** per layer
62
+ 5. **Traceability on every result** -- every pass/fail maps to REQ-NNN:AC-N
63
+ 6. **Agent calls use `run_in_background: false`** for synchronous execution
64
+ 7. **Auto-create issues** in `.workflow/issues/issues.jsonl` for every failure
65
+ 8. **Degraded mode** works without spec package (from success_criteria + plan.json)
66
+ 9. **Never modify source code** -- this command tests, it doesn't fix
67
+ </invariants>
68
+
69
+ <execution>
70
+
71
+ ### Step 1: Resolve Target & Load Spec Package
72
+
73
+ 1. Parse `$ARGUMENTS` for phase number and flags
74
+ 2. Set `PHASE_DIR = .workflow/phases/{NN}-{slug}/`
75
+ 3. Load `index.json` -> find `spec_ref` -> locate `.workflow/.spec/SPEC-xxx/`
76
+ 4. **Full mode**: Read `requirements/_index.md` + all `REQ-*.md` + `NFR-*.md` + `architecture/_index.md` + `epics/EPIC-*.md`
77
+ 5. **Degraded mode** (no spec package): Read `index.json.success_criteria` + `plan.json` convergence criteria + `.summaries/TASK-*.md`
78
+ 6. If `--re-run`: load previous `business-test-report.json`, filter to failed/blocked scenarios
79
+
80
+ ### Step 2: Extract Business Test Scenarios from PRD
81
+
82
+ For each `REQ-NNN-{slug}.md`:
83
+
84
+ 1. Parse `## Acceptance Criteria` section
85
+ 2. Map RFC 2119 keywords to priority:
86
+
87
+ | Keyword | Priority | Failure = |
88
+ |---------|----------|-----------|
89
+ | MUST / SHALL | critical | blocker |
90
+ | SHOULD / RECOMMENDED | high | major |
91
+ | MAY / OPTIONAL | medium | minor |
92
+
93
+ 3. Classify scenario into layer:
94
+
95
+ | Source | Layer | Category |
96
+ |--------|-------|----------|
97
+ | Architecture API endpoints + REQ AC about request/response | L1 | api_contract |
98
+ | REQ AC about business logic, validation, state changes | L2 | business_rule |
99
+ | Architecture state machine transitions | L2 | state_transition |
100
+ | Epic user stories (multi-step flows) | L3 | user_flow |
101
+ | NFR performance/security constraints | L2 | non_functional |
102
+
103
+ 4. Generate scenario JSON with `id`, `req_ref` (REQ-NNN:AC-N), `layer`, `priority`, `name`, `category`, `endpoint`, `input`, `expected`, `preconditions`, `postconditions`, `mock_services`
104
+
105
+ **Degraded mode**: Extract from success_criteria (each -> L2 scenario), plan.json convergence criteria (each -> L1/L2), all default priority: high. No L3 in degraded mode.
106
+
107
+ ### Step 3: Generate Test Data (Fixtures)
108
+
109
+ Three tiers:
110
+
111
+ **Tier 1 -- Schema-derived**: From REQ data models, generate valid/invalid/boundary variants per entity:
112
+ - valid: satisfies all constraints
113
+ - invalid: violate each constraint individually (null, empty, overflow, wrong type)
114
+ - boundary: edge values (min, max, min-1, max+1)
115
+
116
+ **Tier 2 -- Criteria-derived**: From "MUST return X when Y" -> `{ input: Y, expected: X }`. From "MUST validate Z" -> `{ input: invalid_Z, expected: error }`.
117
+
118
+ **Tier 3 -- Scenario-derived (L3 only)**: From Epic user stories -> scenario packs with coordinated entity IDs across steps.
119
+
120
+ **Microservice mocks**: From architecture API contract -> request/response pairs for WireMock stubs.
121
+
122
+ ### Step 4: Write Test Plan & Confirm
123
+
124
+ 1. Archive previous `business-test-plan.json` to `.history/` if exists
125
+ 2. Write `.tests/business/business-test-plan.json` with scenarios, fixtures, mock_contracts, requirement_coverage_plan
126
+ 3. Display plan summary (scenario counts per layer, fixture counts, requirement coverage)
127
+ 4. If not `--auto`: wait for user confirmation (yes/edit/cancel)
128
+ 5. If `--dry-run`: stop here, report plan
129
+
130
+ ### Step 5: Generate Test Code (if --gen-code)
131
+
132
+ Detect project tech stack from `.workflow/specs/project-tech.json` or codebase scan.
133
+
134
+ | Stack | L1 | L2 | L3 |
135
+ |-------|----|----|-----|
136
+ | Java/Spring Boot | RestAssured + MockMvc | JUnit 5 Parameterized + WireMock | TestContainers |
137
+ | TypeScript/Node | supertest + vitest | vitest + nock | playwright/cypress |
138
+ | Python | httpx + pytest | pytest + responses | pytest + selenium |
139
+
140
+ Each test method includes REQ-NNN:AC-N reference in display name. Test files placed in `.tests/business/{layer}/`.
141
+
142
+ If no `--gen-code`: scenarios stay as structured JSON for AI agent execution.
143
+
144
+ ### Step 6: Execute Tests (Progressive L1 -> L2 -> L3)
145
+
146
+ **Fail-fast**: L1 critical failures -> STOP (don't run L2). L2 critical failures -> STOP (don't run L3).
147
+
148
+ **Generator-Critic loop per layer (max 3 iterations):**
149
+
150
+ | Iteration | Action |
151
+ |-----------|--------|
152
+ | 1 | Run all scenarios. Critic: classify failures as test_defect / code_defect / env_issue |
153
+ | 2 | Auto-fix test_defects, re-run ALL scenarios |
154
+ | 3 | Final confirmation. Remaining failures = confirmed code_defects |
155
+
156
+ **Execution modes:**
157
+ - `--gen-code`: run via test framework (`mvn test`, `npx vitest`, etc.)
158
+ - default: AI agent executes scenarios against running application
159
+
160
+ Record results in `.tests/business/test-results-iter-{N}.json`.
161
+
162
+ ### Step 7: Build Traceability Matrix
163
+
164
+ Map each result to `REQ-NNN:AC-N`:
165
+
166
+ ```
167
+ FOR each REQ:
168
+ FOR each AC:
169
+ ac_status = "passed" if ALL scenarios passed
170
+ "failed" if ANY failed
171
+ "blocked" if ANY blocked (none failed)
172
+ "untested" if no scenarios mapped
173
+ verdict = "verified" if all MUST+SHOULD passed
174
+ "partial" if some failed
175
+ "unverified" if all failed/untested
176
+ ```
177
+
178
+ ### Step 8: Generate Reports
179
+
180
+ 1. Archive previous report/summary to `.history/`
181
+ 2. Write `.tests/business/business-test-report.json` with:
182
+ - `layers`: per-layer stats (total, passed, failed, blocked, pass_rate)
183
+ - `requirement_coverage`: per-REQ criteria results with failure details
184
+ - `failures`: each with req_ref, severity, expected/actual, fix_suggestion
185
+ - `summary`: total_requirements, fully_verified, partially_verified, unverified, coverage_pct
186
+ 3. Write `.tests/business/business-test-summary.md` (human-readable tables)
187
+ 4. Update `index.json` with `business_test` section
188
+
189
+ ### Step 9: Feedback Loop
190
+
191
+ 1. Auto-create issues from failures in `.workflow/issues/issues.jsonl` (each with `req_ref`, `source: "business-test"`)
192
+ 2. Report results
193
+ 3. Route next step:
194
+
195
+ | Result | Suggestion |
196
+ |--------|------------|
197
+ | All requirements verified | Skill({ skill: "maestro-phase-transition", args: "{phase}" }) |
198
+ | Failures found | Skill({ skill: "quality-debug", args: "--from-business-test {phase}" }) |
199
+ | `--re-run` all pass | Skill({ skill: "maestro-verify", args: "{phase}" }) |
200
+ | Low coverage (< 60%) | Skill({ skill: "quality-test-gen", args: "{phase}" }) |
201
+
202
+ **Closure criteria**: Requirement marked "verified" ONLY when ALL MUST+SHOULD acceptance criteria pass.
203
+ </execution>
204
+
205
+ <error_codes>
206
+ | Code | Severity | Condition | Recovery |
207
+ |------|----------|-----------|----------|
208
+ | E001 | error | Phase number required | Prompt user for phase number |
209
+ | E002 | error | Phase directory not found | Verify phase exists in .workflow/phases/ |
210
+ | E003 | error | No spec package AND no success_criteria | Run maestro-spec-generate or maestro-plan first |
211
+ | E004 | error | L1 critical failures block L2/L3 | Fix blockers via quality-debug |
212
+ | W001 | warning | Degraded mode (no spec package) | Consider running maestro-spec-generate |
213
+ | W002 | warning | Some REQs have no testable AC | Note in report |
214
+ | W003 | warning | Generator-Critic loop exhausted | Accept current state |
215
+ | W004 | warning | Mock services unavailable for L3 | Skip L3 or use --gen-code |
216
+ </error_codes>
217
+
218
+ <success_criteria>
219
+ - [ ] Phase resolved and spec package loaded (or degraded mode activated)
220
+ - [ ] Business test scenarios extracted from PRD acceptance criteria
221
+ - [ ] Fixtures generated for all layers
222
+ - [ ] Test plan written and confirmed (or --auto/--dry-run)
223
+ - [ ] Tests executed progressively L1 -> L2 -> L3 with fail-fast
224
+ - [ ] Traceability matrix maps every result to REQ-NNN:AC-N
225
+ - [ ] Reports generated (JSON + summary markdown)
226
+ - [ ] Issues auto-created for all failures
227
+ - [ ] Next step suggested based on results
228
+ </success_criteria>