maestro-flow 0.3.10 → 0.3.12
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.
- package/.claude/agents/conceptual-planning-agent.md +1 -0
- package/.claude/agents/workflow-analyzer.md +114 -114
- package/.claude/agents/workflow-collab-planner.md +144 -144
- package/.claude/agents/workflow-debugger.md +102 -103
- package/.claude/agents/workflow-executor.md +127 -128
- package/.claude/agents/workflow-integration-checker.md +82 -82
- package/.claude/agents/workflow-nyquist-auditor.md +85 -84
- package/.claude/agents/workflow-phase-researcher.md +85 -85
- package/.claude/agents/workflow-plan-checker.md +90 -90
- package/.claude/agents/workflow-planner.md +178 -178
- package/.claude/agents/workflow-roadmapper.md +81 -83
- package/.claude/agents/workflow-verifier.md +119 -119
- package/.claude/commands/learn-decompose.md +176 -176
- package/.claude/commands/learn-follow.md +167 -167
- package/.claude/commands/learn-retro.md +3 -3
- package/.claude/commands/learn-second-opinion.md +2 -2
- package/.claude/commands/maestro-brainstorm.md +1 -0
- package/.claude/commands/maestro-coordinate.md +1 -3
- package/.claude/commands/maestro-fork.md +133 -111
- package/.claude/commands/maestro-merge.md +85 -77
- package/.claude/commands/maestro-plan.md +88 -2
- package/.claude/commands/maestro-roadmap.md +113 -2
- package/.claude/commands/maestro.md +1 -0
- package/.claude/commands/manage-harvest.md +131 -131
- package/.claude/commands/manage-issue.md +2 -2
- package/.claude/commands/quality-business-test.md +5 -5
- package/.claude/commands/quality-debug.md +3 -2
- package/.claude/commands/quality-retrospective.md +6 -4
- package/.claude/commands/quality-review.md +1 -1
- package/.claude/commands/quality-test-gen.md +5 -4
- package/.claude/commands/spec-add.md +67 -56
- package/.claude/commands/spec-load.md +66 -64
- package/.claude/commands/spec-setup.md +5 -9
- package/.codex/skills/learn-decompose/SKILL.md +119 -0
- package/.codex/skills/learn-follow/SKILL.md +83 -0
- package/.codex/skills/learn-investigate/SKILL.md +83 -0
- package/.codex/skills/learn-retro/SKILL.md +83 -0
- package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
- package/.codex/skills/maestro/SKILL.md +151 -279
- package/.codex/skills/maestro-analyze/SKILL.md +59 -71
- package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
- package/.codex/skills/maestro-chain/SKILL.md +95 -110
- package/.codex/skills/maestro-coordinate/SKILL.md +68 -234
- package/.codex/skills/maestro-execute/SKILL.md +435 -446
- package/.codex/skills/maestro-fork/SKILL.md +98 -0
- package/.codex/skills/maestro-init/SKILL.md +172 -167
- package/.codex/skills/maestro-learn/SKILL.md +80 -0
- package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
- package/.codex/skills/maestro-merge/SKILL.md +69 -0
- package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
- package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
- package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
- package/.codex/skills/maestro-overlay/SKILL.md +188 -185
- package/.codex/skills/maestro-plan/SKILL.md +58 -69
- package/.codex/skills/maestro-quick/SKILL.md +26 -23
- package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
- package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
- package/.codex/skills/maestro-ui-design/SKILL.md +35 -32
- package/.codex/skills/maestro-verify/SKILL.md +556 -566
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
- package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
- package/.codex/skills/manage-harvest/SKILL.md +82 -0
- package/.codex/skills/manage-issue/SKILL.md +80 -65
- package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
- package/.codex/skills/manage-learn/SKILL.md +190 -186
- package/.codex/skills/manage-memory/SKILL.md +95 -72
- package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
- package/.codex/skills/manage-status/SKILL.md +102 -89
- package/.codex/skills/quality-business-test/SKILL.md +228 -223
- package/.codex/skills/quality-debug/SKILL.md +54 -66
- package/.codex/skills/quality-integration-test/SKILL.md +532 -544
- package/.codex/skills/quality-refactor/SKILL.md +197 -191
- package/.codex/skills/quality-retrospective/SKILL.md +512 -505
- package/.codex/skills/quality-review/SKILL.md +95 -107
- package/.codex/skills/quality-sync/SKILL.md +101 -89
- package/.codex/skills/quality-test/SKILL.md +202 -198
- package/.codex/skills/quality-test-gen/SKILL.md +94 -105
- package/.codex/skills/spec-add/SKILL.md +58 -39
- package/.codex/skills/spec-load/SKILL.md +45 -40
- package/.codex/skills/spec-map/SKILL.md +180 -182
- package/.codex/skills/spec-setup/SKILL.md +94 -76
- package/.codex/skills/team-coordinate/SKILL.md +346 -357
- package/.codex/skills/team-executor/SKILL.md +70 -112
- package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
- package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
- package/.codex/skills/team-review/SKILL.md +232 -225
- package/.codex/skills/team-tech-debt/SKILL.md +78 -100
- package/.codex/skills/team-testing/SKILL.md +242 -235
- package/.codex/skills/wiki-connect/SKILL.md +75 -0
- package/.codex/skills/wiki-digest/SKILL.md +87 -0
- package/README.md +9 -4
- package/README.zh-CN.md +9 -4
- package/dashboard/dist/assets/{ArtifactsPage-DZNCi6tn.js → ArtifactsPage-CUrrDGgN.js} +1 -1
- package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +49 -0
- package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +27 -0
- package/dashboard/dist/assets/{CollabPage-B4NAHXS2.js → CollabPage-DIUXeazv.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-CFt4LJyq.js → ExecutionPanel-VmYeADFj.js} +1 -1
- package/dashboard/dist/assets/KanbanPage-DLq8v7hg.js +21 -0
- package/dashboard/dist/assets/{MarkdownRenderer-X4af_WNb.js → MarkdownRenderer-D7AehrnR.js} +1 -1
- package/dashboard/dist/assets/{McpPage-BKfCVIyU.js → McpPage-BY0SjTgw.js} +2 -2
- package/dashboard/dist/assets/{OutputPanel-BlBQFJSW.js → OutputPanel-B-Rjwgmv.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-De3DLvoI.js → ProblemsPanel-GEpF-oi4.js} +1 -1
- package/dashboard/dist/assets/RequirementBoardPage-xs8uDM7I.js +6 -0
- package/dashboard/dist/assets/{RequirementPage-Bllxe2XI.js → RequirementPage-BKDSFwjA.js} +5 -10
- package/dashboard/dist/assets/SpecsPage-DLFb9ZH0.js +36 -0
- package/dashboard/dist/assets/SupervisorPage-SOki_kgz.js +6 -0
- package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +11 -0
- package/dashboard/dist/assets/{TreeBrowser-Q12qobZs.js → TreeBrowser-B9DHdULE.js} +1 -1
- package/dashboard/dist/assets/{WorkflowPage-D_Fzdy3_.js → WorkflowPage-C8hWbYim.js} +1 -1
- package/dashboard/dist/assets/{check-u6fGOwQO.js → check-DJDk3A2a.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-Csu22t58.js → chevron-right-C7bVDreZ.js} +1 -1
- package/dashboard/dist/assets/{circle-CMrkbRNg.js → circle-Qfgy4LB_.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-c3tH1P4z.js → circle-alert-Na1vf6qQ.js} +1 -1
- package/dashboard/dist/assets/{circle-check-gYxxSYuH.js → circle-check-CEGgy3NV.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-TDSeWstm.js → circle-check-big-3JB8zRYj.js} +1 -1
- package/dashboard/dist/assets/{code-CFN2uX9V.js → code-Ble63Idz.js} +1 -1
- package/dashboard/dist/assets/{columns-3-38xIDlzy.js → columns-3-BUcKlxve.js} +1 -1
- package/dashboard/dist/assets/{download-DC7KkKyP.js → download-CMqkfn8x.js} +1 -1
- package/dashboard/dist/assets/{folder-CWq_lAnf.js → folder-B9ewx9LL.js} +1 -1
- package/dashboard/dist/assets/index-C2Mcb4TJ.js +231 -0
- package/dashboard/dist/assets/index-DyBbPc18.css +1 -0
- package/dashboard/dist/assets/{index-Do71weNR.js → index-JTmGteaT.js} +1 -1
- package/dashboard/dist/assets/{list-CgIP_2A-.js → list-DI8Wn2aT.js} +1 -1
- package/dashboard/dist/assets/loader-B5F6PzFT.js +11 -0
- package/dashboard/dist/assets/{minus-DYoN5UGk.js → minus-Lp_BfctG.js} +1 -1
- package/dashboard/dist/assets/{pen-line-Bh_WKYHm.js → pen-line-Ch7sphzZ.js} +1 -1
- package/dashboard/dist/assets/pencil-_yRMHmGT.js +6 -0
- package/dashboard/dist/assets/{proxy-BKxDAKTj.js → proxy-D72Y8a4Y.js} +1 -1
- package/dashboard/dist/assets/{search-SieXnOgr.js → search-BS6fI6Bg.js} +1 -1
- package/dashboard/dist/assets/{shallow-Bme1JY57.js → shallow-BXasQBvr.js} +1 -1
- package/dashboard/dist/assets/table-CeGlFjlP.js +6 -0
- package/dashboard/dist/assets/{terminal-BB3Xfuv5.js → terminal-BJic2yW-.js} +1 -1
- package/dashboard/dist/assets/{trash-2-C8f4vFFM.js → trash-2-Czz4X8Fb.js} +1 -1
- package/dashboard/dist/assets/{zap-4uwlzVm0.js → zap-C3H0jVFA.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +16 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js +1 -2
- package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js +2 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +3 -0
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/collab.js +124 -0
- package/dashboard/dist-server/dashboard/src/server/routes/collab.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.d.ts +10 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js +73 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.d.ts +31 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.js +28 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +10 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/coordinate-types.d.ts +22 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +12 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js +12 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +22 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js +7 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +28 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +4 -0
- package/dashboard/dist-server/src/hooks/constants.d.ts +3 -1
- package/dashboard/dist-server/src/hooks/constants.js +4 -2
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dist/shared/agent-types.d.ts +4 -0
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/commands/collab.js +4 -4
- package/dist/src/commands/collab.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +66 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +29 -18
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +7 -2
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js +23 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -1
- package/dist/src/hooks/constants.d.ts +3 -1
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +4 -2
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/guards/index.d.ts +1 -0
- package/dist/src/hooks/guards/index.d.ts.map +1 -1
- package/dist/src/hooks/guards/index.js +1 -0
- package/dist/src/hooks/guards/index.js.map +1 -1
- package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
- package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
- package/dist/src/hooks/guards/spec-validator.js +66 -0
- package/dist/src/hooks/guards/spec-validator.js.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.js +96 -0
- package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
- package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
- package/dist/src/hooks/skill-context.d.ts +3 -0
- package/dist/src/hooks/skill-context.d.ts.map +1 -1
- package/dist/src/hooks/skill-context.js +95 -9
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/hooks/spec-bridge.d.ts +40 -0
- package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
- package/dist/src/hooks/spec-bridge.js +97 -0
- package/dist/src/hooks/spec-bridge.js.map +1 -0
- package/dist/src/hooks/spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/spec-injector.js +18 -12
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/hooks/statusline.d.ts.map +1 -1
- package/dist/src/hooks/statusline.js +6 -3
- package/dist/src/hooks/statusline.js.map +1 -1
- package/dist/src/team/phase-orchestrator.d.ts +52 -0
- package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
- package/dist/src/team/phase-orchestrator.js +165 -0
- package/dist/src/team/phase-orchestrator.js.map +1 -0
- package/dist/src/team/phase-types.d.ts +51 -0
- package/dist/src/team/phase-types.d.ts.map +1 -0
- package/dist/src/team/phase-types.js +41 -0
- package/dist/src/team/phase-types.js.map +1 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +6 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/merge-validator.d.ts.map +1 -1
- package/dist/src/tools/merge-validator.js +114 -16
- package/dist/src/tools/merge-validator.js.map +1 -1
- package/dist/src/tools/spec-entry-parser.d.ts +56 -0
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
- package/dist/src/tools/spec-entry-parser.js +196 -0
- package/dist/src/tools/spec-entry-parser.js.map +1 -0
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +66 -92
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-keyword-index.d.ts +30 -0
- package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
- package/dist/src/tools/spec-keyword-index.js +101 -0
- package/dist/src/tools/spec-keyword-index.js.map +1 -0
- package/dist/src/tools/spec-loader.d.ts +3 -3
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +49 -23
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/team-agents.d.ts +27 -0
- package/dist/src/tools/team-agents.d.ts.map +1 -0
- package/dist/src/tools/team-agents.js +362 -0
- package/dist/src/tools/team-agents.js.map +1 -0
- package/dist/src/tools/team-mailbox.d.ts +40 -0
- package/dist/src/tools/team-mailbox.d.ts.map +1 -0
- package/dist/src/tools/team-mailbox.js +384 -0
- package/dist/src/tools/team-mailbox.js.map +1 -0
- package/dist/src/tools/team-msg.d.ts +17 -8
- package/dist/src/tools/team-msg.d.ts.map +1 -1
- package/dist/src/tools/team-msg.js +110 -13
- package/dist/src/tools/team-msg.js.map +1 -1
- package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
- package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
- package/dist/src/tools/team-tasks-mcp.js +408 -0
- package/dist/src/tools/team-tasks-mcp.js.map +1 -0
- package/package.json +2 -1
- package/shared/agent-types.ts +4 -0
- package/templates/worktree-scope.json +9 -10
- package/templates/worktrees.json +26 -27
- package/workflows/analyze.md +816 -816
- package/workflows/brainstorm.md +480 -471
- package/workflows/codebase-rebuild.md +332 -332
- package/workflows/codebase-refresh.md +240 -240
- package/workflows/debug.md +16 -6
- package/workflows/execute.md +1 -1
- package/workflows/fork.md +100 -36
- package/workflows/harvest.md +420 -420
- package/workflows/integration-test.md +355 -343
- package/workflows/issue-discover.md +414 -414
- package/workflows/issue.md +14 -4
- package/workflows/learn.md +19 -5
- package/workflows/maestro.md +1 -0
- package/workflows/map.md +111 -111
- package/workflows/merge.md +113 -55
- package/workflows/milestone-complete.md +176 -176
- package/workflows/plan.md +1 -1
- package/workflows/quick.md +497 -497
- package/workflows/refactor.md +300 -300
- package/workflows/retrospective.md +61 -22
- package/workflows/review.md +17 -4
- package/workflows/roadmap.md +335 -335
- package/workflows/spec-generate.md +640 -640
- package/workflows/specs-add.md +46 -81
- package/workflows/specs-load.md +15 -17
- package/workflows/specs-setup.md +40 -161
- package/workflows/test.md +12 -2
- package/workflows/ui-style.md +9 -2
- package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +0 -49
- package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +0 -22
- package/dashboard/dist/assets/KanbanPage-C8USth6H.js +0 -21
- package/dashboard/dist/assets/RequirementBoardPage-Bf1trzqs.js +0 -11
- package/dashboard/dist/assets/SpecsPage-9lwxKT27.js +0 -36
- package/dashboard/dist/assets/SupervisorPage-SusdfHFq.js +0 -6
- package/dashboard/dist/assets/TeamsPage-DsuM6OwC.js +0 -6
- package/dashboard/dist/assets/arrow-left-Bqtb2hle.js +0 -6
- package/dashboard/dist/assets/index-DWG-WrzT.js +0 -231
- package/dashboard/dist/assets/index-GUNJodSR.css +0 -1
- package/dashboard/dist/assets/table-llyEtj-7.js +0 -6
|
@@ -5,14 +5,46 @@ argument-hint: "[-y|--yes] [-c|--concurrency N] [--continue] \"<phase> [--type u
|
|
|
5
5
|
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
When `--yes` or `-y`: Auto-confirm test plan, skip interactive validation, use defaults for framework detection.
|
|
8
|
+
<purpose>
|
|
9
|
+
Wave-based test generation using `spawn_agents_on_csv`. Each source file/module gets an independent agent that classifies, plans, and writes tests using RED-GREEN methodology. All agents run in a single parallel wave.
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
**Core workflow**: Discover Infrastructure -> Identify Gaps -> Classify Files -> Decompose to CSV -> Parallel Test Gen -> Aggregate Results
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
```
|
|
14
|
+
+---------------------------------------------------------------------------+
|
|
15
|
+
| TEST GENERATION CSV WAVE WORKFLOW |
|
|
16
|
+
+---------------------------------------------------------------------------+
|
|
17
|
+
| |
|
|
18
|
+
| Phase 1: Gap Analysis -> CSV |
|
|
19
|
+
| +-- Resolve phase directory from arguments |
|
|
20
|
+
| +-- Discover test infrastructure (framework, patterns, conventions) |
|
|
21
|
+
| +-- Identify gaps from verification.json + coverage-report.json |
|
|
22
|
+
| +-- Classify changed files into unit/integration/e2e/skip |
|
|
23
|
+
| +-- Apply --type filter if set |
|
|
24
|
+
| +-- Generate tasks.csv with one row per source file |
|
|
25
|
+
| +-- User validates test plan breakdown (skip if -y) |
|
|
26
|
+
| |
|
|
27
|
+
| Phase 2: Wave Execution Engine |
|
|
28
|
+
| +-- Wave 1: Test Generation (independent parallel) |
|
|
29
|
+
| | +-- Each agent generates tests for its assigned source file |
|
|
30
|
+
| | +-- RED phase: write failing test targeting real behavior |
|
|
31
|
+
| | +-- GREEN assessment: check if source already satisfies |
|
|
32
|
+
| | +-- Discoveries shared via board (test patterns, fixtures) |
|
|
33
|
+
| | +-- Results: tests_created + coverage_delta per source file |
|
|
34
|
+
| +-- discoveries.ndjson shared across all agents (append-only) |
|
|
35
|
+
| |
|
|
36
|
+
| Phase 3: Results Aggregation |
|
|
37
|
+
| +-- Export results.csv + test-gen-report.json |
|
|
38
|
+
| +-- Run full test suite to verify no regressions |
|
|
39
|
+
| +-- Generate context.md with all findings |
|
|
40
|
+
| +-- Update validation.json with new coverage status |
|
|
41
|
+
| +-- Display summary with next steps |
|
|
42
|
+
| |
|
|
43
|
+
+---------------------------------------------------------------------------+
|
|
44
|
+
```
|
|
45
|
+
</purpose>
|
|
15
46
|
|
|
47
|
+
<context>
|
|
16
48
|
```bash
|
|
17
49
|
$quality-test-gen "3"
|
|
18
50
|
$quality-test-gen -c 4 "3 --type unit"
|
|
@@ -25,53 +57,13 @@ $quality-test-gen --continue "test-gen-phase3-20260318"
|
|
|
25
57
|
- `-c, --concurrency N`: Max concurrent agents within the wave (default: 6)
|
|
26
58
|
- `--continue`: Resume existing session
|
|
27
59
|
|
|
60
|
+
When `--yes` or `-y`: Auto-confirm test plan, skip interactive validation, use defaults for framework detection.
|
|
61
|
+
|
|
28
62
|
**Output Directory**: `.workflow/.csv-wave/{session-id}/`
|
|
29
63
|
**Core Output**: `tasks.csv` (master state) + `results.csv` (final) + `discoveries.ndjson` (shared exploration) + `context.md` (human-readable report) + `test-gen-report.json` (structured output for downstream)
|
|
64
|
+
</context>
|
|
30
65
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
## Overview
|
|
34
|
-
|
|
35
|
-
Wave-based test generation using `spawn_agents_on_csv`. Each source file/module gets an independent agent that classifies, plans, and writes tests using RED-GREEN methodology. All agents run in a single parallel wave.
|
|
36
|
-
|
|
37
|
-
**Core workflow**: Discover Infrastructure → Identify Gaps → Classify Files → Decompose to CSV → Parallel Test Gen → Aggregate Results
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
┌─────────────────────────────────────────────────────────────────────────┐
|
|
41
|
-
│ TEST GENERATION CSV WAVE WORKFLOW │
|
|
42
|
-
├─────────────────────────────────────────────────────────────────────────┤
|
|
43
|
-
│ │
|
|
44
|
-
│ Phase 1: Gap Analysis → CSV │
|
|
45
|
-
│ ├─ Resolve phase directory from arguments │
|
|
46
|
-
│ ├─ Discover test infrastructure (framework, patterns, conventions) │
|
|
47
|
-
│ ├─ Identify gaps from verification.json + coverage-report.json │
|
|
48
|
-
│ ├─ Classify changed files into unit/integration/e2e/skip │
|
|
49
|
-
│ ├─ Apply --type filter if set │
|
|
50
|
-
│ ├─ Generate tasks.csv with one row per source file │
|
|
51
|
-
│ └─ User validates test plan breakdown (skip if -y) │
|
|
52
|
-
│ │
|
|
53
|
-
│ Phase 2: Wave Execution Engine │
|
|
54
|
-
│ ├─ Wave 1: Test Generation (independent parallel) │
|
|
55
|
-
│ │ ├─ Each agent generates tests for its assigned source file │
|
|
56
|
-
│ │ ├─ RED phase: write failing test targeting real behavior │
|
|
57
|
-
│ │ ├─ GREEN assessment: check if source already satisfies │
|
|
58
|
-
│ │ ├─ Discoveries shared via board (test patterns, fixtures) │
|
|
59
|
-
│ │ └─ Results: tests_created + coverage_delta per source file │
|
|
60
|
-
│ └─ discoveries.ndjson shared across all agents (append-only) │
|
|
61
|
-
│ │
|
|
62
|
-
│ Phase 3: Results Aggregation │
|
|
63
|
-
│ ├─ Export results.csv + test-gen-report.json │
|
|
64
|
-
│ ├─ Run full test suite to verify no regressions │
|
|
65
|
-
│ ├─ Generate context.md with all findings │
|
|
66
|
-
│ ├─ Update validation.json with new coverage status │
|
|
67
|
-
│ └─ Display summary with next steps │
|
|
68
|
-
│ │
|
|
69
|
-
└─────────────────────────────────────────────────────────────────────────┘
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## CSV Schema
|
|
66
|
+
<csv_schema>
|
|
75
67
|
|
|
76
68
|
### tasks.csv (Master State)
|
|
77
69
|
|
|
@@ -96,8 +88,8 @@ id,title,description,source_file,test_type,test_framework,deps,context_from,wave
|
|
|
96
88
|
| `test_framework` | Input | Detected or specified framework: jest/vitest/pytest/mocha/playwright/cypress |
|
|
97
89
|
| `deps` | Input | Semicolon-separated dependency task IDs (empty for independent parallel) |
|
|
98
90
|
| `context_from` | Input | Semicolon-separated task IDs whose findings this task needs (empty for wave 1) |
|
|
99
|
-
| `wave` | Computed | Wave number (always 1
|
|
100
|
-
| `status` | Output | `pending`
|
|
91
|
+
| `wave` | Computed | Wave number (always 1 -- independent parallel topology) |
|
|
92
|
+
| `status` | Output | `pending` -> `completed` / `failed` / `skipped` |
|
|
101
93
|
| `findings` | Output | Key findings summary: bugs discovered, patterns used (max 500 chars) |
|
|
102
94
|
| `tests_created` | Output | Semicolon-separated paths to generated test files |
|
|
103
95
|
| `coverage_delta` | Output | Coverage improvement estimate: `+N%` or `N new cases` |
|
|
@@ -107,36 +99,43 @@ id,title,description,source_file,test_type,test_framework,deps,context_from,wave
|
|
|
107
99
|
|
|
108
100
|
Each wave generates `wave-{N}.csv` with extra `prev_context` column (empty for wave 1).
|
|
109
101
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
## Output Artifacts
|
|
102
|
+
### Output Artifacts
|
|
113
103
|
|
|
114
104
|
| File | Purpose | Lifecycle |
|
|
115
105
|
|------|---------|-----------|
|
|
116
|
-
| `tasks.csv` | Master state
|
|
106
|
+
| `tasks.csv` | Master state -- all tasks with status/findings | Updated after wave completes |
|
|
117
107
|
| `wave-{N}.csv` | Per-wave input (temporary) | Created before wave, deleted after |
|
|
118
108
|
| `results.csv` | Final export of all task results | Created in Phase 3 |
|
|
119
109
|
| `discoveries.ndjson` | Shared exploration board | Append-only, carries across agents |
|
|
120
110
|
| `context.md` | Human-readable test generation report | Created in Phase 3 |
|
|
121
111
|
| `test-gen-report.json` | Structured output for downstream commands | Created in Phase 3 |
|
|
122
112
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
## Session Structure
|
|
113
|
+
### Session Structure
|
|
126
114
|
|
|
127
115
|
```
|
|
128
116
|
.workflow/.csv-wave/test-gen-{phase}-{date}/
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
117
|
+
+-- tasks.csv
|
|
118
|
+
+-- results.csv
|
|
119
|
+
+-- discoveries.ndjson
|
|
120
|
+
+-- context.md
|
|
121
|
+
+-- test-gen-report.json
|
|
122
|
+
+-- wave-{N}.csv (temporary)
|
|
135
123
|
```
|
|
124
|
+
</csv_schema>
|
|
136
125
|
|
|
137
|
-
|
|
126
|
+
<invariants>
|
|
127
|
+
1. **Start Immediately**: First action is session initialization, then Phase 1
|
|
128
|
+
2. **Single Wave**: All test generation agents run in one parallel wave (independent topology)
|
|
129
|
+
3. **CSV is Source of Truth**: Master tasks.csv holds all state
|
|
130
|
+
4. **RED-GREEN Methodology**: Write failing test first, then assess -- never write trivially passing tests
|
|
131
|
+
5. **Tests Expose, Not Fix**: Failing tests document bugs; source code changes are NOT permitted
|
|
132
|
+
6. **Discovery Board is Append-Only**: Never clear, modify, or recreate discoveries.ndjson
|
|
133
|
+
7. **Follow Existing Patterns**: Generated tests must match project's test conventions (imports, structure, assertions)
|
|
134
|
+
8. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged
|
|
135
|
+
9. **DO NOT STOP**: Continuous execution until all agents complete and results are aggregated
|
|
136
|
+
</invariants>
|
|
138
137
|
|
|
139
|
-
|
|
138
|
+
<execution>
|
|
140
139
|
|
|
141
140
|
### Session Initialization
|
|
142
141
|
|
|
@@ -165,15 +164,13 @@ const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
|
165
164
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
166
165
|
```
|
|
167
166
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
### Phase 1: Gap Analysis → CSV
|
|
167
|
+
### Phase 1: Gap Analysis -> CSV
|
|
171
168
|
|
|
172
169
|
**Objective**: Discover test infrastructure, identify coverage gaps, classify files, generate tasks.csv.
|
|
173
170
|
|
|
174
171
|
**Decomposition Rules**:
|
|
175
172
|
|
|
176
|
-
1. **Phase resolution**: Resolve `{phaseArg}` to `.workflow/phases/{NN}-{slug}/`
|
|
173
|
+
1. **Phase resolution**: Resolve `{phaseArg}` via artifact registry in `state.json` to `.workflow/scratch/{type}-{slug}-{date}/`; legacy fallback to `.workflow/phases/{NN}-{slug}/`
|
|
177
174
|
|
|
178
175
|
2. **Test infrastructure discovery**:
|
|
179
176
|
- Find config files: `jest.config.*`, `vitest.config.*`, `pytest.ini`, `.mocharc.*`
|
|
@@ -210,12 +207,10 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
210
207
|
|
|
211
208
|
7. **CSV generation**: One row per source file (skip category excluded).
|
|
212
209
|
|
|
213
|
-
**Wave computation**: Single wave
|
|
210
|
+
**Wave computation**: Single wave -- all tasks are independent parallel (wave = 1).
|
|
214
211
|
|
|
215
212
|
**User validation**: Display test plan breakdown (skip if AUTO_YES).
|
|
216
213
|
|
|
217
|
-
---
|
|
218
|
-
|
|
219
214
|
### Phase 2: Wave Execution Engine
|
|
220
215
|
|
|
221
216
|
**Objective**: Execute test generation agents in parallel via spawn_agents_on_csv.
|
|
@@ -262,12 +257,10 @@ Each agent receives:
|
|
|
262
257
|
- Gap references (requirement IDs, descriptions)
|
|
263
258
|
- RED-GREEN methodology rules:
|
|
264
259
|
1. **RED**: Write test that fails if behavior is broken (not trivially passing)
|
|
265
|
-
2. **Verify RED**: Run test
|
|
260
|
+
2. **Verify RED**: Run test -- if passes, strengthen; if fails with expected error, good
|
|
266
261
|
3. **GREEN assessment**: If source satisfies, gap was missing test; if fails, record as bug discovery
|
|
267
262
|
- Discovery board protocol for sharing test patterns and fixtures
|
|
268
|
-
- Instruction to NOT fix source code
|
|
269
|
-
|
|
270
|
-
---
|
|
263
|
+
- Instruction to NOT fix source code -- failing tests are valuable bug documentation
|
|
271
264
|
|
|
272
265
|
### Phase 3: Results Aggregation
|
|
273
266
|
|
|
@@ -332,7 +325,7 @@ Each agent receives:
|
|
|
332
325
|
6. Generate `context.md`:
|
|
333
326
|
|
|
334
327
|
```markdown
|
|
335
|
-
# Test Generation Report
|
|
328
|
+
# Test Generation Report -- Phase {phase}
|
|
336
329
|
|
|
337
330
|
## Summary
|
|
338
331
|
- Framework: {framework}
|
|
@@ -359,13 +352,13 @@ Each agent receives:
|
|
|
359
352
|
- Existing tests broken: {N} (regressions)
|
|
360
353
|
|
|
361
354
|
## Bugs Discovered
|
|
362
|
-
{list of failing tests with descriptions
|
|
355
|
+
{list of failing tests with descriptions -- NOT fixed, documented only}
|
|
363
356
|
|
|
364
357
|
## Next Steps
|
|
365
358
|
{suggested_next_command}
|
|
366
359
|
```
|
|
367
360
|
|
|
368
|
-
7. Update `validation.json` gaps: change MISSING
|
|
361
|
+
7. Update `validation.json` gaps: change MISSING -> COVERED for gaps that now have tests.
|
|
369
362
|
|
|
370
363
|
8. Copy `test-gen-report.json` to phase `.tests/` directory.
|
|
371
364
|
|
|
@@ -380,11 +373,9 @@ Each agent receives:
|
|
|
380
373
|
| Regressions found | `quality-debug` immediately |
|
|
381
374
|
| Coverage still low | Run again with `--type` for uncovered layers |
|
|
382
375
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
## Shared Discovery Board Protocol
|
|
376
|
+
### Shared Discovery Board Protocol
|
|
386
377
|
|
|
387
|
-
|
|
378
|
+
#### Standard Discovery Types
|
|
388
379
|
|
|
389
380
|
| Type | Dedup Key | Data Schema | Description |
|
|
390
381
|
|------|-----------|-------------|-------------|
|
|
@@ -394,7 +385,7 @@ Each agent receives:
|
|
|
394
385
|
| `blocker` | `data.issue` | `{issue, severity, impact}` | Blocking issue found |
|
|
395
386
|
| `tech_stack` | singleton | `{framework, language, tools[]}` | Technology stack info |
|
|
396
387
|
|
|
397
|
-
|
|
388
|
+
#### Domain Discovery Types
|
|
398
389
|
|
|
399
390
|
| Type | Dedup Key | Data Schema | Description |
|
|
400
391
|
|------|-----------|-------------|-------------|
|
|
@@ -403,7 +394,7 @@ Each agent receives:
|
|
|
403
394
|
| `mock_strategy` | `data.module` | `{module, strategy, file}` | How a dependency is mocked |
|
|
404
395
|
| `bug_discovered` | `data.location` | `{location, test_file, description, severity}` | Bug found via failing test |
|
|
405
396
|
|
|
406
|
-
|
|
397
|
+
#### Protocol
|
|
407
398
|
|
|
408
399
|
1. **Read** `{session_folder}/discoveries.ndjson` before own test generation
|
|
409
400
|
2. **Skip covered**: If discovery of same type + dedup key exists, skip
|
|
@@ -414,34 +405,32 @@ Each agent receives:
|
|
|
414
405
|
```bash
|
|
415
406
|
echo '{"ts":"<ISO>","worker":"{id}","type":"test_pattern","data":{"name":"api-endpoint-test","file":"src/api/__tests__/users.test.ts","framework":"vitest","description":"supertest + vitest pattern for REST endpoints"}}' >> {session_folder}/discoveries.ndjson
|
|
416
407
|
```
|
|
408
|
+
</execution>
|
|
417
409
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
## Error Handling
|
|
410
|
+
<error_codes>
|
|
421
411
|
|
|
422
412
|
| Error | Resolution |
|
|
423
413
|
|-------|------------|
|
|
424
414
|
| Phase directory not found | Abort with error: "Phase {N} not found" |
|
|
425
|
-
| No verification results found | Abort with error: "No verification results
|
|
415
|
+
| No verification results found | Abort with error: "No verification results -- run maestro-verify first" |
|
|
426
416
|
| No test framework detected | Abort with error: "No test framework detected (E003)" |
|
|
427
|
-
| No gaps identified | Info: "No coverage gaps found
|
|
417
|
+
| No gaps identified | Info: "No coverage gaps found -- phase fully tested" |
|
|
428
418
|
| Agent timeout | Mark as failed, continue with remaining agents |
|
|
429
419
|
| Test file write conflict | Agent checks for existing test, extends rather than overwrites |
|
|
430
420
|
| CSV parse error | Validate format, show line number |
|
|
431
421
|
| discoveries.ndjson corrupt | Ignore malformed lines |
|
|
432
422
|
| Continue mode: no session found | List available sessions |
|
|
433
423
|
| Regression detected in existing tests | Flag as blocker (W002), do not fix source code |
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
9. **DO NOT STOP**: Continuous execution until all agents complete and results are aggregated
|
|
424
|
+
</error_codes>
|
|
425
|
+
|
|
426
|
+
<success_criteria>
|
|
427
|
+
- [ ] Session folder created with valid tasks.csv
|
|
428
|
+
- [ ] All test generation agents executed in parallel (single wave)
|
|
429
|
+
- [ ] Test files created following project conventions
|
|
430
|
+
- [ ] RED-GREEN methodology applied (no trivially passing tests)
|
|
431
|
+
- [ ] test-gen-report.json produced with classification and results
|
|
432
|
+
- [ ] context.md produced with test generation report
|
|
433
|
+
- [ ] Full test suite run to verify no regressions
|
|
434
|
+
- [ ] validation.json gaps updated for covered items
|
|
435
|
+
- [ ] discoveries.ndjson append-only throughout
|
|
436
|
+
</success_criteria>
|
|
@@ -1,31 +1,44 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-add
|
|
3
|
-
description: Add a spec entry
|
|
4
|
-
argument-hint: "<
|
|
3
|
+
description: Add a spec entry to the appropriate specs file by category
|
|
4
|
+
argument-hint: "<category> <content>"
|
|
5
5
|
allowed-tools: Read, Write, Bash, Glob, Grep
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
## Usage
|
|
8
|
+
<purpose>
|
|
9
|
+
Add a spec entry using `<spec-entry>` closed-tag format. Each category maps 1:1 to a single target file.
|
|
11
10
|
|
|
12
11
|
```bash
|
|
13
|
-
$spec-add "
|
|
14
|
-
$spec-add "
|
|
15
|
-
$spec-add "
|
|
16
|
-
$spec-add "
|
|
12
|
+
$spec-add "coding Always use named exports for utility functions"
|
|
13
|
+
$spec-add "learning Off-by-one in pagination when page=0"
|
|
14
|
+
$spec-add "arch Use Zod for runtime validation over io-ts"
|
|
15
|
+
$spec-add "quality All API endpoints must return structured error objects"
|
|
17
16
|
```
|
|
18
17
|
|
|
19
|
-
**
|
|
18
|
+
**Valid categories**: coding, arch, quality, debug, test, review, learning.
|
|
19
|
+
</purpose>
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
<context>
|
|
22
|
+
$ARGUMENTS — `<category> <content>` where category selects the target file.
|
|
23
|
+
|
|
24
|
+
**Category-to-file mapping (1:1, same as spec-load):**
|
|
25
|
+
| Category | Target file |
|
|
26
|
+
|----------|------------|
|
|
27
|
+
| `coding` | `coding-conventions.md` |
|
|
28
|
+
| `arch` | `architecture-constraints.md` |
|
|
29
|
+
| `quality` | `quality-rules.md` |
|
|
30
|
+
| `debug` | `debug-notes.md` |
|
|
31
|
+
| `test` | `test-conventions.md` |
|
|
32
|
+
| `review` | `review-standards.md` |
|
|
33
|
+
| `learning` | `learnings.md` |
|
|
34
|
+
</context>
|
|
22
35
|
|
|
23
|
-
|
|
36
|
+
<execution>
|
|
24
37
|
|
|
25
38
|
### Step 1: Parse Input
|
|
26
39
|
|
|
27
|
-
Extract
|
|
28
|
-
- Validate
|
|
40
|
+
Extract category (first token) and content (remainder) from arguments.
|
|
41
|
+
- Validate category is one of: coding, arch, quality, debug, test, review, learning (E003 if invalid)
|
|
29
42
|
- Validate content is non-empty (E001 if missing)
|
|
30
43
|
|
|
31
44
|
### Step 2: Validate Specs Directory
|
|
@@ -36,44 +49,50 @@ test -d .workflow/specs || exit 1 # E002: not initialized
|
|
|
36
49
|
|
|
37
50
|
### Step 3: Route to File
|
|
38
51
|
|
|
39
|
-
|
|
40
|
-
|------|-------------|-----------------|
|
|
41
|
-
| `bug` | `learnings.md` | -- |
|
|
42
|
-
| `pattern` | `learnings.md` | `coding-conventions.md` |
|
|
43
|
-
| `decision` | `learnings.md` | `architecture-constraints.md` |
|
|
44
|
-
| `rule` | `learnings.md` | `quality-rules.md` |
|
|
45
|
-
| `debug` | `learnings.md` | `debug-notes.md` |
|
|
46
|
-
| `test` | `learnings.md` | `test-conventions.md` |
|
|
47
|
-
| `review` | `learnings.md` | `review-standards.md` |
|
|
48
|
-
| `validation` | `learnings.md` | `validation-rules.md` |
|
|
52
|
+
Resolve target file from category-to-file mapping table. If the target file does not exist, create it with a basic header.
|
|
49
53
|
|
|
50
|
-
### Step 4:
|
|
54
|
+
### Step 4: Extract Keywords
|
|
51
55
|
|
|
52
|
-
|
|
56
|
+
Auto-extract 3-5 relevant keywords from the content. Keywords should be:
|
|
57
|
+
- Lowercase, no spaces (use hyphens for multi-word)
|
|
58
|
+
- Domain-specific terms that would help future lookup
|
|
59
|
+
- Avoid generic words (code, file, function, etc.)
|
|
53
60
|
|
|
54
|
-
|
|
55
|
-
### [{type}] [{YYYY-MM-DD}] {first line of content}
|
|
61
|
+
### Step 5: Write Entry
|
|
56
62
|
|
|
57
|
-
|
|
58
|
-
```
|
|
63
|
+
Append `<spec-entry>` closed-tag block to target file:
|
|
59
64
|
|
|
60
|
-
|
|
65
|
+
```markdown
|
|
66
|
+
<spec-entry category="{category}" keywords="{kw1},{kw2},{kw3}" date="{YYYY-MM-DD}">
|
|
61
67
|
|
|
62
|
-
|
|
68
|
+
### {title extracted from content}
|
|
63
69
|
|
|
64
|
-
|
|
70
|
+
{content}
|
|
65
71
|
|
|
66
|
-
|
|
67
|
-
Added [{type}] to learnings.md
|
|
68
|
-
{Secondary file updated if applicable}
|
|
72
|
+
</spec-entry>
|
|
69
73
|
```
|
|
70
74
|
|
|
71
|
-
|
|
75
|
+
### Step 6: Confirm
|
|
72
76
|
|
|
73
|
-
|
|
77
|
+
```
|
|
78
|
+
Added [{category}] to {target_file}
|
|
79
|
+
Keywords: {kw1}, {kw2}, {kw3}
|
|
80
|
+
Verify: /spec-load --keyword {kw1}
|
|
81
|
+
```
|
|
82
|
+
</execution>
|
|
74
83
|
|
|
84
|
+
<error_codes>
|
|
75
85
|
| Code | Severity | Description |
|
|
76
86
|
|------|----------|-------------|
|
|
77
87
|
| E001 | fatal | Category and content are both required |
|
|
78
88
|
| E002 | fatal | `.workflow/specs/` not initialized -- run `Skill({ skill: "spec-setup" })` first |
|
|
79
|
-
| E003 | fatal | Invalid category -- must be one of:
|
|
89
|
+
| E003 | fatal | Invalid category -- must be one of: coding, arch, quality, debug, test, review, learning |
|
|
90
|
+
</error_codes>
|
|
91
|
+
|
|
92
|
+
<success_criteria>
|
|
93
|
+
- [ ] Category and content parsed and validated
|
|
94
|
+
- [ ] Keywords auto-extracted from content (3-5 terms)
|
|
95
|
+
- [ ] Entry written in `<spec-entry>` closed-tag format with keywords attribute
|
|
96
|
+
- [ ] Entry appended to correct target file
|
|
97
|
+
- [ ] Confirmation displayed with keywords and verify command
|
|
98
|
+
</success_criteria>
|
|
@@ -1,26 +1,41 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-load
|
|
3
3
|
description: Load relevant specs for current context, optionally filtered by category or keyword
|
|
4
|
-
argument-hint: "[--category <type>] [keyword]"
|
|
4
|
+
argument-hint: "[--category <type>] [--keyword <word>]"
|
|
5
5
|
allowed-tools: Read, Bash, Glob, Grep
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
<purpose>
|
|
9
|
+
Load relevant specs filtered by category (file-level) and/or keyword (entry-level via `<spec-entry>` tags).
|
|
10
|
+
</purpose>
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
<context>
|
|
13
|
+
$ARGUMENTS — optional category filter and keyword.
|
|
11
14
|
|
|
12
15
|
```bash
|
|
13
16
|
$spec-load
|
|
14
|
-
$spec-load "--category
|
|
15
|
-
$spec-load "
|
|
16
|
-
$spec-load "--category
|
|
17
|
+
$spec-load "--category coding"
|
|
18
|
+
$spec-load "--keyword auth"
|
|
19
|
+
$spec-load "--category coding --keyword naming"
|
|
17
20
|
```
|
|
18
21
|
|
|
19
|
-
**
|
|
22
|
+
**Category-to-file mapping (1:1, same as spec-add):**
|
|
20
23
|
|
|
21
|
-
|
|
24
|
+
| Category | File loaded |
|
|
25
|
+
|----------|------------|
|
|
26
|
+
| `coding` | `coding-conventions.md` |
|
|
27
|
+
| `arch` | `architecture-constraints.md` |
|
|
28
|
+
| `quality` | `quality-rules.md` |
|
|
29
|
+
| `debug` | `debug-notes.md` |
|
|
30
|
+
| `test` | `test-conventions.md` |
|
|
31
|
+
| `review` | `review-standards.md` |
|
|
32
|
+
| `learning` | `learnings.md` |
|
|
33
|
+
| `all` (default) | All spec files |
|
|
22
34
|
|
|
23
|
-
|
|
35
|
+
**Keyword filtering**: When `--keyword` is provided, only entries with matching keyword in their `<spec-entry keywords="...">` attribute are returned. Legacy entries (heading format) are filtered by text grep.
|
|
36
|
+
</context>
|
|
37
|
+
|
|
38
|
+
<execution>
|
|
24
39
|
|
|
25
40
|
### Step 1: Validate Specs Directory
|
|
26
41
|
|
|
@@ -30,46 +45,36 @@ test -d .workflow/specs || exit 1 # E001: not initialized
|
|
|
30
45
|
|
|
31
46
|
### Step 2: Parse Arguments
|
|
32
47
|
|
|
33
|
-
Extract optional `--category`
|
|
34
|
-
|
|
35
|
-
**Category-to-file mapping:**
|
|
36
|
-
|
|
37
|
-
| Category | Files Loaded |
|
|
38
|
-
|----------|-------------|
|
|
39
|
-
| `general` | `learnings.md` |
|
|
40
|
-
| `planning` | `architecture-constraints.md` |
|
|
41
|
-
| `execution` | `coding-conventions.md`, `quality-rules.md` |
|
|
42
|
-
| `debug` | `debug-notes.md` |
|
|
43
|
-
| `test` | `test-conventions.md` |
|
|
44
|
-
| `review` | `review-standards.md` |
|
|
45
|
-
| `validation` | `validation-rules.md` |
|
|
46
|
-
| `all` (default) | All spec files |
|
|
47
|
-
|
|
48
|
-
### Step 3: Load Files
|
|
48
|
+
Extract optional `--category` and `--keyword` flags from arguments.
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
If no files exist for the category, fall back to loading all specs.
|
|
50
|
+
### Step 3: Load via CLI
|
|
52
51
|
|
|
53
|
-
|
|
52
|
+
```bash
|
|
53
|
+
maestro spec load [--category <cat>] [--keyword <word>]
|
|
54
|
+
```
|
|
54
55
|
|
|
55
|
-
If
|
|
56
|
-
Return only matching sections with file:line references.
|
|
57
|
-
If no matches found, show all content in the category (W001).
|
|
56
|
+
If CLI unavailable, read files directly and apply keyword filter.
|
|
58
57
|
|
|
59
|
-
### Step
|
|
58
|
+
### Step 4: Display Results
|
|
60
59
|
|
|
61
60
|
```
|
|
62
|
-
=== SPECS: {category} ===
|
|
63
|
-
{
|
|
64
|
-
|
|
65
|
-
{content or matching sections}
|
|
61
|
+
=== SPECS: {category} {keyword ? "keyword=" + keyword : ""} ===
|
|
62
|
+
--- {filename} ({category}) ---
|
|
63
|
+
{matched entry content (tags stripped)}
|
|
66
64
|
```
|
|
65
|
+
</execution>
|
|
67
66
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
## Error Handling
|
|
71
|
-
|
|
67
|
+
<error_codes>
|
|
72
68
|
| Code | Severity | Description |
|
|
73
69
|
|------|----------|-------------|
|
|
74
70
|
| E001 | fatal | `.workflow/specs/` not initialized -- run `Skill({ skill: "spec-setup" })` first |
|
|
75
71
|
| W001 | warning | No matching specs for keyword -- showing all in category |
|
|
72
|
+
</error_codes>
|
|
73
|
+
|
|
74
|
+
<success_criteria>
|
|
75
|
+
- [ ] `.workflow/specs/` directory validated
|
|
76
|
+
- [ ] Category and keyword parsed from arguments
|
|
77
|
+
- [ ] Files loaded per category mapping
|
|
78
|
+
- [ ] Keyword filtering applied at entry level (via `<spec-entry>` keywords)
|
|
79
|
+
- [ ] Results displayed with file references and stripped tags
|
|
80
|
+
</success_criteria>
|