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,198 +1,202 @@
1
- ---
2
- name: quality-test
3
- description: Conversational UAT with session persistence, auto-diagnosis, and gap-plan closure loop. Interactive testing flow with severity inference and parallel debug agents.
4
- argument-hint: "<phase> [--auto-fix] [--session ID]"
5
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent, AskUserQuestion
6
- ---
7
-
8
- ## Auto Mode
9
-
10
- No auto mode -- UAT is inherently interactive. `--auto-fix` only automates gap closure, not test execution.
11
-
12
- # Test (UAT)
13
-
14
- ## Usage
15
-
16
- ```bash
17
- $quality-test "3" # test phase 3
18
- $quality-test "3 --smoke" # smoke tests first, then UAT
19
- $quality-test "3 --auto-fix" # auto-trigger gap-fix loop on failures
20
- $quality-test "--session 04-comments" # resume specific session
21
- ```
22
-
23
- **Flags**:
24
- - `<phase>`: Phase number or scratch task ID
25
- - `--smoke`: Run cold-start smoke tests before UAT
26
- - `--auto-fix`: Auto-trigger gap-fix loop (plan --gaps -> execute -> re-verify) on failures
27
- - `--session ID`: Resume a specific UAT session
28
-
29
- **Output**: `{target_dir}/uat.md` + `.tests/test-plan.json` + `.tests/test-results.json` + `.tests/coverage-report.json`
30
-
31
- ---
32
-
33
- ## Overview
34
-
35
- Conversational UAT: present expected behavior one test at a time, user confirms or describes issues. Severity inferred from natural language (never asked). Session persists in `uat.md` across context resets. Failed tests trigger parallel debug agent diagnosis and optional gap-fix closure.
36
-
37
- **Philosophy**: Show expected, ask if reality matches.
38
-
39
- ---
40
-
41
- ## Implementation
42
-
43
- ### Step 1: Resolve Target
44
-
45
- 1. Parse `$ARGUMENTS` for phase number, scratch task ID, or flags
46
- 2. **Phase mode**: set `PHASE_DIR = .workflow/phases/{NN}-{slug}/`
47
- 3. **Scratch mode**: set `SCRATCH_DIR = .workflow/scratch/{id}/`
48
- 4. Validate target exists and has `verification.json` -- if missing: **E002**
49
-
50
- ### Step 2: Check Active Sessions
51
-
52
- ```bash
53
- find .workflow/phases -name "uat.md" -type f 2>/dev/null | head -5
54
- find .workflow/scratch -name "uat.md" -type f 2>/dev/null | head -5
55
- ```
56
-
57
- - If active sessions exist and no target specified: display session table, ask user to resume or start new
58
- - If `--session ID` specified: resume that session directly (skip to Step 9)
59
- - If session exists for target: offer resume or restart
60
-
61
- ### Step 3: Smoke Tests (if --smoke)
62
-
63
- Run basic sanity checks (app starts, routes respond, build clean, deps installed).
64
- If any smoke fails: **E003** -- abort, suggest Skill({ skill: "quality-debug" })
65
-
66
- ### Step 4: Load Verification Context
67
-
68
- Read from target directory: verification.json, validation.json, index.json, plan.json, `.summaries/TASK-*.md`. Build testable list from user-observable outcomes.
69
-
70
- ### Step 5: Design Test Scenarios
71
-
72
- Create scenarios from testables (id T-001, name, category, expected behavior, requirement_ref). Focus on USER-OBSERVABLE outcomes. Write `{target_dir}/.tests/test-plan.json`.
73
-
74
- ### Step 6: Create UAT File
75
-
76
- Archive previous `uat.md` to `.history/` if exists.
77
- Write `{target_dir}/uat.md` with frontmatter (status, target, started), Current Test section, Tests section (all pending), Summary counters, empty Gaps section.
78
-
79
- ### Step 7: Present Test (Interactive Loop)
80
-
81
- Present one test at a time:
82
- ```
83
- ------------------------------------------------------------
84
- TEST {number}/{total}: {name}
85
- ------------------------------------------------------------
86
-
87
- Expected behavior:
88
- {expected}
89
-
90
- ------------------------------------------------------------
91
- > Type "pass" or describe what's wrong
92
- ------------------------------------------------------------
93
- ```
94
-
95
- Wait for user response (plain text).
96
-
97
- ### Step 8: Process Response
98
-
99
- | Response | Action |
100
- |----------|--------|
101
- | empty, "yes", "y", "ok", "pass", "next" | Mark as pass |
102
- | "skip", "can't test", "n/a" | Mark as skipped |
103
- | Anything else | Log as issue, infer severity |
104
-
105
- **Severity inference** (never ask):
106
- - "crashes", "error", "fails completely" -> blocker
107
- - "doesn't work", "wrong behavior", "broken" -> major
108
- - "works but...", "slow", "minor issue" -> minor
109
- - "color", "spacing", "typo" -> cosmetic
110
- - Default: major
111
-
112
- **On issue**: auto-create issue in `.workflow/issues/issues.jsonl` with back-reference.
113
-
114
- **Batched writes**: write to file on issue, every 5 passes, or completion.
115
-
116
- If more tests: update Current Test, loop to Step 7.
117
- If done: go to Step 10.
118
-
119
- ### Step 9: Resume From File
120
-
121
- Read `uat.md`, find first `result: [pending]` test, announce progress, continue from there (go to Step 7).
122
-
123
- ### Step 10: Complete Session
124
-
125
- 1. Update `uat.md` frontmatter: status -> "complete"
126
- 2. Archive previous result artifacts to `.history/`
127
- 3. Write `.tests/test-results.json` and `.tests/coverage-report.json`
128
- 4. Update `index.json` with UAT results
129
- 5. If no issues: go to Step 13
130
- 6. If issues found: go to Step 11
131
-
132
- ### Step 11: Auto-Diagnose
133
-
134
- Cluster related gaps by component/area. Spawn one debug Agent per cluster:
135
-
136
- ```
137
- Agent({
138
- subagent_type: "general-purpose",
139
- description: "Diagnose UAT gap cluster: {cluster_name}",
140
- prompt: "Investigate UAT failures. Gaps: {gap list}. Find root cause, fix direction, affected files, evidence (file:line).",
141
- run_in_background: false
142
- })
143
- ```
144
-
145
- Update `uat.md` gaps with diagnosis results (root_cause, fix_direction, affected_files).
146
-
147
- ### Step 12: Gap Closure Decision
148
-
149
- **If `--auto-fix`**: execute gap-fix loop directly.
150
-
151
- **Otherwise**: present diagnosis summary and offer options:
152
- 1. Auto-fix (plan --gaps -> execute -> re-verify, max 2 iterations)
153
- 2. Debug deep -- Skill({ skill: "quality-debug" })
154
- 3. Plan fixes -- Skill({ skill: "maestro-plan", args: "--gaps" })
155
- 4. Manual fix
156
-
157
- Update issue lifecycle during gap-fix loop (registered -> planning -> executing -> completed/failed).
158
-
159
- ### Step 13: Report
160
-
161
- ```
162
- === UAT RESULTS ===
163
- Target: {target}
164
- Smoke Tests: {smoke_count} run, {smoke_pass} passed
165
- UAT Tests: {total} total
166
- Passed: {passed}
167
- Issues: {issues} ({blocker_count} blockers, {major_count} major)
168
- Skipped: {skipped}
169
- Diagnosis: {diagnosed_count}/{issues} gaps diagnosed
170
- Auto-fix: {fixed_count} gaps resolved
171
-
172
- Next steps:
173
- {suggested_next_command}
174
- ```
175
-
176
- ---
177
-
178
- ## Error Handling
179
-
180
- | Code | Severity | Condition | Recovery |
181
- |------|----------|-----------|----------|
182
- | E001 | error | Phase or task target required | Prompt user for phase number |
183
- | E002 | error | Phase not verified (no verification.json) | Suggest Skill({ skill: "maestro-verify" }) |
184
- | E003 | error | Smoke test failed (app won't start) | Suggest Skill({ skill: "quality-debug" }) |
185
- | W001 | warning | Test scenarios failed | Auto-diagnose, suggest fix options |
186
- | W002 | warning | Coverage below threshold | Suggest Skill({ skill: "quality-test-gen" }) |
187
-
188
- ---
189
-
190
- ## Core Rules
191
-
192
- - **One test at a time** -- never batch-present tests
193
- - **Never ask severity** -- always infer from natural language
194
- - **Session persistence** -- uat.md survives context resets, resume from any point
195
- - **Batched writes** -- minimize file I/O (on issue, every 5 passes, completion)
196
- - **Gap-fix loop max 2 iterations** -- prevent infinite loops
197
- - **Agent calls use `run_in_background: false`** for synchronous execution
198
- - **Auto-create issues** in `.workflow/issues/issues.jsonl` for every failed test
1
+ ---
2
+ name: quality-test
3
+ description: Conversational UAT with session persistence, auto-diagnosis, and gap-plan closure loop. Interactive testing flow with severity inference and parallel debug agents.
4
+ argument-hint: "<phase> [--auto-fix] [--session ID]"
5
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent, AskUserQuestion
6
+ ---
7
+
8
+ <purpose>
9
+ Conversational UAT: present expected behavior one test at a time, user confirms or describes issues. Severity inferred from natural language (never asked). Session persists in `uat.md` across context resets. Failed tests trigger parallel debug agent diagnosis and optional gap-fix closure.
10
+
11
+ **Philosophy**: Show expected, ask if reality matches.
12
+ </purpose>
13
+
14
+ <context>
15
+ $ARGUMENTS -- phase number or scratch task ID, plus optional flags.
16
+
17
+ **Usage**:
18
+
19
+ ```bash
20
+ $quality-test "3" # test phase 3
21
+ $quality-test "3 --smoke" # smoke tests first, then UAT
22
+ $quality-test "3 --auto-fix" # auto-trigger gap-fix loop on failures
23
+ $quality-test "--session 04-comments" # resume specific session
24
+ ```
25
+
26
+ **Flags**:
27
+ - `<phase>`: Phase number or scratch task ID
28
+ - `--smoke`: Run cold-start smoke tests before UAT
29
+ - `--auto-fix`: Auto-trigger gap-fix loop (plan --gaps -> execute -> re-verify) on failures
30
+ - `--session ID`: Resume a specific UAT session
31
+
32
+ No auto mode -- UAT is inherently interactive. `--auto-fix` only automates gap closure, not test execution.
33
+
34
+ **Output**: `{target_dir}/uat.md` + `.tests/test-plan.json` + `.tests/test-results.json` + `.tests/coverage-report.json`
35
+ </context>
36
+
37
+ <invariants>
38
+ 1. **One test at a time** -- never batch-present tests
39
+ 2. **Never ask severity** -- always infer from natural language
40
+ 3. **Session persistence** -- uat.md survives context resets, resume from any point
41
+ 4. **Batched writes** -- minimize file I/O (on issue, every 5 passes, completion)
42
+ 5. **Gap-fix loop max 2 iterations** -- prevent infinite loops
43
+ 6. **Agent calls use `run_in_background: false`** for synchronous execution
44
+ 7. **Auto-create issues** in `.workflow/issues/issues.jsonl` for every failed test
45
+ </invariants>
46
+
47
+ <execution>
48
+
49
+ ### Step 1: Resolve Target
50
+
51
+ 1. Parse `$ARGUMENTS` for phase number, scratch task ID, or flags
52
+ 2. **Phase mode**: set `PHASE_DIR = .workflow/phases/{NN}-{slug}/`
53
+ 3. **Scratch mode**: set `SCRATCH_DIR = .workflow/scratch/{id}/`
54
+ 4. Validate target exists and has `verification.json` -- if missing: **E002**
55
+
56
+ ### Step 2: Check Active Sessions
57
+
58
+ ```bash
59
+ find .workflow/phases -name "uat.md" -type f 2>/dev/null | head -5
60
+ find .workflow/scratch -name "uat.md" -type f 2>/dev/null | head -5
61
+ ```
62
+
63
+ - If active sessions exist and no target specified: display session table, ask user to resume or start new
64
+ - If `--session ID` specified: resume that session directly (skip to Step 9)
65
+ - If session exists for target: offer resume or restart
66
+
67
+ ### Step 3: Smoke Tests (if --smoke)
68
+
69
+ Run basic sanity checks (app starts, routes respond, build clean, deps installed).
70
+ If any smoke fails: **E003** -- abort, suggest Skill({ skill: "quality-debug" })
71
+
72
+ ### Step 4: Load Verification Context
73
+
74
+ Read from target directory: verification.json, validation.json, index.json, plan.json, `.summaries/TASK-*.md`. Build testable list from user-observable outcomes.
75
+
76
+ ### Step 5: Design Test Scenarios
77
+
78
+ Create scenarios from testables (id T-001, name, category, expected behavior, requirement_ref). Focus on USER-OBSERVABLE outcomes. Write `{target_dir}/.tests/test-plan.json`.
79
+
80
+ ### Step 6: Create UAT File
81
+
82
+ Archive previous `uat.md` to `.history/` if exists.
83
+ Write `{target_dir}/uat.md` with frontmatter (status, target, started), Current Test section, Tests section (all pending), Summary counters, empty Gaps section.
84
+
85
+ ### Step 7: Present Test (Interactive Loop)
86
+
87
+ Present one test at a time:
88
+ ```
89
+ ------------------------------------------------------------
90
+ TEST {number}/{total}: {name}
91
+ ------------------------------------------------------------
92
+
93
+ Expected behavior:
94
+ {expected}
95
+
96
+ ------------------------------------------------------------
97
+ > Type "pass" or describe what's wrong
98
+ ------------------------------------------------------------
99
+ ```
100
+
101
+ Wait for user response (plain text).
102
+
103
+ ### Step 8: Process Response
104
+
105
+ | Response | Action |
106
+ |----------|--------|
107
+ | empty, "yes", "y", "ok", "pass", "next" | Mark as pass |
108
+ | "skip", "can't test", "n/a" | Mark as skipped |
109
+ | Anything else | Log as issue, infer severity |
110
+
111
+ **Severity inference** (never ask):
112
+ - "crashes", "error", "fails completely" -> blocker
113
+ - "doesn't work", "wrong behavior", "broken" -> major
114
+ - "works but...", "slow", "minor issue" -> minor
115
+ - "color", "spacing", "typo" -> cosmetic
116
+ - Default: major
117
+
118
+ **On issue**: auto-create issue in `.workflow/issues/issues.jsonl` with back-reference.
119
+
120
+ **Batched writes**: write to file on issue, every 5 passes, or completion.
121
+
122
+ If more tests: update Current Test, loop to Step 7.
123
+ If done: go to Step 10.
124
+
125
+ ### Step 9: Resume From File
126
+
127
+ Read `uat.md`, find first `result: [pending]` test, announce progress, continue from there (go to Step 7).
128
+
129
+ ### Step 10: Complete Session
130
+
131
+ 1. Update `uat.md` frontmatter: status -> "complete"
132
+ 2. Archive previous result artifacts to `.history/`
133
+ 3. Write `.tests/test-results.json` and `.tests/coverage-report.json`
134
+ 4. Update `index.json` with UAT results
135
+ 5. If no issues: go to Step 13
136
+ 6. If issues found: go to Step 11
137
+
138
+ ### Step 11: Auto-Diagnose
139
+
140
+ Cluster related gaps by component/area. Spawn one debug Agent per cluster:
141
+
142
+ ```
143
+ Agent({
144
+ subagent_type: "general-purpose",
145
+ description: "Diagnose UAT gap cluster: {cluster_name}",
146
+ prompt: "Investigate UAT failures. Gaps: {gap list}. Find root cause, fix direction, affected files, evidence (file:line).",
147
+ run_in_background: false
148
+ })
149
+ ```
150
+
151
+ Update `uat.md` gaps with diagnosis results (root_cause, fix_direction, affected_files).
152
+
153
+ ### Step 12: Gap Closure Decision
154
+
155
+ **If `--auto-fix`**: execute gap-fix loop directly.
156
+
157
+ **Otherwise**: present diagnosis summary and offer options:
158
+ 1. Auto-fix (plan --gaps -> execute -> re-verify, max 2 iterations)
159
+ 2. Debug deep -- Skill({ skill: "quality-debug" })
160
+ 3. Plan fixes -- Skill({ skill: "maestro-plan", args: "--gaps" })
161
+ 4. Manual fix
162
+
163
+ Update issue lifecycle during gap-fix loop (registered -> planning -> executing -> completed/failed).
164
+
165
+ ### Step 13: Report
166
+
167
+ ```
168
+ === UAT RESULTS ===
169
+ Target: {target}
170
+ Smoke Tests: {smoke_count} run, {smoke_pass} passed
171
+ UAT Tests: {total} total
172
+ Passed: {passed}
173
+ Issues: {issues} ({blocker_count} blockers, {major_count} major)
174
+ Skipped: {skipped}
175
+ Diagnosis: {diagnosed_count}/{issues} gaps diagnosed
176
+ Auto-fix: {fixed_count} gaps resolved
177
+
178
+ Next steps:
179
+ {suggested_next_command}
180
+ ```
181
+ </execution>
182
+
183
+ <error_codes>
184
+ | Code | Severity | Condition | Recovery |
185
+ |------|----------|-----------|----------|
186
+ | E001 | error | Phase or task target required | Prompt user for phase number |
187
+ | E002 | error | Phase not verified (no verification.json) | Suggest Skill({ skill: "maestro-verify" }) |
188
+ | E003 | error | Smoke test failed (app won't start) | Suggest Skill({ skill: "quality-debug" }) |
189
+ | W001 | warning | Test scenarios failed | Auto-diagnose, suggest fix options |
190
+ | W002 | warning | Coverage below threshold | Suggest Skill({ skill: "quality-test-gen" }) |
191
+ </error_codes>
192
+
193
+ <success_criteria>
194
+ - [ ] Target resolved and verification context loaded
195
+ - [ ] Test scenarios designed from user-observable outcomes
196
+ - [ ] UAT file created with session persistence
197
+ - [ ] Tests presented one at a time, severity inferred (never asked)
198
+ - [ ] Issues auto-created for all failures
199
+ - [ ] Diagnosis completed for failed test clusters
200
+ - [ ] Gap closure offered (auto-fix or manual options)
201
+ - [ ] Final report with pass/fail counts and next steps
202
+ </success_criteria>