claude-code-workflow 7.2.10 → 7.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/cli-planning-agent.md +3 -0
- package/.claude/agents/debug-explore-agent.md +1 -0
- package/.claude/agents/tdd-developer.md +1 -0
- package/.claude/agents/team-worker.md +1 -1
- package/.claude/agents/test-action-planning-agent.md +3 -0
- package/.claude/agents/test-context-search-agent.md +1 -0
- package/.claude/agents/test-fix-agent.md +3 -0
- package/.claude/skills/review-code/SKILL.md +2 -0
- package/.claude/skills/review-cycle/SKILL.md +4 -0
- package/.claude/skills/skill-simplify/phases/02-optimize.md +4 -0
- package/.claude/skills/spec-generator/phases/05-epics-stories.md +4 -0
- package/.claude/skills/team-arch-opt/specs/team-config.json +5 -5
- package/.claude/skills/team-frontend-debug/roles/analyzer/role.md +3 -2
- package/.claude/skills/team-perf-opt/roles/coordinator/commands/monitor.md +1 -1
- package/.claude/skills/team-perf-opt/specs/team-config.json +5 -5
- package/.claude/skills/team-quality-assurance/roles/executor/role.md +2 -1
- package/.claude/skills/team-review/roles/reviewer/role.md +2 -1
- package/.claude/skills/team-tech-debt/roles/scanner/role.md +2 -1
- package/.claude/skills/team-testing/roles/executor/role.md +2 -1
- package/.claude/skills/team-testing/roles/generator/role.md +2 -1
- package/.claude/skills/team-ultra-analyze/roles/explorer/role.md +2 -1
- package/.claude/skills/team-ux-improve/specs/team-config.json +6 -6
- package/.claude/skills/workflow-execute/phases/06-review.md +4 -4
- package/.claude/skills/workflow-lite-test-review/SKILL.md +2 -0
- package/.claude/skills/workflow-plan/phases/05-plan-verify.md +4 -0
- package/.claude/skills/workflow-tdd-plan/phases/02-context-gathering.md +1 -0
- package/.claude/skills/workflow-tdd-plan/phases/05-tdd-task-generation.md +2 -1
- package/.claude/skills/workflow-test-fix/phases/02-test-context-gather.md +1 -0
- package/.claude/skills/workflow-test-fix/phases/05-test-cycle-execute.md +2 -1
- package/.claude/skills/workflow-tune/SKILL.md +487 -0
- package/.claude/skills/workflow-tune/phases/01-setup.md +548 -0
- package/.claude/skills/workflow-tune/phases/02-step-execute.md +197 -0
- package/.claude/skills/workflow-tune/phases/03-step-analyze.md +386 -0
- package/.claude/skills/workflow-tune/phases/04-synthesize.md +257 -0
- package/.claude/skills/workflow-tune/phases/05-optimize-report.md +246 -0
- package/.claude/skills/workflow-tune/specs/workflow-eval-criteria.md +57 -0
- package/.claude/skills/workflow-tune/templates/step-analysis-prompt.md +88 -0
- package/.claude/skills/workflow-tune/templates/synthesis-prompt.md +90 -0
- package/.codex/skills/analyze-with-file/SKILL.md +2 -0
- package/.codex/skills/debug-with-file/SKILL.md +4 -0
- package/.codex/skills/issue-discover/SKILL.md +1 -0
- package/.codex/skills/review-cycle/phases/02-parallel-review.md +3 -0
- package/.codex/skills/team-designer/agents/validation-reporter.md +186 -0
- package/.codex/skills/team-iterdev/agents/gc-controller.md +193 -0
- package/.codex/skills/team-iterdev/agents/task-analyzer.md +206 -0
- package/.codex/skills/team-lifecycle-v4/agents/quality-gate.md +165 -0
- package/.codex/skills/team-lifecycle-v4/agents/requirement-clarifier.md +163 -0
- package/.codex/skills/team-lifecycle-v4/agents/supervisor.md +182 -0
- package/.codex/skills/team-uidesign/agents/completion-handler.md +177 -0
- package/.codex/skills/team-uidesign/agents/gc-loop-handler.md +162 -0
- package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +4 -0
- package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +2 -0
- package/ccw/dist/commands/spec.d.ts.map +1 -1
- package/ccw/dist/commands/spec.js +9 -4
- package/ccw/dist/commands/spec.js.map +1 -1
- package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/codexlens-routes.js +3 -1
- package/ccw/dist/core/routes/codexlens-routes.js.map +1 -1
- package/ccw/dist/tools/spec-index-builder.d.ts +8 -4
- package/ccw/dist/tools/spec-index-builder.d.ts.map +1 -1
- package/ccw/dist/tools/spec-index-builder.js +8 -4
- package/ccw/dist/tools/spec-index-builder.js.map +1 -1
- package/ccw/dist/tools/spec-init.d.ts +1 -1
- package/ccw/dist/tools/spec-init.d.ts.map +1 -1
- package/ccw/dist/tools/spec-init.js +127 -0
- package/ccw/dist/tools/spec-init.js.map +1 -1
- package/ccw/dist/tools/spec-loader.d.ts.map +1 -1
- package/ccw/dist/tools/spec-loader.js +2 -1
- package/ccw/dist/tools/spec-loader.js.map +1 -1
- package/ccw/frontend/dist/assets/{AlertDialog-gTMl4gSG.js → AlertDialog-BW9jiZ-p.js} +2 -2
- package/ccw/frontend/dist/assets/{AlertDialog-gTMl4gSG.js.map → AlertDialog-BW9jiZ-p.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-Bc4p4SvJ.js → AnalysisPage-ds-w_nVO.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-Bc4p4SvJ.js.map → AnalysisPage-ds-w_nVO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CVK108u2.js → ApiSettingsPage-DlCbXxTz.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-CVK108u2.js.map → ApiSettingsPage-DlCbXxTz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-34Sjwl05.js → CliModeToggle-Dq3nL4fF.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-34Sjwl05.js.map → CliModeToggle-Dq3nL4fF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-bJZAYI38.js → CliSessionSharePage-BNDkEE4u.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-bJZAYI38.js.map → CliSessionSharePage-BNDkEE4u.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-VYnQGjxU.js → CliViewerPage-ChM-uNx_.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-VYnQGjxU.js.map → CliViewerPage-ChM-uNx_.js.map} +1 -1
- package/ccw/frontend/dist/assets/CodexLensPage-DOcsYNQk.js +2 -0
- package/ccw/frontend/dist/assets/CodexLensPage-DOcsYNQk.js.map +1 -0
- package/ccw/frontend/dist/assets/{Collapsible-B_xd1Qbg.js → Collapsible-CRNbykXN.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-B_xd1Qbg.js.map → Collapsible-CRNbykXN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-Bjx1bPbH.js → CommandsManagerPage-C2JWcemF.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-Bjx1bPbH.js.map → CommandsManagerPage-C2JWcemF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-EgHsHvAH.js → DeepWikiPage-CvleOtJy.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-EgHsHvAH.js.map → DeepWikiPage-CvleOtJy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-CuwpbCzK.js → EndpointsPage-CMOWQG64.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-CuwpbCzK.js.map → EndpointsPage-CMOWQG64.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-cvlx0Zw0.js → ExplorerPage-DaFPRlNo.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-cvlx0Zw0.js.map → ExplorerPage-DaFPRlNo.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-C74-MPza.js → FixSessionPage-CC4p04Az.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-C74-MPza.js.map → FixSessionPage-CC4p04Az.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-x_-6y_n2.js → FloatingFileBrowser-DROn1xZ5.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-x_-6y_n2.js.map → FloatingFileBrowser-DROn1xZ5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-BGwmbJR1.js → FloatingPanel-CmL_yhDv.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-BGwmbJR1.js.map → FloatingPanel-CmL_yhDv.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-Bg5-aQxi.js → GraphExplorerPage-DCV5ybKE.js} +2 -2
- package/ccw/frontend/dist/assets/{GraphExplorerPage-Bg5-aQxi.js.map → GraphExplorerPage-DCV5ybKE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-C00fh0HE.js → HistoryPage-D0fYQZgc.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-C00fh0HE.js.map → HistoryPage-D0fYQZgc.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-CtVTB_ae.js → HookManagerPage-D2FuJfsM.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-CtVTB_ae.js.map → HookManagerPage-D2FuJfsM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage-CYuMQDbC.js → InstallationsPage-tjklillZ.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage-CYuMQDbC.js.map → InstallationsPage-tjklillZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-T_VSvUMh.js → IssueHubPage-E4JVrhO1.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-T_VSvUMh.js.map → IssueHubPage-E4JVrhO1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-DmcgvIvi.js → LiteTasksPage-aJuRoyLt.js} +2 -2
- package/ccw/frontend/dist/assets/{LiteTasksPage-DmcgvIvi.js.map → LiteTasksPage-aJuRoyLt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-C_a7QSKz.js → McpManagerPage-BJeuWJv1.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-C_a7QSKz.js.map → McpManagerPage-BJeuWJv1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-CWKmXY5k.js → MemoryPage-BI4FAXhs.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-CWKmXY5k.js.map → MemoryPage-BI4FAXhs.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-B1duXK6r.js → NotFoundPage-DD2svchp.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-B1duXK6r.js.map → NotFoundPage-DD2svchp.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-Ib9TM6HE.js → OrchestratorPage-FC__7yYa.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-Ib9TM6HE.js.map → OrchestratorPage-FC__7yYa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-sXSWMbF8.js → ProjectOverviewPage-DBB_-FzV.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-sXSWMbF8.js.map → ProjectOverviewPage-DBB_-FzV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-B6jaqG12.js → PromptHistoryPage-BwOAvCH8.js} +2 -2
- package/ccw/frontend/dist/assets/{PromptHistoryPage-B6jaqG12.js.map → PromptHistoryPage-BwOAvCH8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-D5qJyr3s.js → ReviewSessionPage-Dd1-g_gp.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-D5qJyr3s.js.map → ReviewSessionPage-Dd1-g_gp.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-DyawK8QE.js → RulesManagerPage-B3RGdsKD.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-DyawK8QE.js.map → RulesManagerPage-B3RGdsKD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-Cym_RvC9.js → SessionDetailPage-DM-W5R8K.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-Cym_RvC9.js.map → SessionDetailPage-DM-W5R8K.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Dkc1Hv8W.js → SessionsPage-BVz1KCc7.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Dkc1Hv8W.js.map → SessionsPage-BVz1KCc7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SettingsPage-Rik9cUIj.js → SettingsPage-ComW7EZS.js} +4 -4
- package/ccw/frontend/dist/assets/{SettingsPage-Rik9cUIj.js.map → SettingsPage-ComW7EZS.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SkillsManagerPage-BGDWYAyI.js → SkillsManagerPage-CKom9XwV.js} +2 -2
- package/ccw/frontend/dist/assets/{SkillsManagerPage-BGDWYAyI.js.map → SkillsManagerPage-CKom9XwV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-CTiA1DMP.js → SpecsSettingsPage-DQz7WP2s.js} +2 -2
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-CTiA1DMP.js.map → SpecsSettingsPage-DQz7WP2s.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BgAFC-Wk.js → Switch-BPMdND9H.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BgAFC-Wk.js.map → Switch-BPMdND9H.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-drSnu5jn.js → TabsNavigation-qqt70VYL.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-drSnu5jn.js.map → TabsNavigation-qqt70VYL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-ePC__6-P.js → TaskDrawer-BqK_qiHX.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-ePC__6-P.js.map → TaskDrawer-BqK_qiHX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-C6bdFWn8.js → TeamPage-u5_i0Rgh.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-C6bdFWn8.js.map → TeamPage-u5_i0Rgh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-Zofi_DZM.js → TerminalDashboardPage-rUtC9e40.js} +2 -2
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-Zofi_DZM.js.map → TerminalDashboardPage-rUtC9e40.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-Bza1KlB9.js → archive-C3u8YNQF.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-Bza1KlB9.js.map → archive-C3u8YNQF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-CpsDm-cG.js → archive-restore-DfQ998g5.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-CpsDm-cG.js.map → archive-restore-DfQ998g5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-CibG_LVO.js → arrow-right-BshJM9Po.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-CibG_LVO.js.map → arrow-right-BshJM9Po.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-BheO8EgG.js → bookmark-plus-D03qJyOZ.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-BheO8EgG.js.map → bookmark-plus-D03qJyOZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BlhM0Nl0.js → bot-CyzWuwq0.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BlhM0Nl0.js.map → bot-CyzWuwq0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-Dqjg_eCO.js → braces-BPgtyjsG.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-Dqjg_eCO.js.map → braces-BPgtyjsG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-DYZSLYU0.js → circle-stop-Dix1AOmw.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-DYZSLYU0.js.map → circle-stop-Dix1AOmw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-DWCyAOAv.js → cpu-CCQ4Q0Zh.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-DWCyAOAv.js.map → cpu-CCQ4Q0Zh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-DIyoSEHx.js → ellipsis-vertical-BpTysg-Y.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-DIyoSEHx.js.map → ellipsis-vertical-BpTysg-Y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-DUy7aLEx.js → eye-DGY1rAZs.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-DUy7aLEx.js.map → eye-DGY1rAZs.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-CGRUVRDR.js → eye-off-D8t3JfWG.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-CGRUVRDR.js.map → eye-off-D8t3JfWG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-BxLBtU9d.js → file-json-BAdJb0n8.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-BxLBtU9d.js.map → file-json-BAdJb0n8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-BoHsW2es.js → file-text-DrJFiOUB.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-BoHsW2es.js.map → file-text-DrJFiOUB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-B4vOqP6B.js → filter-CKqzYbz7.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-B4vOqP6B.js.map → filter-CKqzYbz7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BKhwCNFG.js → folder-CV8511y9.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BKhwCNFG.js.map → folder-CV8511y9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-Dgf64gkT.js → gauge-XKvmu_uU.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-Dgf64gkT.js.map → gauge-XKvmu_uU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-Cus_S6Ux.js → globe-C56cDUzX.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-Cus_S6Ux.js.map → globe-C56cDUzX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DM08hpAN.js → grid-3x3-Bya-suFW.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DM08hpAN.js.map → grid-3x3-Bya-suFW.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-eCtll84F.js → hard-drive-CmuTZpsB.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-eCtll84F.js.map → hard-drive-CmuTZpsB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Bd1RD285.js → hash-CRPT_tJQ.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Bd1RD285.js.map → hash-CRPT_tJQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-eyyCQA6b.js → history-C1pJZQCL.js} +2 -2
- package/ccw/frontend/dist/assets/{history-eyyCQA6b.js.map → history-C1pJZQCL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-ZnmWxcZg.js → index-B6TpijCe.js} +2 -2
- package/ccw/frontend/dist/assets/{index-ZnmWxcZg.js.map → index-B6TpijCe.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-b2C0iFd1.js → index-Bcq-7r6F.js} +2 -2
- package/ccw/frontend/dist/assets/{index-b2C0iFd1.js.map → index-Bcq-7r6F.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Cs2ShCCy.js → index-CI8-rBff.js} +2 -2
- package/ccw/frontend/dist/assets/{index-Cs2ShCCy.js.map → index-CI8-rBff.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CY6Lueph.js → index-Dmt9OiEf.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CY6Lueph.js.map → index-Dmt9OiEf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-DfeBbFXo.js → index-anSMmEF8.js} +2 -2
- package/ccw/frontend/dist/assets/{index-DfeBbFXo.js.map → index-anSMmEF8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B6I7GQC5.js → index-dWT2M6Ef.js} +4 -4
- package/ccw/frontend/dist/assets/{index-B6I7GQC5.js.map → index-dWT2M6Ef.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-ChrTrCby.js → layout-grid-TSO0BFQE.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-ChrTrCby.js.map → layout-grid-TSO0BFQE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-CvXiTlzN.js → lightbulb-Caj6fIQD.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-CvXiTlzN.js.map → lightbulb-Caj6fIQD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-W0Nl17ec.js → link-2-DE9lMxa-.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-W0Nl17ec.js.map → link-2-DE9lMxa-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-CL4JmoHb.js → link-BZtPgLW0.js} +2 -2
- package/ccw/frontend/dist/assets/{link-CL4JmoHb.js.map → link-BZtPgLW0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-CDmYFcio.js → list-DubWyY-U.js} +2 -2
- package/ccw/frontend/dist/assets/{list-CDmYFcio.js.map → list-DubWyY-U.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-0Mfsw_3d.js → map-pin-DwN_48AF.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-0Mfsw_3d.js.map → map-pin-DwN_48AF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-C6h08ple.js → messages-square-bjxvaiM9.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-C6h08ple.js.map → messages-square-bjxvaiM9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-Cbu2yRzi.js → minimize-2-CGfBKD_V.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-Cbu2yRzi.js.map → minimize-2-CGfBKD_V.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-CoLVUZGJ.js → package-nzWY6ilt.js} +2 -2
- package/ccw/frontend/dist/assets/{package-CoLVUZGJ.js.map → package-nzWY6ilt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-BYTYqsw1.js → plug-CiLce49C.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-BYTYqsw1.js.map → plug-CiLce49C.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-DmIojFl-.js → power-CFLmB-U9.js} +2 -2
- package/ccw/frontend/dist/assets/{power-DmIojFl-.js.map → power-CFLmB-U9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-BFa03OnG.js → save-DuO6OF0C.js} +2 -2
- package/ccw/frontend/dist/assets/{save-BFa03OnG.js.map → save-DuO6OF0C.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Vet3sN4J.js → send-CZk9p0mM.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Vet3sN4J.js.map → send-CZk9p0mM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-B9nzZRfE.js → square-check-big-BY_1YQQg.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-B9nzZRfE.js.map → square-check-big-BY_1YQQg.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-C7K13x4Z.js → square-pen-CnZgm6g-.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-C7K13x4Z.js.map → square-pen-CnZgm6g-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-BCQHcnSe.js → star-Cn1F0qy7.js} +2 -2
- package/ccw/frontend/dist/assets/{star-BCQHcnSe.js.map → star-Cn1F0qy7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-CJsrp48L.js → style-Dxs1iXCV.js} +2 -2
- package/ccw/frontend/dist/assets/{style-CJsrp48L.js.map → style-Dxs1iXCV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CBzCJCB1.js → target-Bz1fLRKH.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CBzCJCB1.js.map → target-Bz1fLRKH.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-BYTc5mvQ.js → test-tube-C6qCYlDr.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-BYTc5mvQ.js.map → test-tube-C6qCYlDr.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-DzyQj7ib.js → upload-C71kd4Qs.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-DzyQj7ib.js.map → upload-C71kd4Qs.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-CFPww7gU.js → useApiSettings-CqP2BAJ7.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-CFPww7gU.js.map → useApiSettings-CqP2BAJ7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-ByL_a5CD.js → useCli-PCoPoVeM.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-ByL_a5CD.js.map → useCli-PCoPoVeM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-BvKIoOzB.js → useCommands-3OfPQPw4.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-BvKIoOzB.js.map → useCommands-3OfPQPw4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-CmKmoP7n.js → useDebounce-bXiFhQx9.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-CmKmoP7n.js.map → useDebounce-bXiFhQx9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-G5UoArCU.js → useFileExplorer-DEyUm46_.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-G5UoArCU.js.map → useFileExplorer-DEyUm46_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-D2iHK44M.js → useLocale-sXTrdxcJ.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-D2iHK44M.js.map → useLocale-sXTrdxcJ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-CYU4zqhm.js → useSkills-D0W0kXYm.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-CYU4zqhm.js.map → useSkills-D0W0kXYm.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-JznNpij7.js → useSystemSettings-DZ-8lZsG.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-JznNpij7.js.map → useSystemSettings-DZ-8lZsG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-DqS0VCeN.js → wand-sparkles-83GmAYuw.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-DqS0VCeN.js.map → wand-sparkles-83GmAYuw.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/.claude/skills/team-arch-opt/role-specs/analyzer.md +0 -80
- package/.claude/skills/team-arch-opt/role-specs/designer.md +0 -118
- package/.claude/skills/team-arch-opt/role-specs/refactorer.md +0 -106
- package/.claude/skills/team-arch-opt/role-specs/reviewer.md +0 -116
- package/.claude/skills/team-arch-opt/role-specs/validator.md +0 -117
- package/.claude/skills/team-brainstorm/role-specs/challenger.md +0 -63
- package/.claude/skills/team-brainstorm/role-specs/evaluator.md +0 -58
- package/.claude/skills/team-brainstorm/role-specs/ideator.md +0 -71
- package/.claude/skills/team-brainstorm/role-specs/synthesizer.md +0 -59
- package/.claude/skills/team-frontend/role-specs/analyst.md +0 -91
- package/.claude/skills/team-frontend/role-specs/architect.md +0 -85
- package/.claude/skills/team-frontend/role-specs/developer.md +0 -92
- package/.claude/skills/team-frontend/role-specs/qa.md +0 -78
- package/.claude/skills/team-issue/role-specs/explorer.md +0 -95
- package/.claude/skills/team-issue/role-specs/implementer.md +0 -89
- package/.claude/skills/team-issue/role-specs/integrator.md +0 -86
- package/.claude/skills/team-issue/role-specs/planner.md +0 -83
- package/.claude/skills/team-issue/role-specs/reviewer.md +0 -89
- package/.claude/skills/team-iterdev/role-specs/architect.md +0 -64
- package/.claude/skills/team-iterdev/role-specs/developer.md +0 -73
- package/.claude/skills/team-iterdev/role-specs/reviewer.md +0 -65
- package/.claude/skills/team-iterdev/role-specs/tester.md +0 -87
- package/.claude/skills/team-perf-opt/role-specs/benchmarker.md +0 -110
- package/.claude/skills/team-perf-opt/role-specs/optimizer.md +0 -102
- package/.claude/skills/team-perf-opt/role-specs/profiler.md +0 -73
- package/.claude/skills/team-perf-opt/role-specs/reviewer.md +0 -91
- package/.claude/skills/team-perf-opt/role-specs/strategist.md +0 -114
- package/.claude/skills/team-planex/role-specs/executor.md +0 -90
- package/.claude/skills/team-planex/role-specs/planner.md +0 -110
- package/.claude/skills/team-quality-assurance/role-specs/analyst.md +0 -79
- package/.claude/skills/team-quality-assurance/role-specs/executor.md +0 -64
- package/.claude/skills/team-quality-assurance/role-specs/generator.md +0 -67
- package/.claude/skills/team-quality-assurance/role-specs/scout.md +0 -66
- package/.claude/skills/team-quality-assurance/role-specs/strategist.md +0 -70
- package/.claude/skills/team-review/role-specs/fixer.md +0 -75
- package/.claude/skills/team-review/role-specs/reviewer.md +0 -66
- package/.claude/skills/team-review/role-specs/scanner.md +0 -70
- package/.claude/skills/team-roadmap-dev/role-specs/executor.md +0 -71
- package/.claude/skills/team-roadmap-dev/role-specs/planner.md +0 -77
- package/.claude/skills/team-roadmap-dev/role-specs/verifier.md +0 -73
- package/.claude/skills/team-tech-debt/role-specs/assessor.md +0 -70
- package/.claude/skills/team-tech-debt/role-specs/executor.md +0 -80
- package/.claude/skills/team-tech-debt/role-specs/planner.md +0 -71
- package/.claude/skills/team-tech-debt/role-specs/scanner.md +0 -85
- package/.claude/skills/team-tech-debt/role-specs/validator.md +0 -83
- package/.claude/skills/team-testing/role-specs/analyst.md +0 -94
- package/.claude/skills/team-testing/role-specs/executor.md +0 -97
- package/.claude/skills/team-testing/role-specs/generator.md +0 -96
- package/.claude/skills/team-testing/role-specs/strategist.md +0 -82
- package/.claude/skills/team-uidesign/role-specs/designer.md +0 -72
- package/.claude/skills/team-uidesign/role-specs/implementer.md +0 -74
- package/.claude/skills/team-uidesign/role-specs/researcher.md +0 -84
- package/.claude/skills/team-uidesign/role-specs/reviewer.md +0 -70
- package/.claude/skills/team-ux-improve/role-specs/designer.md +0 -191
- package/.claude/skills/team-ux-improve/role-specs/diagnoser.md +0 -110
- package/.claude/skills/team-ux-improve/role-specs/explorer.md +0 -109
- package/.claude/skills/team-ux-improve/role-specs/implementer.md +0 -164
- package/.claude/skills/team-ux-improve/role-specs/scanner.md +0 -117
- package/.claude/skills/team-ux-improve/role-specs/tester.md +0 -163
- package/ccw/frontend/dist/assets/CodexLensPage-My6DnfN6.js +0 -2
- package/ccw/frontend/dist/assets/CodexLensPage-My6DnfN6.js.map +0 -1
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: QARUN
|
|
3
|
-
inner_loop: true
|
|
4
|
-
additional_prefixes: [QARUN-gc]
|
|
5
|
-
message_types:
|
|
6
|
-
success: tests_passed
|
|
7
|
-
failure: tests_failed
|
|
8
|
-
coverage: coverage_report
|
|
9
|
-
error: error
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Test Executor
|
|
13
|
-
|
|
14
|
-
Run test suites, collect coverage data, and perform automatic fix cycles when tests fail. Implements the execution side of the Generator-Executor (GC) loop.
|
|
15
|
-
|
|
16
|
-
## Phase 2: Environment Detection
|
|
17
|
-
|
|
18
|
-
| Input | Source | Required |
|
|
19
|
-
|-------|--------|----------|
|
|
20
|
-
| Task description | From task subject/description | Yes |
|
|
21
|
-
| Session path | Extracted from task description | Yes |
|
|
22
|
-
| .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
|
|
23
|
-
| Test strategy | meta.json -> test_strategy | Yes |
|
|
24
|
-
| Generated tests | meta.json -> generated_tests | Yes |
|
|
25
|
-
| Target layer | task description `layer: L1/L2/L3` | Yes |
|
|
26
|
-
|
|
27
|
-
1. Extract session path and target layer from task description
|
|
28
|
-
2. Read .msg/meta.json for strategy and generated test file list
|
|
29
|
-
3. Detect test command by framework:
|
|
30
|
-
|
|
31
|
-
| Framework | Command |
|
|
32
|
-
|-----------|---------|
|
|
33
|
-
| vitest | `npx vitest run --coverage --reporter=json --outputFile=test-results.json` |
|
|
34
|
-
| jest | `npx jest --coverage --json --outputFile=test-results.json` |
|
|
35
|
-
| pytest | `python -m pytest --cov --cov-report=json -v` |
|
|
36
|
-
| mocha | `npx mocha --reporter json > test-results.json` |
|
|
37
|
-
| unknown | `npm test -- --coverage` |
|
|
38
|
-
|
|
39
|
-
4. Get test files from `generated_tests[targetLayer].files`
|
|
40
|
-
|
|
41
|
-
## Phase 3: Iterative Test-Fix Cycle
|
|
42
|
-
|
|
43
|
-
**Max iterations**: 5. **Pass threshold**: 95% or all tests pass.
|
|
44
|
-
|
|
45
|
-
Per iteration:
|
|
46
|
-
1. Run test command, capture output
|
|
47
|
-
2. Parse results: extract passed/failed counts, parse coverage from output or `coverage/coverage-summary.json`
|
|
48
|
-
3. If all pass (0 failures) -> exit loop (success)
|
|
49
|
-
4. If pass rate >= 95% and iteration >= 2 -> exit loop (good enough)
|
|
50
|
-
5. If iteration >= MAX -> exit loop (report current state)
|
|
51
|
-
6. Extract failure details (error lines, assertion failures)
|
|
52
|
-
7. Delegate fix via CLI tool with constraints:
|
|
53
|
-
- ONLY modify test files, NEVER modify source code
|
|
54
|
-
- Fix: incorrect assertions, missing imports, wrong mocks, setup issues
|
|
55
|
-
- Do NOT: skip tests, add `@ts-ignore`, use `as any`
|
|
56
|
-
8. Increment iteration, repeat
|
|
57
|
-
|
|
58
|
-
## Phase 4: Result Analysis & Output
|
|
59
|
-
|
|
60
|
-
1. Build result data: layer, framework, iterations, pass_rate, coverage, tests_passed, tests_failed, all_passed
|
|
61
|
-
2. Save results to `<session>/results/run-<layer>.json`
|
|
62
|
-
3. Save last test output to `<session>/results/output-<layer>.txt`
|
|
63
|
-
4. Update `<session>/wisdom/.msg/meta.json` under `execution_results[layer]` and top-level `execution_results.pass_rate`, `execution_results.coverage`
|
|
64
|
-
5. Message type: `tests_passed` if all_passed, else `tests_failed`
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: QAGEN
|
|
3
|
-
inner_loop: false
|
|
4
|
-
additional_prefixes: [QAGEN-fix]
|
|
5
|
-
message_types:
|
|
6
|
-
success: tests_generated
|
|
7
|
-
revised: tests_revised
|
|
8
|
-
error: error
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Test Generator
|
|
12
|
-
|
|
13
|
-
Generate test code according to strategist's strategy and layers. Support L1 unit tests, L2 integration tests, L3 E2E tests. Follow project's existing test patterns and framework conventions.
|
|
14
|
-
|
|
15
|
-
## Phase 2: Strategy & Pattern Loading
|
|
16
|
-
|
|
17
|
-
| Input | Source | Required |
|
|
18
|
-
|-------|--------|----------|
|
|
19
|
-
| Task description | From task subject/description | Yes |
|
|
20
|
-
| Session path | Extracted from task description | Yes |
|
|
21
|
-
| .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
|
|
22
|
-
| Test strategy | meta.json -> test_strategy | Yes |
|
|
23
|
-
| Target layer | task description `layer: L1/L2/L3` | Yes |
|
|
24
|
-
|
|
25
|
-
1. Extract session path and target layer from task description
|
|
26
|
-
2. Read .msg/meta.json for test strategy (layers, coverage targets)
|
|
27
|
-
3. Determine if this is a GC fix task (subject contains "fix")
|
|
28
|
-
4. Load layer config from strategy: level, name, target_coverage, focus_files
|
|
29
|
-
5. Learn existing test patterns -- find 3 similar test files via Glob(`**/*.{test,spec}.{ts,tsx,js,jsx}`)
|
|
30
|
-
6. Detect test conventions: file location (colocated vs __tests__), import style, describe/it nesting, framework (vitest/jest/pytest)
|
|
31
|
-
|
|
32
|
-
## Phase 3: Test Code Generation
|
|
33
|
-
|
|
34
|
-
**Mode selection**:
|
|
35
|
-
|
|
36
|
-
| Condition | Mode |
|
|
37
|
-
|-----------|------|
|
|
38
|
-
| GC fix task | Read failure info from `<session>/results/run-<layer>.json`, fix failing tests only |
|
|
39
|
-
| <= 3 focus files | Direct: inline Read source -> Write test file |
|
|
40
|
-
| > 3 focus files | Batch by module, delegate via CLI tool |
|
|
41
|
-
|
|
42
|
-
**Direct generation flow** (per source file):
|
|
43
|
-
1. Read source file content, extract exports
|
|
44
|
-
2. Determine test file path following project conventions
|
|
45
|
-
3. If test exists -> analyze missing cases -> append new tests via Edit
|
|
46
|
-
4. If no test -> generate full test file via Write
|
|
47
|
-
5. Include: happy path, edge cases, error cases per export
|
|
48
|
-
|
|
49
|
-
**GC fix flow**:
|
|
50
|
-
1. Read execution results and failure output from results directory
|
|
51
|
-
2. Read each failing test file
|
|
52
|
-
3. Fix assertions, imports, mocks, or test setup
|
|
53
|
-
4. Do NOT modify source code, do NOT skip/ignore tests
|
|
54
|
-
|
|
55
|
-
**General rules**:
|
|
56
|
-
- Follow existing test patterns exactly (imports, naming, structure)
|
|
57
|
-
- Target coverage per layer config
|
|
58
|
-
- Do NOT use `any` type assertions or `@ts-ignore`
|
|
59
|
-
|
|
60
|
-
## Phase 4: Self-Validation & Output
|
|
61
|
-
|
|
62
|
-
1. Collect generated/modified test files
|
|
63
|
-
2. Run syntax check (TypeScript: `tsc --noEmit`, or framework-specific)
|
|
64
|
-
3. Auto-fix syntax errors (max 3 attempts)
|
|
65
|
-
4. Write test metadata to `<session>/wisdom/.msg/meta.json` under `generated_tests[layer]`:
|
|
66
|
-
- layer, files list, count, syntax_clean, mode, gc_fix flag
|
|
67
|
-
5. Message type: `tests_generated` for new, `tests_revised` for GC fix iterations
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: SCOUT
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: scan_ready
|
|
6
|
-
error: error
|
|
7
|
-
issues: issues_found
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Multi-Perspective Scout
|
|
11
|
-
|
|
12
|
-
Scan codebase from multiple perspectives (bug, security, test-coverage, code-quality, UX) to discover potential issues. Produce structured scan results with severity-ranked findings.
|
|
13
|
-
|
|
14
|
-
## Phase 2: Context & Scope Assessment
|
|
15
|
-
|
|
16
|
-
| Input | Source | Required |
|
|
17
|
-
|-------|--------|----------|
|
|
18
|
-
| Task description | From task subject/description | Yes |
|
|
19
|
-
| Session path | Extracted from task description | Yes |
|
|
20
|
-
| .msg/meta.json | <session>/wisdom/.msg/meta.json | No |
|
|
21
|
-
|
|
22
|
-
1. Extract session path and target scope from task description
|
|
23
|
-
2. Determine scan scope: explicit scope from task or `**/*` default
|
|
24
|
-
3. Get recent changed files: `git diff --name-only HEAD~5 2>/dev/null || echo ""`
|
|
25
|
-
4. Read .msg/meta.json for historical defect patterns (`defect_patterns`)
|
|
26
|
-
5. Select scan perspectives based on task description:
|
|
27
|
-
- Default: `["bug", "security", "test-coverage", "code-quality"]`
|
|
28
|
-
- Add `"ux"` if task mentions UX/UI
|
|
29
|
-
6. Assess complexity to determine scan strategy:
|
|
30
|
-
|
|
31
|
-
| Complexity | Condition | Strategy |
|
|
32
|
-
|------------|-----------|----------|
|
|
33
|
-
| Low | < 5 changed files, no specific keywords | ACE search + Grep inline |
|
|
34
|
-
| Medium | 5-15 files or specific perspective requested | CLI fan-out (3 core perspectives) |
|
|
35
|
-
| High | > 15 files or full-project scan | CLI fan-out (all perspectives) |
|
|
36
|
-
|
|
37
|
-
## Phase 3: Multi-Perspective Scan
|
|
38
|
-
|
|
39
|
-
**Low complexity**: Use `mcp__ace-tool__search_context` for quick pattern-based scan.
|
|
40
|
-
|
|
41
|
-
**Medium/High complexity**: CLI fan-out -- one `ccw cli --mode analysis` per perspective:
|
|
42
|
-
|
|
43
|
-
For each active perspective, build prompt:
|
|
44
|
-
```
|
|
45
|
-
PURPOSE: Scan code from <perspective> perspective to discover potential issues
|
|
46
|
-
TASK: Analyze code patterns for <perspective> problems, identify anti-patterns, check for common issues
|
|
47
|
-
MODE: analysis
|
|
48
|
-
CONTEXT: @<scan-scope>
|
|
49
|
-
EXPECTED: List of findings with severity (critical/high/medium/low), file:line references, description
|
|
50
|
-
CONSTRAINTS: Focus on actionable findings only
|
|
51
|
-
```
|
|
52
|
-
Execute via: `ccw cli -p "<prompt>" --tool gemini --mode analysis`
|
|
53
|
-
|
|
54
|
-
After all perspectives complete:
|
|
55
|
-
- Parse CLI outputs into structured findings
|
|
56
|
-
- Deduplicate by file:line (merge perspectives for same location)
|
|
57
|
-
- Compare against known defect patterns from .msg/meta.json
|
|
58
|
-
- Rank by severity: critical > high > medium > low
|
|
59
|
-
|
|
60
|
-
## Phase 4: Result Aggregation
|
|
61
|
-
|
|
62
|
-
1. Build `discoveredIssues` array from critical + high findings (with id, severity, perspective, file, line, description)
|
|
63
|
-
2. Write scan results to `<session>/scan/scan-results.json`:
|
|
64
|
-
- scan_date, perspectives scanned, total findings, by_severity counts, findings detail, issues_created count
|
|
65
|
-
3. Update `<session>/wisdom/.msg/meta.json`: merge `discovered_issues` field
|
|
66
|
-
4. Contribute to wisdom/issues.md if new patterns found
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: QASTRAT
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: strategy_ready
|
|
6
|
-
error: error
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Test Strategist
|
|
10
|
-
|
|
11
|
-
Analyze change scope, determine test layers (L1-L3), define coverage targets, and generate test strategy document. Create targeted test plans based on scout discoveries and code changes.
|
|
12
|
-
|
|
13
|
-
## Phase 2: Context & Change Analysis
|
|
14
|
-
|
|
15
|
-
| Input | Source | Required |
|
|
16
|
-
|-------|--------|----------|
|
|
17
|
-
| Task description | From task subject/description | Yes |
|
|
18
|
-
| Session path | Extracted from task description | Yes |
|
|
19
|
-
| .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
|
|
20
|
-
| Discovered issues | meta.json -> discovered_issues | No |
|
|
21
|
-
| Defect patterns | meta.json -> defect_patterns | No |
|
|
22
|
-
|
|
23
|
-
1. Extract session path from task description
|
|
24
|
-
2. Read .msg/meta.json for scout discoveries and historical patterns
|
|
25
|
-
3. Analyze change scope: `git diff --name-only HEAD~5`
|
|
26
|
-
4. Categorize changed files:
|
|
27
|
-
|
|
28
|
-
| Category | Pattern |
|
|
29
|
-
|----------|---------|
|
|
30
|
-
| Source | `\.(ts|tsx|js|jsx|py|java|go|rs)$` |
|
|
31
|
-
| Test | `\.(test|spec)\.(ts|tsx|js|jsx)$` or `test_` |
|
|
32
|
-
| Config | `\.(json|yaml|yml|toml|env)$` |
|
|
33
|
-
|
|
34
|
-
5. Detect test framework from package.json / project files
|
|
35
|
-
6. Check existing coverage baseline from `coverage/coverage-summary.json`
|
|
36
|
-
7. Select analysis mode:
|
|
37
|
-
|
|
38
|
-
| Total Scope | Mode |
|
|
39
|
-
|-------------|------|
|
|
40
|
-
| <= 5 files + issues | Direct inline analysis |
|
|
41
|
-
| 6-15 | Single CLI analysis |
|
|
42
|
-
| > 15 | Multi-dimension CLI analysis |
|
|
43
|
-
|
|
44
|
-
## Phase 3: Strategy Generation
|
|
45
|
-
|
|
46
|
-
**Layer Selection Logic**:
|
|
47
|
-
|
|
48
|
-
| Condition | Layer | Target |
|
|
49
|
-
|-----------|-------|--------|
|
|
50
|
-
| Has source file changes | L1: Unit Tests | 80% |
|
|
51
|
-
| >= 3 source files OR critical issues | L2: Integration Tests | 60% |
|
|
52
|
-
| >= 3 critical/high severity issues | L3: E2E Tests | 40% |
|
|
53
|
-
| No changes but has scout issues | L1 focused on issue files | 80% |
|
|
54
|
-
|
|
55
|
-
For CLI-assisted analysis, use:
|
|
56
|
-
```
|
|
57
|
-
PURPOSE: Analyze code changes and scout findings to determine optimal test strategy
|
|
58
|
-
TASK: Classify changed files by risk, map issues to test requirements, identify integration points, recommend test layers with coverage targets
|
|
59
|
-
MODE: analysis
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Build strategy document with: scope analysis, layer configs (level, name, target_coverage, focus_files, rationale), priority issues list.
|
|
63
|
-
|
|
64
|
-
**Validation**: Verify strategy has layers, targets > 0, covers discovered issues, and framework detected.
|
|
65
|
-
|
|
66
|
-
## Phase 4: Output & Persistence
|
|
67
|
-
|
|
68
|
-
1. Write strategy to `<session>/strategy/test-strategy.md`
|
|
69
|
-
2. Update `<session>/wisdom/.msg/meta.json`: merge `test_strategy` field with scope, layers, coverage_targets, test_framework
|
|
70
|
-
3. Contribute to wisdom/decisions.md with layer selection rationale
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: FIX
|
|
3
|
-
inner_loop: true
|
|
4
|
-
message_types:
|
|
5
|
-
success: fix_complete
|
|
6
|
-
error: fix_failed
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Code Fixer
|
|
10
|
-
|
|
11
|
-
Fix code based on reviewed findings. Load manifest, plan fix groups, apply with rollback-on-failure, verify. Code-generation role -- modifies source files.
|
|
12
|
-
|
|
13
|
-
## Phase 2: Context & Scope Resolution
|
|
14
|
-
|
|
15
|
-
| Input | Source | Required |
|
|
16
|
-
|-------|--------|----------|
|
|
17
|
-
| Task description | From task subject/description | Yes |
|
|
18
|
-
| Session path | Extracted from task description | Yes |
|
|
19
|
-
| Fix manifest | <session>/fix/fix-manifest.json | Yes |
|
|
20
|
-
| Review report | <session>/review/review-report.json | Yes |
|
|
21
|
-
| .msg/meta.json | <session>/.msg/meta.json | No |
|
|
22
|
-
|
|
23
|
-
1. Extract session path, input path from task description
|
|
24
|
-
2. Load manifest (scope, source report path) and review report (findings with enrichment)
|
|
25
|
-
3. Filter fixable findings: severity in scope AND fix_strategy !== 'skip'
|
|
26
|
-
4. If 0 fixable -> report complete immediately
|
|
27
|
-
5. Detect quick path: findings <= 5 AND no cross-file dependencies
|
|
28
|
-
6. Detect verification tools: tsc (tsconfig.json), eslint (package.json), jest (package.json), pytest (pyproject.toml), semgrep (semgrep available)
|
|
29
|
-
7. Load wisdom files from `<session>/wisdom/`
|
|
30
|
-
|
|
31
|
-
## Phase 3: Plan + Execute
|
|
32
|
-
|
|
33
|
-
### 3A: Plan Fixes (deterministic, no CLI)
|
|
34
|
-
1. Group findings by primary file
|
|
35
|
-
2. Merge groups with cross-file dependencies (union-find)
|
|
36
|
-
3. Topological sort within each group (respect fix_dependencies, append cycles at end)
|
|
37
|
-
4. Sort groups by max severity (critical first)
|
|
38
|
-
5. Determine execution path: quick_path (<=5 findings, <=1 group) or standard
|
|
39
|
-
6. Write `<session>/fix/fix-plan.json`: `{plan_id, quick_path, groups[{id, files[], findings[], max_severity}], execution_order[], total_findings, total_groups}`
|
|
40
|
-
|
|
41
|
-
### 3B: Execute Fixes
|
|
42
|
-
**Quick path**: Single code-developer agent for all findings.
|
|
43
|
-
**Standard path**: One code-developer agent per group, in execution_order.
|
|
44
|
-
|
|
45
|
-
Agent prompt includes: finding list (dependency-sorted), file contents (truncated 8K), critical rules:
|
|
46
|
-
1. Apply each fix using Edit tool in order
|
|
47
|
-
2. After each fix, run related tests
|
|
48
|
-
3. Tests PASS -> finding is "fixed"
|
|
49
|
-
4. Tests FAIL -> `git checkout -- {file}` -> mark "failed" -> continue
|
|
50
|
-
5. No retry on failure. Rollback and move on
|
|
51
|
-
6. If finding depends on previously failed finding -> mark "skipped"
|
|
52
|
-
|
|
53
|
-
Agent returns JSON: `{results:[{id, status: fixed|failed|skipped, file, error?}]}`
|
|
54
|
-
Fallback: check git diff per file if no structured output.
|
|
55
|
-
|
|
56
|
-
Write `<session>/fix/execution-results.json`: `{fixed[], failed[], skipped[]}`
|
|
57
|
-
|
|
58
|
-
## Phase 4: Post-Fix Verification
|
|
59
|
-
|
|
60
|
-
1. Run available verification tools on modified files:
|
|
61
|
-
|
|
62
|
-
| Tool | Command | Pass Criteria |
|
|
63
|
-
|------|---------|---------------|
|
|
64
|
-
| tsc | `npx tsc --noEmit` | 0 errors |
|
|
65
|
-
| eslint | `npx eslint <files>` | 0 errors |
|
|
66
|
-
| jest | `npx jest --passWithNoTests` | Tests pass |
|
|
67
|
-
| pytest | `pytest --tb=short` | Tests pass |
|
|
68
|
-
| semgrep | `semgrep --config auto <files> --json` | 0 results |
|
|
69
|
-
|
|
70
|
-
2. If verification fails critically -> rollback last batch
|
|
71
|
-
3. Write `<session>/fix/verify-results.json`
|
|
72
|
-
4. Generate `<session>/fix/fix-summary.json`: `{fix_id, fix_date, scope, total, fixed, failed, skipped, fix_rate, verification}`
|
|
73
|
-
5. Generate `<session>/fix/fix-summary.md` (human-readable)
|
|
74
|
-
6. Update `<session>/.msg/meta.json` with fix results
|
|
75
|
-
7. Contribute discoveries to `<session>/wisdom/` files
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: REV
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: review_complete
|
|
6
|
-
error: error
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Finding Reviewer
|
|
10
|
-
|
|
11
|
-
Deep analysis on scan findings: triage, root cause / impact / optimization enrichment via CLI fan-out, cross-correlation, and structured review report generation. Read-only -- never modifies source code.
|
|
12
|
-
|
|
13
|
-
## Phase 2: Context & Triage
|
|
14
|
-
|
|
15
|
-
| Input | Source | Required |
|
|
16
|
-
|-------|--------|----------|
|
|
17
|
-
| Task description | From task subject/description | Yes |
|
|
18
|
-
| Session path | Extracted from task description | Yes |
|
|
19
|
-
| Scan results | <session>/scan/scan-results.json | Yes |
|
|
20
|
-
| .msg/meta.json | <session>/.msg/meta.json | No |
|
|
21
|
-
|
|
22
|
-
1. Extract session path, input path, dimensions from task description
|
|
23
|
-
2. Load scan results. If missing or empty -> report clean, complete immediately
|
|
24
|
-
3. Load wisdom files from `<session>/wisdom/`
|
|
25
|
-
4. Triage findings into two buckets:
|
|
26
|
-
|
|
27
|
-
| Bucket | Criteria | Action |
|
|
28
|
-
|--------|----------|--------|
|
|
29
|
-
| deep_analysis | severity in [critical, high, medium], max 15, sorted critical-first | Enrich with root cause, impact, optimization |
|
|
30
|
-
| pass_through | remaining (low, info, or overflow) | Include in report without enrichment |
|
|
31
|
-
|
|
32
|
-
If deep_analysis empty -> skip Phase 3, go to Phase 4.
|
|
33
|
-
|
|
34
|
-
## Phase 3: Deep Analysis (CLI Fan-out)
|
|
35
|
-
|
|
36
|
-
Split deep_analysis into two domain groups, run parallel CLI agents:
|
|
37
|
-
|
|
38
|
-
| Group | Dimensions | Focus |
|
|
39
|
-
|-------|-----------|-------|
|
|
40
|
-
| A | Security + Correctness | Root cause tracing, fix dependencies, blast radius |
|
|
41
|
-
| B | Performance + Maintainability | Optimization approaches, refactor tradeoffs |
|
|
42
|
-
|
|
43
|
-
If either group empty -> skip that agent.
|
|
44
|
-
|
|
45
|
-
Build prompt per group requesting 6 enrichment fields per finding:
|
|
46
|
-
- `root_cause`: `{description, related_findings[], is_symptom}`
|
|
47
|
-
- `impact`: `{scope: low/medium/high, affected_files[], blast_radius}`
|
|
48
|
-
- `optimization`: `{approach, alternative, tradeoff}`
|
|
49
|
-
- `fix_strategy`: minimal / refactor / skip
|
|
50
|
-
- `fix_complexity`: low / medium / high
|
|
51
|
-
- `fix_dependencies`: finding IDs that must be fixed first
|
|
52
|
-
|
|
53
|
-
Execute via `ccw cli --tool gemini --mode analysis --rule analysis-diagnose-bug-root-cause` (fallback: qwen -> codex). Parse JSON array responses, merge with originals (CLI-enriched replace originals, unenriched get defaults). Write `<session>/review/enriched-findings.json`.
|
|
54
|
-
|
|
55
|
-
## Phase 4: Report Generation
|
|
56
|
-
|
|
57
|
-
1. Combine enriched + pass_through findings
|
|
58
|
-
2. Cross-correlate:
|
|
59
|
-
- **Critical files**: file appears in >=2 dimensions -> list with finding_count, severities
|
|
60
|
-
- **Root cause groups**: cluster findings sharing related_findings -> identify primary
|
|
61
|
-
- **Optimization suggestions**: from root cause groups + standalone enriched findings
|
|
62
|
-
3. Compute metrics: by_dimension, by_severity, dimension_severity_matrix, fixable_count, auto_fixable_count
|
|
63
|
-
4. Write `<session>/review/review-report.json`: `{review_id, review_date, findings[], critical_files[], optimization_suggestions[], root_cause_groups[], summary}`
|
|
64
|
-
5. Write `<session>/review/review-report.md`: Executive summary, metrics matrix (dimension x severity), critical/high findings table, critical files list, optimization suggestions, recommended fix scope
|
|
65
|
-
6. Update `<session>/.msg/meta.json` with review summary
|
|
66
|
-
7. Contribute discoveries to `<session>/wisdom/` files
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: SCAN
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: scan_complete
|
|
6
|
-
error: error
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Code Scanner
|
|
10
|
-
|
|
11
|
-
Toolchain + LLM semantic scan producing structured findings. Static analysis tools in parallel, then LLM for issues tools miss. Read-only -- never modifies source code. 4-dimension system: security (SEC), correctness (COR), performance (PRF), maintainability (MNT).
|
|
12
|
-
|
|
13
|
-
## Phase 2: Context & Toolchain Detection
|
|
14
|
-
|
|
15
|
-
| Input | Source | Required |
|
|
16
|
-
|-------|--------|----------|
|
|
17
|
-
| Task description | From task subject/description | Yes |
|
|
18
|
-
| Session path | Extracted from task description | Yes |
|
|
19
|
-
| .msg/meta.json | <session>/.msg/meta.json | No |
|
|
20
|
-
|
|
21
|
-
1. Extract session path, target, dimensions, quick flag from task description
|
|
22
|
-
2. Resolve target files (glob pattern or directory -> `**/*.{ts,tsx,js,jsx,py,go,java,rs}`)
|
|
23
|
-
3. If no source files found -> report empty, complete task cleanly
|
|
24
|
-
4. Detect toolchain availability:
|
|
25
|
-
|
|
26
|
-
| Tool | Detection | Dimension |
|
|
27
|
-
|------|-----------|-----------|
|
|
28
|
-
| tsc | `tsconfig.json` exists | COR |
|
|
29
|
-
| eslint | `.eslintrc*` or `eslint` in package.json | COR/MNT |
|
|
30
|
-
| semgrep | `.semgrep.yml` exists | SEC |
|
|
31
|
-
| ruff | `pyproject.toml` + ruff available | SEC/COR/MNT |
|
|
32
|
-
| mypy | mypy available + `pyproject.toml` | COR |
|
|
33
|
-
| npmAudit | `package-lock.json` exists | SEC |
|
|
34
|
-
|
|
35
|
-
5. Load wisdom files from `<session>/wisdom/` if they exist
|
|
36
|
-
|
|
37
|
-
## Phase 3: Scan Execution
|
|
38
|
-
|
|
39
|
-
**Quick mode**: Single CLI call with analysis mode, max 20 findings, skip toolchain.
|
|
40
|
-
|
|
41
|
-
**Standard mode** (sequential):
|
|
42
|
-
|
|
43
|
-
### 3A: Toolchain Scan
|
|
44
|
-
Run detected tools in parallel via Bash backgrounding. Each tool writes to `<session>/scan/tmp/<tool>.{json|txt}`. After `wait`, parse each output into normalized findings:
|
|
45
|
-
- tsc: `file(line,col): error TSxxxx: msg` -> dimension=correctness, source=tool:tsc
|
|
46
|
-
- eslint: JSON array -> severity 2=correctness/high, else=maintainability/medium
|
|
47
|
-
- semgrep: `{results[]}` -> dimension=security, severity from extra.severity
|
|
48
|
-
- ruff: `[{code,message,filename}]` -> S*=security, F*/B*=correctness, else=maintainability
|
|
49
|
-
- mypy: `file:line: error: msg [code]` -> dimension=correctness
|
|
50
|
-
- npm audit: `{vulnerabilities:{}}` -> dimension=security, category=dependency
|
|
51
|
-
|
|
52
|
-
Write `<session>/scan/toolchain-findings.json`.
|
|
53
|
-
|
|
54
|
-
### 3B: Semantic Scan (LLM via CLI)
|
|
55
|
-
Build prompt with target file patterns, toolchain dedup summary, and per-dimension focus areas:
|
|
56
|
-
- SEC: Business logic vulnerabilities, privilege escalation, sensitive data flow, auth bypass
|
|
57
|
-
- COR: Logic errors, unhandled exception paths, state management bugs, race conditions
|
|
58
|
-
- PRF: Algorithm complexity, N+1 queries, unnecessary sync, memory leaks, missing caching
|
|
59
|
-
- MNT: Architectural coupling, abstraction leaks, convention violations, dead code
|
|
60
|
-
|
|
61
|
-
Execute via `ccw cli --tool gemini --mode analysis --rule analysis-review-code-quality` (fallback: qwen -> codex). Parse JSON array response, validate required fields (dimension, title, location.file), enforce per-dimension limit (max 5 each), filter minimum severity (medium+). Write `<session>/scan/semantic-findings.json`.
|
|
62
|
-
|
|
63
|
-
## Phase 4: Aggregate & Output
|
|
64
|
-
|
|
65
|
-
1. Merge toolchain + semantic findings, deduplicate (same file + line + dimension = duplicate)
|
|
66
|
-
2. Assign dimension-prefixed IDs: SEC-001, COR-001, PRF-001, MNT-001
|
|
67
|
-
3. Write `<session>/scan/scan-results.json` with schema: `{scan_date, target, dimensions, quick_mode, total_findings, by_severity, by_dimension, findings[]}`
|
|
68
|
-
4. Each finding: `{id, dimension, category, severity, title, description, location:{file,line}, source, suggested_fix, effort, confidence}`
|
|
69
|
-
5. Update `<session>/.msg/meta.json` with scan summary (findings_count, by_severity, by_dimension)
|
|
70
|
-
6. Contribute discoveries to `<session>/wisdom/` files
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: EXEC
|
|
3
|
-
inner_loop: true
|
|
4
|
-
cli_tools:
|
|
5
|
-
- gemini --mode write
|
|
6
|
-
message_types:
|
|
7
|
-
success: exec_complete
|
|
8
|
-
progress: exec_progress
|
|
9
|
-
error: error
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Executor
|
|
13
|
-
|
|
14
|
-
Wave-based code implementation per phase. Reads IMPL-*.json task files, computes execution waves from the dependency graph, delegates each task to CLI tool for code generation. Produces summary-{IMPL-ID}.md per task.
|
|
15
|
-
|
|
16
|
-
## Phase 2: Context Loading
|
|
17
|
-
|
|
18
|
-
| Input | Source | Required |
|
|
19
|
-
|-------|--------|----------|
|
|
20
|
-
| Task JSONs | <session>/phase-{N}/.task/IMPL-*.json | Yes |
|
|
21
|
-
| Prior summaries | <session>/phase-{1..N-1}/summary-*.md | No |
|
|
22
|
-
| Wisdom | <session>/wisdom/ | No |
|
|
23
|
-
|
|
24
|
-
1. Glob `<session>/phase-{N}/.task/IMPL-*.json`, error if none found
|
|
25
|
-
2. Parse each task JSON: extract id, description, depends_on, files, convergence, implementation
|
|
26
|
-
3. Compute execution waves from dependency graph:
|
|
27
|
-
- Wave 1: tasks with no dependencies
|
|
28
|
-
- Wave N: tasks whose all deps are in waves 1..N-1
|
|
29
|
-
- Force-assign if circular (break at lowest-numbered task)
|
|
30
|
-
4. Load prior phase summaries for cross-task context
|
|
31
|
-
|
|
32
|
-
## Phase 3: Wave-Based Implementation
|
|
33
|
-
|
|
34
|
-
Execute waves sequentially, tasks within each wave can be parallel.
|
|
35
|
-
|
|
36
|
-
**Strategy selection**:
|
|
37
|
-
|
|
38
|
-
| Task Count | Strategy |
|
|
39
|
-
|------------|----------|
|
|
40
|
-
| <= 2 | Direct: inline Edit/Write |
|
|
41
|
-
| 3-5 | Single CLI tool call for all |
|
|
42
|
-
| > 5 | Batch: one CLI tool call per module group |
|
|
43
|
-
|
|
44
|
-
**Per task**:
|
|
45
|
-
1. Build prompt from task JSON: description, files, implementation steps, convergence criteria
|
|
46
|
-
2. Include prior summaries and wisdom as context
|
|
47
|
-
3. Delegate to CLI tool (`run_in_background: false`):
|
|
48
|
-
```
|
|
49
|
-
Bash({
|
|
50
|
-
command: `ccw cli -p "PURPOSE: Implement task ${taskId}: ${description}
|
|
51
|
-
TASK: ${implementationSteps}
|
|
52
|
-
MODE: write
|
|
53
|
-
CONTEXT: @${files.join(' @')} | Memory: ${priorSummaries}
|
|
54
|
-
EXPECTED: Working code changes matching convergence criteria
|
|
55
|
-
CONSTRAINTS: ${convergenceCriteria}" --tool gemini --mode write`,
|
|
56
|
-
run_in_background: false
|
|
57
|
-
})
|
|
58
|
-
```
|
|
59
|
-
4. Write `<session>/phase-{N}/summary-{IMPL-ID}.md` with: task ID, affected files, changes made, status
|
|
60
|
-
|
|
61
|
-
**Between waves**: report wave progress via team_msg (type: exec_progress)
|
|
62
|
-
|
|
63
|
-
## Phase 4: Self-Validation
|
|
64
|
-
|
|
65
|
-
| Check | Method | Pass Criteria |
|
|
66
|
-
|-------|--------|---------------|
|
|
67
|
-
| Affected files exist | `test -f <path>` for each file in summary | All present |
|
|
68
|
-
| TypeScript syntax | `npx tsc --noEmit` (if tsconfig.json exists) | No errors |
|
|
69
|
-
| Lint | `npm run lint` (best-effort) | No critical errors |
|
|
70
|
-
|
|
71
|
-
Log errors via team_msg but do NOT fix — verifier handles gap detection.
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: PLAN
|
|
3
|
-
inner_loop: true
|
|
4
|
-
cli_tools:
|
|
5
|
-
- gemini --mode analysis
|
|
6
|
-
message_types:
|
|
7
|
-
success: plan_ready
|
|
8
|
-
progress: plan_progress
|
|
9
|
-
error: error
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Planner
|
|
13
|
-
|
|
14
|
-
Research and plan creation per roadmap phase. Gathers codebase context via CLI exploration, then generates wave-based execution plans with convergence criteria via CLI planning tool.
|
|
15
|
-
|
|
16
|
-
## Phase 2: Context Loading + Research
|
|
17
|
-
|
|
18
|
-
| Input | Source | Required |
|
|
19
|
-
|-------|--------|----------|
|
|
20
|
-
| roadmap.md | <session>/roadmap.md | Yes |
|
|
21
|
-
| config.json | <session>/config.json | Yes |
|
|
22
|
-
| Prior summaries | <session>/phase-{1..N-1}/summary-*.md | No |
|
|
23
|
-
| Wisdom | <session>/wisdom/ | No |
|
|
24
|
-
|
|
25
|
-
1. Read roadmap.md, extract phase goal, requirements (REQ-IDs), success criteria
|
|
26
|
-
2. Read config.json for depth setting (quick/standard/comprehensive)
|
|
27
|
-
3. Load prior phase summaries for dependency context
|
|
28
|
-
4. Detect gap closure mode (task description contains "Gap closure")
|
|
29
|
-
5. Launch CLI exploration with phase requirements as exploration query:
|
|
30
|
-
```
|
|
31
|
-
Bash({
|
|
32
|
-
command: `ccw cli -p "PURPOSE: Explore codebase for phase requirements
|
|
33
|
-
TASK: • Identify files needing modification • Map patterns and dependencies • Assess test infrastructure • Identify risks
|
|
34
|
-
MODE: analysis
|
|
35
|
-
CONTEXT: @**/* | Memory: Phase goal: ${phaseGoal}
|
|
36
|
-
EXPECTED: Structured exploration results with file lists, patterns, risks
|
|
37
|
-
CONSTRAINTS: Read-only analysis" --tool gemini --mode analysis`,
|
|
38
|
-
run_in_background: false
|
|
39
|
-
})
|
|
40
|
-
```
|
|
41
|
-
- Target: files needing modification, patterns, dependencies, test infrastructure, risks
|
|
42
|
-
6. If depth=comprehensive: run Gemini CLI analysis (`--mode analysis --rule analysis-analyze-code-patterns`)
|
|
43
|
-
7. Write `<session>/phase-{N}/context.md` combining roadmap requirements + exploration results
|
|
44
|
-
|
|
45
|
-
## Phase 3: Plan Creation
|
|
46
|
-
|
|
47
|
-
1. Load context.md from Phase 2
|
|
48
|
-
2. Create output directory: `<session>/phase-{N}/.task/`
|
|
49
|
-
3. Delegate to CLI planning tool with:
|
|
50
|
-
```
|
|
51
|
-
Bash({
|
|
52
|
-
command: `ccw cli -p "PURPOSE: Generate wave-based execution plan for phase ${phaseNum}
|
|
53
|
-
TASK: • Break down requirements into tasks • Define convergence criteria • Build dependency graph • Assign waves
|
|
54
|
-
MODE: write
|
|
55
|
-
CONTEXT: @${contextMd} | Memory: ${priorSummaries}
|
|
56
|
-
EXPECTED: IMPL_PLAN.md + IMPL-*.json files + TODO_LIST.md
|
|
57
|
-
CONSTRAINTS: <= 10 tasks | Valid DAG | Measurable convergence criteria" --tool gemini --mode write`,
|
|
58
|
-
run_in_background: false
|
|
59
|
-
})
|
|
60
|
-
```
|
|
61
|
-
4. CLI tool produces: `IMPL_PLAN.md`, `.task/IMPL-*.json`, `TODO_LIST.md`
|
|
62
|
-
5. If gap closure: only create tasks for gaps, starting from next available ID
|
|
63
|
-
|
|
64
|
-
## Phase 4: Self-Validation
|
|
65
|
-
|
|
66
|
-
| Check | Pass Criteria | Action on Failure |
|
|
67
|
-
|-------|---------------|-------------------|
|
|
68
|
-
| Task JSON files exist | >= 1 IMPL-*.json found | Error to coordinator |
|
|
69
|
-
| Required fields | id, title, description, files, implementation, convergence | Log warning |
|
|
70
|
-
| Convergence criteria | Each task has >= 1 criterion | Log warning |
|
|
71
|
-
| No self-dependency | task.id not in task.depends_on | Log error, remove cycle |
|
|
72
|
-
| All deps valid | Every depends_on ID exists | Log warning |
|
|
73
|
-
| IMPL_PLAN.md exists | File present | Generate minimal version from task JSONs |
|
|
74
|
-
|
|
75
|
-
After validation, compute wave structure from dependency graph for reporting:
|
|
76
|
-
- Wave count = topological layers of DAG
|
|
77
|
-
- Report: task count, wave count, file list
|