claude-code-workflow 7.2.27 → 7.2.29
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/brainstorm/SKILL.md +3 -3
- package/.codex/skills/clean/SKILL.md +3 -3
- 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/issue-discover/SKILL.md +13 -13
- package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
- package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
- package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
- package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
- package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
- package/.codex/skills/review-cycle/SKILL.md +10 -10
- package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
- package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
- package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
- package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
- package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
- package/.codex/skills/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/spec-generator/README.md +1 -1
- package/.codex/skills/spec-generator/SKILL.md +184 -88
- package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
- package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
- package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
- package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
- package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
- package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
- package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
- package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
- package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
- package/.codex/skills/spec-setup/SKILL.md +4 -4
- package/.codex/skills/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/.codex/skills/workflow-plan/SKILL.md +6 -6
- package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
- package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
- package/README.md +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-exlTDW81.js} +3 -3
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-exlTDW81.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-cgV9LfAI.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-Be9xsPiv.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BrE-oyEq.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cd3nrC93.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DXFl3VKF.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-CpDxtmRX.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-BchjWe7s.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-CbWvaJ0y.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-YMjVRiCk.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BtqzqDVq.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-BuWpQ7k5.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-D0BtMIWy.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-C7dwsAKG.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-D0nCNaeB.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-C-S5CehM.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-P_B0JVUQ.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-S4Jn9LUE.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-YEMjFARX.js} +3 -3
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-DnTm55nG.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CUwebtO2.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-BpgP4087.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-BpgP4087.js.map} +1 -1
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-CYSPdqWk.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-CYSPdqWk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-CPh6Zor1.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-Ds-8830B.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-CJODUxBk.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-CJODUxBk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-CjwVpw6k.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-CjwVpw6k.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-2vZa9Ic3.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-CUU5XDgT.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-BwpSRDUa.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-BwpSRDUa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-DBzUW1XC.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-DBzUW1XC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CGNNsjvE.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-D27G86Ul.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-D27G86Ul.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-C6MOB7Au.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-C6MOB7Au.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-BxfBlZ26.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-BxfBlZ26.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-NI237wA-.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-NI237wA-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-Byn2_2v6.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-Byn2_2v6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-D-7PhZjx.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-D-7PhZjx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-BoAsK_FL.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-BoAsK_FL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-DCSxJIS4.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-DCSxJIS4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-CHS3prza.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-CHS3prza.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-D7K35U7S.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-eq9xE07G.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-eq9xE07G.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-C1DMpBua.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-C1DMpBua.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-Di5SBCY-.js} +2 -2
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-Di5SBCY-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index--_R7COnA.js} +2 -2
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index--_R7COnA.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-BUol9HDD.js} +3 -3
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-BUol9HDD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-CT9oykfw.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-CT9oykfw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-Ddwvf87H.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-Ddwvf87H.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-LiX0qZbN.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-CL3DVEwb.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CC5cFeq6.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CC5cFeq6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-ngFQ9bs0.js} +2 -2
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-ngFQ9bs0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-BEU6I0KK.js} +2 -2
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-BEU6I0KK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BWZdLA6y.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BWZdLA6y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-K6_Chm7n.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-K6_Chm7n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CWkphauf.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CWkphauf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-DrNgkamn.js} +2 -2
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-DrNgkamn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CMo3sw5_.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CMo3sw5_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-DppNTW5e.js} +2 -2
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-DppNTW5e.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-CD8aPMbZ.js} +2 -2
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-CD8aPMbZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-B4z90fQD.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-B4z90fQD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2-CAKRU_QC.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2-CAKRU_QC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-KhI3HrzX.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-BtdGIpuq.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-BtdGIpuq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-ZoBUkXoD.js} +2 -2
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-ZoBUkXoD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CltxQP-P.js} +2 -2
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CltxQP-P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-C32OUSGf.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-C32OUSGf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-0IxoyAVZ.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-4eKCkyBn.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-4eKCkyBn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-zLTUWqhi.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-BtN2vpOX.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-BtN2vpOX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-_spj49qL.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-_spj49qL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-Bm9KFZvd.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-DOmpm6v9.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-D2rj4rea.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-D2rj4rea.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-OskEpomF.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-OskEpomF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-BjMgsNSF.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-CLhyYWa7.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-CLhyYWa7.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 +0 -150
- package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
- package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js +0 -7
- package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.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
|
+
}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-visual-a11y
|
|
3
|
+
description: Unified team skill for visual accessibility QA. OKLCH color contrast, typography readability, focus management, WCAG AA/AAA audit at rendered level. Uses team-worker agent architecture. Triggers on "team visual a11y", "accessibility audit", "visual a11y".
|
|
4
|
+
allowed-tools: spawn_agent(*), wait_agent(*), send_message(*), assign_task(*), close_agent(*), list_agents(*), report_agent_job_result(*), request_user_input(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), mcp__ccw-tools__read_file(*), mcp__ccw-tools__write_file(*), mcp__ccw-tools__edit_file(*), mcp__ccw-tools__team_msg(*), mcp__chrome-devtools__evaluate_script(*), mcp__chrome-devtools__take_screenshot(*), mcp__chrome-devtools__emulate(*), mcp__chrome-devtools__lighthouse_audit(*), mcp__chrome-devtools__navigate_page(*), mcp__chrome-devtools__resize_page(*)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Team Visual Accessibility
|
|
8
|
+
|
|
9
|
+
Deep visual accessibility QA: OKLCH-based perceptual color contrast, typography readability at all viewports, focus-visible completeness, WCAG AA/AAA audit at rendered level. Built on **team-worker agent architecture** -- all worker roles share a single agent definition with role-specific Phase 2-4 loaded from `roles/<role>/role.md`.
|
|
10
|
+
|
|
11
|
+
## Architecture
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Skill(skill="team-visual-a11y", args="task description")
|
|
15
|
+
|
|
|
16
|
+
SKILL.md (this file) = Router
|
|
17
|
+
|
|
|
18
|
+
+--------------+--------------+
|
|
19
|
+
| |
|
|
20
|
+
no --role flag --role <name>
|
|
21
|
+
| |
|
|
22
|
+
Coordinator Worker
|
|
23
|
+
roles/coordinator/role.md roles/<name>/role.md
|
|
24
|
+
|
|
|
25
|
+
+-- analyze -> dispatch -> spawn workers -> STOP
|
|
26
|
+
|
|
|
27
|
+
+-------+-------+-------+
|
|
28
|
+
v v v |
|
|
29
|
+
[3 auditors spawn in PARALLEL] |
|
|
30
|
+
color-auditor typo-auditor focus-auditor
|
|
31
|
+
| | |
|
|
32
|
+
+---+---+---+---+
|
|
33
|
+
v
|
|
34
|
+
remediation-planner
|
|
35
|
+
|
|
|
36
|
+
v
|
|
37
|
+
fix-implementer (inner_loop)
|
|
38
|
+
|
|
|
39
|
+
v
|
|
40
|
+
[re-audit: color + focus in PARALLEL]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Role Registry
|
|
44
|
+
|
|
45
|
+
| Role | Path | Prefix | Inner Loop |
|
|
46
|
+
|------|------|--------|------------|
|
|
47
|
+
| coordinator | [roles/coordinator/role.md](roles/coordinator/role.md) | -- | -- |
|
|
48
|
+
| color-auditor | [roles/color-auditor/role.md](roles/color-auditor/role.md) | COLOR-* | false |
|
|
49
|
+
| typo-auditor | [roles/typo-auditor/role.md](roles/typo-auditor/role.md) | TYPO-* | false |
|
|
50
|
+
| focus-auditor | [roles/focus-auditor/role.md](roles/focus-auditor/role.md) | FOCUS-* | false |
|
|
51
|
+
| remediation-planner | [roles/remediation-planner/role.md](roles/remediation-planner/role.md) | REMED-* | false |
|
|
52
|
+
| fix-implementer | [roles/fix-implementer/role.md](roles/fix-implementer/role.md) | FIX-* | true |
|
|
53
|
+
|
|
54
|
+
## Role Router
|
|
55
|
+
|
|
56
|
+
Parse `$ARGUMENTS`:
|
|
57
|
+
- Has `--role <name>` -> Read `roles/<name>/role.md`, execute Phase 2-4
|
|
58
|
+
- No `--role` -> `roles/coordinator/role.md`, execute entry router
|
|
59
|
+
|
|
60
|
+
## Delegation Lock
|
|
61
|
+
|
|
62
|
+
**Coordinator is a PURE ORCHESTRATOR. It coordinates, it does NOT do.**
|
|
63
|
+
|
|
64
|
+
Before calling ANY tool, apply this check:
|
|
65
|
+
|
|
66
|
+
| Tool Call | Verdict | Reason |
|
|
67
|
+
|-----------|---------|--------|
|
|
68
|
+
| `spawn_agent`, `wait_agent`, `close_agent`, `send_message`, `assign_task` | ALLOWED | Orchestration |
|
|
69
|
+
| `list_agents` | ALLOWED | Agent health check |
|
|
70
|
+
| `request_user_input` | ALLOWED | User interaction |
|
|
71
|
+
| `mcp__ccw-tools__team_msg` | ALLOWED | Message bus |
|
|
72
|
+
| `Read/Write` on `.workflow/.team/` files | ALLOWED | Session state |
|
|
73
|
+
| `Read` on `roles/`, `commands/`, `specs/` | ALLOWED | Loading own instructions |
|
|
74
|
+
| `Read/Grep/Glob` on project source code | BLOCKED | Delegate to worker |
|
|
75
|
+
| `Edit` on any file outside `.workflow/` | BLOCKED | Delegate to worker |
|
|
76
|
+
| `Bash("ccw cli ...")` | BLOCKED | Only workers call CLI |
|
|
77
|
+
| `Bash` running build/test/lint commands | BLOCKED | Delegate to worker |
|
|
78
|
+
|
|
79
|
+
**If a tool call is BLOCKED**: STOP. Create a task, spawn a worker.
|
|
80
|
+
|
|
81
|
+
**No exceptions for "simple" tasks.** Even a single-file read-and-report MUST go through spawn_agent.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Shared Constants
|
|
86
|
+
|
|
87
|
+
- **Session prefix**: `VA`
|
|
88
|
+
- **Session path**: `.workflow/.team/VA-<slug>-<date>/`
|
|
89
|
+
- **team_name**: `visual-a11y`
|
|
90
|
+
- **CLI tools**: `ccw cli --mode analysis` (read-only), `ccw cli --mode write` (modifications)
|
|
91
|
+
- **Message bus**: `mcp__ccw-tools__team_msg(session_id=<session-id>, ...)`
|
|
92
|
+
- **Max GC rounds**: 2
|
|
93
|
+
|
|
94
|
+
## Worker Spawn Template
|
|
95
|
+
|
|
96
|
+
Coordinator spawns workers using this template:
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
spawn_agent({
|
|
100
|
+
agent_type: "team_worker",
|
|
101
|
+
task_name: "<task-id>",
|
|
102
|
+
fork_context: false,
|
|
103
|
+
items: [
|
|
104
|
+
{ type: "text", text: `## Role Assignment
|
|
105
|
+
role: <role>
|
|
106
|
+
role_spec: <skill_root>/roles/<role>/role.md
|
|
107
|
+
session: <session-folder>
|
|
108
|
+
session_id: <session-id>
|
|
109
|
+
requirement: <task-description>
|
|
110
|
+
inner_loop: <true|false>
|
|
111
|
+
|
|
112
|
+
Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.` },
|
|
113
|
+
|
|
114
|
+
{ type: "text", text: `## Task Context
|
|
115
|
+
task_id: <task-id>
|
|
116
|
+
title: <task-title>
|
|
117
|
+
description: <task-description>
|
|
118
|
+
pipeline_phase: <pipeline-phase>` },
|
|
119
|
+
|
|
120
|
+
{ type: "text", text: `## Upstream Context
|
|
121
|
+
<prev_context>` }
|
|
122
|
+
]
|
|
123
|
+
})
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Parallel Fan-in Spawn (3 Auditors)
|
|
127
|
+
|
|
128
|
+
The 3 auditors run in parallel. Spawn all 3, then wait for all 3:
|
|
129
|
+
|
|
130
|
+
```javascript
|
|
131
|
+
// Spawn 3 auditors in parallel
|
|
132
|
+
spawn_agent({
|
|
133
|
+
agent_type: "team_worker",
|
|
134
|
+
task_name: "COLOR-001",
|
|
135
|
+
fork_context: false,
|
|
136
|
+
items: [
|
|
137
|
+
{ type: "text", text: `## Role Assignment
|
|
138
|
+
role: color-auditor
|
|
139
|
+
role_spec: ${skillRoot}/roles/color-auditor/role.md
|
|
140
|
+
session: ${sessionFolder}
|
|
141
|
+
session_id: ${sessionId}
|
|
142
|
+
requirement: ${colorTaskDescription}
|
|
143
|
+
inner_loop: false
|
|
144
|
+
|
|
145
|
+
Read role_spec file to load Phase 2-4 domain instructions.` },
|
|
146
|
+
{ type: "text", text: `## Task Context
|
|
147
|
+
task_id: COLOR-001
|
|
148
|
+
title: OKLCH Color Contrast Audit
|
|
149
|
+
description: ${colorTaskDescription}
|
|
150
|
+
pipeline_phase: audit` }
|
|
151
|
+
]
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
spawn_agent({
|
|
155
|
+
agent_type: "team_worker",
|
|
156
|
+
task_name: "TYPO-001",
|
|
157
|
+
fork_context: false,
|
|
158
|
+
items: [
|
|
159
|
+
{ type: "text", text: `## Role Assignment
|
|
160
|
+
role: typo-auditor
|
|
161
|
+
role_spec: ${skillRoot}/roles/typo-auditor/role.md
|
|
162
|
+
session: ${sessionFolder}
|
|
163
|
+
session_id: ${sessionId}
|
|
164
|
+
requirement: ${typoTaskDescription}
|
|
165
|
+
inner_loop: false
|
|
166
|
+
|
|
167
|
+
Read role_spec file to load Phase 2-4 domain instructions.` },
|
|
168
|
+
{ type: "text", text: `## Task Context
|
|
169
|
+
task_id: TYPO-001
|
|
170
|
+
title: Typography Readability Audit
|
|
171
|
+
description: ${typoTaskDescription}
|
|
172
|
+
pipeline_phase: audit` }
|
|
173
|
+
]
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
spawn_agent({
|
|
177
|
+
agent_type: "team_worker",
|
|
178
|
+
task_name: "FOCUS-001",
|
|
179
|
+
fork_context: false,
|
|
180
|
+
items: [
|
|
181
|
+
{ type: "text", text: `## Role Assignment
|
|
182
|
+
role: focus-auditor
|
|
183
|
+
role_spec: ${skillRoot}/roles/focus-auditor/role.md
|
|
184
|
+
session: ${sessionFolder}
|
|
185
|
+
session_id: ${sessionId}
|
|
186
|
+
requirement: ${focusTaskDescription}
|
|
187
|
+
inner_loop: false
|
|
188
|
+
|
|
189
|
+
Read role_spec file to load Phase 2-4 domain instructions.` },
|
|
190
|
+
{ type: "text", text: `## Task Context
|
|
191
|
+
task_id: FOCUS-001
|
|
192
|
+
title: Focus & Keyboard Accessibility Audit
|
|
193
|
+
description: ${focusTaskDescription}
|
|
194
|
+
pipeline_phase: audit` }
|
|
195
|
+
]
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
// Wait for ALL 3 auditors to complete
|
|
199
|
+
wait_agent({ targets: ["COLOR-001", "TYPO-001", "FOCUS-001"], timeout_ms: 900000 })
|
|
200
|
+
|
|
201
|
+
// Close all 3
|
|
202
|
+
close_agent({ target: "COLOR-001" })
|
|
203
|
+
close_agent({ target: "TYPO-001" })
|
|
204
|
+
close_agent({ target: "FOCUS-001" })
|
|
205
|
+
|
|
206
|
+
// Then spawn remediation-planner with all 3 audit results as upstream context
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
After spawning, use `wait_agent({ targets: [...], timeout_ms: 900000 })` to collect results, then `close_agent({ target })` each worker.
|
|
210
|
+
|
|
211
|
+
### Model Selection Guide
|
|
212
|
+
|
|
213
|
+
Visual accessibility is a precision pipeline where auditors need thorough analysis and fix-implementer needs careful code changes.
|
|
214
|
+
|
|
215
|
+
| Role | reasoning_effort | Rationale |
|
|
216
|
+
|------|-------------------|-----------|
|
|
217
|
+
| color-auditor | high | OKLCH calculations, contrast ratio precision |
|
|
218
|
+
| typo-auditor | high | Multi-breakpoint analysis, clamp() validation |
|
|
219
|
+
| focus-auditor | high | ARIA patterns, keyboard navigation completeness |
|
|
220
|
+
| remediation-planner | high | Synthesize 3 audit reports into actionable plan |
|
|
221
|
+
| fix-implementer | medium | Implementation follows defined remediation plan |
|
|
222
|
+
|
|
223
|
+
### Audit-to-Remediation Context Flow
|
|
224
|
+
|
|
225
|
+
All 3 audit findings must reach remediation-planner via coordinator's upstream context:
|
|
226
|
+
```
|
|
227
|
+
// After COLOR-001 + TYPO-001 + FOCUS-001 all complete, coordinator sends findings to planner
|
|
228
|
+
spawn_agent({
|
|
229
|
+
agent_type: "team_worker",
|
|
230
|
+
task_name: "REMED-001",
|
|
231
|
+
fork_context: false,
|
|
232
|
+
items: [
|
|
233
|
+
...,
|
|
234
|
+
{ type: "text", text: `## Upstream Context
|
|
235
|
+
Color audit: <session>/audits/color/color-audit-001.md
|
|
236
|
+
Typography audit: <session>/audits/typography/typo-audit-001.md
|
|
237
|
+
Focus audit: <session>/audits/focus/focus-audit-001.md` }
|
|
238
|
+
]
|
|
239
|
+
})
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## User Commands
|
|
243
|
+
|
|
244
|
+
| Command | Action |
|
|
245
|
+
|---------|--------|
|
|
246
|
+
| `check` / `status` | View execution status graph |
|
|
247
|
+
| `resume` / `continue` | Advance to next step |
|
|
248
|
+
|
|
249
|
+
## Specs Reference
|
|
250
|
+
|
|
251
|
+
- [specs/pipelines.md](specs/pipelines.md) -- Pipeline definitions and task registry
|
|
252
|
+
- [specs/oklch-standards.md](specs/oklch-standards.md) -- OKLCH color accessibility rules
|
|
253
|
+
- [specs/wcag-matrix.md](specs/wcag-matrix.md) -- WCAG 2.1 criteria matrix
|
|
254
|
+
- [specs/typography-scale.md](specs/typography-scale.md) -- Typography accessibility rules
|
|
255
|
+
- [specs/focus-patterns.md](specs/focus-patterns.md) -- Focus management patterns
|
|
256
|
+
|
|
257
|
+
## Session Directory
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
.workflow/.team/VA-<slug>-<date>/
|
|
261
|
+
+-- .msg/
|
|
262
|
+
| +-- messages.jsonl # Team message bus
|
|
263
|
+
| +-- meta.json # Pipeline config + GC state
|
|
264
|
+
+-- audits/
|
|
265
|
+
| +-- color/ # Color auditor output
|
|
266
|
+
| | +-- color-audit-001.md
|
|
267
|
+
| +-- typography/ # Typography auditor output
|
|
268
|
+
| | +-- typo-audit-001.md
|
|
269
|
+
| +-- focus/ # Focus auditor output
|
|
270
|
+
| +-- focus-audit-001.md
|
|
271
|
+
+-- remediation/ # Remediation planner output
|
|
272
|
+
| +-- remediation-plan.md
|
|
273
|
+
+-- fixes/ # Fix implementer output
|
|
274
|
+
| +-- fix-summary-001.md
|
|
275
|
+
+-- re-audit/ # Re-audit output (GC loop)
|
|
276
|
+
| +-- color-audit-002.md
|
|
277
|
+
| +-- focus-audit-002.md
|
|
278
|
+
+-- evidence/ # Screenshots, traces
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## v4 Agent Coordination
|
|
282
|
+
|
|
283
|
+
### Message Semantics
|
|
284
|
+
|
|
285
|
+
| Intent | API | Example |
|
|
286
|
+
|--------|-----|---------|
|
|
287
|
+
| Queue supplementary info (don't interrupt) | `send_message` | Send audit findings to running remediation-planner |
|
|
288
|
+
| Assign new work from reviewed plan | `assign_task` | Assign FIX task after remediation plan ready |
|
|
289
|
+
| Check running agents | `list_agents` | Verify agent health during resume |
|
|
290
|
+
|
|
291
|
+
### Agent Health Check
|
|
292
|
+
|
|
293
|
+
Use `list_agents({})` in handleResume and handleComplete:
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
// Reconcile session state with actual running agents
|
|
297
|
+
const running = list_agents({})
|
|
298
|
+
// Compare with tasks.json active tasks
|
|
299
|
+
// Reset orphaned tasks (in_progress but agent gone) to pending
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Named Agent Targeting
|
|
303
|
+
|
|
304
|
+
Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
|
|
305
|
+
- `send_message({ target: "REMED-001", items: [...] })` -- send additional audit findings to remediation-planner
|
|
306
|
+
- `assign_task({ target: "FIX-001", items: [...] })` -- assign implementation from remediation plan
|
|
307
|
+
- `close_agent({ target: "COLOR-001" })` -- cleanup after color audit
|
|
308
|
+
|
|
309
|
+
## Error Handling
|
|
310
|
+
|
|
311
|
+
| Scenario | Resolution |
|
|
312
|
+
|----------|------------|
|
|
313
|
+
| Unknown command | Error with available command list |
|
|
314
|
+
| Role not found | Error with role registry |
|
|
315
|
+
| Session corruption | Attempt recovery, fallback to manual |
|
|
316
|
+
| Fast-advance conflict | Coordinator reconciles on next callback |
|
|
317
|
+
| Completion action fails | Default to Keep Active |
|
|
318
|
+
| GC loop stuck > 2 rounds | Escalate to user: accept / retry / terminate |
|
|
319
|
+
| Chrome DevTools unavailable | Degrade to static analysis only |
|