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
|
@@ -1,463 +1,452 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: maestro-brainstorm
|
|
3
|
-
description: Multi-role brainstorming via CSV wave pipeline. Diamond topology — guidance specification generator (Wave 1), parallel role analysis agents (Wave 2), synthesis + feature-index agent (Wave 3). Replaces maestro-brainstorm command.
|
|
4
|
-
argument-hint: "[topic] [-y|--yes] [-c|--concurrency N] [--continue] [--count N] [--skip-questions]"
|
|
5
|
-
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
|
44
|
-
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
| +--
|
|
49
|
-
| +--
|
|
50
|
-
| +--
|
|
51
|
-
| +--
|
|
52
|
-
| +--
|
|
53
|
-
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
|
103
|
-
|
|
104
|
-
| `
|
|
105
|
-
| `
|
|
106
|
-
| `
|
|
107
|
-
| `
|
|
108
|
-
| `
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
+--
|
|
142
|
-
+--
|
|
143
|
-
+--
|
|
144
|
-
+--
|
|
145
|
-
+--
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
### Session Initialization
|
|
165
|
-
|
|
166
|
-
```javascript
|
|
167
|
-
const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
|
|
168
|
-
|
|
169
|
-
// Parse flags
|
|
170
|
-
const AUTO_YES = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y')
|
|
171
|
-
const continueMode = $ARGUMENTS.includes('--continue')
|
|
172
|
-
const concurrencyMatch = $ARGUMENTS.match(/(?:--concurrency|-c)\s+(\d+)/)
|
|
173
|
-
const maxConcurrency = concurrencyMatch ? parseInt(concurrencyMatch[1]) : 6
|
|
174
|
-
|
|
175
|
-
// Parse brainstorm-specific flags
|
|
176
|
-
const countMatch = $ARGUMENTS.match(/--count\s+(\d+)/)
|
|
177
|
-
const roleCount = countMatch ? Math.min(parseInt(countMatch[1]), 9) : 3
|
|
178
|
-
const skipQuestions = $ARGUMENTS.includes('--skip-questions')
|
|
179
|
-
|
|
180
|
-
// Clean topic text
|
|
181
|
-
const topicArg = $ARGUMENTS
|
|
182
|
-
.replace(/--yes|-y|--continue|--concurrency\s+\d+|-c\s+\d+|--count\s+\d+|--skip-questions/g, '')
|
|
183
|
-
.trim()
|
|
184
|
-
|
|
185
|
-
const slug = topicArg.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
|
|
186
|
-
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
187
|
-
const sessionId = `brainstorm-${slug}-${dateStr}`
|
|
188
|
-
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
189
|
-
|
|
190
|
-
Bash(`mkdir -p ${sessionFolder}/.brainstorming`)
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
**
|
|
198
|
-
|
|
199
|
-
**
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
|
213
|
-
|
|
214
|
-
| `
|
|
215
|
-
| `
|
|
216
|
-
| `
|
|
217
|
-
| `
|
|
218
|
-
| `
|
|
219
|
-
| `
|
|
220
|
-
| `
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
**
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
1.
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
-
|
|
316
|
-
-
|
|
317
|
-
-
|
|
318
|
-
- `analysis.md` --
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
2
|
|
330
|
-
3
|
|
331
|
-
4
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
-
|
|
344
|
-
- Conflict
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
##
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
{
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
##
|
|
378
|
-
{
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
|
405
|
-
|
|
406
|
-
| `
|
|
407
|
-
| `
|
|
408
|
-
| `
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
|
437
|
-
|
|
438
|
-
|
|
|
439
|
-
|
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
1. **Start Immediately**: First action is session initialization, then Phase 1
|
|
455
|
-
2. **Wave Order is Sacred**: Never execute wave 2 before wave 1 completes and results are merged
|
|
456
|
-
3. **CSV is Source of Truth**: Master tasks.csv holds all state
|
|
457
|
-
4. **Context Propagation**: prev_context built from master CSV, not from memory
|
|
458
|
-
5. **Guidance First**: Wave 1 (guidance) MUST complete before any role analysis begins
|
|
459
|
-
6. **Discovery Board is Append-Only**: Never clear, modify, or recreate discoveries.ndjson
|
|
460
|
-
7. **Skip on Failure**: If guidance fails, abort. If all roles fail, skip synthesis.
|
|
461
|
-
8. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged
|
|
462
|
-
9. **DO NOT STOP**: Continuous execution until all waves complete
|
|
463
|
-
10. **9 Valid Roles Only**: data-architect, product-manager, product-owner, scrum-master, subject-matter-expert, system-architect, test-strategist, ui-designer, ux-expert
|
|
1
|
+
---
|
|
2
|
+
name: maestro-brainstorm
|
|
3
|
+
description: Multi-role brainstorming via CSV wave pipeline. Diamond topology — guidance specification generator (Wave 1), parallel role analysis agents (Wave 2), synthesis + feature-index agent (Wave 3). Replaces maestro-brainstorm command.
|
|
4
|
+
argument-hint: "[topic] [-y|--yes] [-c|--concurrency N] [--continue] [--count N] [--skip-questions]"
|
|
5
|
+
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<purpose>
|
|
9
|
+
Wave-based multi-role brainstorming using `spawn_agents_on_csv`. Diamond topology: guidance specification generation (Wave 1), parallel role analysis agents (Wave 2), then synthesis + feature-index generation (Wave 3).
|
|
10
|
+
|
|
11
|
+
**Core workflow**: Parse Topic -> Generate Guidance Spec -> Parallel Role Analysis -> Synthesis + Feature Index
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
+---------------------------------------------------------------------------+
|
|
15
|
+
| BRAINSTORM CSV WAVE WORKFLOW |
|
|
16
|
+
+---------------------------------------------------------------------------+
|
|
17
|
+
| |
|
|
18
|
+
| Phase 1: Topic Resolution -> CSV |
|
|
19
|
+
| +-- Parse topic and flags from arguments |
|
|
20
|
+
| +-- Detect mode (phase / scratch) |
|
|
21
|
+
| +-- Resolve output directory |
|
|
22
|
+
| +-- Select roles (interactive or auto, --count N) |
|
|
23
|
+
| +-- Load project specs for architecture-aware analysis |
|
|
24
|
+
| +-- Generate tasks.csv with guidance + role + synthesis rows |
|
|
25
|
+
| +-- User validates role breakdown (skip if -y) |
|
|
26
|
+
| |
|
|
27
|
+
| Phase 2: Wave Execution Engine |
|
|
28
|
+
| +-- Wave 1: Guidance Specification (single agent) |
|
|
29
|
+
| | +-- Analyze topic, extract terminology, define boundaries |
|
|
30
|
+
| | +-- Generate guidance-specification.md with RFC 2119 keywords |
|
|
31
|
+
| | +-- Feature decomposition (max 8 features) |
|
|
32
|
+
| | +-- Discoveries shared via board (terms, non-goals, features) |
|
|
33
|
+
| | +-- Results: guidance_spec content + analysis_file path |
|
|
34
|
+
| +-- Wave 2: Role Analysis (parallel, 3-9 agents) |
|
|
35
|
+
| | +-- Each role agent analyzes topic through its lens |
|
|
36
|
+
| | +-- Receives guidance-specification.md via prev_context |
|
|
37
|
+
| | +-- Feature-point organization when feature list available |
|
|
38
|
+
| | +-- Discoveries shared via board (role insights, conflicts) |
|
|
39
|
+
| | +-- Results: analysis_file path per role |
|
|
40
|
+
| +-- Wave 3: Synthesis + Feature Index (single agent) |
|
|
41
|
+
| | +-- Cross-role analysis: consensus, conflicts, unique insights |
|
|
42
|
+
| | +-- Generate feature specs or synthesis-specification.md |
|
|
43
|
+
| | +-- Build feature-index.json + synthesis-changelog.md |
|
|
44
|
+
| | +-- Discoveries shared via board (cross-role patterns) |
|
|
45
|
+
| +-- discoveries.ndjson shared across all waves (append-only) |
|
|
46
|
+
| |
|
|
47
|
+
| Phase 3: Results Aggregation |
|
|
48
|
+
| +-- Export results.csv |
|
|
49
|
+
| +-- Generate context.md with all findings |
|
|
50
|
+
| +-- Copy artifacts to .brainstorming/ directory |
|
|
51
|
+
| +-- Update phase index.json with brainstorm status |
|
|
52
|
+
| +-- Display summary with next steps |
|
|
53
|
+
| |
|
|
54
|
+
+---------------------------------------------------------------------------+
|
|
55
|
+
```
|
|
56
|
+
</purpose>
|
|
57
|
+
|
|
58
|
+
<context>
|
|
59
|
+
```bash
|
|
60
|
+
$maestro-brainstorm "Build real-time collaboration platform"
|
|
61
|
+
$maestro-brainstorm -y "Build real-time collaboration platform"
|
|
62
|
+
$maestro-brainstorm -c 6 "Build real-time collaboration platform --count 5"
|
|
63
|
+
$maestro-brainstorm --continue "brainstorm-collab-20260318"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Flags**:
|
|
67
|
+
- `-y, --yes`: Skip all confirmations (auto mode)
|
|
68
|
+
- `-c, --concurrency N`: Max concurrent agents within each wave (default: 6)
|
|
69
|
+
- `--continue`: Resume existing session
|
|
70
|
+
- `--count N`: Number of roles to select (default 3, max 9)
|
|
71
|
+
- `--skip-questions`: Skip context gathering questions
|
|
72
|
+
|
|
73
|
+
When `--yes` or `-y`: Auto-confirm role selection, skip interactive questions, use defaults for count and role selection.
|
|
74
|
+
|
|
75
|
+
**Output Directory**: `.workflow/.csv-wave/{session-id}/`
|
|
76
|
+
**Core Output**: `tasks.csv` (master state) + `results.csv` (final) + `discoveries.ndjson` (shared exploration) + `context.md` (human-readable report) + `.brainstorming/` (role analyses + synthesis artifacts)
|
|
77
|
+
</context>
|
|
78
|
+
|
|
79
|
+
<csv_schema>
|
|
80
|
+
|
|
81
|
+
### tasks.csv (Master State)
|
|
82
|
+
|
|
83
|
+
```csv
|
|
84
|
+
id,title,description,role,topic,guidance_spec,deps,context_from,wave,status,findings,analysis_file,error
|
|
85
|
+
"1","Guidance Specification","Analyze topic and generate guidance-specification.md: extract 5-10 core terms, define non-goals, decompose into features (max 8), apply RFC 2119 keywords. Output: guidance-specification.md with sections for positioning, terminology, non-goals, feature decomposition.","guidance-generator","Build real-time collaboration platform","","","","1","","","",""
|
|
86
|
+
"2","System Architect Analysis","Analyze topic from system-architect perspective: technical architecture, scalability, integration patterns. Must include Data Model (3-5 entities), State Machine, Error Handling, Observability (5+ metrics), Configuration Model. Use RFC 2119 keywords. Reference guidance-specification.md for framework.","system-architect","Build real-time collaboration platform","","1","1","2","","","",""
|
|
87
|
+
"3","UI Designer Analysis","Analyze topic from ui-designer perspective: visual design, layout systems, component hierarchy, design tokens, responsive breakpoints. Reference guidance-specification.md for framework and feature decomposition.","ui-designer","Build real-time collaboration platform","","1","1","2","","","",""
|
|
88
|
+
"4","Product Manager Analysis","Analyze topic from product-manager perspective: product strategy, prioritization, user value proposition, competitive analysis, roadmap alignment. Reference guidance-specification.md for framework.","product-manager","Build real-time collaboration platform","","1","1","2","","","",""
|
|
89
|
+
"5","Synthesis + Feature Index","Cross-role synthesis: analyze all role outputs for consensus, conflicts, unique contributions. Generate feature specs (F-001 through F-00N) or synthesis-specification.md. Build feature-index.json and synthesis-changelog.md. Resolve conflicts with [RESOLVED]/[SUGGESTED]/[UNRESOLVED] tags.","synthesis","Build real-time collaboration platform","","2;3;4","2;3;4","3","","","",""
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Columns**:
|
|
93
|
+
|
|
94
|
+
| Column | Phase | Description |
|
|
95
|
+
|--------|-------|-------------|
|
|
96
|
+
| `id` | Input | Unique task identifier (string) |
|
|
97
|
+
| `title` | Input | Short task title |
|
|
98
|
+
| `description` | Input | Detailed instructions for this task |
|
|
99
|
+
| `role` | Input | Role identifier: guidance-generator, system-architect, ui-designer, product-manager, ..., synthesis |
|
|
100
|
+
| `topic` | Input | Brainstorm topic text |
|
|
101
|
+
| `guidance_spec` | Input | Guidance-specification.md content reference (populated for wave 2+ from wave 1) |
|
|
102
|
+
| `deps` | Input | Semicolon-separated dependency task IDs |
|
|
103
|
+
| `context_from` | Input | Semicolon-separated task IDs whose findings this task needs |
|
|
104
|
+
| `wave` | Computed | Wave number (1 = guidance, 2 = role analysis, 3 = synthesis) |
|
|
105
|
+
| `status` | Output | `pending` -> `completed` / `failed` / `skipped` |
|
|
106
|
+
| `findings` | Output | Key findings summary (max 500 chars) |
|
|
107
|
+
| `analysis_file` | Output | Path to generated analysis file |
|
|
108
|
+
| `error` | Output | Error message if failed |
|
|
109
|
+
|
|
110
|
+
### Per-Wave CSV (Temporary)
|
|
111
|
+
|
|
112
|
+
Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
113
|
+
|
|
114
|
+
### Output Artifacts
|
|
115
|
+
|
|
116
|
+
| File | Purpose | Lifecycle |
|
|
117
|
+
|------|---------|-----------|
|
|
118
|
+
| `tasks.csv` | Master state -- all tasks with status/findings | Updated after each wave |
|
|
119
|
+
| `wave-{N}.csv` | Per-wave input (temporary) | Created before wave, deleted after |
|
|
120
|
+
| `results.csv` | Final export of all task results | Created in Phase 3 |
|
|
121
|
+
| `discoveries.ndjson` | Shared exploration board | Append-only, carries across waves |
|
|
122
|
+
| `context.md` | Human-readable brainstorm report | Created in Phase 3 |
|
|
123
|
+
| `.brainstorming/` | Role analyses + synthesis artifacts | Populated in Phase 3 |
|
|
124
|
+
|
|
125
|
+
### Session Structure
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
.workflow/.csv-wave/brainstorm-{slug}-{date}/
|
|
129
|
+
+-- tasks.csv
|
|
130
|
+
+-- results.csv
|
|
131
|
+
+-- discoveries.ndjson
|
|
132
|
+
+-- context.md
|
|
133
|
+
+-- wave-{N}.csv (temporary)
|
|
134
|
+
+-- .brainstorming/
|
|
135
|
+
+-- guidance-specification.md
|
|
136
|
+
+-- feature-index.json
|
|
137
|
+
+-- synthesis-changelog.md
|
|
138
|
+
+-- feature-specs/
|
|
139
|
+
| +-- F-001-{slug}.md
|
|
140
|
+
| +-- F-00N-{slug}.md
|
|
141
|
+
+-- {role}/
|
|
142
|
+
| +-- analysis.md
|
|
143
|
+
| +-- analysis-cross-cutting.md
|
|
144
|
+
| +-- analysis-F-{id}-{slug}.md
|
|
145
|
+
+-- synthesis-specification.md (fallback mode)
|
|
146
|
+
```
|
|
147
|
+
</csv_schema>
|
|
148
|
+
|
|
149
|
+
<invariants>
|
|
150
|
+
1. **Start Immediately**: First action is session initialization, then Phase 1
|
|
151
|
+
2. **Wave Order is Sacred**: Never execute wave 2 before wave 1 completes and results are merged
|
|
152
|
+
3. **CSV is Source of Truth**: Master tasks.csv holds all state
|
|
153
|
+
4. **Context Propagation**: prev_context built from master CSV, not from memory
|
|
154
|
+
5. **Guidance First**: Wave 1 (guidance) MUST complete before any role analysis begins
|
|
155
|
+
6. **Discovery Board is Append-Only**: Never clear, modify, or recreate discoveries.ndjson
|
|
156
|
+
7. **Skip on Failure**: If guidance fails, abort. If all roles fail, skip synthesis.
|
|
157
|
+
8. **Cleanup Temp Files**: Remove wave-{N}.csv after results are merged
|
|
158
|
+
9. **DO NOT STOP**: Continuous execution until all waves complete
|
|
159
|
+
10. **9 Valid Roles Only**: data-architect, product-manager, product-owner, scrum-master, subject-matter-expert, system-architect, test-strategist, ui-designer, ux-expert
|
|
160
|
+
</invariants>
|
|
161
|
+
|
|
162
|
+
<execution>
|
|
163
|
+
|
|
164
|
+
### Session Initialization
|
|
165
|
+
|
|
166
|
+
```javascript
|
|
167
|
+
const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
|
|
168
|
+
|
|
169
|
+
// Parse flags
|
|
170
|
+
const AUTO_YES = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y')
|
|
171
|
+
const continueMode = $ARGUMENTS.includes('--continue')
|
|
172
|
+
const concurrencyMatch = $ARGUMENTS.match(/(?:--concurrency|-c)\s+(\d+)/)
|
|
173
|
+
const maxConcurrency = concurrencyMatch ? parseInt(concurrencyMatch[1]) : 6
|
|
174
|
+
|
|
175
|
+
// Parse brainstorm-specific flags
|
|
176
|
+
const countMatch = $ARGUMENTS.match(/--count\s+(\d+)/)
|
|
177
|
+
const roleCount = countMatch ? Math.min(parseInt(countMatch[1]), 9) : 3
|
|
178
|
+
const skipQuestions = $ARGUMENTS.includes('--skip-questions')
|
|
179
|
+
|
|
180
|
+
// Clean topic text
|
|
181
|
+
const topicArg = $ARGUMENTS
|
|
182
|
+
.replace(/--yes|-y|--continue|--concurrency\s+\d+|-c\s+\d+|--count\s+\d+|--skip-questions/g, '')
|
|
183
|
+
.trim()
|
|
184
|
+
|
|
185
|
+
const slug = topicArg.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
|
|
186
|
+
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
187
|
+
const sessionId = `brainstorm-${slug}-${dateStr}`
|
|
188
|
+
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
189
|
+
|
|
190
|
+
Bash(`mkdir -p ${sessionFolder}/.brainstorming`)
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Phase 1: Topic Resolution -> CSV
|
|
194
|
+
|
|
195
|
+
**Objective**: Parse topic, select roles, generate tasks.csv.
|
|
196
|
+
|
|
197
|
+
**Decomposition Rules**:
|
|
198
|
+
|
|
199
|
+
1. **Mode detection**: Number = phase mode (resolve via state.json artifact registry to `.workflow/scratch/{type}-{slug}-{date}/`; legacy fallback to `.workflow/phases/{NN}-{slug}/`), text = scratch mode
|
|
200
|
+
2. **Project specs loading**: Read `.workflow/specs/` for architecture-aware analysis context
|
|
201
|
+
3. **Role selection**:
|
|
202
|
+
|
|
203
|
+
| Condition | Action |
|
|
204
|
+
|-----------|--------|
|
|
205
|
+
| `--yes` flag | Auto-select top `roleCount` roles based on topic relevance |
|
|
206
|
+
| Interactive | AskUserQuestion (multiSelect=true) with recommended roles + rationale |
|
|
207
|
+
|
|
208
|
+
4. **Valid roles** (9 total):
|
|
209
|
+
|
|
210
|
+
| Role ID | Focus Area |
|
|
211
|
+
|---------|------------|
|
|
212
|
+
| `data-architect` | Data models, storage strategies, data flow |
|
|
213
|
+
| `product-manager` | Product strategy, roadmap, prioritization |
|
|
214
|
+
| `product-owner` | Backlog management, user stories, acceptance criteria |
|
|
215
|
+
| `scrum-master` | Process facilitation, impediment removal |
|
|
216
|
+
| `subject-matter-expert` | Domain knowledge, business rules, compliance |
|
|
217
|
+
| `system-architect` | Technical architecture, scalability, integration |
|
|
218
|
+
| `test-strategist` | Test strategy, quality assurance |
|
|
219
|
+
| `ui-designer` | Visual design, mockups, design systems |
|
|
220
|
+
| `ux-expert` | User research, information architecture, journey |
|
|
221
|
+
|
|
222
|
+
5. **CSV generation**: 1 guidance row (wave 1) + N role rows (wave 2) + 1 synthesis row (wave 3).
|
|
223
|
+
|
|
224
|
+
**Wave computation**: 3-wave diamond -- guidance = wave 1, all role tasks = wave 2, synthesis = wave 3.
|
|
225
|
+
|
|
226
|
+
**User validation**: Display task breakdown (skip if AUTO_YES).
|
|
227
|
+
|
|
228
|
+
### Phase 2: Wave Execution Engine
|
|
229
|
+
|
|
230
|
+
**Objective**: Execute brainstorm pipeline wave-by-wave via spawn_agents_on_csv.
|
|
231
|
+
|
|
232
|
+
#### Wave 1: Guidance Specification (Single Agent)
|
|
233
|
+
|
|
234
|
+
1. Read master `tasks.csv`
|
|
235
|
+
2. Filter rows where `wave == 1` AND `status == pending`
|
|
236
|
+
3. No prev_context needed (wave 1 has no predecessors)
|
|
237
|
+
4. Write `wave-1.csv`
|
|
238
|
+
5. Execute:
|
|
239
|
+
|
|
240
|
+
```javascript
|
|
241
|
+
spawn_agents_on_csv({
|
|
242
|
+
csv_path: `${sessionFolder}/wave-1.csv`,
|
|
243
|
+
id_column: "id",
|
|
244
|
+
instruction: buildGuidanceInstruction(sessionFolder, topicArg),
|
|
245
|
+
max_concurrency: 1,
|
|
246
|
+
max_runtime_seconds: 600,
|
|
247
|
+
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
248
|
+
output_schema: {
|
|
249
|
+
type: "object",
|
|
250
|
+
properties: {
|
|
251
|
+
id: { type: "string" },
|
|
252
|
+
status: { type: "string", enum: ["completed", "failed"] },
|
|
253
|
+
findings: { type: "string" },
|
|
254
|
+
analysis_file: { type: "string" },
|
|
255
|
+
error: { type: "string" }
|
|
256
|
+
},
|
|
257
|
+
required: ["id", "status", "findings"]
|
|
258
|
+
}
|
|
259
|
+
})
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
6. Read `wave-1-results.csv`, merge into master `tasks.csv`
|
|
263
|
+
7. Delete `wave-1.csv`
|
|
264
|
+
8. Read generated `guidance-specification.md` for wave 2 context propagation
|
|
265
|
+
|
|
266
|
+
**Guidance agent responsibilities**:
|
|
267
|
+
- Analyze topic, extract 5-10 core domain terms
|
|
268
|
+
- Define non-goals and scope boundaries
|
|
269
|
+
- Decompose into features (max 8): F-{3-digit} ID, kebab-case slug, description, related roles, priority
|
|
270
|
+
- Apply RFC 2119 keywords (MUST, SHOULD, MAY, MUST NOT, SHOULD NOT)
|
|
271
|
+
- Write `guidance-specification.md` to `.brainstorming/`
|
|
272
|
+
|
|
273
|
+
#### Wave 2: Role Analysis (Parallel, 3-9 Agents)
|
|
274
|
+
|
|
275
|
+
1. Read master `tasks.csv`
|
|
276
|
+
2. Filter rows where `wave == 2` AND `status == pending`
|
|
277
|
+
3. Build `prev_context` from wave 1 findings:
|
|
278
|
+
```
|
|
279
|
+
[Task 1: Guidance Specification] Generated guidance-specification.md with N features, M terms defined...
|
|
280
|
+
```
|
|
281
|
+
4. Include `guidance-specification.md` content in prev_context for each role agent
|
|
282
|
+
5. Write `wave-2.csv` with `prev_context` column
|
|
283
|
+
6. Execute:
|
|
284
|
+
|
|
285
|
+
```javascript
|
|
286
|
+
spawn_agents_on_csv({
|
|
287
|
+
csv_path: `${sessionFolder}/wave-2.csv`,
|
|
288
|
+
id_column: "id",
|
|
289
|
+
instruction: buildRoleAnalysisInstruction(sessionFolder),
|
|
290
|
+
max_concurrency: maxConcurrency,
|
|
291
|
+
max_runtime_seconds: 900,
|
|
292
|
+
output_csv_path: `${sessionFolder}/wave-2-results.csv`,
|
|
293
|
+
output_schema: {
|
|
294
|
+
type: "object",
|
|
295
|
+
properties: {
|
|
296
|
+
id: { type: "string" },
|
|
297
|
+
status: { type: "string", enum: ["completed", "failed"] },
|
|
298
|
+
findings: { type: "string" },
|
|
299
|
+
analysis_file: { type: "string" },
|
|
300
|
+
error: { type: "string" }
|
|
301
|
+
},
|
|
302
|
+
required: ["id", "status", "findings"]
|
|
303
|
+
}
|
|
304
|
+
})
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
7. Read `wave-2-results.csv`, merge into master `tasks.csv`
|
|
308
|
+
8. Delete `wave-2.csv`
|
|
309
|
+
|
|
310
|
+
**Role agent responsibilities**:
|
|
311
|
+
- Read guidance-specification.md for framework context
|
|
312
|
+
- Analyze topic through role-specific lens
|
|
313
|
+
- Feature-point organization when feature list available:
|
|
314
|
+
- `analysis.md` -- Role overview INDEX only (< 1500 words)
|
|
315
|
+
- `analysis-cross-cutting.md` -- Cross-feature decisions (< 2000 words)
|
|
316
|
+
- `analysis-F-{id}-{slug}.md` -- Per-feature analysis (< 2000 words each)
|
|
317
|
+
- Fallback organization (no feature list):
|
|
318
|
+
- `analysis.md` -- Main analysis (< 3000 words)
|
|
319
|
+
- system-architect MUST include: Data Model, State Machine, Error Handling, Observability, Configuration Model
|
|
320
|
+
- Write analysis files to `.brainstorming/{role}/`
|
|
321
|
+
|
|
322
|
+
#### Wave 3: Synthesis + Feature Index (Single Agent)
|
|
323
|
+
|
|
324
|
+
1. Read master `tasks.csv`
|
|
325
|
+
2. Filter rows where `wave == 3` AND `status == pending`
|
|
326
|
+
3. Check deps -- if all wave 2 tasks failed, skip synthesis
|
|
327
|
+
4. Build `prev_context` from wave 2 findings:
|
|
328
|
+
```
|
|
329
|
+
[Task 2: System Architect Analysis] Key findings: microservice architecture with event sourcing...
|
|
330
|
+
[Task 3: UI Designer Analysis] Key findings: component-based design system with real-time cursors...
|
|
331
|
+
[Task 4: Product Manager Analysis] Key findings: MVP focuses on document editing + presence...
|
|
332
|
+
```
|
|
333
|
+
5. Write `wave-3.csv` with `prev_context` column
|
|
334
|
+
6. Execute `spawn_agents_on_csv` for synthesis agent
|
|
335
|
+
7. Merge results into master `tasks.csv`
|
|
336
|
+
8. Delete `wave-3.csv`
|
|
337
|
+
|
|
338
|
+
**Synthesis agent responsibilities**:
|
|
339
|
+
- Cross-role analysis: consensus, conflicts, unique contributions
|
|
340
|
+
- Conflict resolution with [RESOLVED]/[SUGGESTED]/[UNRESOLVED] tags
|
|
341
|
+
- Feature mode: generate `feature-specs/F-{id}-{slug}.md` per feature (7 sections, 1500-2500 words)
|
|
342
|
+
- Fallback mode: generate `synthesis-specification.md`
|
|
343
|
+
- Build `feature-index.json` and `synthesis-changelog.md`
|
|
344
|
+
- Four-Layer Aggregation: Direct Reference, Structured Extraction, Conflict Distillation, Cross-Feature Annotation
|
|
345
|
+
|
|
346
|
+
### Phase 3: Results Aggregation
|
|
347
|
+
|
|
348
|
+
**Objective**: Generate final results and human-readable report.
|
|
349
|
+
|
|
350
|
+
1. Read final master `tasks.csv`
|
|
351
|
+
2. Export as `results.csv`
|
|
352
|
+
3. Generate `context.md`:
|
|
353
|
+
|
|
354
|
+
```markdown
|
|
355
|
+
# Brainstorm Report -- {topic}
|
|
356
|
+
|
|
357
|
+
## Summary
|
|
358
|
+
- Topic: {topic}
|
|
359
|
+
- Roles analyzed: {role_count}
|
|
360
|
+
- Features decomposed: {feature_count}
|
|
361
|
+
- Conflicts resolved: {resolved_count}
|
|
362
|
+
|
|
363
|
+
## Guidance Specification
|
|
364
|
+
{summary of guidance-specification.md}
|
|
365
|
+
|
|
366
|
+
## Role Analysis Results
|
|
367
|
+
### {role_name}
|
|
368
|
+
{findings summary}
|
|
369
|
+
**Analysis file**: {analysis_file path}
|
|
370
|
+
|
|
371
|
+
## Synthesis
|
|
372
|
+
{synthesis summary}
|
|
373
|
+
- Consensus areas: {list}
|
|
374
|
+
- Resolved conflicts: {list}
|
|
375
|
+
- Unresolved items: {list}
|
|
376
|
+
|
|
377
|
+
## Feature Index
|
|
378
|
+
{feature-index.json summary}
|
|
379
|
+
|
|
380
|
+
## Next Steps
|
|
381
|
+
- Skill: maestro-analyze -- Evaluate feasibility + lock decisions
|
|
382
|
+
- Skill: maestro-plan -- Plan directly if scope is clear
|
|
383
|
+
- Skill: maestro-spec-generate -- Generate full spec package from brainstorm
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
4. Copy artifacts to output `.brainstorming/` directory (phase mode or scratch mode target)
|
|
387
|
+
5. Update phase `index.json` with brainstorm status (if phase mode)
|
|
388
|
+
6. Display summary with next step suggestions
|
|
389
|
+
|
|
390
|
+
### Shared Discovery Board Protocol
|
|
391
|
+
|
|
392
|
+
#### Standard Discovery Types
|
|
393
|
+
|
|
394
|
+
| Type | Dedup Key | Data Schema | Description |
|
|
395
|
+
|------|-----------|-------------|-------------|
|
|
396
|
+
| `code_pattern` | `data.name` | `{name, file, description}` | Reusable code pattern found |
|
|
397
|
+
| `integration_point` | `data.file` | `{file, description, exports[]}` | Module connection point |
|
|
398
|
+
| `convention` | singleton | `{naming, imports, formatting}` | Project code conventions |
|
|
399
|
+
| `blocker` | `data.issue` | `{issue, severity, impact}` | Blocking issue found |
|
|
400
|
+
| `tech_stack` | singleton | `{framework, language, tools[]}` | Technology stack info |
|
|
401
|
+
|
|
402
|
+
#### Domain Discovery Types
|
|
403
|
+
|
|
404
|
+
| Type | Dedup Key | Data Schema | Description |
|
|
405
|
+
|------|-----------|-------------|-------------|
|
|
406
|
+
| `terminology` | `data.term` | `{term, definition, aliases[], category}` | Domain term extracted |
|
|
407
|
+
| `non_goal` | `data.title` | `{title, rationale}` | Scope exclusion identified |
|
|
408
|
+
| `feature_candidate` | `data.id` | `{id, slug, description, roles[], priority}` | Feature decomposed from topic |
|
|
409
|
+
| `role_insight` | `data.role+data.topic` | `{role, topic, insight, confidence}` | Role-specific finding |
|
|
410
|
+
| `cross_role_conflict` | `data.area` | `{area, roles[], positions[], resolution}` | Cross-role disagreement |
|
|
411
|
+
|
|
412
|
+
#### Protocol
|
|
413
|
+
|
|
414
|
+
1. **Read** `{session_folder}/discoveries.ndjson` before own analysis
|
|
415
|
+
2. **Skip covered**: If discovery of same type + dedup key exists, skip
|
|
416
|
+
3. **Write immediately**: Append findings as found
|
|
417
|
+
4. **Append-only**: Never modify or delete
|
|
418
|
+
5. **Deduplicate**: Check before writing
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
echo '{"ts":"<ISO>","worker":"{id}","type":"terminology","data":{"term":"CRDT","definition":"Conflict-free Replicated Data Type","aliases":["conflict-free"],"category":"technical"}}' >> {session_folder}/discoveries.ndjson
|
|
422
|
+
```
|
|
423
|
+
</execution>
|
|
424
|
+
|
|
425
|
+
<error_codes>
|
|
426
|
+
|
|
427
|
+
| Error | Resolution |
|
|
428
|
+
|-------|------------|
|
|
429
|
+
| Topic argument missing | Abort with error: "Topic text required" |
|
|
430
|
+
| Invalid role name in selection | Filter to valid roles, warn user |
|
|
431
|
+
| Role count exceeds 9 | Cap at 9 with warning |
|
|
432
|
+
| Guidance agent timeout | Mark as failed, abort pipeline (wave 2 depends on guidance) |
|
|
433
|
+
| Role agent timeout | Mark as failed, continue with remaining roles |
|
|
434
|
+
| All role agents failed | Skip synthesis (wave 3), report partial results |
|
|
435
|
+
| Synthesis agent failed | Use wave 2 results directly, no feature index |
|
|
436
|
+
| CSV parse error | Validate format, show line number |
|
|
437
|
+
| discoveries.ndjson corrupt | Ignore malformed lines |
|
|
438
|
+
| Continue mode: no session found | List available sessions |
|
|
439
|
+
| Phase directory not found | Abort with error: "Phase {N} not found" |
|
|
440
|
+
</error_codes>
|
|
441
|
+
|
|
442
|
+
<success_criteria>
|
|
443
|
+
- [ ] Session folder created with valid tasks.csv
|
|
444
|
+
- [ ] All 3 waves executed in order
|
|
445
|
+
- [ ] guidance-specification.md produced in .brainstorming/
|
|
446
|
+
- [ ] Role analysis files produced per selected role
|
|
447
|
+
- [ ] Synthesis artifacts produced (feature specs or synthesis-specification.md)
|
|
448
|
+
- [ ] feature-index.json and synthesis-changelog.md produced
|
|
449
|
+
- [ ] context.md produced with full brainstorm report
|
|
450
|
+
- [ ] Artifacts copied to target .brainstorming/ directory
|
|
451
|
+
- [ ] discoveries.ndjson append-only throughout
|
|
452
|
+
</success_criteria>
|