claude-code-workflow 7.2.28 → 7.2.30
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/.ccw/workflows/cli-templates/schemas/plan-overview-base-schema.json +2 -2
- package/.ccw/workflows/cli-templates/schemas/task-schema.json +14 -7
- package/.claude/agents/action-planning-agent.md +7 -4
- package/.claude/agents/cli-explore-agent.md +77 -63
- package/.claude/agents/cli-lite-planning-agent.md +11 -10
- package/.claude/agents/issue-plan-agent.md +421 -426
- package/.claude/commands/workflow/spec/setup.md +1 -1
- package/.claude/skills/ccw-chain/SKILL.md +119 -0
- package/.claude/skills/ccw-chain/chains/ccw-cycle.json +21 -0
- package/.claude/skills/ccw-chain/chains/ccw-exploration.json +47 -0
- package/.claude/skills/ccw-chain/chains/ccw-issue.json +33 -0
- package/.claude/skills/ccw-chain/chains/ccw-lightweight.json +57 -0
- package/.claude/skills/ccw-chain/chains/ccw-main.json +52 -0
- package/.claude/skills/ccw-chain/chains/ccw-standard.json +39 -0
- package/.claude/skills/ccw-chain/chains/ccw-team.json +10 -0
- package/.claude/skills/ccw-chain/chains/ccw-with-file.json +31 -0
- package/.claude/skills/ccw-chain/phases/analyze-with-file.md +788 -0
- package/.claude/skills/ccw-chain/phases/brainstorm/SKILL.md +408 -0
- package/.claude/skills/ccw-chain/phases/brainstorm/phases/01-mode-routing.md +207 -0
- package/.claude/skills/ccw-chain/phases/brainstorm/phases/02-artifacts.md +567 -0
- package/.claude/skills/ccw-chain/phases/brainstorm/phases/03-role-analysis.md +748 -0
- package/.claude/skills/ccw-chain/phases/brainstorm/phases/04-synthesis.md +827 -0
- package/.claude/skills/ccw-chain/phases/brainstorm-with-file.md +482 -0
- package/.claude/skills/ccw-chain/phases/collaborative-plan-with-file.md +639 -0
- package/.claude/skills/ccw-chain/phases/debug-with-file.md +656 -0
- package/.claude/skills/ccw-chain/phases/integration-test-cycle.md +936 -0
- package/.claude/skills/ccw-chain/phases/issue-convert-to-plan.md +720 -0
- package/.claude/skills/ccw-chain/phases/issue-discover.md +483 -0
- package/.claude/skills/ccw-chain/phases/issue-execute.md +629 -0
- package/.claude/skills/ccw-chain/phases/issue-from-brainstorm.md +382 -0
- package/.claude/skills/ccw-chain/phases/issue-plan.md +343 -0
- package/.claude/skills/ccw-chain/phases/issue-queue.md +464 -0
- package/.claude/skills/ccw-chain/phases/refactor-cycle.md +852 -0
- package/.claude/skills/ccw-chain/phases/review-cycle/SKILL.md +132 -0
- package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-fix.md +760 -0
- package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-module.md +764 -0
- package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-session.md +775 -0
- package/.claude/skills/ccw-chain/phases/roadmap-with-file.md +544 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/SKILL.md +338 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/01-5-requirement-clarification.md +404 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/01-discovery.md +257 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/02-product-brief.md +274 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/03-requirements.md +184 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/04-architecture.md +248 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/05-epics-stories.md +178 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/06-5-auto-fix.md +144 -0
- package/.claude/skills/ccw-chain/phases/spec-generator/phases/06-readiness-check.md +480 -0
- package/.claude/skills/ccw-chain/phases/team-planex.md +123 -0
- package/.claude/skills/ccw-chain/phases/ui-design-explore-auto.md +678 -0
- package/.claude/skills/ccw-chain/phases/unified-execute-with-file.md +870 -0
- package/.claude/skills/ccw-chain/phases/workflow-execute/SKILL.md +625 -0
- package/.claude/skills/ccw-chain/phases/workflow-execute/phases/06-review.md +215 -0
- package/.claude/skills/ccw-chain/phases/workflow-lite-plan.md +616 -0
- package/.claude/skills/ccw-chain/phases/workflow-multi-cli-plan.md +424 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/SKILL.md +466 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/01-session-discovery.md +99 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/02-context-gathering.md +338 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/03-conflict-resolution.md +422 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/04-task-generation.md +440 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/05-plan-verify.md +395 -0
- package/.claude/skills/ccw-chain/phases/workflow-plan/phases/06-replan.md +594 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/SKILL.md +527 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/01-session-discovery.md +57 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/02-context-gathering.md +407 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/03-test-coverage-analysis.md +172 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/04-conflict-resolution.md +426 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/05-tdd-task-generation.md +473 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/06-tdd-structure-validation.md +189 -0
- package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/07-tdd-verify.md +635 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/SKILL.md +482 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/01-session-start.md +60 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/02-test-context-gather.md +493 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/03-test-concept-enhanced.md +150 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/04-test-task-generate.md +346 -0
- package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/05-test-cycle-execute.md +538 -0
- package/.claude/skills/ccw-chain/specs/auto-mode.md +47 -0
- package/.claude/skills/ccw-chain/specs/intent-patterns.md +60 -0
- package/.claude/skills/chain-loader/SKILL.md +78 -0
- package/.claude/skills/chain-loader/phases/01-analyze-skill.md +53 -0
- package/.claude/skills/chain-loader/phases/02-design-graph.md +73 -0
- package/.claude/skills/chain-loader/phases/03-generate-validate.md +75 -0
- package/.claude/skills/chain-loader/specs/chain-schema.md +99 -0
- package/.claude/skills/chain-loader/specs/design-patterns.md +99 -0
- package/.claude/skills/chain-loader/templates/chain-json.md +63 -0
- package/.claude/skills/review-cycle/phases/review-module.md +764 -764
- package/.claude/skills/review-cycle/phases/review-session.md +775 -775
- package/.claude/skills/workflow-multi-cli-plan/SKILL.md +2 -2
- package/.claude/skills/workflow-plan/phases/03-conflict-resolution.md +422 -422
- package/.claude/skills/workflow-plan/phases/05-plan-verify.md +395 -395
- package/.claude/skills/workflow-tdd-plan/phases/02-context-gathering.md +407 -407
- package/.claude/skills/workflow-tdd-plan/phases/04-conflict-resolution.md +426 -426
- package/.claude/skills/workflow-test-fix/phases/02-test-context-gather.md +493 -493
- package/.codex/skills/brainstorm/SKILL.md +3 -3
- package/.codex/skills/clean/SKILL.md +3 -3
- package/.codex/skills/issue-discover/SKILL.md +13 -13
- package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
- package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
- package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
- package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
- package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
- package/.codex/skills/review-cycle/SKILL.md +10 -10
- package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
- package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
- package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
- package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
- package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
- package/.codex/skills/spec-generator/README.md +1 -1
- package/.codex/skills/spec-generator/SKILL.md +184 -88
- package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
- package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
- package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
- package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
- package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
- package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
- package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
- package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
- package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
- package/.codex/skills/spec-setup/SKILL.md +4 -4
- package/.codex/skills/workflow-plan/SKILL.md +6 -6
- package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
- package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
- package/README.md +14 -0
- package/ccw/dist/core/routes/litellm-api-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/litellm-api-routes.js +0 -23
- package/ccw/dist/core/routes/litellm-api-routes.js.map +1 -1
- package/ccw/dist/tools/chain-loader.d.ts +10 -0
- package/ccw/dist/tools/chain-loader.d.ts.map +1 -0
- package/ccw/dist/tools/chain-loader.js +642 -0
- package/ccw/dist/tools/chain-loader.js.map +1 -0
- package/ccw/dist/tools/index.d.ts.map +1 -1
- package/ccw/dist/tools/index.js +2 -0
- package/ccw/dist/tools/index.js.map +1 -1
- package/ccw/dist/tools/json-builder.js +20 -0
- package/ccw/dist/tools/json-builder.js.map +1 -1
- package/ccw/dist/types/chain-types.d.ts +72 -0
- package/ccw/dist/types/chain-types.d.ts.map +1 -0
- package/ccw/dist/types/chain-types.js +5 -0
- package/ccw/dist/types/chain-types.js.map +1 -0
- package/ccw/frontend/dist/assets/{AlertDialog-BjP1ydDR.js → AlertDialog-exlTDW81.js} +3 -3
- package/ccw/frontend/dist/assets/{AlertDialog-BjP1ydDR.js.map → AlertDialog-exlTDW81.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-CAX3xqMf.js → AnalysisPage-cgV9LfAI.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-CAX3xqMf.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CtWlmztq.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CtWlmztq.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-hR4a-eLX.js → CliModeToggle-Be9xsPiv.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-hR4a-eLX.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-DzNPkFN9.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-DzNPkFN9.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-BPEGN4TT.js → CliViewerPage-BrE-oyEq.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-BPEGN4TT.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Cf0r2RHY.js → CodexLensPage-Cd3nrC93.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Cf0r2RHY.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-DEm1rJ4h.js → Collapsible-DXFl3VKF.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-DEm1rJ4h.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-BpeWw8HO.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-BpeWw8HO.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-BEsmh2vF.js → DeepWikiPage-CpDxtmRX.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-BEsmh2vF.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-B30SFdtU.js → EndpointsPage-BchjWe7s.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-B30SFdtU.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-BVvMpg1O.js → ExplorerPage-CbWvaJ0y.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-BVvMpg1O.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CL73dHbh.js → FixSessionPage-YMjVRiCk.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CL73dHbh.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-BL-28lMZ.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-BL-28lMZ.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-BzZDciHZ.js → FloatingPanel-BtqzqDVq.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-BzZDciHZ.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-CDp6-d8P.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
- package/ccw/frontend/dist/assets/{GraphExplorerPage-CDp6-d8P.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-fZY_7O9n.js → HistoryPage-BuWpQ7k5.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-fZY_7O9n.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-4LJeC9bq.js → HookManagerPage-D0BtMIWy.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-4LJeC9bq.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage-Bpigrbhw.js → InstallationsPage-C7dwsAKG.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage-Bpigrbhw.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-BP0zJc1R.js → IssueHubPage-D0nCNaeB.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-BP0zJc1R.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSt2oVKQ.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSt2oVKQ.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-B-xaMA0w.js → McpManagerPage-C-S5CehM.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-B-xaMA0w.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-CJqo_7DY.js → MemoryPage-P_B0JVUQ.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-CJqo_7DY.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-ibZeQA-Y.js → NotFoundPage-S4Jn9LUE.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-ibZeQA-Y.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-DgJ4ctPQ.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-DgJ4ctPQ.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-Cit0Yq0D.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-Cit0Yq0D.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-Ce1HDIK0.js → PromptHistoryPage-YEMjFARX.js} +3 -3
- package/ccw/frontend/dist/assets/{PromptHistoryPage-Ce1HDIK0.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-J1KikNrk.js → ReviewSessionPage-DnTm55nG.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-J1KikNrk.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-CdBjTmth.js → RulesManagerPage-CUwebtO2.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-CdBjTmth.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-B9ZK7LvX.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-B9ZK7LvX.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-CW_nS5UR.js → SessionsPage-BpgP4087.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-CW_nS5UR.js.map → SessionsPage-BpgP4087.js.map} +1 -1
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-DJpi9XQL.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-DJpi9XQL.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-Ac6Ov7uy.js → Switch-CYSPdqWk.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-Ac6Ov7uy.js.map → Switch-CYSPdqWk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-DZAAspqR.js → TabsNavigation-CPh6Zor1.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-DZAAspqR.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-BJkwfhIZ.js → TaskDrawer-Ds-8830B.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-BJkwfhIZ.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-BJgjxBgb.js → TeamPage-CJODUxBk.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-BJgjxBgb.js.map → TeamPage-CJODUxBk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-D1WekoOy.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-D1WekoOy.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-DxemgIhF.js → archive-CjwVpw6k.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-DxemgIhF.js.map → archive-CjwVpw6k.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-CjS83f1V.js → archive-restore-2vZa9Ic3.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-CjS83f1V.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-B5PUcn8I.js → arrow-right-CUU5XDgT.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-B5PUcn8I.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-DCc9aPbb.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-DCc9aPbb.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-DOwFtzak.js → bot-BwpSRDUa.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-DOwFtzak.js.map → bot-BwpSRDUa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-96qH3aFh.js → braces-DBzUW1XC.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-96qH3aFh.js.map → braces-DBzUW1XC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-CCxSuil1.js → circle-stop-CGNNsjvE.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-CCxSuil1.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-CZNSJFdq.js → cpu-D27G86Ul.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-CZNSJFdq.js.map → cpu-D27G86Ul.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-h8xtvw2_.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-h8xtvw2_.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-D3NY0bm6.js → eye-C6MOB7Au.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-D3NY0bm6.js.map → eye-C6MOB7Au.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-Cy2vkc8p.js → eye-off-BxfBlZ26.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-Cy2vkc8p.js.map → eye-off-BxfBlZ26.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-Bzq3U1Mx.js → file-json-NI237wA-.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-Bzq3U1Mx.js.map → file-json-NI237wA-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DwuwPDPi.js → file-text-Byn2_2v6.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DwuwPDPi.js.map → file-text-Byn2_2v6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-q9g-bknU.js → filter-D-7PhZjx.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-q9g-bknU.js.map → filter-D-7PhZjx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-CL6vb42J.js → folder-BoAsK_FL.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-CL6vb42J.js.map → folder-BoAsK_FL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-BkrcQBly.js → gauge-DCSxJIS4.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-BkrcQBly.js.map → gauge-DCSxJIS4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BQbwyNeV.js → globe-CHS3prza.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BQbwyNeV.js.map → globe-CHS3prza.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-x5_7DrN7.js → grid-3x3-D7K35U7S.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-x5_7DrN7.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-DTyWXwzf.js → hard-drive-eq9xE07G.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-DTyWXwzf.js.map → hard-drive-eq9xE07G.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-80O0kJO7.js → hash-C1DMpBua.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-80O0kJO7.js.map → hash-C1DMpBua.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-DDlN2Bwa.js → history-Di5SBCY-.js} +2 -2
- package/ccw/frontend/dist/assets/{history-DDlN2Bwa.js.map → history-Di5SBCY-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-mbeo62f8.js → index--_R7COnA.js} +2 -2
- package/ccw/frontend/dist/assets/{index-mbeo62f8.js.map → index--_R7COnA.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-rLgoBCfV.js → index-BUol9HDD.js} +3 -3
- package/ccw/frontend/dist/assets/{index-rLgoBCfV.js.map → index-BUol9HDD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Bs80iCX0.js → index-CT9oykfw.js} +2 -2
- package/ccw/frontend/dist/assets/{index-Bs80iCX0.js.map → index-CT9oykfw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B9A3Hnrk.js → index-Ddwvf87H.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B9A3Hnrk.js.map → index-Ddwvf87H.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-C1niOWJx.js → layout-grid-LiX0qZbN.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-C1niOWJx.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-BTmI7SUg.js → lightbulb-CL3DVEwb.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-BTmI7SUg.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-CB9HKeuZ.js → link-2-CC5cFeq6.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-CB9HKeuZ.js.map → link-2-CC5cFeq6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-koEYiemK.js → link-ngFQ9bs0.js} +2 -2
- package/ccw/frontend/dist/assets/{link-koEYiemK.js.map → link-ngFQ9bs0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-v2_GaLdC.js → list-BEU6I0KK.js} +2 -2
- package/ccw/frontend/dist/assets/{list-v2_GaLdC.js.map → list-BEU6I0KK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-BQNfAqG_.js → map-pin-BWZdLA6y.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-BQNfAqG_.js.map → map-pin-BWZdLA6y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-Dzq5LGg9.js → messages-square-K6_Chm7n.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-Dzq5LGg9.js.map → messages-square-K6_Chm7n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-CtkoJXcz.js → minimize-2-CWkphauf.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-CtkoJXcz.js.map → minimize-2-CWkphauf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-CH3smL37.js → package-DrNgkamn.js} +2 -2
- package/ccw/frontend/dist/assets/{package-CH3smL37.js.map → package-DrNgkamn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-CZ0aL_yF.js → plug-CMo3sw5_.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-CZ0aL_yF.js.map → plug-CMo3sw5_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-F2A_J4l6.js → power-DppNTW5e.js} +2 -2
- package/ccw/frontend/dist/assets/{power-F2A_J4l6.js.map → power-DppNTW5e.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-Byxot0YU.js → save-CD8aPMbZ.js} +2 -2
- package/ccw/frontend/dist/assets/{save-Byxot0YU.js.map → save-CD8aPMbZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-JjqhUkpw.js → send-B4z90fQD.js} +2 -2
- package/ccw/frontend/dist/assets/{send-JjqhUkpw.js.map → send-B4z90fQD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2--SuN9rAt.js → settings-2-CAKRU_QC.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2--SuN9rAt.js.map → settings-2-CAKRU_QC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-BbngGB2h.js → square-check-big-KhI3HrzX.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-BbngGB2h.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-CgrHgZSl.js → square-pen-BtdGIpuq.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-CgrHgZSl.js.map → square-pen-BtdGIpuq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-BU3TQr7Z.js → star-ZoBUkXoD.js} +2 -2
- package/ccw/frontend/dist/assets/{star-BU3TQr7Z.js.map → star-ZoBUkXoD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-CKs7nnn3.js → style-CltxQP-P.js} +2 -2
- package/ccw/frontend/dist/assets/{style-CKs7nnn3.js.map → style-CltxQP-P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-DW5tsDW6.js → target-C32OUSGf.js} +2 -2
- package/ccw/frontend/dist/assets/{target-DW5tsDW6.js.map → target-C32OUSGf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-BHm7w3ON.js → test-tube-0IxoyAVZ.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-BHm7w3ON.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-DYR7PWwt.js → upload-4eKCkyBn.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-DYR7PWwt.js.map → upload-4eKCkyBn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D0TVgQD_.js → useApiSettings-zLTUWqhi.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D0TVgQD_.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-DfY8mAP8.js → useCli-BtN2vpOX.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-DfY8mAP8.js.map → useCli-BtN2vpOX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-CGusDp0F.js → useCommands-_spj49qL.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-CGusDp0F.js.map → useCommands-_spj49qL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-CIwh0fF1.js → useDebounce-Bm9KFZvd.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-CIwh0fF1.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-FMyFv39K.js → useFileExplorer-DOmpm6v9.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-FMyFv39K.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-B2qhsoTb.js → useLocale-D2rj4rea.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-B2qhsoTb.js.map → useLocale-D2rj4rea.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-cxKXMBm3.js → useSkills-OskEpomF.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-cxKXMBm3.js.map → useSkills-OskEpomF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-B-xUT_z-.js → useSystemSettings-BjMgsNSF.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-B-xUT_z-.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-DZV_3lPr.js → wand-sparkles-CLhyYWa7.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-DZV_3lPr.js.map → wand-sparkles-CLhyYWa7.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/ccw/scripts/prepublish-clean.mjs +0 -1
- package/package.json +1 -3
- package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js +0 -150
- package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +0 -1
- package/ccw/frontend/dist/assets/SkillsManagerPage-CTnWrrwp.js +0 -7
- package/ccw/frontend/dist/assets/SkillsManagerPage-CTnWrrwp.js.map +0 -1
- package/ccw-litellm/README.md +0 -180
- package/ccw-litellm/pyproject.toml +0 -35
- package/ccw-litellm/src/ccw_litellm/__init__.py +0 -47
- package/ccw-litellm/src/ccw_litellm/cli.py +0 -108
- package/ccw-litellm/src/ccw_litellm/clients/__init__.py +0 -12
- package/ccw-litellm/src/ccw_litellm/clients/litellm_embedder.py +0 -270
- package/ccw-litellm/src/ccw_litellm/clients/litellm_llm.py +0 -198
- package/ccw-litellm/src/ccw_litellm/config/__init__.py +0 -22
- package/ccw-litellm/src/ccw_litellm/config/loader.py +0 -343
- package/ccw-litellm/src/ccw_litellm/config/models.py +0 -162
- package/ccw-litellm/src/ccw_litellm/interfaces/__init__.py +0 -14
- package/ccw-litellm/src/ccw_litellm/interfaces/embedder.py +0 -52
- package/ccw-litellm/src/ccw_litellm/interfaces/llm.py +0 -45
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brainstorm
|
|
3
|
+
description: Unified brainstorming skill with dual-mode operation — auto mode (framework generation, parallel multi-role analysis, cross-role synthesis) and single role analysis. Triggers on "brainstorm", "头脑风暴".
|
|
4
|
+
allowed-tools: Skill(*), Agent(conceptual-planning-agent, context-search-agent), AskUserQuestion(*), TodoWrite(*), Read(*), Write(*), Edit(*), Glob(*), Bash(*)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Brainstorm
|
|
8
|
+
|
|
9
|
+
Unified brainstorming skill combining interactive framework generation, multi-role parallel analysis, and cross-role synthesis into a single entry point with two operational modes.
|
|
10
|
+
|
|
11
|
+
## Architecture Overview
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
15
|
+
│ /brainstorm │
|
|
16
|
+
│ Unified Entry Point + Interactive Routing │
|
|
17
|
+
└───────────────────────┬─────────────────────────────────────┘
|
|
18
|
+
│
|
|
19
|
+
┌─────────┴─────────┐
|
|
20
|
+
↓ ↓
|
|
21
|
+
┌─────────────────┐ ┌──────────────────┐
|
|
22
|
+
│ Auto Mode │ │ Single Role Mode │
|
|
23
|
+
│ (自动模式) │ │ (单角色分析模式) │
|
|
24
|
+
└────────┬────────┘ └────────┬─────────┘
|
|
25
|
+
│ │
|
|
26
|
+
┌────────┼────────┐ │
|
|
27
|
+
↓ ↓ ↓ ↓
|
|
28
|
+
Phase 2 Phase 3 Phase 4 Phase 3
|
|
29
|
+
Artifacts N×Role Synthesis 1×Role
|
|
30
|
+
(7步) Analysis (8步) Analysis
|
|
31
|
+
并行 (4步)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Data Flow**:
|
|
35
|
+
```
|
|
36
|
+
Auto Mode:
|
|
37
|
+
Phase 2 (artifacts) → guidance-specification.md + selected_roles[]
|
|
38
|
+
→ Phase 3 (N × role-analysis) → {role}/analysis*.md (immutable)
|
|
39
|
+
→ Phase 4 (synthesis) → feature-specs/ + feature-index.json + synthesis-changelog.md
|
|
40
|
+
|
|
41
|
+
Single Role Mode:
|
|
42
|
+
Phase 3 (1 × role-analysis) → {role}/analysis*.md
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Key Design Principles
|
|
46
|
+
|
|
47
|
+
1. **Dual-Mode Routing**: Interactive mode selection via AskUserQuestion, with parameter-based auto-detection
|
|
48
|
+
2. **Progressive Phase Loading**: Phase files loaded on-demand via `Ref:` markers, not all at once
|
|
49
|
+
3. **Task Attachment/Collapse**: Sub-tasks attached during phase execution, collapsed after completion
|
|
50
|
+
4. **Session Continuity**: All phases share session state via workflow-session.json
|
|
51
|
+
5. **Auto-Continue Execution**: Phases chain automatically without user intervention between them
|
|
52
|
+
6. **SPEC.md Quality Alignment**: Guidance specification and role analysis follow SPEC.md standards (Concepts & Terminology, Non-Goals, Data Model, State Machine, RFC 2119 constraints)
|
|
53
|
+
7. **Template-Driven Analysis**: Role-specific templates (e.g., system-architect) ensure consistent, high-quality outputs
|
|
54
|
+
8. **Quality Gates**: Automated validation of guidance specification and role analysis against quality standards
|
|
55
|
+
|
|
56
|
+
## Auto Mode
|
|
57
|
+
|
|
58
|
+
When `--yes` or `-y`: Auto-select auto mode, skip interactive routing question, auto-select recommended roles, skip all clarification questions, use default answers.
|
|
59
|
+
|
|
60
|
+
## Execution Flow
|
|
61
|
+
|
|
62
|
+
### Phase 1: Mode Detection & Interactive Routing
|
|
63
|
+
Ref: phases/01-mode-routing.md
|
|
64
|
+
|
|
65
|
+
Parse arguments, detect mode from flags/parameters, or ask user via AskUserQuestion.
|
|
66
|
+
|
|
67
|
+
**Mode Detection Rules**:
|
|
68
|
+
1. If `--yes` or `-y` flag present → **Auto Mode** (no question asked)
|
|
69
|
+
2. If first arg matches a known role name → **Single Role Mode** (no question asked)
|
|
70
|
+
3. If `--session` flag present without role name → **Ask user**
|
|
71
|
+
4. Otherwise → **Ask user via AskUserQuestion**
|
|
72
|
+
|
|
73
|
+
**Output**: `execution_mode` ("auto" | "single-role"), parsed parameters
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### Auto Mode Execution (execution_mode = "auto")
|
|
78
|
+
|
|
79
|
+
**Phase 1.5: Terminology & Boundary Definition**
|
|
80
|
+
- Extract 5-10 core domain terms from user input and Phase 1 context
|
|
81
|
+
- Generate terminology table (term, definition, aliases, category)
|
|
82
|
+
- Collect Non-Goals via AskUserQuestion (明确排除的范围)
|
|
83
|
+
- Store to `session.terminology` and `session.non_goals`
|
|
84
|
+
|
|
85
|
+
#### Phase 2: Interactive Framework Generation
|
|
86
|
+
Ref: phases/02-artifacts.md
|
|
87
|
+
|
|
88
|
+
Seven-phase interactive workflow: Context collection → Topic analysis → Role selection → Role questions → Conflict resolution → Final check → Generate specification.
|
|
89
|
+
|
|
90
|
+
**Input**: topic description, --count N, --yes flag
|
|
91
|
+
**Output**: guidance-specification.md (with Concepts & Terminology, Non-Goals, RFC 2119 constraints), workflow-session.json (selected_roles[], session_id)
|
|
92
|
+
|
|
93
|
+
**TodoWrite**: Attach 7 sub-tasks (Phase 0-5), execute sequentially, collapse on completion.
|
|
94
|
+
|
|
95
|
+
#### Phase 3: Parallel Role Analysis
|
|
96
|
+
Ref: phases/03-role-analysis.md
|
|
97
|
+
|
|
98
|
+
Execute role analysis for EACH selected role in parallel.
|
|
99
|
+
|
|
100
|
+
**Input**: selected_roles[] from Phase 2, session_id, guidance-specification.md
|
|
101
|
+
**Output**: {role}/analysis*.md for each role
|
|
102
|
+
|
|
103
|
+
**Parallel Execution**: Launch N role-analysis calls simultaneously (one message with multiple Skill invokes). Each role with `--skip-questions` flag.
|
|
104
|
+
|
|
105
|
+
For ui-designer: append `--style-skill {package}` if provided.
|
|
106
|
+
|
|
107
|
+
**Template-Driven Analysis**:
|
|
108
|
+
- Load role-specific template if exists (e.g., `templates/role-templates/system-architect-template.md`)
|
|
109
|
+
- Inject template into agent prompt as required structure
|
|
110
|
+
- For system-architect: MUST include Data Model, State Machine, Error Handling, Observability, Configuration Model, Boundary Scenarios
|
|
111
|
+
|
|
112
|
+
**Quality Validation**:
|
|
113
|
+
- After analysis generation, invoke `role-analysis-reviewer-agent` to validate against template
|
|
114
|
+
- Check MUST have sections (blocking), SHOULD have sections (warning), quality checks (RFC keywords, valid diagrams)
|
|
115
|
+
- Output validation report with score and recommendations
|
|
116
|
+
|
|
117
|
+
**TodoWrite**: Attach N parallel sub-tasks, execute concurrently, collapse on completion.
|
|
118
|
+
|
|
119
|
+
#### Phase 4: Synthesis Integration
|
|
120
|
+
Ref: phases/04-synthesis.md
|
|
121
|
+
|
|
122
|
+
Six-phase synthesis: Discovery → File discovery → Cross-role analysis → User interaction → Spec generation (single agent, sequential) + Conditional review → Finalization. Role analysis files are read-only (never modified). Spec is the final synthesis artifact.
|
|
123
|
+
|
|
124
|
+
**Input**: session_id from Phase 2, all role analysis files from Phase 3 (read-only)
|
|
125
|
+
**Output**: feature-specs/, feature-index.json, synthesis-changelog.md
|
|
126
|
+
|
|
127
|
+
**TodoWrite**: Attach synthesis sub-tasks, execute sequentially, collapse on completion.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### Single Role Mode Execution (execution_mode = "single-role")
|
|
132
|
+
|
|
133
|
+
#### Phase 3: Single Role Analysis
|
|
134
|
+
Ref: phases/03-role-analysis.md
|
|
135
|
+
|
|
136
|
+
Execute role analysis for ONE specified role with optional interactive context gathering.
|
|
137
|
+
|
|
138
|
+
**Input**: role_name, --session, --update, --include-questions, --skip-questions, --style-skill
|
|
139
|
+
**Output**: {role}/analysis*.md
|
|
140
|
+
|
|
141
|
+
**TodoWrite**: Attach 4 sub-tasks (Detection → Context → Agent → Validation), execute sequentially.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
**Phase Reference Documents** (read on-demand when phase executes):
|
|
146
|
+
|
|
147
|
+
| Phase | Document | Purpose | Used By |
|
|
148
|
+
|-------|----------|---------|---------|
|
|
149
|
+
| 1 | [phases/01-mode-routing.md](phases/01-mode-routing.md) | Parameter parsing, mode detection, interactive routing | Both modes |
|
|
150
|
+
| 2 | [phases/02-artifacts.md](phases/02-artifacts.md) | Interactive framework generation (7 phases) | Auto mode only |
|
|
151
|
+
| 3 | [phases/03-role-analysis.md](phases/03-role-analysis.md) | Role-specific analysis generation | Both modes |
|
|
152
|
+
| 4 | [phases/04-synthesis.md](phases/04-synthesis.md) | Cross-role synthesis and feature specs | Auto mode only |
|
|
153
|
+
|
|
154
|
+
## Core Rules
|
|
155
|
+
|
|
156
|
+
1. **Start with Mode Detection**: First action is Phase 1 (parse args + detect mode)
|
|
157
|
+
2. **Interactive Routing**: If mode cannot be determined from args, ASK user via AskUserQuestion
|
|
158
|
+
3. **No Preliminary Analysis**: Do not analyze topic before Phase 2 - artifacts handles all analysis
|
|
159
|
+
4. **Parse Every Output**: Extract selected_roles from workflow-session.json after Phase 2
|
|
160
|
+
5. **Auto-Continue via TodoList**: Check TodoList status to execute next pending phase automatically
|
|
161
|
+
6. **Task Attachment Model**: Skill and Task executes attach sub-tasks to current workflow
|
|
162
|
+
7. **⚠️ CRITICAL: DO NOT STOP**: Continuous multi-phase workflow in auto mode. After executing all attached tasks, immediately collapse them and execute next phase
|
|
163
|
+
8. **Parallel Execution**: Auto mode Phase 3 attaches multiple agent tasks simultaneously for concurrent execution
|
|
164
|
+
9. **Single Role Independence**: Single role mode operates independently without requiring artifacts or synthesis
|
|
165
|
+
|
|
166
|
+
## Input Processing
|
|
167
|
+
|
|
168
|
+
### Parameter Parsing
|
|
169
|
+
|
|
170
|
+
```javascript
|
|
171
|
+
// Parse from user input (argument string)
|
|
172
|
+
const args = parseArguments(user_input);
|
|
173
|
+
|
|
174
|
+
// Flags
|
|
175
|
+
const auto_yes = args.includes('--yes') || args.includes('-y');
|
|
176
|
+
const count = extractFlag(args, '--count', 3); // default 3, max 9
|
|
177
|
+
const session_id = extractFlag(args, '--session', null);
|
|
178
|
+
const update_mode = args.includes('--update');
|
|
179
|
+
const include_questions = args.includes('--include-questions');
|
|
180
|
+
const skip_questions = args.includes('--skip-questions');
|
|
181
|
+
const style_skill = extractFlag(args, '--style-skill', null);
|
|
182
|
+
|
|
183
|
+
// Role detection
|
|
184
|
+
const VALID_ROLES = [
|
|
185
|
+
'data-architect', 'product-manager', 'product-owner', 'scrum-master',
|
|
186
|
+
'subject-matter-expert', 'system-architect', 'test-strategist',
|
|
187
|
+
'ui-designer', 'ux-expert'
|
|
188
|
+
];
|
|
189
|
+
const first_arg = args[0]; // first non-flag argument
|
|
190
|
+
const is_role = VALID_ROLES.includes(first_arg);
|
|
191
|
+
|
|
192
|
+
// Mode detection
|
|
193
|
+
if (auto_yes) {
|
|
194
|
+
execution_mode = 'auto';
|
|
195
|
+
topic = extractTopic(args);
|
|
196
|
+
} else if (is_role) {
|
|
197
|
+
execution_mode = 'single-role';
|
|
198
|
+
role_name = first_arg;
|
|
199
|
+
} else {
|
|
200
|
+
execution_mode = null; // Ask user
|
|
201
|
+
topic = extractTopic(args);
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Usage Examples
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Auto mode - full pipeline
|
|
209
|
+
/brainstorm "Build real-time collaboration platform" --count 3
|
|
210
|
+
/brainstorm -y "GOAL: Build platform SCOPE: 100 users" --count 5
|
|
211
|
+
/brainstorm "Design payment system" --style-skill material-design
|
|
212
|
+
|
|
213
|
+
# Single role mode - individual analysis
|
|
214
|
+
/brainstorm system-architect --session WFS-xxx
|
|
215
|
+
/brainstorm ux-expert --include-questions
|
|
216
|
+
/brainstorm ui-designer --session WFS-xxx --update --style-skill material-design
|
|
217
|
+
/brainstorm product-manager --skip-questions
|
|
218
|
+
|
|
219
|
+
# Ambiguous - will ask interactively
|
|
220
|
+
/brainstorm --session WFS-xxx
|
|
221
|
+
/brainstorm
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Data Flow
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
Phase 1 (Mode Routing):
|
|
228
|
+
Input: user arguments
|
|
229
|
+
Output: execution_mode, parsed_params
|
|
230
|
+
↓
|
|
231
|
+
┌───────┴───────┐
|
|
232
|
+
Auto Single Role
|
|
233
|
+
↓ ↓
|
|
234
|
+
Phase 2: Phase 3:
|
|
235
|
+
Input: topic, count, auto_yes
|
|
236
|
+
Output: session_id ─────────────→ Input: role_name, session_id
|
|
237
|
+
selected_roles[] skip/include questions
|
|
238
|
+
guidance-specification.md style_skill
|
|
239
|
+
↓ Output: {role}/analysis*.md
|
|
240
|
+
Phase 3:
|
|
241
|
+
Input: selected_roles[], session_id
|
|
242
|
+
guidance-specification.md
|
|
243
|
+
style_skill (for ui-designer)
|
|
244
|
+
Output: {role}/analysis*.md (N files, immutable after this point)
|
|
245
|
+
↓
|
|
246
|
+
Phase 4:
|
|
247
|
+
Input: session_id, all analysis files (read-only)
|
|
248
|
+
Output: feature-specs/F-{id}-{slug}.md
|
|
249
|
+
feature-index.json
|
|
250
|
+
synthesis-changelog.md
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## TodoWrite Pattern
|
|
254
|
+
|
|
255
|
+
### Auto Mode Lifecycle
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
Initial → Phase 1 Mode Routing (completed)
|
|
259
|
+
→ Phase 2 Artifacts (in_progress)
|
|
260
|
+
→ 7 sub-tasks ATTACHED (Phase 0-5)
|
|
261
|
+
→ Execute sequentially
|
|
262
|
+
→ Sub-tasks COLLAPSED
|
|
263
|
+
→ Phase 3 Parallel Role Analysis (in_progress)
|
|
264
|
+
→ N role sub-tasks ATTACHED simultaneously
|
|
265
|
+
→ Execute concurrently
|
|
266
|
+
→ Sub-tasks COLLAPSED
|
|
267
|
+
→ Phase 4 Synthesis (in_progress)
|
|
268
|
+
→ 8 sub-tasks ATTACHED
|
|
269
|
+
→ Execute sequentially
|
|
270
|
+
→ Sub-tasks COLLAPSED
|
|
271
|
+
→ All completed
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Single Role Mode Lifecycle
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
Initial → Phase 1 Mode Routing (completed)
|
|
278
|
+
→ Phase 3 Role Analysis (in_progress)
|
|
279
|
+
→ 4 sub-tasks ATTACHED (Detection → Context → Agent → Validation)
|
|
280
|
+
→ Execute sequentially
|
|
281
|
+
→ Sub-tasks COLLAPSED
|
|
282
|
+
→ Completed
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Initial TodoWrite (Auto Mode)
|
|
286
|
+
|
|
287
|
+
```json
|
|
288
|
+
[
|
|
289
|
+
{"content": "Phase 1: Mode detection and parameter parsing", "status": "in_progress", "activeForm": "Detecting mode"},
|
|
290
|
+
{"content": "Phase 2: Interactive Framework Generation", "status": "pending", "activeForm": "Generating framework"},
|
|
291
|
+
{"content": "Phase 3: Parallel Role Analysis", "status": "pending", "activeForm": "Executing parallel analysis"},
|
|
292
|
+
{"content": "Phase 4: Synthesis Integration", "status": "pending", "activeForm": "Executing synthesis"}
|
|
293
|
+
]
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Initial TodoWrite (Single Role Mode)
|
|
297
|
+
|
|
298
|
+
```json
|
|
299
|
+
[
|
|
300
|
+
{"content": "Phase 1: Mode detection and parameter parsing", "status": "in_progress", "activeForm": "Detecting mode"},
|
|
301
|
+
{"content": "Phase 3: Single role analysis for {role_name}", "status": "pending", "activeForm": "Executing role analysis"}
|
|
302
|
+
]
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Session Management
|
|
306
|
+
|
|
307
|
+
**⚡ FIRST ACTION**: Check `.workflow/active/` for existing sessions
|
|
308
|
+
|
|
309
|
+
**Multiple Sessions Support**:
|
|
310
|
+
- Different Claude instances can have different brainstorming sessions
|
|
311
|
+
- If multiple sessions found, prompt user to select
|
|
312
|
+
- If single session found, use it
|
|
313
|
+
- If no session exists:
|
|
314
|
+
- Auto mode: Create `WFS-[topic-slug]`
|
|
315
|
+
- Single role mode: ERROR if no session (must run auto mode first)
|
|
316
|
+
|
|
317
|
+
**Session Continuity**: All phases share session state via `workflow-session.json`
|
|
318
|
+
|
|
319
|
+
## Available Roles
|
|
320
|
+
|
|
321
|
+
| Role ID | Title | Focus Area |
|
|
322
|
+
|---------|-------|------------|
|
|
323
|
+
| `data-architect` | 数据架构师 | Data models, storage strategies, data flow |
|
|
324
|
+
| `product-manager` | 产品经理 | Product strategy, roadmap, prioritization |
|
|
325
|
+
| `product-owner` | 产品负责人 | Backlog management, user stories, acceptance criteria |
|
|
326
|
+
| `scrum-master` | 敏捷教练 | Process facilitation, impediment removal |
|
|
327
|
+
| `subject-matter-expert` | 领域专家 | Domain knowledge, business rules, compliance |
|
|
328
|
+
| `system-architect` | 系统架构师 | Technical architecture, scalability, integration |
|
|
329
|
+
| `test-strategist` | 测试策略师 | Test strategy, quality assurance |
|
|
330
|
+
| `ui-designer` | UI设计师 | Visual design, mockups, design systems |
|
|
331
|
+
| `ux-expert` | UX专家 | User research, information architecture, journey |
|
|
332
|
+
|
|
333
|
+
**Role Selection**: Auto mode → handled by artifacts (Phase 2). Single role mode → user specifies directly.
|
|
334
|
+
|
|
335
|
+
## Output Structure
|
|
336
|
+
|
|
337
|
+
```
|
|
338
|
+
.workflow/active/WFS-{topic}/
|
|
339
|
+
├── workflow-session.json # Session metadata ONLY
|
|
340
|
+
├── .process/
|
|
341
|
+
│ └── context-package.json # Phase 0 output (auto mode)
|
|
342
|
+
└── .brainstorming/
|
|
343
|
+
├── guidance-specification.md # Framework (Phase 2, auto mode)
|
|
344
|
+
├── feature-index.json # Feature index (Phase 4, auto mode, feature_mode)
|
|
345
|
+
├── synthesis-changelog.md # Synthesis decisions audit trail (Phase 4, auto mode)
|
|
346
|
+
├── feature-specs/ # Feature specs (Phase 4, auto mode, feature_mode)
|
|
347
|
+
│ ├── F-001-{slug}.md
|
|
348
|
+
│ └── F-00N-{slug}.md
|
|
349
|
+
├── specs/
|
|
350
|
+
│ └── terminology-template.json # Terminology schema
|
|
351
|
+
├── templates/
|
|
352
|
+
│ └── role-templates/
|
|
353
|
+
│ └── system-architect-template.md # System architect analysis template
|
|
354
|
+
├── agents/
|
|
355
|
+
│ └── role-analysis-reviewer-agent.md # Role analysis validation agent
|
|
356
|
+
├── {role}/ # Role analyses (IMMUTABLE after Phase 3)
|
|
357
|
+
│ ├── {role}-context.md # Interactive Q&A responses
|
|
358
|
+
│ ├── analysis.md # Main/index document
|
|
359
|
+
│ ├── analysis-cross-cutting.md # Cross-feature (feature_mode)
|
|
360
|
+
│ └── analysis-F-{id}-{slug}.md # Per-feature (feature_mode)
|
|
361
|
+
└── synthesis-specification.md # Integration (Phase 4, non-feature_mode only)
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
## Error Handling
|
|
365
|
+
|
|
366
|
+
| Error | Recovery | Mode |
|
|
367
|
+
|-------|----------|------|
|
|
368
|
+
| Invalid role name | Show valid roles list, ask again | Single Role |
|
|
369
|
+
| No active session | Auto mode: create new. Single role: error with guidance | Both |
|
|
370
|
+
| Role selection failure | Default to product-manager | Auto |
|
|
371
|
+
| Agent execution failure | Agent-specific retry with minimal dependencies | Both |
|
|
372
|
+
| Template loading issues | Graceful degradation | Both |
|
|
373
|
+
| Synthesis conflicts | Highlight disagreements without forced resolution | Auto |
|
|
374
|
+
| Context overflow (>100KB) | Read only analysis.md index files | Auto |
|
|
375
|
+
|
|
376
|
+
**Context Overflow Protection**:
|
|
377
|
+
- Per-role limits: < 3000 words main, < 2000 words sub-docs, max 5 sub-docs
|
|
378
|
+
- Synthesis protection: If total > 100KB, read only `analysis.md` (not sub-documents)
|
|
379
|
+
- Recovery: reduce scope (--count 2) → use --summary-only → manual synthesis
|
|
380
|
+
|
|
381
|
+
## Coordinator Checklist
|
|
382
|
+
|
|
383
|
+
**Pre-Phase Actions**:
|
|
384
|
+
- [ ] Read Phase document via `Ref:` marker
|
|
385
|
+
- [ ] Verify prerequisites (session exists, required files present)
|
|
386
|
+
- [ ] Mark phase as `in_progress` in TodoWrite
|
|
387
|
+
- [ ] Attach sub-tasks if applicable
|
|
388
|
+
|
|
389
|
+
**Post-Phase Actions**:
|
|
390
|
+
- [ ] Validate phase outputs exist
|
|
391
|
+
- [ ] Collapse sub-tasks to phase summary
|
|
392
|
+
- [ ] Mark phase as `completed` in TodoWrite
|
|
393
|
+
- [ ] Auto-continue to next pending phase (auto mode)
|
|
394
|
+
- [ ] Report completion (single role mode)
|
|
395
|
+
|
|
396
|
+
## Related Commands
|
|
397
|
+
|
|
398
|
+
**Prerequisites**:
|
|
399
|
+
- `/workflow:session:start` - Start a new workflow session (optional, brainstorm creates its own)
|
|
400
|
+
|
|
401
|
+
**Follow-ups** (after brainstorm completes):
|
|
402
|
+
- `/workflow-plan --session {sessionId}` - Generate implementation plan
|
|
403
|
+
- `/workflow:brainstorm:synthesis --session {sessionId}` - Run synthesis standalone (if skipped)
|
|
404
|
+
|
|
405
|
+
## Reference Information
|
|
406
|
+
|
|
407
|
+
**Template Source**: `~/.ccw/workflows/cli-templates/planning-roles/`
|
|
408
|
+
**Style SKILL Packages**: `.claude/skills/style-{package-name}/`
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# Phase 1: Mode Detection & Interactive Routing
|
|
2
|
+
|
|
3
|
+
Parse user arguments, detect execution mode from flags/parameters, or interactively ask the user which mode to use via AskUserQuestion.
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
- Parse all command arguments and flags
|
|
8
|
+
- Detect execution mode automatically when possible
|
|
9
|
+
- Ask user via AskUserQuestion when mode is ambiguous
|
|
10
|
+
- Initialize TodoWrite with mode-appropriate task list
|
|
11
|
+
- Route to correct execution path
|
|
12
|
+
|
|
13
|
+
## Execution
|
|
14
|
+
|
|
15
|
+
### Step 1.1: Parameter Parsing
|
|
16
|
+
|
|
17
|
+
```javascript
|
|
18
|
+
// Parse from user input (argument string)
|
|
19
|
+
const args = parseArguments(user_input);
|
|
20
|
+
|
|
21
|
+
// Flags
|
|
22
|
+
const auto_yes = args.includes('--yes') || args.includes('-y');
|
|
23
|
+
const count = extractFlag(args, '--count', 3); // default 3, max 9
|
|
24
|
+
if (count > 9) count = 9; // Cap at maximum
|
|
25
|
+
const session_id = extractFlag(args, '--session', null);
|
|
26
|
+
const update_mode = args.includes('--update');
|
|
27
|
+
const include_questions = args.includes('--include-questions');
|
|
28
|
+
const skip_questions = args.includes('--skip-questions');
|
|
29
|
+
const style_skill = extractFlag(args, '--style-skill', null);
|
|
30
|
+
|
|
31
|
+
// Role detection
|
|
32
|
+
const VALID_ROLES = [
|
|
33
|
+
'data-architect', 'product-manager', 'product-owner', 'scrum-master',
|
|
34
|
+
'subject-matter-expert', 'system-architect', 'test-strategist',
|
|
35
|
+
'ui-designer', 'ux-expert'
|
|
36
|
+
];
|
|
37
|
+
const first_arg = getFirstNonFlagArg(args);
|
|
38
|
+
const is_role = VALID_ROLES.includes(first_arg);
|
|
39
|
+
|
|
40
|
+
// Topic extraction (everything that's not a flag or role)
|
|
41
|
+
const topic = is_role ? null : extractTopic(args);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Step 1.2: Style-Skill Validation
|
|
45
|
+
|
|
46
|
+
```javascript
|
|
47
|
+
if (style_skill) {
|
|
48
|
+
const skill_path = `.claude/skills/style-${style_skill}/SKILL.md`;
|
|
49
|
+
if (fileExists(skill_path)) {
|
|
50
|
+
style_skill_package = style_skill;
|
|
51
|
+
style_reference_path = `.workflow/reference_style/${style_skill}`;
|
|
52
|
+
// "✓ Style SKILL package found: style-{style_skill}"
|
|
53
|
+
} else {
|
|
54
|
+
// "⚠ WARNING: Style SKILL package not found: {style_skill}"
|
|
55
|
+
style_skill_package = null;
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
style_skill_package = null;
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Step 1.3: Mode Detection
|
|
63
|
+
|
|
64
|
+
```javascript
|
|
65
|
+
// Auto-detection rules (ordered by priority)
|
|
66
|
+
if (auto_yes) {
|
|
67
|
+
// --yes flag explicitly requests auto mode
|
|
68
|
+
execution_mode = 'auto';
|
|
69
|
+
} else if (is_role) {
|
|
70
|
+
// First arg is a valid role name → single role mode
|
|
71
|
+
execution_mode = 'single-role';
|
|
72
|
+
role_name = first_arg;
|
|
73
|
+
} else if (topic && !session_id) {
|
|
74
|
+
// Topic provided without session → likely auto mode, but ask
|
|
75
|
+
execution_mode = null; // Ask user
|
|
76
|
+
} else {
|
|
77
|
+
// Ambiguous → ask user
|
|
78
|
+
execution_mode = null;
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Step 1.4: Interactive Mode Selection (when mode is null)
|
|
83
|
+
|
|
84
|
+
```javascript
|
|
85
|
+
if (execution_mode === null) {
|
|
86
|
+
AskUserQuestion({
|
|
87
|
+
questions: [{
|
|
88
|
+
question: "请选择头脑风暴模式",
|
|
89
|
+
header: "模式选择",
|
|
90
|
+
multiSelect: false,
|
|
91
|
+
options: [
|
|
92
|
+
{
|
|
93
|
+
label: "自动模式 (推荐)",
|
|
94
|
+
description: "完整流程:框架生成 → 多角色并行分析 → 跨角色综合。适合新主题的全面分析"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
label: "单角色分析",
|
|
98
|
+
description: "为单个角色生成分析文档。适合补充已有会话的角色视角或迭代更新"
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}]
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
// Route based on user selection
|
|
105
|
+
if (user_selected === "自动模式 (推荐)") {
|
|
106
|
+
execution_mode = 'auto';
|
|
107
|
+
} else {
|
|
108
|
+
execution_mode = 'single-role';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Step 1.5: Single Role Mode - Role Selection (if needed)
|
|
114
|
+
|
|
115
|
+
When entering single-role mode without a role name specified:
|
|
116
|
+
|
|
117
|
+
```javascript
|
|
118
|
+
if (execution_mode === 'single-role' && !role_name) {
|
|
119
|
+
// Need to ask which role
|
|
120
|
+
AskUserQuestion({
|
|
121
|
+
questions: [{
|
|
122
|
+
question: "请选择要执行分析的角色",
|
|
123
|
+
header: "角色选择",
|
|
124
|
+
multiSelect: false,
|
|
125
|
+
options: [
|
|
126
|
+
{ label: "system-architect", description: "系统架构师 - 技术架构、可扩展性、集成模式" },
|
|
127
|
+
{ label: "ux-expert", description: "UX专家 - 用户研究、信息架构、用户旅程" },
|
|
128
|
+
{ label: "product-manager", description: "产品经理 - 产品策略、路线图、优先级" },
|
|
129
|
+
{ label: "ui-designer", description: "UI设计师 - 视觉设计、高保真原型、设计系统" }
|
|
130
|
+
]
|
|
131
|
+
}]
|
|
132
|
+
});
|
|
133
|
+
// Note: If user needs a role not in top 4, they select "Other" and type it
|
|
134
|
+
role_name = user_selected;
|
|
135
|
+
|
|
136
|
+
// Validate role name
|
|
137
|
+
if (!VALID_ROLES.includes(role_name)) {
|
|
138
|
+
// ERROR with valid roles list
|
|
139
|
+
// EXIT
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Step 1.6: Session Detection
|
|
145
|
+
|
|
146
|
+
```javascript
|
|
147
|
+
if (!session_id) {
|
|
148
|
+
// Find active sessions
|
|
149
|
+
const sessions = Glob('.workflow/active/WFS-*/');
|
|
150
|
+
|
|
151
|
+
if (sessions.length > 1) {
|
|
152
|
+
// Multiple sessions → ask user to select
|
|
153
|
+
// Use AskUserQuestion with session list
|
|
154
|
+
} else if (sessions.length === 1) {
|
|
155
|
+
session_id = extractSessionId(sessions[0]);
|
|
156
|
+
} else {
|
|
157
|
+
if (execution_mode === 'auto') {
|
|
158
|
+
// Will be created by artifacts phase
|
|
159
|
+
session_id = null; // artifacts handles creation
|
|
160
|
+
} else {
|
|
161
|
+
// Single role mode requires existing session
|
|
162
|
+
// ERROR: "No active session. Run /brainstorm 'topic' first"
|
|
163
|
+
// EXIT
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Step 1.7: Initialize TodoWrite
|
|
170
|
+
|
|
171
|
+
```javascript
|
|
172
|
+
if (execution_mode === 'auto') {
|
|
173
|
+
TodoWrite({
|
|
174
|
+
todos: [
|
|
175
|
+
{ content: "Phase 1: Mode detection and parameter parsing", status: "completed", activeForm: "Detecting mode" },
|
|
176
|
+
{ content: "Phase 2: Interactive Framework Generation", status: "pending", activeForm: "Generating framework" },
|
|
177
|
+
{ content: "Phase 3: Parallel Role Analysis", status: "pending", activeForm: "Executing parallel analysis" },
|
|
178
|
+
{ content: "Phase 4: Synthesis Integration", status: "pending", activeForm: "Executing synthesis" }
|
|
179
|
+
]
|
|
180
|
+
});
|
|
181
|
+
} else {
|
|
182
|
+
TodoWrite({
|
|
183
|
+
todos: [
|
|
184
|
+
{ content: "Phase 1: Mode detection and parameter parsing", status: "completed", activeForm: "Detecting mode" },
|
|
185
|
+
{ content: `Phase 3: ${role_name} analysis`, status: "pending", activeForm: `Executing ${role_name} analysis` }
|
|
186
|
+
]
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Output
|
|
192
|
+
|
|
193
|
+
- **Variable**: `execution_mode` ("auto" | "single-role")
|
|
194
|
+
- **Variable**: `role_name` (single-role mode only)
|
|
195
|
+
- **Variable**: `topic` (auto mode only)
|
|
196
|
+
- **Variable**: `session_id` (may be null for auto mode - artifacts creates it)
|
|
197
|
+
- **Variable**: `count` (auto mode, default 3)
|
|
198
|
+
- **Variable**: `auto_yes` (boolean)
|
|
199
|
+
- **Variable**: `style_skill_package` (optional)
|
|
200
|
+
- **Variable**: `update_mode`, `include_questions`, `skip_questions` (single-role flags)
|
|
201
|
+
- **TodoWrite**: Phase 1 completed, subsequent phases pending
|
|
202
|
+
|
|
203
|
+
## Next Phase
|
|
204
|
+
|
|
205
|
+
Return to orchestrator:
|
|
206
|
+
- If `execution_mode === 'auto'` → Continue to [Phase 2: Artifacts](02-artifacts.md)
|
|
207
|
+
- If `execution_mode === 'single-role'` → Continue to [Phase 3: Role Analysis](03-role-analysis.md)
|