claude-code-workflow 7.2.10 → 7.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/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/commands/workflow/analyze-with-file.md +108 -54
- package/.claude/commands/workflow-tune.md +811 -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-execute/SKILL.md +106 -14
- package/.claude/skills/workflow-lite-plan/SKILL.md +34 -72
- package/.claude/skills/workflow-lite-test-review/SKILL.md +41 -26
- 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/.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/commands/ddd/auto.md +0 -359
- package/.claude/commands/ddd/doc-generate.md +0 -222
- package/.claude/commands/ddd/doc-refresh.md +0 -218
- package/.claude/commands/ddd/execute.md +0 -416
- package/.claude/commands/ddd/index-build.md +0 -212
- package/.claude/commands/ddd/plan.md +0 -611
- package/.claude/commands/ddd/scan.md +0 -365
- package/.claude/commands/ddd/sync.md +0 -353
- package/.claude/commands/ddd/update.md +0 -160
- package/.claude/commands/idaw/add.md +0 -287
- package/.claude/commands/idaw/resume.md +0 -442
- package/.claude/commands/idaw/run-coordinate.md +0 -648
- package/.claude/commands/idaw/run.md +0 -539
- package/.claude/commands/idaw/status.md +0 -182
- 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,70 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: AUDIT
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: audit_passed
|
|
6
|
-
result: audit_result
|
|
7
|
-
fix: fix_required
|
|
8
|
-
error: error
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Design Auditor
|
|
12
|
-
|
|
13
|
-
Audit design tokens and component specs for consistency, accessibility compliance, completeness, quality, and industry best-practice adherence. Act as Critic in the designer<->reviewer Generator-Critic loop. Serve as sync point gatekeeper in dual-track pipelines.
|
|
14
|
-
|
|
15
|
-
## Phase 2: Context & Artifact Loading
|
|
16
|
-
|
|
17
|
-
| Input | Source | Required |
|
|
18
|
-
|-------|--------|----------|
|
|
19
|
-
| Design artifacts | <session>/design/*.json, <session>/design/component-specs/*.md | Yes |
|
|
20
|
-
| Design intelligence | <session>/research/design-intelligence.json | Yes |
|
|
21
|
-
| Audit history | .msg/meta.json -> reviewer namespace | No |
|
|
22
|
-
| Build artifacts | <session>/build/**/* | Only for final audit |
|
|
23
|
-
| .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
|
|
24
|
-
|
|
25
|
-
1. Extract session path from task description
|
|
26
|
-
2. Detect audit type from subject: "token" -> Token audit, "component" -> Component audit, "final" -> Final audit, "sync" -> Sync point audit
|
|
27
|
-
3. Read design intelligence for anti-patterns and ux_guidelines
|
|
28
|
-
4. Read design artifacts: design-tokens.json (token/component audit), component-specs/*.md (component/final audit), build/**/* (final audit only)
|
|
29
|
-
5. Load audit_history from meta.json for trend analysis
|
|
30
|
-
|
|
31
|
-
## Phase 3: Audit Execution
|
|
32
|
-
|
|
33
|
-
Score 5 dimensions on 1-10 scale:
|
|
34
|
-
|
|
35
|
-
| Dimension | Weight | Focus |
|
|
36
|
-
|-----------|--------|-------|
|
|
37
|
-
| Consistency | 20% | Token usage, naming conventions, visual uniformity |
|
|
38
|
-
| Accessibility | 25% | WCAG AA compliance, ARIA attributes, keyboard nav, contrast |
|
|
39
|
-
| Completeness | 20% | All states defined, responsive specs, edge cases |
|
|
40
|
-
| Quality | 15% | Token reference integrity, documentation clarity, maintainability |
|
|
41
|
-
| Industry Compliance | 20% | Anti-pattern avoidance, UX best practices, design intelligence adherence |
|
|
42
|
-
|
|
43
|
-
**Token Audit**: Naming convention (kebab-case, semantic names), value patterns (consistent units), theme completeness (light+dark for all colors), contrast ratios (text on background >= 4.5:1), minimum font sizes (>= 12px), all categories present, W3C $type metadata, no duplicates.
|
|
44
|
-
|
|
45
|
-
**Component Audit**: Token references resolve, naming matches convention, ARIA roles defined, keyboard behavior specified, focus indicator defined, all 5 states present, responsive breakpoints specified, variants documented, clear descriptions.
|
|
46
|
-
|
|
47
|
-
**Final Audit (cross-cutting)**: Token<->Component consistency (no hardcoded values), Code<->Design consistency (CSS variables match tokens, ARIA implemented as specified), cross-component consistency (spacing, color, interaction patterns).
|
|
48
|
-
|
|
49
|
-
**Score calculation**: `overallScore = round(consistency*0.20 + accessibility*0.25 + completeness*0.20 + quality*0.15 + industryCompliance*0.20)`
|
|
50
|
-
|
|
51
|
-
**Signal determination**:
|
|
52
|
-
|
|
53
|
-
| Condition | Signal |
|
|
54
|
-
|-----------|--------|
|
|
55
|
-
| Score >= 8 AND critical_count === 0 | `audit_passed` (GC CONVERGED) |
|
|
56
|
-
| Score >= 6 AND critical_count === 0 | `audit_result` (GC REVISION NEEDED) |
|
|
57
|
-
| Score < 6 OR critical_count > 0 | `fix_required` (CRITICAL FIX NEEDED) |
|
|
58
|
-
|
|
59
|
-
## Phase 4: Report & Output
|
|
60
|
-
|
|
61
|
-
1. Write audit report to `<session>/audit/audit-{NNN}.md`:
|
|
62
|
-
- Summary: overall score, signal, critical/high/medium counts
|
|
63
|
-
- Sync Point Status (if applicable): PASSED/BLOCKED
|
|
64
|
-
- Dimension Scores table (score/weight/weighted per dimension)
|
|
65
|
-
- Critical/High/Medium issues with descriptions, locations, fix suggestions
|
|
66
|
-
- GC Loop Status: signal, action required
|
|
67
|
-
- Trend analysis (if audit_history exists): improving/stable/declining
|
|
68
|
-
|
|
69
|
-
2. Update `<session>/wisdom/.msg/meta.json` under `reviewer` namespace:
|
|
70
|
-
- Read existing -> merge `{ "reviewer": { audit_id, score, critical_count, signal, is_sync_point, audit_type, timestamp } }` -> write back
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: DESIGN
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: design_complete
|
|
6
|
-
error: error
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# UX Designer
|
|
10
|
-
|
|
11
|
-
Design feedback mechanisms (loading/error/success states) and state management patterns (React/Vue reactive updates).
|
|
12
|
-
|
|
13
|
-
## Phase 2: Context & Pattern Loading
|
|
14
|
-
|
|
15
|
-
1. Load diagnosis report from `<session>/artifacts/diagnosis.md`
|
|
16
|
-
2. Load diagnoser state via `team_msg(operation="get_state", session_id=<session-id>, role="diagnoser")`
|
|
17
|
-
3. Detect framework from project structure
|
|
18
|
-
4. Load framework-specific patterns:
|
|
19
|
-
|
|
20
|
-
| Framework | State Pattern | Event Pattern |
|
|
21
|
-
|-----------|---------------|---------------|
|
|
22
|
-
| React | useState, useRef | onClick, onChange |
|
|
23
|
-
| Vue | ref, reactive | @click, @change |
|
|
24
|
-
|
|
25
|
-
### Wisdom Input
|
|
26
|
-
|
|
27
|
-
1. Read `<session>/wisdom/patterns/ui-feedback.md` for established feedback design patterns
|
|
28
|
-
2. Read `<session>/wisdom/patterns/state-management.md` for state handling patterns
|
|
29
|
-
3. Read `<session>/wisdom/principles/general-ux.md` for UX design principles
|
|
30
|
-
4. Apply patterns when designing solutions for identified issues
|
|
31
|
-
|
|
32
|
-
### Complex Design (use CLI)
|
|
33
|
-
|
|
34
|
-
For complex multi-component solutions:
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
Bash(`ccw cli -p "PURPOSE: Design comprehensive feedback mechanism for multi-step form
|
|
38
|
-
CONTEXT: @<component-files>
|
|
39
|
-
EXPECTED: Complete design with state flow diagram and code patterns
|
|
40
|
-
CONSTRAINTS: Must support React hooks" --tool gemini --mode analysis`)
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Phase 3: Solution Design
|
|
44
|
-
|
|
45
|
-
For each diagnosed issue, design solution:
|
|
46
|
-
|
|
47
|
-
### Feedback Mechanism Design
|
|
48
|
-
|
|
49
|
-
| Issue Type | Solution Design |
|
|
50
|
-
|------------|-----------------|
|
|
51
|
-
| Missing loading | Add loading state + UI indicator (spinner, disabled button) |
|
|
52
|
-
| Missing error | Add error state + error message display |
|
|
53
|
-
| Missing success | Add success state + confirmation toast/message |
|
|
54
|
-
| No empty state | Add conditional rendering for empty data |
|
|
55
|
-
|
|
56
|
-
### State Management Design
|
|
57
|
-
|
|
58
|
-
**React Pattern**:
|
|
59
|
-
```typescript
|
|
60
|
-
// Add state variables
|
|
61
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
62
|
-
const [error, setError] = useState<string | null>(null);
|
|
63
|
-
|
|
64
|
-
// Wrap async operation
|
|
65
|
-
const handleSubmit = async (event: React.FormEvent) => {
|
|
66
|
-
event.preventDefault();
|
|
67
|
-
setIsLoading(true);
|
|
68
|
-
setError(null);
|
|
69
|
-
|
|
70
|
-
try {
|
|
71
|
-
const response = await fetch('/api/upload', { method: 'POST', body: formData });
|
|
72
|
-
if (!response.ok) throw new Error('Upload failed');
|
|
73
|
-
// Success handling
|
|
74
|
-
} catch (err: any) {
|
|
75
|
-
setError(err.message || 'An error occurred');
|
|
76
|
-
} finally {
|
|
77
|
-
setIsLoading(false);
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
// UI binding
|
|
82
|
-
<button type="submit" disabled={isLoading}>
|
|
83
|
-
{isLoading ? 'Uploading...' : 'Upload File'}
|
|
84
|
-
</button>
|
|
85
|
-
{error && <p style={{ color: 'red' }}>{error}</p>}
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
**Vue Pattern**:
|
|
89
|
-
```typescript
|
|
90
|
-
// Add reactive state
|
|
91
|
-
const isLoading = ref(false);
|
|
92
|
-
const error = ref<string | null>(null);
|
|
93
|
-
|
|
94
|
-
// Wrap async operation
|
|
95
|
-
const handleSubmit = async () => {
|
|
96
|
-
isLoading.value = true;
|
|
97
|
-
error.value = null;
|
|
98
|
-
|
|
99
|
-
try {
|
|
100
|
-
const response = await fetch('/api/upload', { method: 'POST', body: formData });
|
|
101
|
-
if (!response.ok) throw new Error('Upload failed');
|
|
102
|
-
// Success handling
|
|
103
|
-
} catch (err: any) {
|
|
104
|
-
error.value = err.message || 'An error occurred';
|
|
105
|
-
} finally {
|
|
106
|
-
isLoading.value = false;
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
// UI binding
|
|
111
|
-
<button @click="handleSubmit" :disabled="isLoading">
|
|
112
|
-
{{ isLoading ? 'Uploading...' : 'Upload File' }}
|
|
113
|
-
</button>
|
|
114
|
-
<p v-if="error" style="color: red">{{ error }}</p>
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### Input Control Design
|
|
118
|
-
|
|
119
|
-
| Issue | Solution |
|
|
120
|
-
|-------|----------|
|
|
121
|
-
| Text input for file path | Add file picker: `<input type="file" />` |
|
|
122
|
-
| Text input for folder path | Add directory picker: `<input type="file" webkitdirectory />` |
|
|
123
|
-
| No validation | Add validation rules and error messages |
|
|
124
|
-
|
|
125
|
-
## Phase 4: Design Document Generation
|
|
126
|
-
|
|
127
|
-
1. Generate implementation guide for each issue:
|
|
128
|
-
|
|
129
|
-
```markdown
|
|
130
|
-
# Design Guide
|
|
131
|
-
|
|
132
|
-
## Issue #1: Upload form no loading state
|
|
133
|
-
|
|
134
|
-
### Solution Design
|
|
135
|
-
Add loading state with UI feedback and error handling.
|
|
136
|
-
|
|
137
|
-
### State Variables (React)
|
|
138
|
-
```typescript
|
|
139
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
140
|
-
const [error, setError] = useState<string | null>(null);
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### Event Handler
|
|
144
|
-
```typescript
|
|
145
|
-
const handleUpload = async (event: React.FormEvent) => {
|
|
146
|
-
event.preventDefault();
|
|
147
|
-
setIsLoading(true);
|
|
148
|
-
setError(null);
|
|
149
|
-
|
|
150
|
-
try {
|
|
151
|
-
// API call
|
|
152
|
-
} catch (err: any) {
|
|
153
|
-
setError(err.message);
|
|
154
|
-
} finally {
|
|
155
|
-
setIsLoading(false);
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### UI Binding
|
|
161
|
-
```tsx
|
|
162
|
-
<button type="submit" disabled={isLoading}>
|
|
163
|
-
{isLoading ? 'Uploading...' : 'Upload File'}
|
|
164
|
-
</button>
|
|
165
|
-
{error && <p className="error">{error}</p>}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### Acceptance Criteria
|
|
169
|
-
- Loading state shows during upload
|
|
170
|
-
- Button disabled during upload
|
|
171
|
-
- Error message displays on failure
|
|
172
|
-
- Success confirmation on completion
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
2. Write guide to `<session>/artifacts/design-guide.md`
|
|
176
|
-
|
|
177
|
-
### Wisdom Contribution
|
|
178
|
-
|
|
179
|
-
If novel design patterns created:
|
|
180
|
-
1. Write new patterns to `<session>/wisdom/contributions/designer-pattern-<timestamp>.md`
|
|
181
|
-
2. Format: Problem context, solution design, implementation hints, trade-offs
|
|
182
|
-
|
|
183
|
-
3. Share state via team_msg:
|
|
184
|
-
```
|
|
185
|
-
team_msg(operation="log", session_id=<session-id>, from="designer",
|
|
186
|
-
type="state_update", data={
|
|
187
|
-
designed_solutions: <count>,
|
|
188
|
-
framework: <framework>,
|
|
189
|
-
patterns_used: [<pattern-list>]
|
|
190
|
-
})
|
|
191
|
-
```
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: DIAG
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: diag_complete
|
|
6
|
-
error: error
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# State Diagnoser
|
|
10
|
-
|
|
11
|
-
Diagnose root causes of UI issues: state management problems, event binding failures, async handling errors.
|
|
12
|
-
|
|
13
|
-
## Phase 2: Context & Complexity Assessment
|
|
14
|
-
|
|
15
|
-
1. Load scan report from `<session>/artifacts/scan-report.md`
|
|
16
|
-
2. Load scanner state via `team_msg(operation="get_state", session_id=<session-id>, role="scanner")`
|
|
17
|
-
|
|
18
|
-
### Wisdom Input
|
|
19
|
-
|
|
20
|
-
1. Read `<session>/wisdom/patterns/ui-feedback.md` and `<session>/wisdom/patterns/state-management.md` if available
|
|
21
|
-
2. Use patterns to identify root causes of UI interaction issues
|
|
22
|
-
3. Reference `<session>/wisdom/anti-patterns/common-ux-pitfalls.md` for common causes
|
|
23
|
-
|
|
24
|
-
3. Assess issue complexity:
|
|
25
|
-
|
|
26
|
-
| Complexity | Criteria | Strategy |
|
|
27
|
-
|------------|----------|----------|
|
|
28
|
-
| High | 5+ issues, cross-component state | CLI delegation |
|
|
29
|
-
| Medium | 2-4 issues, single component | CLI for analysis |
|
|
30
|
-
| Low | 1 issue, simple pattern | Inline analysis |
|
|
31
|
-
|
|
32
|
-
### Complex Analysis (use CLI)
|
|
33
|
-
|
|
34
|
-
For complex multi-file state management issues:
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
Bash(`ccw cli -p "PURPOSE: Analyze state management patterns and identify root causes
|
|
38
|
-
CONTEXT: @<issue-files>
|
|
39
|
-
EXPECTED: Root cause analysis with fix recommendations
|
|
40
|
-
CONSTRAINTS: Focus on reactive update patterns" --tool gemini --mode analysis`)
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Phase 3: Root Cause Analysis
|
|
44
|
-
|
|
45
|
-
For each issue from scan report:
|
|
46
|
-
|
|
47
|
-
### State Management Diagnosis
|
|
48
|
-
|
|
49
|
-
| Pattern | Root Cause | Fix Strategy |
|
|
50
|
-
|---------|------------|--------------|
|
|
51
|
-
| Array.splice/push | Direct mutation, no reactive trigger | Use filter/map/spread for new array |
|
|
52
|
-
| Object property change | Direct mutation | Use spread operator or reactive API |
|
|
53
|
-
| Missing useState/ref | No state tracking | Add state variable |
|
|
54
|
-
| Stale closure | Captured old state value | Use functional setState or ref.current |
|
|
55
|
-
|
|
56
|
-
### Event Binding Diagnosis
|
|
57
|
-
|
|
58
|
-
| Pattern | Root Cause | Fix Strategy |
|
|
59
|
-
|---------|------------|--------------|
|
|
60
|
-
| onClick without handler | Missing event binding | Add event handler function |
|
|
61
|
-
| Async without await | Unhandled promise | Add async/await or .then() |
|
|
62
|
-
| No error catching | Uncaught exceptions | Wrap in try/catch |
|
|
63
|
-
| Event propagation issue | stopPropagation missing | Add event.stopPropagation() |
|
|
64
|
-
|
|
65
|
-
### Async Handling Diagnosis
|
|
66
|
-
|
|
67
|
-
| Pattern | Root Cause | Fix Strategy |
|
|
68
|
-
|---------|------------|--------------|
|
|
69
|
-
| No loading state | Missing async state tracking | Add isLoading state |
|
|
70
|
-
| No error handling | Missing catch block | Add try/catch with error state |
|
|
71
|
-
| Race condition | Multiple concurrent requests | Add request cancellation or debounce |
|
|
72
|
-
|
|
73
|
-
## Phase 4: Diagnosis Report
|
|
74
|
-
|
|
75
|
-
1. Generate root cause analysis for each issue:
|
|
76
|
-
|
|
77
|
-
```markdown
|
|
78
|
-
# Diagnosis Report
|
|
79
|
-
|
|
80
|
-
## Issue #1: Upload form no loading state
|
|
81
|
-
- **File**: src/components/Upload.tsx:45
|
|
82
|
-
- **Root Cause**: Form submit handler is async but no loading state variable exists
|
|
83
|
-
- **Pattern Type**: Missing async state tracking
|
|
84
|
-
- **Fix Recommendation**:
|
|
85
|
-
- Add `const [isLoading, setIsLoading] = useState(false)` (React)
|
|
86
|
-
- Add `const isLoading = ref(false)` (Vue)
|
|
87
|
-
- Wrap async call in try/finally with setIsLoading(true/false)
|
|
88
|
-
- Disable button when isLoading is true
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
2. Write report to `<session>/artifacts/diagnosis.md`
|
|
92
|
-
|
|
93
|
-
### Wisdom Contribution
|
|
94
|
-
|
|
95
|
-
If new root cause patterns discovered:
|
|
96
|
-
1. Write diagnosis patterns to `<session>/wisdom/contributions/diagnoser-patterns-<timestamp>.md`
|
|
97
|
-
2. Format: Symptom, root cause, detection method, fix approach
|
|
98
|
-
|
|
99
|
-
3. Share state via team_msg:
|
|
100
|
-
```
|
|
101
|
-
team_msg(operation="log", session_id=<session-id>, from="diagnoser",
|
|
102
|
-
type="state_update", data={
|
|
103
|
-
diagnosed_issues: <count>,
|
|
104
|
-
pattern_types: {
|
|
105
|
-
state_management: <count>,
|
|
106
|
-
event_binding: <count>,
|
|
107
|
-
async_handling: <count>
|
|
108
|
-
}
|
|
109
|
-
})
|
|
110
|
-
```
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: EXPLORE
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: explore_complete
|
|
6
|
-
error: error
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Codebase Explorer
|
|
10
|
-
|
|
11
|
-
Explore codebase for UI component patterns, state management conventions, and framework-specific patterns. Callable by coordinator only.
|
|
12
|
-
|
|
13
|
-
## Phase 2: Exploration Scope
|
|
14
|
-
|
|
15
|
-
1. Parse exploration request from task description
|
|
16
|
-
2. Determine file patterns based on framework:
|
|
17
|
-
|
|
18
|
-
### Wisdom Input
|
|
19
|
-
|
|
20
|
-
1. Read `<session>/wisdom/patterns/ui-feedback.md` and `<session>/wisdom/patterns/state-management.md` if available
|
|
21
|
-
2. Use known patterns as reference when exploring codebase for component structures
|
|
22
|
-
3. Check `<session>/wisdom/anti-patterns/common-ux-pitfalls.md` to identify problematic patterns during exploration
|
|
23
|
-
|
|
24
|
-
| Framework | Patterns |
|
|
25
|
-
|-----------|----------|
|
|
26
|
-
| React | `**/*.tsx`, `**/*.jsx`, `**/use*.ts`, `**/store*.ts` |
|
|
27
|
-
| Vue | `**/*.vue`, `**/composables/*.ts`, `**/stores/*.ts` |
|
|
28
|
-
|
|
29
|
-
3. Check exploration cache: `<session>/explorations/cache-index.json`
|
|
30
|
-
- If cache hit and fresh -> return cached results
|
|
31
|
-
- If cache miss or stale -> proceed to Phase 3
|
|
32
|
-
|
|
33
|
-
## Phase 3: Codebase Exploration
|
|
34
|
-
|
|
35
|
-
Use ACE search for semantic queries:
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
mcp__ace-tool__search_context(
|
|
39
|
-
project_root_path="<project-path>",
|
|
40
|
-
query="<exploration-query>"
|
|
41
|
-
)
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Exploration dimensions:
|
|
45
|
-
|
|
46
|
-
| Dimension | Query | Purpose |
|
|
47
|
-
|-----------|-------|---------|
|
|
48
|
-
| Component patterns | "UI components with user interactions" | Find interactive components |
|
|
49
|
-
| State management | "State management patterns useState ref reactive" | Identify state conventions |
|
|
50
|
-
| Event handling | "Event handlers onClick onChange onSubmit" | Map event patterns |
|
|
51
|
-
| Error handling | "Error handling try catch error state" | Find error patterns |
|
|
52
|
-
| Feedback mechanisms | "Loading state spinner progress indicator" | Find existing feedback |
|
|
53
|
-
|
|
54
|
-
For each dimension, collect:
|
|
55
|
-
- File paths
|
|
56
|
-
- Pattern examples
|
|
57
|
-
- Convention notes
|
|
58
|
-
|
|
59
|
-
## Phase 4: Exploration Summary
|
|
60
|
-
|
|
61
|
-
1. Generate pattern summary:
|
|
62
|
-
|
|
63
|
-
```markdown
|
|
64
|
-
# Exploration Summary
|
|
65
|
-
|
|
66
|
-
## Framework: React/Vue
|
|
67
|
-
|
|
68
|
-
## Component Patterns
|
|
69
|
-
- Button components use <pattern>
|
|
70
|
-
- Form components use <pattern>
|
|
71
|
-
|
|
72
|
-
## State Management Conventions
|
|
73
|
-
- Global state: Zustand/Pinia
|
|
74
|
-
- Local state: useState/ref
|
|
75
|
-
- Async state: custom hooks/composables
|
|
76
|
-
|
|
77
|
-
## Event Handling Patterns
|
|
78
|
-
- Form submit: <pattern>
|
|
79
|
-
- Button click: <pattern>
|
|
80
|
-
|
|
81
|
-
## Existing Feedback Mechanisms
|
|
82
|
-
- Loading: <pattern>
|
|
83
|
-
- Error: <pattern>
|
|
84
|
-
- Success: <pattern>
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
2. Cache results to `<session>/explorations/cache-index.json`
|
|
88
|
-
3. Write summary to `<session>/explorations/exploration-summary.md`
|
|
89
|
-
|
|
90
|
-
### Wisdom Contribution
|
|
91
|
-
|
|
92
|
-
If new component patterns or framework conventions discovered:
|
|
93
|
-
1. Write pattern summaries to `<session>/wisdom/contributions/explorer-patterns-<timestamp>.md`
|
|
94
|
-
2. Format:
|
|
95
|
-
- Pattern Name: Descriptive name
|
|
96
|
-
- Framework: React/Vue/etc.
|
|
97
|
-
- Use Case: When to apply this pattern
|
|
98
|
-
- Code Example: Representative snippet
|
|
99
|
-
- Adoption: How widely used in codebase
|
|
100
|
-
|
|
101
|
-
4. Share state via team_msg:
|
|
102
|
-
```
|
|
103
|
-
team_msg(operation="log", session_id=<session-id>, from="explorer",
|
|
104
|
-
type="state_update", data={
|
|
105
|
-
framework: <framework>,
|
|
106
|
-
components_found: <count>,
|
|
107
|
-
patterns_identified: [<pattern-list>]
|
|
108
|
-
})
|
|
109
|
-
```
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: IMPL
|
|
3
|
-
inner_loop: true
|
|
4
|
-
message_types:
|
|
5
|
-
success: impl_complete
|
|
6
|
-
error: error
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Code Implementer
|
|
10
|
-
|
|
11
|
-
Generate executable fix code with proper state management, event handling, and UI feedback bindings.
|
|
12
|
-
|
|
13
|
-
## Phase 2: Task & Design Loading
|
|
14
|
-
|
|
15
|
-
1. Extract session path from task description
|
|
16
|
-
2. Read design guide: `<session>/artifacts/design-guide.md`
|
|
17
|
-
3. Extract implementation tasks from design guide
|
|
18
|
-
4. **Wisdom Input**:
|
|
19
|
-
- Read `<session>/wisdom/patterns/state-management.md` for state handling patterns
|
|
20
|
-
- Read `<session>/wisdom/patterns/ui-feedback.md` for UI feedback implementation patterns
|
|
21
|
-
- Read `<session>/wisdom/principles/general-ux.md` for implementation principles
|
|
22
|
-
- Load framework-specific conventions if available
|
|
23
|
-
- Apply these patterns and principles when generating code to ensure consistency and quality
|
|
24
|
-
5. **For inner loop**: Load context_accumulator from prior IMPL tasks
|
|
25
|
-
|
|
26
|
-
### Context Accumulator (Inner Loop)
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
context_accumulator = {
|
|
30
|
-
completed_fixes: [<fix-1>, <fix-2>],
|
|
31
|
-
modified_files: [<file-1>, <file-2>],
|
|
32
|
-
patterns_applied: [<pattern-1>]
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Phase 3: Code Implementation
|
|
37
|
-
|
|
38
|
-
Implementation backend selection:
|
|
39
|
-
|
|
40
|
-
| Backend | Condition | Method |
|
|
41
|
-
|---------|-----------|--------|
|
|
42
|
-
| CLI | Complex multi-file changes | `ccw cli --tool gemini --mode write` |
|
|
43
|
-
| Direct | Simple single-file changes | Inline Edit/Write |
|
|
44
|
-
|
|
45
|
-
### CLI Implementation (Complex)
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
Bash(`ccw cli -p "PURPOSE: Implement loading state and error handling for upload form
|
|
49
|
-
TASK:
|
|
50
|
-
- Add useState for isLoading and error
|
|
51
|
-
- Wrap async call in try/catch/finally
|
|
52
|
-
- Update UI bindings for button and error display
|
|
53
|
-
CONTEXT: @src/components/Upload.tsx
|
|
54
|
-
EXPECTED: Modified Upload.tsx with complete implementation
|
|
55
|
-
CONSTRAINTS: Maintain existing code style" --tool gemini --mode write`)
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Direct Implementation (Simple)
|
|
59
|
-
|
|
60
|
-
For simple state variable additions or UI binding changes:
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
Edit({
|
|
64
|
-
file_path: "src/components/Upload.tsx",
|
|
65
|
-
old_string: "const handleUpload = async () => {",
|
|
66
|
-
new_string: "const [isLoading, setIsLoading] = useState(false);\nconst [error, setError] = useState<string | null>(null);\n\nconst handleUpload = async () => {\n setIsLoading(true);\n setError(null);\n try {"
|
|
67
|
-
})
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Implementation Steps
|
|
71
|
-
|
|
72
|
-
For each fix in design guide:
|
|
73
|
-
1. Read target file
|
|
74
|
-
2. Determine complexity (simple vs complex)
|
|
75
|
-
3. Apply fix using appropriate backend
|
|
76
|
-
4. Verify syntax (no compilation errors)
|
|
77
|
-
5. Append to context_accumulator
|
|
78
|
-
|
|
79
|
-
## Phase 4: Self-Validation
|
|
80
|
-
|
|
81
|
-
| Check | Method | Pass Criteria |
|
|
82
|
-
|-------|--------|---------------|
|
|
83
|
-
| Syntax | IDE diagnostics or tsc --noEmit | No errors |
|
|
84
|
-
| File existence | Verify planned files exist | All present |
|
|
85
|
-
| Acceptance criteria | Match against design guide | All met |
|
|
86
|
-
|
|
87
|
-
Validation steps:
|
|
88
|
-
1. Run syntax check on modified files
|
|
89
|
-
2. Verify all files from design guide exist
|
|
90
|
-
3. Check acceptance criteria from design guide
|
|
91
|
-
4. If validation fails -> attempt auto-fix (max 2 attempts)
|
|
92
|
-
|
|
93
|
-
### Context Accumulator Update
|
|
94
|
-
|
|
95
|
-
Append to context_accumulator:
|
|
96
|
-
```
|
|
97
|
-
{
|
|
98
|
-
completed_fixes: [...prev, <current-fix>],
|
|
99
|
-
modified_files: [...prev, <current-files>],
|
|
100
|
-
patterns_applied: [...prev, <current-patterns>]
|
|
101
|
-
}
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Write summary to `<session>/artifacts/fixes/README.md`:
|
|
105
|
-
```markdown
|
|
106
|
-
# Implementation Summary
|
|
107
|
-
|
|
108
|
-
## Completed Fixes
|
|
109
|
-
- Issue #1: Upload form loading state - DONE
|
|
110
|
-
- Issue #2: Error handling - DONE
|
|
111
|
-
|
|
112
|
-
## Modified Files
|
|
113
|
-
- src/components/Upload.tsx
|
|
114
|
-
- src/components/Form.tsx
|
|
115
|
-
|
|
116
|
-
## Patterns Applied
|
|
117
|
-
- React useState for loading/error states
|
|
118
|
-
- try/catch/finally for async handling
|
|
119
|
-
- Conditional rendering for error messages
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Share state via team_msg:
|
|
123
|
-
```
|
|
124
|
-
team_msg(operation="log", session_id=<session-id>, from="implementer",
|
|
125
|
-
type="state_update", data={
|
|
126
|
-
completed_fixes: <count>,
|
|
127
|
-
modified_files: [<file-list>],
|
|
128
|
-
validation_passed: true
|
|
129
|
-
})
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Wisdom Contribution
|
|
133
|
-
|
|
134
|
-
If reusable code patterns or snippets created:
|
|
135
|
-
1. Write code snippets to `<session>/wisdom/contributions/implementer-snippets-<timestamp>.md`
|
|
136
|
-
2. Format: Use case, code snippet with comments, framework compatibility notes
|
|
137
|
-
|
|
138
|
-
Example contribution format:
|
|
139
|
-
```markdown
|
|
140
|
-
# Implementer Snippets - <timestamp>
|
|
141
|
-
|
|
142
|
-
## Loading State Pattern (React)
|
|
143
|
-
|
|
144
|
-
### Use Case
|
|
145
|
-
Async operations requiring loading indicator
|
|
146
|
-
|
|
147
|
-
### Code Snippet
|
|
148
|
-
```tsx
|
|
149
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
150
|
-
|
|
151
|
-
const handleAsyncAction = async () => {
|
|
152
|
-
setIsLoading(true);
|
|
153
|
-
try {
|
|
154
|
-
await performAction();
|
|
155
|
-
} finally {
|
|
156
|
-
setIsLoading(false);
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### Framework Compatibility
|
|
162
|
-
- React 16.8+ (hooks)
|
|
163
|
-
- Next.js compatible
|
|
164
|
-
```
|