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,96 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: TESTGEN
|
|
3
|
-
inner_loop: true
|
|
4
|
-
message_types:
|
|
5
|
-
success: tests_generated
|
|
6
|
-
revision: tests_revised
|
|
7
|
-
error: error
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Test Generator
|
|
11
|
-
|
|
12
|
-
Generate test code by layer (L1 unit / L2 integration / L3 E2E). Acts as the Generator in the Generator-Critic loop. Supports revision mode for GC loop iterations.
|
|
13
|
-
|
|
14
|
-
## Phase 2: Context Loading
|
|
15
|
-
|
|
16
|
-
| Input | Source | Required |
|
|
17
|
-
|-------|--------|----------|
|
|
18
|
-
| Task description | From task subject/description | Yes |
|
|
19
|
-
| Session path | Extracted from task description | Yes |
|
|
20
|
-
| Test strategy | <session>/strategy/test-strategy.md | Yes |
|
|
21
|
-
| .msg/meta.json | <session>/wisdom/.msg/meta.json | No |
|
|
22
|
-
|
|
23
|
-
1. Extract session path and layer from task description
|
|
24
|
-
2. Read test strategy:
|
|
25
|
-
|
|
26
|
-
```
|
|
27
|
-
Read("<session>/strategy/test-strategy.md")
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
3. Read source files to test (from strategy priority_files, limit 20)
|
|
31
|
-
4. Read .msg/meta.json for framework and scope context
|
|
32
|
-
|
|
33
|
-
5. Detect revision mode:
|
|
34
|
-
|
|
35
|
-
| Condition | Mode |
|
|
36
|
-
|-----------|------|
|
|
37
|
-
| Task subject contains "fix" or "revised" | Revision -- load previous failures |
|
|
38
|
-
| Otherwise | Fresh generation |
|
|
39
|
-
|
|
40
|
-
For revision mode:
|
|
41
|
-
- Read latest result file for failure details
|
|
42
|
-
- Read effective test patterns from .msg/meta.json
|
|
43
|
-
|
|
44
|
-
6. Read wisdom files if available
|
|
45
|
-
|
|
46
|
-
## Phase 3: Test Generation
|
|
47
|
-
|
|
48
|
-
**Strategy selection by complexity**:
|
|
49
|
-
|
|
50
|
-
| File Count | Strategy |
|
|
51
|
-
|------------|----------|
|
|
52
|
-
| <= 3 files | Direct: inline Write/Edit |
|
|
53
|
-
| 3-5 files | Single code-developer agent |
|
|
54
|
-
| > 5 files | Batch: group by module, one agent per batch |
|
|
55
|
-
|
|
56
|
-
**Direct generation** (per source file):
|
|
57
|
-
1. Generate test path: `<session>/tests/<layer>/<test-file>`
|
|
58
|
-
2. Generate test code: happy path, edge cases, error handling
|
|
59
|
-
3. Write test file
|
|
60
|
-
|
|
61
|
-
**CLI delegation** (medium/high complexity):
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
Bash({
|
|
65
|
-
command: `ccw cli -p "PURPOSE: Generate <layer> tests using <framework> to achieve coverage target; success = all priority files covered with quality tests
|
|
66
|
-
TASK: • Analyze source files • Generate test cases (happy path, edge cases, errors) • Write test files with proper structure • Ensure import resolution
|
|
67
|
-
MODE: write
|
|
68
|
-
CONTEXT: @<source-files> @<session>/strategy/test-strategy.md | Memory: Framework: <framework>, Layer: <layer>, Round: <round>
|
|
69
|
-
<if-revision: Previous failures: <failure-details>
|
|
70
|
-
Effective patterns: <patterns-from-meta>>
|
|
71
|
-
EXPECTED: Test files in <session>/tests/<layer>/ with: proper test structure, comprehensive coverage, correct imports, framework conventions
|
|
72
|
-
CONSTRAINTS: Follow test strategy priorities | Use framework best practices | <layer>-appropriate assertions
|
|
73
|
-
Source files to test:
|
|
74
|
-
<file-list-with-content>" --tool gemini --mode write --cd <session>`,
|
|
75
|
-
run_in_background: false
|
|
76
|
-
})
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**Output verification**:
|
|
80
|
-
|
|
81
|
-
```
|
|
82
|
-
Glob("<session>/tests/<layer>/**/*")
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## Phase 4: Self-Validation & State Update
|
|
86
|
-
|
|
87
|
-
**Validation checks**:
|
|
88
|
-
|
|
89
|
-
| Check | Method | Action on Fail |
|
|
90
|
-
|-------|--------|----------------|
|
|
91
|
-
| Syntax | `tsc --noEmit` or equivalent | Auto-fix imports/types |
|
|
92
|
-
| File count | Count generated files | Report issue |
|
|
93
|
-
| Import resolution | Check broken imports | Fix import paths |
|
|
94
|
-
|
|
95
|
-
Update `<session>/wisdom/.msg/meta.json` under `generator` namespace:
|
|
96
|
-
- Merge `{ "generator": { test_files, layer, round, is_revision } }`
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: STRATEGY
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: strategy_ready
|
|
6
|
-
error: error
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Test Strategist
|
|
10
|
-
|
|
11
|
-
Analyze git diff, determine test layers, define coverage targets, and formulate test strategy with prioritized execution order.
|
|
12
|
-
|
|
13
|
-
## Phase 2: Context & Environment 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>/wisdom/.msg/meta.json | No |
|
|
20
|
-
|
|
21
|
-
1. Extract session path and scope from task description
|
|
22
|
-
2. Get git diff for change analysis:
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
Bash("git diff HEAD~1 --name-only 2>/dev/null || git diff --cached --name-only")
|
|
26
|
-
Bash("git diff HEAD~1 -- <changed-files> 2>/dev/null || git diff --cached -- <changed-files>")
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
3. Detect test framework from project files:
|
|
30
|
-
|
|
31
|
-
| Signal File | Framework | Test Pattern |
|
|
32
|
-
|-------------|-----------|-------------|
|
|
33
|
-
| jest.config.js/ts | Jest | `**/*.test.{ts,tsx,js}` |
|
|
34
|
-
| vitest.config.ts/js | Vitest | `**/*.test.{ts,tsx}` |
|
|
35
|
-
| pytest.ini / pyproject.toml | Pytest | `**/test_*.py` |
|
|
36
|
-
| No detection | Default | Jest patterns |
|
|
37
|
-
|
|
38
|
-
4. Scan existing test patterns:
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
Glob("**/*.test.*")
|
|
42
|
-
Glob("**/*.spec.*")
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
5. Read .msg/meta.json if exists for session context
|
|
46
|
-
|
|
47
|
-
## Phase 3: Strategy Formulation
|
|
48
|
-
|
|
49
|
-
**Change analysis dimensions**:
|
|
50
|
-
|
|
51
|
-
| Change Type | Analysis | Priority |
|
|
52
|
-
|-------------|----------|----------|
|
|
53
|
-
| New files | Need new tests | High |
|
|
54
|
-
| Modified functions | Need updated tests | Medium |
|
|
55
|
-
| Deleted files | Need test cleanup | Low |
|
|
56
|
-
| Config changes | May need integration tests | Variable |
|
|
57
|
-
|
|
58
|
-
**Strategy output structure**:
|
|
59
|
-
|
|
60
|
-
1. **Change Analysis Table**: File, Change Type, Impact, Priority
|
|
61
|
-
2. **Test Layer Recommendations**:
|
|
62
|
-
- L1 Unit: Scope, Coverage Target, Priority Files, Patterns
|
|
63
|
-
- L2 Integration: Scope, Coverage Target, Integration Points
|
|
64
|
-
- L3 E2E: Scope, Coverage Target, User Scenarios
|
|
65
|
-
3. **Risk Assessment**: Risk, Probability, Impact, Mitigation
|
|
66
|
-
4. **Test Execution Order**: Prioritized sequence
|
|
67
|
-
|
|
68
|
-
Write strategy to `<session>/strategy/test-strategy.md`
|
|
69
|
-
|
|
70
|
-
**Self-validation**:
|
|
71
|
-
|
|
72
|
-
| Check | Criteria | Fallback |
|
|
73
|
-
|-------|----------|----------|
|
|
74
|
-
| Has L1 scope | L1 scope not empty | Default to all changed files |
|
|
75
|
-
| Has coverage targets | L1 target > 0 | Use defaults (80/60/40) |
|
|
76
|
-
| Has priority files | List not empty | Use all changed files |
|
|
77
|
-
|
|
78
|
-
## Phase 4: Wisdom & State Update
|
|
79
|
-
|
|
80
|
-
1. Write discoveries to `<session>/wisdom/conventions.md` (detected framework, patterns)
|
|
81
|
-
2. Update `<session>/wisdom/.msg/meta.json` under `strategist` namespace:
|
|
82
|
-
- Read existing -> merge `{ "strategist": { framework, layers, coverage_targets, priority_files, risks } }` -> write back
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: DESIGN
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: design_ready
|
|
6
|
-
revision: design_revision
|
|
7
|
-
progress: design_progress
|
|
8
|
-
error: error
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Design Token & Component Spec Author
|
|
12
|
-
|
|
13
|
-
Define visual language through design tokens (W3C Design Tokens Format) and component specifications. Consume design intelligence from researcher. Act as Generator in the designer<->reviewer Generator-Critic loop.
|
|
14
|
-
|
|
15
|
-
## Phase 2: Context & Artifact Loading
|
|
16
|
-
|
|
17
|
-
| Input | Source | Required |
|
|
18
|
-
|-------|--------|----------|
|
|
19
|
-
| Research artifacts | <session>/research/*.json | Yes |
|
|
20
|
-
| Design intelligence | <session>/research/design-intelligence.json | Yes |
|
|
21
|
-
| .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
|
|
22
|
-
| Audit feedback | <session>/audit/audit-*.md | Only for GC fix tasks |
|
|
23
|
-
|
|
24
|
-
1. Extract session path from task description
|
|
25
|
-
2. Read research findings: design-system-analysis.json, component-inventory.json, accessibility-audit.json
|
|
26
|
-
3. Read design intelligence: recommended colors/typography/style, anti-patterns, ux_guidelines
|
|
27
|
-
4. Detect task type from subject: "token" -> Token design, "component" -> Component spec, "fix"/"revision" -> GC fix
|
|
28
|
-
5. If GC fix task: read latest audit feedback from audit files
|
|
29
|
-
|
|
30
|
-
## Phase 3: Design Execution
|
|
31
|
-
|
|
32
|
-
**Token System Design (DESIGN-001)**:
|
|
33
|
-
- Define complete token system following W3C Design Tokens Format
|
|
34
|
-
- Categories: Color (primary, secondary, background, surface, text, semantic), Typography (font-family, font-size, font-weight, line-height), Spacing (xs-2xl), Shadow (sm/md/lg), Border (radius, width), Breakpoint (mobile/tablet/desktop/wide)
|
|
35
|
-
- All color tokens must have light/dark variants using `$value: { light: ..., dark: ... }`
|
|
36
|
-
- Integrate design intelligence: recommended.colors -> color tokens, recommended.typography -> font stacks
|
|
37
|
-
- Document anti-patterns from design intelligence for implementer reference
|
|
38
|
-
- Output: `<session>/design/design-tokens.json`
|
|
39
|
-
|
|
40
|
-
**Component Specification (DESIGN-002)**:
|
|
41
|
-
- Define component specs consuming design tokens
|
|
42
|
-
- Each spec contains: Overview (type: atom/molecule/organism, purpose), Design Tokens Consumed (token -> usage -> value reference), States (default/hover/focus/active/disabled), Responsive Behavior (changes per breakpoint), Accessibility (role, ARIA, keyboard, focus indicator, contrast), Variants, Anti-Patterns, Implementation Hints
|
|
43
|
-
- All interactive states required: default, hover (background/opacity change), focus (outline 2px solid, offset 2px), active (pressed), disabled (opacity 0.5, cursor not-allowed)
|
|
44
|
-
- Output: `<session>/design/component-specs/{component-name}.md`
|
|
45
|
-
|
|
46
|
-
**GC Fix Mode (DESIGN-fix-N)**:
|
|
47
|
-
- Parse audit feedback for specific issues
|
|
48
|
-
- Re-read affected design artifacts; apply fixes (token value adjustments, missing states, accessibility gaps, naming fixes)
|
|
49
|
-
- Re-write affected files; signal `design_revision` instead of `design_ready`
|
|
50
|
-
|
|
51
|
-
## Phase 4: Self-Validation & Output
|
|
52
|
-
|
|
53
|
-
1. Token integrity checks:
|
|
54
|
-
|
|
55
|
-
| Check | Pass Criteria |
|
|
56
|
-
|-------|---------------|
|
|
57
|
-
| tokens_valid | All $value fields non-empty |
|
|
58
|
-
| theme_complete | Light/dark values for all color tokens |
|
|
59
|
-
| values_parseable | Valid CSS-parseable values |
|
|
60
|
-
| no_duplicates | No duplicate token definitions |
|
|
61
|
-
|
|
62
|
-
2. Component spec checks:
|
|
63
|
-
|
|
64
|
-
| Check | Pass Criteria |
|
|
65
|
-
|-------|---------------|
|
|
66
|
-
| states_complete | All 5 states (default/hover/focus/active/disabled) defined |
|
|
67
|
-
| a11y_specified | Role, ARIA, keyboard behavior defined |
|
|
68
|
-
| responsive_defined | At least mobile/desktop breakpoints |
|
|
69
|
-
| token_refs_valid | All `{token.path}` references resolve to defined tokens |
|
|
70
|
-
|
|
71
|
-
3. Update `<session>/wisdom/.msg/meta.json` under `designer` namespace:
|
|
72
|
-
- Read existing -> merge `{ "designer": { task_type, token_categories, component_count, style_decisions } }` -> write back
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: BUILD
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: build_complete
|
|
6
|
-
progress: build_progress
|
|
7
|
-
error: error
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Component Code Builder
|
|
11
|
-
|
|
12
|
-
Translate design tokens and component specifications into production code. Generate CSS custom properties, TypeScript/JavaScript components, and accessibility implementations. Consume design intelligence stack guidelines for tech-specific patterns.
|
|
13
|
-
|
|
14
|
-
## Phase 2: Context & Artifact Loading
|
|
15
|
-
|
|
16
|
-
| Input | Source | Required |
|
|
17
|
-
|-------|--------|----------|
|
|
18
|
-
| Design tokens | <session>/design/design-tokens.json | Yes (token build) |
|
|
19
|
-
| Component specs | <session>/design/component-specs/*.md | Yes (component build) |
|
|
20
|
-
| Design intelligence | <session>/research/design-intelligence.json | Yes |
|
|
21
|
-
| Latest audit report | <session>/audit/audit-*.md | No |
|
|
22
|
-
| .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
|
|
23
|
-
|
|
24
|
-
1. Extract session path from task description
|
|
25
|
-
2. Detect build type from subject: "token" -> Token implementation, "component" -> Component implementation
|
|
26
|
-
3. Read design artifacts: design-tokens.json (token build), component-specs/*.md (component build)
|
|
27
|
-
4. Read design intelligence: stack_guidelines (tech-specific patterns), anti_patterns (patterns to avoid), ux_guidelines
|
|
28
|
-
5. Read latest audit report for approved changes and feedback
|
|
29
|
-
6. Detect project tech stack from package.json
|
|
30
|
-
|
|
31
|
-
## Phase 3: Implementation Execution
|
|
32
|
-
|
|
33
|
-
**Token Implementation (BUILD-001)**:
|
|
34
|
-
- Convert design tokens to production code
|
|
35
|
-
- Output files in `<session>/build/token-files/`:
|
|
36
|
-
- `tokens.css`: CSS custom properties with `:root` (light) and `[data-theme="dark"]` selectors, plus `@media (prefers-color-scheme: dark)` fallback
|
|
37
|
-
- `tokens.ts`: TypeScript constants and types for programmatic access with autocomplete support
|
|
38
|
-
- `README.md`: Token usage guide
|
|
39
|
-
- All color tokens must have both light and dark values
|
|
40
|
-
- Semantic token names must match design token definitions
|
|
41
|
-
|
|
42
|
-
**Component Implementation (BUILD-002)**:
|
|
43
|
-
- Implement component code from design specifications
|
|
44
|
-
- Per-component output in `<session>/build/component-files/`:
|
|
45
|
-
- `{ComponentName}.tsx`: React/Vue/Svelte component (match detected stack)
|
|
46
|
-
- `{ComponentName}.css`: Styles consuming tokens via `var(--token-name)` only
|
|
47
|
-
- `{ComponentName}.test.tsx`: Basic render + state tests
|
|
48
|
-
- `index.ts`: Re-export
|
|
49
|
-
- Requirements: no hardcoded colors/spacing (use design tokens), implement all 5 states, add ARIA attributes per spec, support responsive breakpoints, follow project component patterns
|
|
50
|
-
- Accessibility: keyboard navigation, screen reader support, visible focus indicators, WCAG AA contrast
|
|
51
|
-
- Check implementation against design intelligence anti_patterns
|
|
52
|
-
|
|
53
|
-
## Phase 4: Validation & Output
|
|
54
|
-
|
|
55
|
-
1. Token build validation:
|
|
56
|
-
|
|
57
|
-
| Check | Pass Criteria |
|
|
58
|
-
|-------|---------------|
|
|
59
|
-
| File existence | tokens.css and tokens.ts exist |
|
|
60
|
-
| Token coverage | All defined tokens present in CSS |
|
|
61
|
-
| Theme support | Light/dark variants exist |
|
|
62
|
-
|
|
63
|
-
2. Component build validation:
|
|
64
|
-
|
|
65
|
-
| Check | Pass Criteria |
|
|
66
|
-
|-------|---------------|
|
|
67
|
-
| File existence | At least 3 files per component (component, style, index) |
|
|
68
|
-
| No hardcoded values | No `#xxx` or `rgb()` in component CSS (only in tokens.css) |
|
|
69
|
-
| Focus styles | `:focus` or `:focus-visible` defined |
|
|
70
|
-
| Responsive | `@media` queries present |
|
|
71
|
-
| Anti-pattern clean | No violations of design intelligence anti_patterns |
|
|
72
|
-
|
|
73
|
-
3. Update `<session>/wisdom/.msg/meta.json` under `implementer` namespace:
|
|
74
|
-
- Read existing -> merge `{ "implementer": { build_type, file_count, output_dir, components_built } }` -> write back
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
prefix: RESEARCH
|
|
3
|
-
inner_loop: false
|
|
4
|
-
message_types:
|
|
5
|
-
success: research_ready
|
|
6
|
-
progress: research_progress
|
|
7
|
-
error: error
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Design System Researcher
|
|
11
|
-
|
|
12
|
-
Analyze existing design system, build component inventory, assess accessibility baseline, and retrieve industry-specific design intelligence via ui-ux-pro-max. Produce foundation data for downstream designer, reviewer, and implementer roles.
|
|
13
|
-
|
|
14
|
-
## Phase 2: Context & Environment Detection
|
|
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. Detect project type and tech stack from package.json or equivalent:
|
|
24
|
-
|
|
25
|
-
| Package | Detected Stack |
|
|
26
|
-
|---------|---------------|
|
|
27
|
-
| next | nextjs |
|
|
28
|
-
| react | react |
|
|
29
|
-
| vue | vue |
|
|
30
|
-
| svelte | svelte |
|
|
31
|
-
| @shadcn/ui | shadcn |
|
|
32
|
-
| (default) | html-tailwind |
|
|
33
|
-
|
|
34
|
-
3. Use CLI tools (e.g., `ccw cli -p "..." --tool gemini --mode analysis`) or direct tools (Glob, Grep, mcp__ace-tool__search_context) to scan for existing design tokens, component files, styling patterns
|
|
35
|
-
4. Read industry context from session config (industry, strictness, must-have features)
|
|
36
|
-
|
|
37
|
-
## Phase 3: Research Execution
|
|
38
|
-
|
|
39
|
-
Execute 4 analysis streams:
|
|
40
|
-
|
|
41
|
-
**Stream 1 -- Design System Analysis**:
|
|
42
|
-
- Search for existing design tokens (CSS variables, theme configs, token files)
|
|
43
|
-
- Identify styling patterns (CSS-in-JS, CSS modules, utility classes, SCSS)
|
|
44
|
-
- Map color palette, typography scale, spacing system
|
|
45
|
-
- Find component library usage (MUI, Ant Design, shadcn, custom)
|
|
46
|
-
- Output: `<session>/research/design-system-analysis.json`
|
|
47
|
-
|
|
48
|
-
**Stream 2 -- Component Inventory**:
|
|
49
|
-
- Find all UI component files; identify props/API surface
|
|
50
|
-
- Identify states supported (hover, focus, disabled, etc.)
|
|
51
|
-
- Check accessibility attributes (ARIA labels, roles)
|
|
52
|
-
- Map inter-component dependencies and usage counts
|
|
53
|
-
- Output: `<session>/research/component-inventory.json`
|
|
54
|
-
|
|
55
|
-
**Stream 3 -- Accessibility Baseline**:
|
|
56
|
-
- Check ARIA attribute usage patterns, keyboard navigation support
|
|
57
|
-
- Assess color contrast ratios (if design tokens found)
|
|
58
|
-
- Find focus management and semantic HTML patterns
|
|
59
|
-
- Output: `<session>/research/accessibility-audit.json`
|
|
60
|
-
|
|
61
|
-
**Stream 4 -- Design Intelligence (ui-ux-pro-max)**:
|
|
62
|
-
- Call `Skill(skill="ui-ux-pro-max", args="<industry> <keywords> --design-system")` for design system recommendations
|
|
63
|
-
- Call `Skill(skill="ui-ux-pro-max", args="accessibility animation responsive --domain ux")` for UX guidelines
|
|
64
|
-
- Call `Skill(skill="ui-ux-pro-max", args="<keywords> --stack <detected-stack>")` for stack guidelines
|
|
65
|
-
- Degradation: when unavailable, use LLM general knowledge, mark `_source: "llm-general-knowledge"`
|
|
66
|
-
- Output: `<session>/research/design-intelligence.json`
|
|
67
|
-
|
|
68
|
-
Compile research summary metrics: design_system_exists, styling_approach, total_components, accessibility_level, design_intelligence_source, anti_patterns_count.
|
|
69
|
-
|
|
70
|
-
## Phase 4: Validation & Output
|
|
71
|
-
|
|
72
|
-
1. Verify all 4 output files exist and contain valid JSON with required fields:
|
|
73
|
-
|
|
74
|
-
| File | Required Fields |
|
|
75
|
-
|------|----------------|
|
|
76
|
-
| design-system-analysis.json | existing_tokens, styling_approach |
|
|
77
|
-
| component-inventory.json | components array |
|
|
78
|
-
| accessibility-audit.json | wcag_level |
|
|
79
|
-
| design-intelligence.json | _source, design_system |
|
|
80
|
-
|
|
81
|
-
2. If any file missing or invalid, re-run corresponding stream
|
|
82
|
-
|
|
83
|
-
3. Update `<session>/wisdom/.msg/meta.json` under `researcher` namespace:
|
|
84
|
-
- Read existing -> merge `{ "researcher": { detected_stack, component_count, wcag_level, di_source, scope } }` -> write back
|
|
@@ -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
|
-
```
|