claude-code-workflow 7.2.27 → 7.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ccw/specs/architecture-constraints.md +5 -0
- package/.claude/skills/_shared/SKILL-DESIGN-SPEC.md +140 -0
- package/.claude/skills/investigate/SKILL.md +110 -0
- package/.claude/skills/investigate/phases/01-root-cause-investigation.md +132 -0
- package/.claude/skills/investigate/phases/02-pattern-analysis.md +126 -0
- package/.claude/skills/investigate/phases/03-hypothesis-testing.md +177 -0
- package/.claude/skills/investigate/phases/04-implementation.md +139 -0
- package/.claude/skills/investigate/phases/05-verification-report.md +153 -0
- package/.claude/skills/investigate/specs/debug-report-format.md +226 -0
- package/.claude/skills/investigate/specs/iron-law.md +101 -0
- package/.claude/skills/security-audit/SKILL.md +125 -0
- package/.claude/skills/security-audit/phases/01-supply-chain-scan.md +139 -0
- package/.claude/skills/security-audit/phases/02-owasp-review.md +156 -0
- package/.claude/skills/security-audit/phases/03-threat-modeling.md +180 -0
- package/.claude/skills/security-audit/phases/04-report-tracking.md +177 -0
- package/.claude/skills/security-audit/specs/owasp-checklist.md +442 -0
- package/.claude/skills/security-audit/specs/scoring-gates.md +141 -0
- package/.claude/skills/ship/SKILL.md +105 -0
- package/.claude/skills/ship/phases/01-preflight-checks.md +121 -0
- package/.claude/skills/ship/phases/02-code-review.md +137 -0
- package/.claude/skills/ship/phases/03-version-bump.md +171 -0
- package/.claude/skills/ship/phases/04-changelog-commit.md +167 -0
- package/.claude/skills/ship/phases/05-pr-creation.md +163 -0
- package/.claude/skills/skill-generator/templates/sequential-phase.md +10 -0
- package/.claude/skills/skill-generator/templates/skill-md.md +4 -0
- package/.claude/skills/team-interactive-craft/SKILL.md +127 -0
- package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
- package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.claude/skills/team-motion-design/SKILL.md +129 -0
- package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
- package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
- package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
- package/.claude/skills/team-ui-polish/SKILL.md +127 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
- package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
- package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
- package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
- package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.claude/skills/team-uidesign/SKILL.md +6 -1
- package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
- package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
- package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
- package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
- package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
- package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
- package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
- package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
- package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
- package/.claude/skills/team-ux-improve/SKILL.md +3 -0
- package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
- package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
- package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
- package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
- package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
- package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
- package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
- package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
- package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
- package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
- package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
- package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
- package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/.codex/skills/investigate/agents/investigator.md +392 -0
- package/.codex/skills/investigate/orchestrator.md +362 -0
- package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
- package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
- package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
- package/.codex/skills/investigate/phases/04-implementation.md +195 -0
- package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
- package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
- package/.codex/skills/security-audit/orchestrator.md +384 -0
- package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
- package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
- package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
- package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
- package/.codex/skills/ship/agents/ship-operator.md +318 -0
- package/.codex/skills/ship/orchestrator.md +426 -0
- package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
- package/.codex/skills/ship/phases/02-code-review.md +228 -0
- package/.codex/skills/ship/phases/03-version-bump.md +259 -0
- package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
- package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
- package/.codex/skills/team-interactive-craft/SKILL.md +220 -0
- package/.codex/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.codex/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +162 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +233 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/role.md +209 -0
- package/.codex/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.codex/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.codex/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.codex/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.codex/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.codex/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.codex/skills/team-motion-design/SKILL.md +222 -0
- package/.codex/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.codex/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/dispatch.md +168 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/monitor.md +242 -0
- package/.codex/skills/team-motion-design/roles/coordinator/role.md +210 -0
- package/.codex/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.codex/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.codex/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.codex/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.codex/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.codex/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.codex/skills/team-motion-design/specs/team-config.json +99 -0
- package/.codex/skills/team-ui-polish/SKILL.md +218 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +167 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/monitor.md +230 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-ui-polish/roles/diagnostician/role.md +164 -0
- package/.codex/skills/team-ui-polish/roles/optimizer/role.md +229 -0
- package/.codex/skills/team-ui-polish/roles/scanner/role.md +360 -0
- package/.codex/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.codex/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.codex/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.codex/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.codex/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.codex/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.codex/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.codex/skills/team-visual-a11y/SKILL.md +319 -0
- package/.codex/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +188 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +281 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.codex/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.codex/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.codex/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.codex/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.codex/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.codex/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.codex/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.codex/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.codex/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/README.md +8 -0
- package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
- package/ccw/dist/core/hooks/hook-templates.js +114 -1
- package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
- package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/cli-routes.js +34 -0
- package/ccw/dist/core/routes/cli-routes.js.map +1 -1
- package/ccw/dist/core/routes/system-routes.js +2 -2
- package/ccw/dist/core/routes/system-routes.js.map +1 -1
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-BjP1ydDR.js} +2 -2
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-BjP1ydDR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-CAX3xqMf.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-CAX3xqMf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-CtWlmztq.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-CtWlmztq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-hR4a-eLX.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-hR4a-eLX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-DzNPkFN9.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-DzNPkFN9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BPEGN4TT.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BPEGN4TT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cf0r2RHY.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cf0r2RHY.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DEm1rJ4h.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DEm1rJ4h.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-BpeWw8HO.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-BpeWw8HO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-BEsmh2vF.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-BEsmh2vF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-B30SFdtU.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-B30SFdtU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-BVvMpg1O.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-BVvMpg1O.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-CL73dHbh.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-CL73dHbh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-BL-28lMZ.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-BL-28lMZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BzZDciHZ.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BzZDciHZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-CDp6-d8P.js} +2 -2
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-CDp6-d8P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-fZY_7O9n.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-fZY_7O9n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-4LJeC9bq.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-4LJeC9bq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-Bpigrbhw.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-Bpigrbhw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-BP0zJc1R.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-BP0zJc1R.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-CSt2oVKQ.js} +2 -2
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-CSt2oVKQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-B-xaMA0w.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-B-xaMA0w.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-CJqo_7DY.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-CJqo_7DY.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-ibZeQA-Y.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-ibZeQA-Y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-DgJ4ctPQ.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-DgJ4ctPQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-Cit0Yq0D.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-Cit0Yq0D.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-Ce1HDIK0.js} +2 -2
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-Ce1HDIK0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-J1KikNrk.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-J1KikNrk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CdBjTmth.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CdBjTmth.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-B9ZK7LvX.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-B9ZK7LvX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-CW_nS5UR.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-CW_nS5UR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SettingsPage-BPDbXPSM.js → SettingsPage-B2PYzSoO.js} +35 -35
- package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +1 -0
- package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js → SkillsManagerPage-CTnWrrwp.js} +2 -2
- package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js.map → SkillsManagerPage-CTnWrrwp.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DJpi9XQL.js} +2 -2
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DJpi9XQL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-Ac6Ov7uy.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-Ac6Ov7uy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-DZAAspqR.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-DZAAspqR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-BJkwfhIZ.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-BJkwfhIZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-BJgjxBgb.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-BJgjxBgb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-D1WekoOy.js} +2 -2
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-D1WekoOy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-DxemgIhF.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-DxemgIhF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-CjS83f1V.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-CjS83f1V.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-B5PUcn8I.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-B5PUcn8I.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-DCc9aPbb.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-DCc9aPbb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-DOwFtzak.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-DOwFtzak.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-96qH3aFh.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-96qH3aFh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CCxSuil1.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CCxSuil1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-CZNSJFdq.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-CZNSJFdq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-h8xtvw2_.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-h8xtvw2_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-D3NY0bm6.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-D3NY0bm6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-Cy2vkc8p.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-Cy2vkc8p.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-Bzq3U1Mx.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-Bzq3U1Mx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-DwuwPDPi.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-DwuwPDPi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-q9g-bknU.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-q9g-bknU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-CL6vb42J.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-CL6vb42J.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-BkrcQBly.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-BkrcQBly.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-BQbwyNeV.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-BQbwyNeV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-x5_7DrN7.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-x5_7DrN7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-DTyWXwzf.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-DTyWXwzf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-80O0kJO7.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-80O0kJO7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-DDlN2Bwa.js} +2 -2
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-DDlN2Bwa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-B9A3Hnrk.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-B9A3Hnrk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-Bs80iCX0.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-Bs80iCX0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index-mbeo62f8.js} +2 -2
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index-mbeo62f8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-rLgoBCfV.js} +3 -3
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-rLgoBCfV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-C1niOWJx.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-C1niOWJx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-BTmI7SUg.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-BTmI7SUg.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CB9HKeuZ.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CB9HKeuZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-koEYiemK.js} +2 -2
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-koEYiemK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-v2_GaLdC.js} +2 -2
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-v2_GaLdC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BQNfAqG_.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BQNfAqG_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-Dzq5LGg9.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-Dzq5LGg9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CtkoJXcz.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CtkoJXcz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-CH3smL37.js} +2 -2
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-CH3smL37.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CZ0aL_yF.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CZ0aL_yF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-F2A_J4l6.js} +2 -2
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-F2A_J4l6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-Byxot0YU.js} +2 -2
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-Byxot0YU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-JjqhUkpw.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-JjqhUkpw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2--SuN9rAt.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2--SuN9rAt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-BbngGB2h.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-BbngGB2h.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-CgrHgZSl.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-CgrHgZSl.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-BU3TQr7Z.js} +2 -2
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-BU3TQr7Z.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CKs7nnn3.js} +2 -2
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CKs7nnn3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-DW5tsDW6.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-DW5tsDW6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-BHm7w3ON.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-BHm7w3ON.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-DYR7PWwt.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-DYR7PWwt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-D0TVgQD_.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-D0TVgQD_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-DfY8mAP8.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-DfY8mAP8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-CGusDp0F.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-CGusDp0F.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-CIwh0fF1.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-CIwh0fF1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-FMyFv39K.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-FMyFv39K.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-B2qhsoTb.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-B2qhsoTb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-cxKXMBm3.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-cxKXMBm3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-B-xUT_z-.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-B-xUT_z-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-DZV_3lPr.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-DZV_3lPr.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +105 -105
- package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Scoring Guide
|
|
2
|
+
|
|
3
|
+
How to score each dimension consistently. Used by scanner for initial audit and verifier for re-assessment.
|
|
4
|
+
|
|
5
|
+
## Rating Bands (Total Score out of 36)
|
|
6
|
+
|
|
7
|
+
| Range | Rating | Description |
|
|
8
|
+
|-------|--------|-------------|
|
|
9
|
+
| 32-36 | Excellent | Distinctive, intentional design. Minimal or zero issues |
|
|
10
|
+
| 25-31 | Good | Solid design with minor polish opportunities |
|
|
11
|
+
| 18-24 | Acceptable | Functional but significant design work needed |
|
|
12
|
+
| 11-17 | Poor | Major overhaul required across multiple dimensions |
|
|
13
|
+
| 0-10 | Critical | AI slop gallery or fundamentally broken design |
|
|
14
|
+
|
|
15
|
+
## Per-Dimension Scoring (0-4)
|
|
16
|
+
|
|
17
|
+
### General Rubric
|
|
18
|
+
|
|
19
|
+
| Score | Criteria |
|
|
20
|
+
|-------|----------|
|
|
21
|
+
| 0 | Completely failing. Multiple major violations. Fundamental problems |
|
|
22
|
+
| 1 | Major gaps. 3-4 violations. Some effort but insufficient |
|
|
23
|
+
| 2 | Partial effort. 1-2 noticeable issues. Functional but not good |
|
|
24
|
+
| 3 | Mostly clean. Subtle issues only. Good with minor polish needed |
|
|
25
|
+
| 4 | Excellent. Genuinely distinctive/intentional. Meets all standards |
|
|
26
|
+
|
|
27
|
+
### Dimension 1: Anti-AI-Slop Detection
|
|
28
|
+
|
|
29
|
+
| Score | Criteria |
|
|
30
|
+
|-------|----------|
|
|
31
|
+
| 0 | 5+ AI slop tells present. Looks immediately AI-generated |
|
|
32
|
+
| 1 | 3-4 AI slop tells. Heavy AI influence obvious |
|
|
33
|
+
| 2 | 1-2 noticeable AI tells. Some templated elements |
|
|
34
|
+
| 3 | Subtle traces only. Mostly intentional design choices |
|
|
35
|
+
| 4 | Zero AI tells. Genuinely distinctive aesthetic. Would never guess AI-made |
|
|
36
|
+
|
|
37
|
+
### Dimension 2: Color Quality
|
|
38
|
+
|
|
39
|
+
| Score | Criteria |
|
|
40
|
+
|-------|----------|
|
|
41
|
+
| 0 | Multiple WCAG AA failures, pure black/white everywhere, hard-coded colors, no system |
|
|
42
|
+
| 1 | Some contrast issues, hard-coded colors, no token system, pure grays |
|
|
43
|
+
| 2 | Basic contrast OK, some OKLCH or tokens, but gaps (untinted grays, missing semantic colors) |
|
|
44
|
+
| 3 | Good color system with minor gaps (a few hard-coded values, imperfect 60-30-10) |
|
|
45
|
+
| 4 | OKLCH-based, fully tokenized, WCAG AA+ compliant, proper 60-30-10, semantic roles defined |
|
|
46
|
+
|
|
47
|
+
### Dimension 3: Typography Quality
|
|
48
|
+
|
|
49
|
+
| Score | Criteria |
|
|
50
|
+
|-------|----------|
|
|
51
|
+
| 0 | Generic font, no scale, body text <16px, no hierarchy |
|
|
52
|
+
| 1 | Overused font, muddy sizes (many close values), missing fluid sizing |
|
|
53
|
+
| 2 | Decent font choice but inconsistent scale or line-height issues |
|
|
54
|
+
| 3 | Good typography with minor gaps (missing clamp, slight rhythm inconsistencies) |
|
|
55
|
+
| 4 | Distinctive font, clear modular scale, fluid sizing, proper vertical rhythm, max-width on prose |
|
|
56
|
+
|
|
57
|
+
### Dimension 4: Spacing & Layout Quality
|
|
58
|
+
|
|
59
|
+
| Score | Criteria |
|
|
60
|
+
|-------|----------|
|
|
61
|
+
| 0 | Random spacing, nested cards, fixed widths, tiny touch targets |
|
|
62
|
+
| 1 | Some spacing pattern but many arbitrary values, cards overused |
|
|
63
|
+
| 2 | Decent spacing but monotonous rhythm or occasional arbitrary values |
|
|
64
|
+
| 3 | Good spacing system with minor gaps (occasional non-scale value, mostly gap usage) |
|
|
65
|
+
| 4 | Consistent scale, varied rhythm, gap for siblings, proper touch targets, no card nesting |
|
|
66
|
+
|
|
67
|
+
### Dimension 5: Motion & Animation Quality
|
|
68
|
+
|
|
69
|
+
| Score | Criteria |
|
|
70
|
+
|-------|----------|
|
|
71
|
+
| 0 | Layout animations, no reduced-motion, bounce easing, no system |
|
|
72
|
+
| 1 | Some transform-based but bad easing, missing reduced-motion |
|
|
73
|
+
| 2 | Decent animations but no token system or still missing reduced-motion |
|
|
74
|
+
| 3 | Good system with minor gaps (occasional ease default, missing exit animation) |
|
|
75
|
+
| 4 | Transform+opacity only, exponential easing, reduced-motion query, duration tokens, proper stagger |
|
|
76
|
+
|
|
77
|
+
### Dimension 6: Interaction States
|
|
78
|
+
|
|
79
|
+
| Score | Criteria |
|
|
80
|
+
|-------|----------|
|
|
81
|
+
| 0 | No hover, no focus, outline:none without replacement, no loading states |
|
|
82
|
+
| 1 | Basic hover but missing focus/active on many elements, no loading states |
|
|
83
|
+
| 2 | Hover + focus exist but no focus-visible, missing some states (disabled, error, empty) |
|
|
84
|
+
| 3 | Most states present with minor gaps (imperfect focus ring, missing empty state) |
|
|
85
|
+
| 4 | All 8 states implemented, focus-visible, proper focus ring, loading/error/success/empty states |
|
|
86
|
+
|
|
87
|
+
### Dimension 7: Visual Hierarchy
|
|
88
|
+
|
|
89
|
+
| Score | Criteria |
|
|
90
|
+
|-------|----------|
|
|
91
|
+
| 0 | Everything same visual weight, no clear primary action, fails squint test completely |
|
|
92
|
+
| 1 | Some size differences but no clear hierarchy system, multiple competing primary actions |
|
|
93
|
+
| 2 | Basic hierarchy via size but missing weight/color/space dimensions |
|
|
94
|
+
| 3 | Good hierarchy with minor issues (occasional visual competition, could be stronger) |
|
|
95
|
+
| 4 | Clear squint test pass, obvious primary action, multi-dimension hierarchy, progressive disclosure |
|
|
96
|
+
|
|
97
|
+
### Dimension 8: Responsive Design
|
|
98
|
+
|
|
99
|
+
| Score | Criteria |
|
|
100
|
+
|-------|----------|
|
|
101
|
+
| 0 | No responsive design, horizontal scroll, completely broken on mobile |
|
|
102
|
+
| 1 | Basic media queries but many breakage points, some fixed widths |
|
|
103
|
+
| 2 | Decent mobile but some fixed widths, small targets, or missing breakpoints |
|
|
104
|
+
| 3 | Good responsive with minor issues (missing container queries, occasional small target) |
|
|
105
|
+
| 4 | Fluid design, proper breakpoints, container queries, 44px targets, no overflow, adapted content |
|
|
106
|
+
|
|
107
|
+
### Dimension 9: Cognitive Load & UX Writing
|
|
108
|
+
|
|
109
|
+
| Score | Criteria |
|
|
110
|
+
|-------|----------|
|
|
111
|
+
| 0 | Information overload everywhere, no grouping, generic labels, useless error messages |
|
|
112
|
+
| 1 | Some grouping but >7 data groups visible, many generic labels, errors without fix guidance |
|
|
113
|
+
| 2 | Decent grouping but missing progressive disclosure, some generic buttons, partial error messages |
|
|
114
|
+
| 3 | Good information architecture with minor issues (occasional generic label, one missing empty state) |
|
|
115
|
+
| 4 | Clear progressive disclosure, verb+object labels, what+why+fix errors, guided empty states, proper grouping |
|
|
116
|
+
|
|
117
|
+
### Dimension 10: Dark Mode Quality (Conditional)
|
|
118
|
+
|
|
119
|
+
Only scored if dark mode exists. If no dark mode, this dimension is excluded from total.
|
|
120
|
+
|
|
121
|
+
| Score | Criteria |
|
|
122
|
+
|-------|----------|
|
|
123
|
+
| 0 | Pure black bg, no surface hierarchy, saturated colors vibrating, dangerous combos |
|
|
124
|
+
| 1 | Some dark surfaces but flat (same lightness), still using light-mode font weights |
|
|
125
|
+
| 2 | Basic surface hierarchy but still saturated accents or missing font weight reduction |
|
|
126
|
+
| 3 | Good dark mode with minor issues (occasional pure black, one dangerous combo) |
|
|
127
|
+
| 4 | Proper surface hierarchy (lighter=higher), desaturated accents, reduced font weights, tinted dark bg |
|
|
128
|
+
|
|
129
|
+
When dark mode exists: total out of 40, bands shift +4. When no dark mode: total out of 36.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Severity Mapping
|
|
134
|
+
|
|
135
|
+
| Severity | Definition | Score Correlation | Action |
|
|
136
|
+
|----------|-----------|-------------------|--------|
|
|
137
|
+
| P0 Blocking | Prevents use or violates law/standard. WCAG AA failure, missing focus, horizontal scroll on mobile, no viewport meta | Any dimension at 0 | Fix immediately, blocks release |
|
|
138
|
+
| P1 Major | Significant UX harm or near-violation. Pure black/white, missing hover, all buttons primary, muddy hierarchy | Any dimension at 1 | Fix before release |
|
|
139
|
+
| P2 Minor | Annoyance with workaround. No OKLCH, overused fonts, monotonous spacing, no container queries | Any dimension at 2 | Fix in next polish pass |
|
|
140
|
+
| P3 Polish | Nice-to-fix, minimal user impact. Missing exit animation, optical adjustments, font fallback metrics | Dimension at 3 with minor issues | Fix when convenient |
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Scoring Process
|
|
145
|
+
|
|
146
|
+
1. For each dimension, go through every checklist item in the scanner audit
|
|
147
|
+
2. Count the number and severity of violations found
|
|
148
|
+
3. Apply the dimension-specific rubric to assign 0-4
|
|
149
|
+
4. Sum all 8 dimensions for total (0-32)
|
|
150
|
+
5. Apply rating band
|
|
151
|
+
|
|
152
|
+
### Tie-Breaking Rules
|
|
153
|
+
- If between two scores, the presence of any P0 issue in that dimension rounds down
|
|
154
|
+
- If between two scores with no P0, consider the count of P1 issues
|
|
155
|
+
- When in doubt, score lower (conservative) -- it is better to fix something unnecessary than miss something important
|
|
156
|
+
|
|
157
|
+
### Verification Scoring
|
|
158
|
+
When verifier re-scores after optimization:
|
|
159
|
+
- Use identical checklist and rubric as original scan
|
|
160
|
+
- Score independently (do not adjust based on "how much improved")
|
|
161
|
+
- Report both absolute score and delta from original
|
|
162
|
+
- Flag any dimension where score decreased (regression)
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"team_name": "ui-polish",
|
|
3
|
+
"team_display_name": "UI Polish",
|
|
4
|
+
"description": "Auto-discover and fix UI design issues using Impeccable design standards",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
|
|
7
|
+
"roles": {
|
|
8
|
+
"coordinator": {
|
|
9
|
+
"task_prefix": null,
|
|
10
|
+
"responsibility": "Pipeline orchestration, scope assessment, GC loop management",
|
|
11
|
+
"message_types": ["task_unblocked", "gc_checkpoint", "fix_required", "error", "shutdown"]
|
|
12
|
+
},
|
|
13
|
+
"scanner": {
|
|
14
|
+
"task_prefix": "SCAN",
|
|
15
|
+
"responsibility": "8-dimension UI audit using Impeccable design standards",
|
|
16
|
+
"message_types": ["scan_complete", "scan_progress", "error"]
|
|
17
|
+
},
|
|
18
|
+
"diagnostician": {
|
|
19
|
+
"task_prefix": "DIAG",
|
|
20
|
+
"responsibility": "Root cause analysis, severity classification, fix prioritization",
|
|
21
|
+
"message_types": ["diag_complete", "diag_progress", "error"]
|
|
22
|
+
},
|
|
23
|
+
"optimizer": {
|
|
24
|
+
"task_prefix": "OPT",
|
|
25
|
+
"responsibility": "Apply targeted fixes following Impeccable design standards",
|
|
26
|
+
"message_types": ["opt_complete", "opt_progress", "error"]
|
|
27
|
+
},
|
|
28
|
+
"verifier": {
|
|
29
|
+
"task_prefix": "VERIFY",
|
|
30
|
+
"responsibility": "Before/after comparison, regression detection",
|
|
31
|
+
"message_types": ["verify_passed", "verify_failed", "fix_required", "error"]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
"pipelines": {
|
|
36
|
+
"scan-only": {
|
|
37
|
+
"description": "Discover + diagnose, no fixes (report only)",
|
|
38
|
+
"task_chain": ["SCAN-001", "DIAG-001"],
|
|
39
|
+
"complexity": "low"
|
|
40
|
+
},
|
|
41
|
+
"targeted": {
|
|
42
|
+
"description": "Fix specific dimensions only",
|
|
43
|
+
"task_chain": ["SCAN-001", "DIAG-001", "OPT-001", "VERIFY-001"],
|
|
44
|
+
"complexity": "medium"
|
|
45
|
+
},
|
|
46
|
+
"full": {
|
|
47
|
+
"description": "Complete polish cycle with GC loop",
|
|
48
|
+
"task_chain": ["SCAN-001", "DIAG-001", "OPT-001", "VERIFY-001"],
|
|
49
|
+
"gc_loop": true,
|
|
50
|
+
"complexity": "high"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
"innovation_patterns": {
|
|
55
|
+
"generator_critic": {
|
|
56
|
+
"generator": "optimizer",
|
|
57
|
+
"critic": "verifier",
|
|
58
|
+
"max_rounds": 2,
|
|
59
|
+
"convergence": "verify.regressions === 0 && verify.score_delta >= 0",
|
|
60
|
+
"escalation": "Coordinator intervenes after max rounds"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
"session_dirs": {
|
|
65
|
+
"base": ".workflow/.team/UIP-{slug}-{YYYY-MM-DD}/",
|
|
66
|
+
"scan": "scan/",
|
|
67
|
+
"diagnosis": "diagnosis/",
|
|
68
|
+
"optimization": "optimization/",
|
|
69
|
+
"verification": "verification/",
|
|
70
|
+
"evidence": "evidence/",
|
|
71
|
+
"messages": ".workflow/.team-msg/{team-name}/"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -89,6 +89,10 @@ Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5
|
|
|
89
89
|
## Specs Reference
|
|
90
90
|
|
|
91
91
|
- [specs/pipelines.md](specs/pipelines.md) — Pipeline definitions and task registry
|
|
92
|
+
- [specs/design-standards.md](specs/design-standards.md) — Impeccable design standards (OKLCH, typography, spacing, motion, interaction)
|
|
93
|
+
- [specs/anti-patterns.md](specs/anti-patterns.md) — AI slop detection catalog (20 items)
|
|
94
|
+
- [specs/scoring-guide.md](specs/scoring-guide.md) — 8-dimension quality scoring rubric
|
|
95
|
+
- [specs/ux-writing.md](specs/ux-writing.md) — UX writing standards (labels, errors, empty states, voice)
|
|
92
96
|
|
|
93
97
|
## Session Directory
|
|
94
98
|
|
|
@@ -101,7 +105,8 @@ Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5
|
|
|
101
105
|
│ ├── design-system-analysis.json
|
|
102
106
|
│ ├── component-inventory.json
|
|
103
107
|
│ ├── accessibility-audit.json
|
|
104
|
-
│
|
|
108
|
+
│ ├── design-intelligence.json
|
|
109
|
+
│ └── visual-quality-baseline.json
|
|
105
110
|
├── design/ # Designer output
|
|
106
111
|
│ ├── design-tokens.json
|
|
107
112
|
│ ├── component-specs/
|
|
@@ -28,16 +28,35 @@ Define visual language through design tokens (W3C Design Tokens Format) and comp
|
|
|
28
28
|
|
|
29
29
|
**Token System Design (DESIGN-001)**:
|
|
30
30
|
- Define complete token system following W3C Design Tokens Format
|
|
31
|
-
- 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)
|
|
31
|
+
- 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), Motion Easing, Motion Duration, Motion Stagger
|
|
32
|
+
- **Color tokens MUST use OKLCH values** (reference `specs/design-standards.md` Color section)
|
|
33
|
+
- Neutrals: tint toward brand hue with chroma 0.005-0.01 (never pure gray)
|
|
34
|
+
- Add semantic colors: success (oklch hue 145), warning (hue 85), error (hue 25), info (hue 250)
|
|
35
|
+
- **Typography**: choose from recommended fonts (Instrument Sans, Plus Jakarta Sans, DM Sans, Space Grotesk, Fraunces -- NOT Inter/Roboto/Open Sans/Lato/Montserrat/Arial), apply modular scale ratio, define fluid `clamp()` values for display sizes
|
|
36
|
+
- **Spacing**: follow 4pt scale (0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 96)
|
|
37
|
+
- **Motion tokens**: define easing (ease-out-quart `cubic-bezier(0.25, 1, 0.5, 1)` as default), duration scale (instant 100ms, fast 150ms, normal 250ms, slow 400ms, entrance 500ms, complex 800ms), reduced-motion strategy
|
|
32
38
|
- All color tokens must have light/dark variants using `$value: { light: ..., dark: ... }`
|
|
33
39
|
- Integrate design intelligence: recommended.colors -> color tokens, recommended.typography -> font stacks
|
|
34
40
|
- Document anti-patterns from design intelligence for implementer reference
|
|
41
|
+
- Output categories must include: color, typography, spacing, shadow, border, breakpoint, motion_easing, motion_duration, motion_stagger
|
|
35
42
|
- Output: `<session>/design/design-tokens.json`
|
|
36
43
|
|
|
37
44
|
**Component Specification (DESIGN-002)**:
|
|
38
45
|
- Define component specs consuming design tokens
|
|
39
|
-
- Each spec contains: Overview (type: atom/molecule/organism, purpose), Design Tokens Consumed (token -> usage -> value reference), States (
|
|
40
|
-
-
|
|
46
|
+
- Each spec contains: Overview (type: atom/molecule/organism, purpose), Design Tokens Consumed (token -> usage -> value reference), States (**all 8 required**), Responsive Behavior (changes per breakpoint), Accessibility (role, ARIA, keyboard, focus indicator, contrast), Variants, Anti-Patterns, Implementation Hints, Visual Hierarchy Notes (where component sits in hierarchy, CTA level: primary/secondary/tertiary)
|
|
47
|
+
- **8 interaction states required** (reference `specs/design-standards.md` Interaction States):
|
|
48
|
+
- Default: base appearance
|
|
49
|
+
- Hover: subtle bg/opacity change, wrap in `@media(hover:hover)` guard
|
|
50
|
+
- Focus: `:focus-visible` with `outline: 2px solid var(--color-primary); outline-offset: 2px` (NOT bare `:focus`)
|
|
51
|
+
- Active: `scale(0.97)` or darker background
|
|
52
|
+
- Disabled: `opacity 0.5, cursor: not-allowed` via `[disabled], [aria-disabled="true"]`
|
|
53
|
+
- Loading: spinner/skeleton via `[aria-busy="true"]`
|
|
54
|
+
- Error: red border + message via `[aria-invalid="true"]`
|
|
55
|
+
- Success: green check + message
|
|
56
|
+
- Touch targets: minimum 44x44px for all interactive components
|
|
57
|
+
- UX Writing: button labels (verb+object), error message templates (what+why+fix), empty state copy pattern, loading text pattern. Reference `specs/ux-writing.md`
|
|
58
|
+
- Dark Mode: if light+dark tokens, ensure dark mode follows rules: lighter surfaces for depth, reduced font weight, desaturated accents
|
|
59
|
+
- Elevation: specify z-index layer for overlay/popup components using semantic scale (reference `specs/design-standards.md` Elevation)
|
|
41
60
|
- Output: `<session>/design/component-specs/{component-name}.md`
|
|
42
61
|
|
|
43
62
|
**GC Fix Mode (DESIGN-fix-N)**:
|
|
@@ -60,10 +79,15 @@ Define visual language through design tokens (W3C Design Tokens Format) and comp
|
|
|
60
79
|
|
|
61
80
|
| Check | Pass Criteria |
|
|
62
81
|
|-------|---------------|
|
|
63
|
-
|
|
|
82
|
+
| eight_states | All 8 states (default/hover/focus/active/disabled/loading/error/success) defined |
|
|
64
83
|
| a11y_specified | Role, ARIA, keyboard behavior defined |
|
|
65
84
|
| responsive_defined | At least mobile/desktop breakpoints |
|
|
66
85
|
| token_refs_valid | All `{token.path}` references resolve to defined tokens |
|
|
86
|
+
| oklch_used | All color values use OKLCH notation |
|
|
87
|
+
| no_generic_fonts | Primary font not in generic list (Inter/Roboto/Open Sans/Lato/Montserrat/Arial) |
|
|
88
|
+
| motion_tokens_present | Easing + duration tokens defined in token system |
|
|
89
|
+
| reduced_motion | Reduced motion strategy documented |
|
|
90
|
+
| ux_writing_specified | Button labels are verb+object, error/empty/loading text patterns defined |
|
|
67
91
|
|
|
68
92
|
3. Update `<session>/wisdom/.msg/meta.json` under `designer` namespace:
|
|
69
93
|
- Read existing -> merge `{ "designer": { task_type, token_categories, component_count, style_decisions } }` -> write back
|
|
@@ -34,6 +34,18 @@ Translate design tokens and component specifications into production code. Gener
|
|
|
34
34
|
- `tokens.css`: CSS custom properties with `:root` (light) and `[data-theme="dark"]` selectors, plus `@media (prefers-color-scheme: dark)` fallback
|
|
35
35
|
- `tokens.ts`: TypeScript constants and types for programmatic access with autocomplete support
|
|
36
36
|
- `README.md`: Token usage guide
|
|
37
|
+
- **Color tokens**: generate OKLCH values in CSS custom properties (no hex/rgb)
|
|
38
|
+
- **Motion tokens**: generate easing + duration custom properties + reduced-motion query:
|
|
39
|
+
```css
|
|
40
|
+
--easing-default: cubic-bezier(0.25, 1, 0.5, 1);
|
|
41
|
+
--duration-instant: 100ms;
|
|
42
|
+
--duration-fast: 150ms;
|
|
43
|
+
/* ... */
|
|
44
|
+
@media (prefers-reduced-motion: reduce) { /* ... */ }
|
|
45
|
+
```
|
|
46
|
+
- **Spacing**: 4pt scale custom properties (--space-0 through --space-24)
|
|
47
|
+
- Z-index tokens: generate semantic z-index custom properties (`--z-dropdown` through `--z-tooltip`)
|
|
48
|
+
- Dark mode: ensure dark theme uses lighter surfaces for depth, reduced font weight references
|
|
37
49
|
- All color tokens must have both light and dark values
|
|
38
50
|
- Semantic token names must match design token definitions
|
|
39
51
|
|
|
@@ -44,9 +56,16 @@ Translate design tokens and component specifications into production code. Gener
|
|
|
44
56
|
- `{ComponentName}.css`: Styles consuming tokens via `var(--token-name)` only
|
|
45
57
|
- `{ComponentName}.test.tsx`: Basic render + state tests
|
|
46
58
|
- `index.ts`: Re-export
|
|
47
|
-
- Requirements: no hardcoded colors/spacing (use design tokens), implement all
|
|
59
|
+
- Requirements: no hardcoded colors/spacing (use design tokens), implement **all 8 states**, add ARIA attributes per spec, support responsive breakpoints, follow project component patterns
|
|
60
|
+
- **Focus**: use `:focus-visible` not bare `:focus`. Spec: `outline: 2px solid var(--color-primary); outline-offset: 2px; border-radius: inherit`
|
|
61
|
+
- **Hover**: wrap in `@media(hover:hover)` guard
|
|
62
|
+
- **Animation**: transform+opacity only (NEVER width/height/margin/padding), use motion tokens for easing and duration, add reduced-motion fallback via `@media (prefers-reduced-motion: reduce)`
|
|
63
|
+
- **Touch targets**: 44x44px minimum for all interactive elements, 8px gap between adjacent targets
|
|
48
64
|
- Accessibility: keyboard navigation, screen reader support, visible focus indicators, WCAG AA contrast
|
|
49
|
-
-
|
|
65
|
+
- Responsive images: use `srcset` with width descriptors + `sizes` attribute for content images. Use `<picture>` for art direction
|
|
66
|
+
- Input method: beyond `@media(hover:hover)`, also use `@media(pointer:coarse)` for touch-specific adjustments (larger targets, simpler hover alternatives)
|
|
67
|
+
- UX writing: implement button labels, error messages, empty states as specified in component spec. No generic "OK/Cancel"
|
|
68
|
+
- Check implementation against design intelligence anti_patterns and `specs/anti-patterns.md`
|
|
50
69
|
|
|
51
70
|
## Phase 4: Validation & Output
|
|
52
71
|
|
|
@@ -64,9 +83,12 @@ Translate design tokens and component specifications into production code. Gener
|
|
|
64
83
|
|-------|---------------|
|
|
65
84
|
| File existence | At least 3 files per component (component, style, index) |
|
|
66
85
|
| No hardcoded values | No `#xxx` or `rgb()` in component CSS (only in tokens.css) |
|
|
67
|
-
|
|
|
86
|
+
| focus_visible_used | Uses `:focus-visible` not bare `:focus` |
|
|
68
87
|
| Responsive | `@media` queries present |
|
|
69
88
|
| Anti-pattern clean | No violations of design intelligence anti_patterns |
|
|
89
|
+
| no_layout_animations | No width/height/margin/padding animations (transform+opacity only) |
|
|
90
|
+
| reduced_motion_present | `@media (prefers-reduced-motion: reduce)` exists in stylesheets |
|
|
91
|
+
| touch_targets | Interactive elements >= 44x44px (min-width/min-height or padding) |
|
|
70
92
|
|
|
71
93
|
3. Update `<session>/wisdom/.msg/meta.json` under `implementer` namespace:
|
|
72
94
|
- Read existing -> merge `{ "implementer": { build_type, file_count, output_dir, components_built } }` -> write back
|
|
@@ -31,6 +31,11 @@ Analyze existing design system, build component inventory, assess accessibility
|
|
|
31
31
|
|
|
32
32
|
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
|
|
33
33
|
4. Read industry context from session config (industry, strictness, must-have features)
|
|
34
|
+
5. **Context-First Protocol**: Before any design work, ensure these are known (extract from task description, or ask coordinator to clarify):
|
|
35
|
+
- **Target audience**: Who uses it, in what context? (e.g., developers, end users, admins)
|
|
36
|
+
- **Use cases**: What jobs are they doing? (e.g., data entry, monitoring, content creation)
|
|
37
|
+
- **Brand personality**: How should it feel? (e.g., professional, playful, technical, luxurious)
|
|
38
|
+
- If not provided in task description, flag as `context_missing` in output — designer cannot make good decisions without this
|
|
34
39
|
|
|
35
40
|
## Phase 3: Research Execution
|
|
36
41
|
|
|
@@ -41,6 +46,8 @@ Execute 4 analysis streams:
|
|
|
41
46
|
- Identify styling patterns (CSS-in-JS, CSS modules, utility classes, SCSS)
|
|
42
47
|
- Map color palette, typography scale, spacing system
|
|
43
48
|
- Find component library usage (MUI, Ant Design, shadcn, custom)
|
|
49
|
+
- Check dark mode implementation quality: surface hierarchy, font weight adjustments, accent desaturation
|
|
50
|
+
- Check z-index patterns: arbitrary values vs semantic scale
|
|
44
51
|
- Output: `<session>/research/design-system-analysis.json`
|
|
45
52
|
|
|
46
53
|
**Stream 2 -- Component Inventory**:
|
|
@@ -63,11 +70,22 @@ Execute 4 analysis streams:
|
|
|
63
70
|
- Degradation: when unavailable, use LLM general knowledge, mark `_source: "llm-general-knowledge"`
|
|
64
71
|
- Output: `<session>/research/design-intelligence.json`
|
|
65
72
|
|
|
66
|
-
|
|
73
|
+
**Stream 5 -- Visual Quality Baseline**:
|
|
74
|
+
- Scan for AI slop tells (reference `specs/anti-patterns.md`): check for P1 items (AI color palette, gradient text, glassmorphism, all-buttons-primary, pure black/white)
|
|
75
|
+
- Check color system: OKLCH usage, pure black/white (`#000`/`#fff`), tinted neutrals (chroma 0.005-0.01), 60-30-10 distribution
|
|
76
|
+
- Check typography: font choices (flag Inter/Roboto/Open Sans/Lato/Montserrat/Arial), modular scale presence, fluid `clamp()` usage
|
|
77
|
+
- Check spacing: 4pt scale adherence, `gap` vs `margin` usage ratio, nested cards detection
|
|
78
|
+
- Check motion: easing values (flag `bounce`/`elastic`/`linear`/`ease`), `prefers-reduced-motion` query presence, `will-change` in CSS (should not be permanent)
|
|
79
|
+
- Check interaction states: count distinct states per interactive component (target: 8 per `specs/design-standards.md`)
|
|
80
|
+
- Check UX writing quality: generic button labels (OK/Submit/Cancel), error messages without fix guidance, empty states without actions
|
|
81
|
+
- Check dark mode: pure black backgrounds, non-desaturated accents, same font weights as light
|
|
82
|
+
- Output: `<session>/research/visual-quality-baseline.json`
|
|
83
|
+
|
|
84
|
+
Compile research summary metrics: design_system_exists, styling_approach, total_components, accessibility_level, design_intelligence_source, anti_patterns_count, visual_quality_score.
|
|
67
85
|
|
|
68
86
|
## Phase 4: Validation & Output
|
|
69
87
|
|
|
70
|
-
1. Verify all
|
|
88
|
+
1. Verify all 5 output files exist and contain valid JSON with required fields:
|
|
71
89
|
|
|
72
90
|
| File | Required Fields |
|
|
73
91
|
|------|----------------|
|
|
@@ -75,6 +93,7 @@ Compile research summary metrics: design_system_exists, styling_approach, total_
|
|
|
75
93
|
| component-inventory.json | components array |
|
|
76
94
|
| accessibility-audit.json | wcag_level |
|
|
77
95
|
| design-intelligence.json | _source, design_system |
|
|
96
|
+
| visual-quality-baseline.json | slop_tells, color_system, typography, spacing, motion, interaction_states |
|
|
78
97
|
|
|
79
98
|
2. If any file missing or invalid, re-run corresponding stream
|
|
80
99
|
|
|
@@ -27,39 +27,41 @@ Audit design tokens and component specs for consistency, accessibility complianc
|
|
|
27
27
|
|
|
28
28
|
## Phase 3: Audit Execution
|
|
29
29
|
|
|
30
|
-
Score
|
|
30
|
+
Score 8 dimensions on 0-4 scale (reference `specs/scoring-guide.md`). Total: 0-32.
|
|
31
31
|
|
|
32
32
|
| Dimension | Weight | Focus |
|
|
33
33
|
|-----------|--------|-------|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
34
|
+
| Anti-AI-Slop | 10% | AI slop tells detection (reference `specs/anti-patterns.md`) |
|
|
35
|
+
| Color Quality | 15% | OKLCH usage, tinted neutrals, 60-30-10, WCAG AA contrast, token hierarchy, dark mode surface hierarchy (lighter = higher elevation), dangerous color combinations (gray-on-color, red-green, yellow-white) |
|
|
36
|
+
| Typography Quality | 15% | Distinctive fonts, modular scale, fluid clamp(), line-height, reading width, OpenType features usage (tabular numbers for data, proper ligatures) |
|
|
37
|
+
| Spacing & Layout | 12.5% | 4pt scale, rhythm variation, gap over margin, no nested cards, touch targets |
|
|
38
|
+
| Motion & Animation | 10% | Transform+opacity only, exponential easing, duration tokens, reduced-motion |
|
|
39
|
+
| Interaction States | 15% | All 8 states, focus-visible, focus ring spec, loading/error/success, UX writing quality: button labels (verb+object), error messages (what+why+fix), empty states |
|
|
40
|
+
| Visual Hierarchy | 10% | Squint test, single primary CTA, progressive disclosure, size/weight hierarchy |
|
|
41
|
+
| Responsive | 12.5% | Fluid design, container queries, mobile requirements, adapt don't hide |
|
|
39
42
|
|
|
40
|
-
**Token Audit**:
|
|
43
|
+
**Token Audit**: OKLCH color values, tinted neutrals (chroma 0.005-0.01), no pure black/white, semantic token hierarchy (primitive->semantic->component), theme completeness (light+dark), contrast ratios (text >= 4.5:1, large text >= 3:1), distinctive font choice, modular scale ratio, fluid clamp() values, 4pt spacing scale, motion easing + duration tokens, reduced-motion strategy.
|
|
41
44
|
|
|
42
|
-
**Component Audit**:
|
|
45
|
+
**Component Audit**: All 8 interaction states present, `:focus-visible` (not bare `:focus`), hover in `@media(hover:hover)`, active `scale(0.97)`, loading/error/success states with ARIA, touch targets >= 44x44px, token references resolve, CTA hierarchy (primary/secondary/tertiary), no layout property animations.
|
|
43
46
|
|
|
44
|
-
**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).
|
|
45
|
-
|
|
46
|
-
**Score calculation**: `overallScore = round(consistency*0.20 + accessibility*0.25 + completeness*0.20 + quality*0.15 + industryCompliance*0.20)`
|
|
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), anti-pattern scan across all outputs.
|
|
47
48
|
|
|
48
49
|
**Signal determination**:
|
|
49
50
|
|
|
50
51
|
| Condition | Signal |
|
|
51
52
|
|-----------|--------|
|
|
52
|
-
| Score >=
|
|
53
|
-
| Score >=
|
|
54
|
-
| Score <
|
|
53
|
+
| Score >= 26 AND no dimension at 0 | `audit_passed` (GC CONVERGED) |
|
|
54
|
+
| Score >= 20 AND no dimension at 0 | `audit_result` (REVISION NEEDED) |
|
|
55
|
+
| Score < 20 OR any dimension at 0 | `fix_required` (CRITICAL) |
|
|
55
56
|
|
|
56
57
|
## Phase 4: Report & Output
|
|
57
58
|
|
|
58
59
|
1. Write audit report to `<session>/audit/audit-{NNN}.md`:
|
|
59
|
-
- Summary: overall score, signal,
|
|
60
|
+
- Summary: overall score (out of 32), signal, rating band (Excellent/Good/Acceptable/Poor/Critical)
|
|
60
61
|
- Sync Point Status (if applicable): PASSED/BLOCKED
|
|
61
|
-
- Dimension Scores table (
|
|
62
|
-
-
|
|
62
|
+
- 8-Dimension Scores table: Anti-AI-Slop, Color Quality, Typography Quality, Spacing & Layout, Motion & Animation, Interaction States, Visual Hierarchy, Responsive (each 0-4 with weight and weighted score)
|
|
63
|
+
- P0/P1/P2/P3 issues with descriptions, locations, fix suggestions, mapped to dimensions
|
|
64
|
+
- Anti-pattern detections (reference `specs/anti-patterns.md` item numbers)
|
|
63
65
|
- GC Loop Status: signal, action required
|
|
64
66
|
- Trend analysis (if audit_history exists): improving/stable/declining
|
|
65
67
|
|