claude-code-workflow 7.2.26 → 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.
Files changed (408) hide show
  1. package/.ccw/specs/architecture-constraints.md +5 -0
  2. package/.claude/skills/_shared/SKILL-DESIGN-SPEC.md +140 -0
  3. package/.claude/skills/investigate/SKILL.md +110 -0
  4. package/.claude/skills/investigate/phases/01-root-cause-investigation.md +132 -0
  5. package/.claude/skills/investigate/phases/02-pattern-analysis.md +126 -0
  6. package/.claude/skills/investigate/phases/03-hypothesis-testing.md +177 -0
  7. package/.claude/skills/investigate/phases/04-implementation.md +139 -0
  8. package/.claude/skills/investigate/phases/05-verification-report.md +153 -0
  9. package/.claude/skills/investigate/specs/debug-report-format.md +226 -0
  10. package/.claude/skills/investigate/specs/iron-law.md +101 -0
  11. package/.claude/skills/security-audit/SKILL.md +125 -0
  12. package/.claude/skills/security-audit/phases/01-supply-chain-scan.md +139 -0
  13. package/.claude/skills/security-audit/phases/02-owasp-review.md +156 -0
  14. package/.claude/skills/security-audit/phases/03-threat-modeling.md +180 -0
  15. package/.claude/skills/security-audit/phases/04-report-tracking.md +177 -0
  16. package/.claude/skills/security-audit/specs/owasp-checklist.md +442 -0
  17. package/.claude/skills/security-audit/specs/scoring-gates.md +141 -0
  18. package/.claude/skills/ship/SKILL.md +105 -0
  19. package/.claude/skills/ship/phases/01-preflight-checks.md +121 -0
  20. package/.claude/skills/ship/phases/02-code-review.md +137 -0
  21. package/.claude/skills/ship/phases/03-version-bump.md +171 -0
  22. package/.claude/skills/ship/phases/04-changelog-commit.md +167 -0
  23. package/.claude/skills/ship/phases/05-pr-creation.md +163 -0
  24. package/.claude/skills/skill-generator/templates/sequential-phase.md +10 -0
  25. package/.claude/skills/skill-generator/templates/skill-md.md +4 -0
  26. package/.claude/skills/team-arch-opt/SKILL.md +1 -1
  27. package/.claude/skills/team-arch-opt/roles/coordinator/commands/monitor.md +3 -1
  28. package/.claude/skills/team-arch-opt/roles/refactorer/role.md +3 -1
  29. package/.claude/skills/team-arch-opt/specs/team-config.json +2 -2
  30. package/.claude/skills/team-coordinate/SKILL.md +4 -3
  31. package/.claude/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +1 -1
  32. package/.claude/skills/team-coordinate/roles/coordinator/commands/dispatch.md +3 -2
  33. package/.claude/skills/team-coordinate/roles/coordinator/commands/monitor.md +3 -2
  34. package/.claude/skills/team-coordinate/roles/coordinator/role.md +16 -15
  35. package/.claude/skills/team-coordinate/specs/pipelines.md +7 -4
  36. package/.claude/skills/team-coordinate/specs/role-spec-template.md +1 -0
  37. package/.claude/skills/team-interactive-craft/SKILL.md +127 -0
  38. package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  39. package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
  40. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  41. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
  42. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
  43. package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
  44. package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  45. package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  46. package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  47. package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
  48. package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
  49. package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  50. package/.claude/skills/team-lifecycle-v4/SKILL.md +1 -1
  51. package/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +14 -2
  52. package/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +24 -2
  53. package/.claude/skills/team-lifecycle-v4/roles/executor/role.md +3 -1
  54. package/.claude/skills/team-motion-design/SKILL.md +129 -0
  55. package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
  56. package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
  57. package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  58. package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
  59. package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
  60. package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
  61. package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  62. package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  63. package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  64. package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
  65. package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
  66. package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
  67. package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
  68. package/.claude/skills/team-perf-opt/SKILL.md +1 -1
  69. package/.claude/skills/team-perf-opt/roles/optimizer/role.md +3 -1
  70. package/.claude/skills/team-perf-opt/specs/team-config.json +2 -2
  71. package/.claude/skills/team-quality-assurance/SKILL.md +1 -1
  72. package/.claude/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +4 -2
  73. package/.claude/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +4 -2
  74. package/.claude/skills/team-quality-assurance/roles/executor/role.md +3 -1
  75. package/.claude/skills/team-testing/SKILL.md +1 -1
  76. package/.claude/skills/team-testing/roles/coordinator/commands/dispatch.md +5 -2
  77. package/.claude/skills/team-testing/roles/coordinator/commands/monitor.md +4 -2
  78. package/.claude/skills/team-testing/roles/executor/role.md +3 -1
  79. package/.claude/skills/team-ui-polish/SKILL.md +127 -0
  80. package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  81. package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
  82. package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
  83. package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
  84. package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
  85. package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
  86. package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
  87. package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
  88. package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  89. package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
  90. package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  91. package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
  92. package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  93. package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
  94. package/.claude/skills/team-uidesign/SKILL.md +6 -1
  95. package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
  96. package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
  97. package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
  98. package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
  99. package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
  100. package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
  101. package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
  102. package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
  103. package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
  104. package/.claude/skills/team-ux-improve/SKILL.md +3 -0
  105. package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
  106. package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
  107. package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
  108. package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
  109. package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
  110. package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
  111. package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
  112. package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
  113. package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
  114. package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
  115. package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
  116. package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  117. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  118. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
  119. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
  120. package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
  121. package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  122. package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  123. package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  124. package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  125. package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  126. package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  127. package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
  128. package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
  129. package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  130. package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  131. package/.codex/skills/investigate/agents/investigator.md +392 -0
  132. package/.codex/skills/investigate/orchestrator.md +362 -0
  133. package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
  134. package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
  135. package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
  136. package/.codex/skills/investigate/phases/04-implementation.md +195 -0
  137. package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
  138. package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
  139. package/.codex/skills/security-audit/orchestrator.md +384 -0
  140. package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
  141. package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
  142. package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
  143. package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
  144. package/.codex/skills/ship/agents/ship-operator.md +318 -0
  145. package/.codex/skills/ship/orchestrator.md +426 -0
  146. package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
  147. package/.codex/skills/ship/phases/02-code-review.md +228 -0
  148. package/.codex/skills/ship/phases/03-version-bump.md +259 -0
  149. package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
  150. package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
  151. package/.codex/skills/team-interactive-craft/SKILL.md +220 -0
  152. package/.codex/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  153. package/.codex/skills/team-interactive-craft/roles/builder/role.md +216 -0
  154. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  155. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +162 -0
  156. package/.codex/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +233 -0
  157. package/.codex/skills/team-interactive-craft/roles/coordinator/role.md +209 -0
  158. package/.codex/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  159. package/.codex/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  160. package/.codex/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  161. package/.codex/skills/team-interactive-craft/specs/pipelines.md +85 -0
  162. package/.codex/skills/team-interactive-craft/specs/team-config.json +105 -0
  163. package/.codex/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  164. package/.codex/skills/team-motion-design/SKILL.md +222 -0
  165. package/.codex/skills/team-motion-design/roles/animator/role.md +194 -0
  166. package/.codex/skills/team-motion-design/roles/choreographer/role.md +164 -0
  167. package/.codex/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  168. package/.codex/skills/team-motion-design/roles/coordinator/commands/dispatch.md +168 -0
  169. package/.codex/skills/team-motion-design/roles/coordinator/commands/monitor.md +242 -0
  170. package/.codex/skills/team-motion-design/roles/coordinator/role.md +210 -0
  171. package/.codex/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  172. package/.codex/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  173. package/.codex/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  174. package/.codex/skills/team-motion-design/specs/motion-tokens.md +128 -0
  175. package/.codex/skills/team-motion-design/specs/pipelines.md +74 -0
  176. package/.codex/skills/team-motion-design/specs/reduced-motion.md +129 -0
  177. package/.codex/skills/team-motion-design/specs/team-config.json +99 -0
  178. package/.codex/skills/team-ui-polish/SKILL.md +218 -0
  179. package/.codex/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  180. package/.codex/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +167 -0
  181. package/.codex/skills/team-ui-polish/roles/coordinator/commands/monitor.md +230 -0
  182. package/.codex/skills/team-ui-polish/roles/coordinator/role.md +213 -0
  183. package/.codex/skills/team-ui-polish/roles/diagnostician/role.md +164 -0
  184. package/.codex/skills/team-ui-polish/roles/optimizer/role.md +229 -0
  185. package/.codex/skills/team-ui-polish/roles/scanner/role.md +360 -0
  186. package/.codex/skills/team-ui-polish/roles/verifier/role.md +142 -0
  187. package/.codex/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  188. package/.codex/skills/team-ui-polish/specs/design-standards.md +356 -0
  189. package/.codex/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  190. package/.codex/skills/team-ui-polish/specs/pipelines.md +81 -0
  191. package/.codex/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  192. package/.codex/skills/team-ui-polish/specs/team-config.json +73 -0
  193. package/.codex/skills/team-visual-a11y/SKILL.md +319 -0
  194. package/.codex/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  195. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  196. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +188 -0
  197. package/.codex/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +281 -0
  198. package/.codex/skills/team-visual-a11y/roles/coordinator/role.md +213 -0
  199. package/.codex/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  200. package/.codex/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  201. package/.codex/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  202. package/.codex/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  203. package/.codex/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  204. package/.codex/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  205. package/.codex/skills/team-visual-a11y/specs/pipelines.md +98 -0
  206. package/.codex/skills/team-visual-a11y/specs/team-config.json +109 -0
  207. package/.codex/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  208. package/.codex/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  209. package/README.md +8 -0
  210. package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
  211. package/ccw/dist/core/hooks/hook-templates.js +114 -1
  212. package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
  213. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  214. package/ccw/dist/core/routes/cli-routes.js +34 -0
  215. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  216. package/ccw/dist/core/routes/system-routes.js +2 -2
  217. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  218. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-BjP1ydDR.js} +2 -2
  219. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-BjP1ydDR.js.map} +1 -1
  220. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-CAX3xqMf.js} +2 -2
  221. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-CAX3xqMf.js.map} +1 -1
  222. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-CtWlmztq.js} +2 -2
  223. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-CtWlmztq.js.map} +1 -1
  224. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-hR4a-eLX.js} +2 -2
  225. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-hR4a-eLX.js.map} +1 -1
  226. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-DzNPkFN9.js} +2 -2
  227. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-DzNPkFN9.js.map} +1 -1
  228. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BPEGN4TT.js} +2 -2
  229. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BPEGN4TT.js.map} +1 -1
  230. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cf0r2RHY.js} +2 -2
  231. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cf0r2RHY.js.map} +1 -1
  232. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DEm1rJ4h.js} +2 -2
  233. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DEm1rJ4h.js.map} +1 -1
  234. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-BpeWw8HO.js} +2 -2
  235. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-BpeWw8HO.js.map} +1 -1
  236. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-BEsmh2vF.js} +2 -2
  237. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-BEsmh2vF.js.map} +1 -1
  238. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-B30SFdtU.js} +2 -2
  239. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-B30SFdtU.js.map} +1 -1
  240. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-BVvMpg1O.js} +2 -2
  241. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-BVvMpg1O.js.map} +1 -1
  242. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-CL73dHbh.js} +2 -2
  243. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-CL73dHbh.js.map} +1 -1
  244. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-BL-28lMZ.js} +2 -2
  245. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-BL-28lMZ.js.map} +1 -1
  246. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BzZDciHZ.js} +2 -2
  247. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BzZDciHZ.js.map} +1 -1
  248. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-CDp6-d8P.js} +2 -2
  249. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-CDp6-d8P.js.map} +1 -1
  250. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-fZY_7O9n.js} +2 -2
  251. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-fZY_7O9n.js.map} +1 -1
  252. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-4LJeC9bq.js} +2 -2
  253. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-4LJeC9bq.js.map} +1 -1
  254. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-Bpigrbhw.js} +2 -2
  255. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-Bpigrbhw.js.map} +1 -1
  256. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-BP0zJc1R.js} +2 -2
  257. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-BP0zJc1R.js.map} +1 -1
  258. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-CSt2oVKQ.js} +2 -2
  259. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-CSt2oVKQ.js.map} +1 -1
  260. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-B-xaMA0w.js} +2 -2
  261. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-B-xaMA0w.js.map} +1 -1
  262. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-CJqo_7DY.js} +2 -2
  263. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-CJqo_7DY.js.map} +1 -1
  264. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-ibZeQA-Y.js} +2 -2
  265. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-ibZeQA-Y.js.map} +1 -1
  266. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-DgJ4ctPQ.js} +2 -2
  267. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-DgJ4ctPQ.js.map} +1 -1
  268. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-Cit0Yq0D.js} +2 -2
  269. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-Cit0Yq0D.js.map} +1 -1
  270. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-Ce1HDIK0.js} +2 -2
  271. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-Ce1HDIK0.js.map} +1 -1
  272. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-J1KikNrk.js} +2 -2
  273. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-J1KikNrk.js.map} +1 -1
  274. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CdBjTmth.js} +2 -2
  275. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CdBjTmth.js.map} +1 -1
  276. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-B9ZK7LvX.js} +2 -2
  277. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-B9ZK7LvX.js.map} +1 -1
  278. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-CW_nS5UR.js} +2 -2
  279. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-CW_nS5UR.js.map} +1 -1
  280. package/ccw/frontend/dist/assets/{SettingsPage-BPDbXPSM.js → SettingsPage-B2PYzSoO.js} +35 -35
  281. package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +1 -0
  282. package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js → SkillsManagerPage-CTnWrrwp.js} +2 -2
  283. package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js.map → SkillsManagerPage-CTnWrrwp.js.map} +1 -1
  284. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DJpi9XQL.js} +2 -2
  285. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DJpi9XQL.js.map} +1 -1
  286. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-Ac6Ov7uy.js} +2 -2
  287. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-Ac6Ov7uy.js.map} +1 -1
  288. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-DZAAspqR.js} +2 -2
  289. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-DZAAspqR.js.map} +1 -1
  290. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-BJkwfhIZ.js} +2 -2
  291. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-BJkwfhIZ.js.map} +1 -1
  292. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-BJgjxBgb.js} +2 -2
  293. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-BJgjxBgb.js.map} +1 -1
  294. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-D1WekoOy.js} +2 -2
  295. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-D1WekoOy.js.map} +1 -1
  296. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-DxemgIhF.js} +2 -2
  297. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-DxemgIhF.js.map} +1 -1
  298. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-CjS83f1V.js} +2 -2
  299. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-CjS83f1V.js.map} +1 -1
  300. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-B5PUcn8I.js} +2 -2
  301. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-B5PUcn8I.js.map} +1 -1
  302. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-DCc9aPbb.js} +2 -2
  303. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-DCc9aPbb.js.map} +1 -1
  304. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-DOwFtzak.js} +2 -2
  305. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-DOwFtzak.js.map} +1 -1
  306. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-96qH3aFh.js} +2 -2
  307. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-96qH3aFh.js.map} +1 -1
  308. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CCxSuil1.js} +2 -2
  309. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CCxSuil1.js.map} +1 -1
  310. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-CZNSJFdq.js} +2 -2
  311. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-CZNSJFdq.js.map} +1 -1
  312. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-h8xtvw2_.js} +2 -2
  313. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-h8xtvw2_.js.map} +1 -1
  314. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-D3NY0bm6.js} +2 -2
  315. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-D3NY0bm6.js.map} +1 -1
  316. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-Cy2vkc8p.js} +2 -2
  317. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-Cy2vkc8p.js.map} +1 -1
  318. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-Bzq3U1Mx.js} +2 -2
  319. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-Bzq3U1Mx.js.map} +1 -1
  320. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-DwuwPDPi.js} +2 -2
  321. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-DwuwPDPi.js.map} +1 -1
  322. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-q9g-bknU.js} +2 -2
  323. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-q9g-bknU.js.map} +1 -1
  324. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-CL6vb42J.js} +2 -2
  325. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-CL6vb42J.js.map} +1 -1
  326. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-BkrcQBly.js} +2 -2
  327. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-BkrcQBly.js.map} +1 -1
  328. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-BQbwyNeV.js} +2 -2
  329. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-BQbwyNeV.js.map} +1 -1
  330. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-x5_7DrN7.js} +2 -2
  331. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-x5_7DrN7.js.map} +1 -1
  332. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-DTyWXwzf.js} +2 -2
  333. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-DTyWXwzf.js.map} +1 -1
  334. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-80O0kJO7.js} +2 -2
  335. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-80O0kJO7.js.map} +1 -1
  336. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-DDlN2Bwa.js} +2 -2
  337. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-DDlN2Bwa.js.map} +1 -1
  338. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-B9A3Hnrk.js} +2 -2
  339. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-B9A3Hnrk.js.map} +1 -1
  340. package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-Bs80iCX0.js} +2 -2
  341. package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-Bs80iCX0.js.map} +1 -1
  342. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index-mbeo62f8.js} +2 -2
  343. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index-mbeo62f8.js.map} +1 -1
  344. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-rLgoBCfV.js} +3 -3
  345. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-rLgoBCfV.js.map} +1 -1
  346. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-C1niOWJx.js} +2 -2
  347. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-C1niOWJx.js.map} +1 -1
  348. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-BTmI7SUg.js} +2 -2
  349. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-BTmI7SUg.js.map} +1 -1
  350. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CB9HKeuZ.js} +2 -2
  351. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CB9HKeuZ.js.map} +1 -1
  352. package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-koEYiemK.js} +2 -2
  353. package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-koEYiemK.js.map} +1 -1
  354. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-v2_GaLdC.js} +2 -2
  355. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-v2_GaLdC.js.map} +1 -1
  356. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BQNfAqG_.js} +2 -2
  357. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BQNfAqG_.js.map} +1 -1
  358. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-Dzq5LGg9.js} +2 -2
  359. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-Dzq5LGg9.js.map} +1 -1
  360. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CtkoJXcz.js} +2 -2
  361. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CtkoJXcz.js.map} +1 -1
  362. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-CH3smL37.js} +2 -2
  363. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-CH3smL37.js.map} +1 -1
  364. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CZ0aL_yF.js} +2 -2
  365. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CZ0aL_yF.js.map} +1 -1
  366. package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-F2A_J4l6.js} +2 -2
  367. package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-F2A_J4l6.js.map} +1 -1
  368. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-Byxot0YU.js} +2 -2
  369. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-Byxot0YU.js.map} +1 -1
  370. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-JjqhUkpw.js} +2 -2
  371. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-JjqhUkpw.js.map} +1 -1
  372. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2--SuN9rAt.js} +2 -2
  373. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2--SuN9rAt.js.map} +1 -1
  374. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-BbngGB2h.js} +2 -2
  375. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-BbngGB2h.js.map} +1 -1
  376. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-CgrHgZSl.js} +2 -2
  377. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-CgrHgZSl.js.map} +1 -1
  378. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-BU3TQr7Z.js} +2 -2
  379. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-BU3TQr7Z.js.map} +1 -1
  380. package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CKs7nnn3.js} +2 -2
  381. package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CKs7nnn3.js.map} +1 -1
  382. package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-DW5tsDW6.js} +2 -2
  383. package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-DW5tsDW6.js.map} +1 -1
  384. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-BHm7w3ON.js} +2 -2
  385. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-BHm7w3ON.js.map} +1 -1
  386. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-DYR7PWwt.js} +2 -2
  387. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-DYR7PWwt.js.map} +1 -1
  388. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-D0TVgQD_.js} +2 -2
  389. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-D0TVgQD_.js.map} +1 -1
  390. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-DfY8mAP8.js} +2 -2
  391. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-DfY8mAP8.js.map} +1 -1
  392. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-CGusDp0F.js} +2 -2
  393. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-CGusDp0F.js.map} +1 -1
  394. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-CIwh0fF1.js} +2 -2
  395. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-CIwh0fF1.js.map} +1 -1
  396. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-FMyFv39K.js} +2 -2
  397. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-FMyFv39K.js.map} +1 -1
  398. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-B2qhsoTb.js} +2 -2
  399. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-B2qhsoTb.js.map} +1 -1
  400. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-cxKXMBm3.js} +3 -3
  401. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-cxKXMBm3.js.map} +1 -1
  402. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-B-xUT_z-.js} +2 -2
  403. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-B-xUT_z-.js.map} +1 -1
  404. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-DZV_3lPr.js} +2 -2
  405. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-DZV_3lPr.js.map} +1 -1
  406. package/ccw/frontend/dist/index.html +1 -1
  407. package/package.json +105 -105
  408. package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
@@ -0,0 +1,103 @@
1
+ # AI Slop Detection Catalog
2
+
3
+ 20 visual anti-patterns commonly produced by AI code generation. Use during scanning to flag design quality issues.
4
+
5
+ ### 1. AI Color Palette
6
+ - **Pattern**: Cyan (#00d4ff, #06b6d4), purple-blue gradients on dark backgrounds as default aesthetic
7
+ - **Detection**: Search for cyan/teal hex values, linear-gradient with blue-purple stops on dark bg
8
+ - **Severity**: P1
9
+
10
+ ### 2. Gradient Text
11
+ - **Pattern**: `background-clip: text` + `-webkit-text-fill-color: transparent` on headings or metric values
12
+ - **Detection**: Grep for `background-clip:\s*text` or `-webkit-background-clip:\s*text`
13
+ - **Severity**: P1
14
+
15
+ ### 3. Default Dark Mode + Glow
16
+ - **Pattern**: Dark background (#0a0a0a, #111) with neon accent colors and box-shadow glow effects
17
+ - **Detection**: Dark bg colors + box-shadow with colored spread on interactive elements
18
+ - **Severity**: P2
19
+
20
+ ### 4. Glassmorphism Everywhere
21
+ - **Pattern**: `backdrop-filter: blur()` applied to more than 2 components
22
+ - **Detection**: Count occurrences of `backdrop-filter:\s*blur` across components
23
+ - **Severity**: P1
24
+
25
+ ### 5. Hero Metric Layout
26
+ - **Pattern**: Large number + small label arranged in card grid, dashboard-style metrics as default layout
27
+ - **Detection**: Pattern of large font-size number + small text label repeated 3+ times in grid
28
+ - **Severity**: P2
29
+
30
+ ### 6. Identical Card Grids
31
+ - **Pattern**: 3+ cards with identical size, structure, and visual weight
32
+ - **Detection**: Repeated card components with same dimensions and no visual differentiation
33
+ - **Severity**: P2
34
+
35
+ ### 7. Nested Cards
36
+ - **Pattern**: Border/shadow container inside another border/shadow container
37
+ - **Detection**: Card component rendered inside another card component, nested border-radius + box-shadow
38
+ - **Severity**: P2
39
+
40
+ ### 8. Generic Fonts
41
+ - **Pattern**: Inter, Roboto, Open Sans, Lato, Montserrat, Arial as primary font-family
42
+ - **Detection**: Grep font-family declarations for generic font names
43
+ - **Severity**: P2
44
+
45
+ ### 9. Rounded Rect + Generic Shadow
46
+ - **Pattern**: `border-radius: 8-16px` + `box-shadow: 0 1-4px ...` on more than 5 elements
47
+ - **Detection**: Count elements with both border-radius and box-shadow, flag if >5
48
+ - **Severity**: P3
49
+
50
+ ### 10. Large Icons Above Every Heading
51
+ - **Pattern**: Decorative icon/emoji placed above section headings, repeated 3+ times
52
+ - **Detection**: Icon component or SVG immediately preceding heading elements, 3+ occurrences
53
+ - **Severity**: P2
54
+
55
+ ### 11. One-Side Border Accent
56
+ - **Pattern**: `border-left: 3-4px solid <accent>` as visual accent on cards/sections
57
+ - **Detection**: Grep for `border-left:\s*\d+px\s+solid` repeated across components
58
+ - **Severity**: P3
59
+
60
+ ### 12. Decorative Sparklines
61
+ - **Pattern**: Tiny inline charts without axis labels, data values, or interactive tooltips
62
+ - **Detection**: Small chart components (<100px height) without label/tooltip props
63
+ - **Severity**: P2
64
+
65
+ ### 13. Bounce/Elastic Easing
66
+ - **Pattern**: `cubic-bezier` with negative control point values, spring/bounce animation keywords
67
+ - **Detection**: Grep for `cubic-bezier\([^)]*-` or animation names containing bounce/spring/elastic
68
+ - **Severity**: P2
69
+
70
+ ### 14. Redundant Copy
71
+ - **Pattern**: Heading text restated in immediately following body paragraph with >50% word overlap
72
+ - **Detection**: Compare heading text with first paragraph text for word overlap
73
+ - **Severity**: P3
74
+
75
+ ### 15. All Buttons Primary
76
+ - **Pattern**: Every button uses same filled/accent treatment, no visual hierarchy
77
+ - **Detection**: All button variants resolve to same background-color, no secondary/tertiary variants
78
+ - **Severity**: P1
79
+
80
+ ### 16. Everything Centered
81
+ - **Pattern**: Body text centered (`text-align: center`), more than 60% of sections centered
82
+ - **Detection**: Count `text-align: center` on non-heading, non-hero elements
83
+ - **Severity**: P2
84
+
85
+ ### 17. Same Spacing Everywhere
86
+ - **Pattern**: >70% of padding/margin values are identical (e.g., all `p-4` or `p-6`)
87
+ - **Detection**: Extract padding/margin values, check distribution uniformity
88
+ - **Severity**: P2
89
+
90
+ ### 18. Monospace as Tech Aesthetic
91
+ - **Pattern**: Monospace font applied to non-code elements (headings, labels, navigation)
92
+ - **Detection**: `font-family: monospace` or code font on non-`<code>`/`<pre>` elements
93
+ - **Severity**: P3
94
+
95
+ ### 19. Modal Overuse
96
+ - **Pattern**: More than 3 modal dialogs for non-critical interactions (settings, confirmations, info)
97
+ - **Detection**: Count modal/dialog component usages, check trigger context
98
+ - **Severity**: P3
99
+
100
+ ### 20. Pure Black/White
101
+ - **Pattern**: #000, #fff, rgb(0,0,0), rgb(255,255,255) as primary background or text colors
102
+ - **Detection**: Grep for exact #000, #fff, rgb(0,0,0), rgb(255,255,255) in color/background properties
103
+ - **Severity**: P1
@@ -0,0 +1,54 @@
1
+ # Visual Design Standards
2
+
3
+ Reference for visual design quality detection. Scanner and diagnoser use these standards to identify design issues.
4
+
5
+ ## Color Standards
6
+
7
+ - **OKLCH** for perceptually uniform palettes
8
+ - **Tinted neutrals**: chroma 0.005-0.01, never pure gray (#808080) or pure black/white (#000, #fff)
9
+ - **60-30-10 rule**: 60% neutral, 30% secondary, 10% accent
10
+ - **WCAG AA contrast**: normal text 4.5:1, large text 3:1, UI components 3:1
11
+ - **Text on colored backgrounds**: use `color-mix(in oklch, ...)` not gray text
12
+
13
+ ## Typography Standards
14
+
15
+ - **Avoid generic fonts**: Inter, Roboto, Open Sans, Lato, Montserrat, Arial
16
+ - **Modular scale** (choose one ratio consistently): 1.125, 1.200, 1.250, 1.333
17
+ - **Fluid sizing**: `clamp()` for display text (xl and above)
18
+ - **Line height**: body 1.5, headings 1.2, small text 1.6
19
+ - **Reading width**: `max-width: 65ch`
20
+ - **Font loading**: `font-display: swap`
21
+
22
+ ## Spacing Standards
23
+
24
+ - **4pt base scale**: 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 96 px
25
+ - **Rhythm variation**: tight (4-8px), comfortable (16-24px), generous (48-96px)
26
+ - **Sibling spacing**: `gap` over `margin`
27
+ - **No nested cards**. Touch targets: 44x44px min
28
+
29
+ ## Motion Standards
30
+
31
+ - **Animate ONLY**: transform, opacity, clip-path, background-color, color, box-shadow, filter
32
+ - **NEVER animate**: width, height, top, left, margin, padding
33
+ - **Easing**: ease-out-quart `cubic-bezier(0.25, 1, 0.5, 1)` default. No bounce/elastic/linear
34
+ - **Duration**: instant 100ms, fast 150ms, normal 250ms, slow 400ms
35
+ - **Reduced motion**: `@media (prefers-reduced-motion: reduce)` REQUIRED
36
+
37
+ ## 8 Interaction States
38
+
39
+ | State | CSS | Requirement |
40
+ |-------|-----|-------------|
41
+ | Default | -- | Base appearance |
42
+ | Hover | `:hover` in `@media(hover:hover)` | Subtle change |
43
+ | Focus | `:focus-visible` | 2px solid accent, offset 2px, 3:1 contrast |
44
+ | Active | `:active` | Scale(0.97) or darker |
45
+ | Disabled | `[disabled]` | Opacity 0.5 |
46
+ | Loading | `[aria-busy]` | Spinner/skeleton |
47
+ | Error | `[aria-invalid]` | Red border + message |
48
+ | Success | custom | Green check |
49
+
50
+ ## Visual Hierarchy
51
+
52
+ - **Squint test**: blur page, identify top 2 elements + groupings
53
+ - **1 primary CTA** per viewport
54
+ - **Progressive disclosure**: reveal complexity on demand
@@ -0,0 +1,88 @@
1
+ # Nielsen's 10 Usability Heuristics
2
+
3
+ Structured evaluation framework for UX scanning. Score each 0-4.
4
+
5
+ ## 1. Visibility of System Status
6
+ The system should always keep users informed about what is going on.
7
+ - Loading indicators for async operations (> 200ms)
8
+ - Progress bars for multi-step processes
9
+ - State feedback (saved, syncing, error)
10
+ - Timestamps on data ("Updated 5 minutes ago")
11
+ - Active state indicators (selected tab, current page)
12
+
13
+ ## 2. Match Between System and Real World
14
+ Speak the user's language, not technical jargon.
15
+ - Labels use familiar words (not internal terms)
16
+ - Icons match real-world metaphors
17
+ - Information appears in natural/logical order
18
+ - Dates, numbers, currencies in locale format
19
+
20
+ ## 3. User Control and Freedom
21
+ Users need a clearly marked "emergency exit."
22
+ - Undo/redo for destructive or complex actions
23
+ - Back/cancel navigation always available
24
+ - Escape key closes modals/popovers
25
+ - Clear way to deselect, clear filters, reset
26
+
27
+ ## 4. Consistency and Standards
28
+ Same words and actions should mean the same thing.
29
+ - One term per concept (delete/remove/trash → pick one)
30
+ - Same icon for same action across pages
31
+ - Follow platform conventions (links underlined, × means close)
32
+ - Consistent placement of actions (save always top-right, etc.)
33
+
34
+ ## 5. Error Prevention
35
+ Better to prevent errors than show good error messages.
36
+ - Confirmation for destructive actions (with undo preferred)
37
+ - Input validation on blur (not just submit)
38
+ - Disable invalid options (gray out, not hide)
39
+ - Type-ahead/autocomplete for known-value fields
40
+ - Character counts for limited fields
41
+
42
+ ## 6. Recognition Rather Than Recall
43
+ Minimize user memory load.
44
+ - Show options visibly (don't require memorization)
45
+ - Recent items, favorites, search suggestions
46
+ - Breadcrumbs for navigation context
47
+ - Inline help/tooltips for non-obvious fields
48
+ - Persistent important info (don't hide behind clicks)
49
+
50
+ ## 7. Flexibility and Efficiency of Use
51
+ Accelerators for power users without confusing beginners.
52
+ - Keyboard shortcuts for frequent actions
53
+ - Bulk actions (select all, batch edit)
54
+ - Customizable views/layouts
55
+ - Search/filter as primary navigation for large datasets
56
+
57
+ ## 8. Aesthetic and Minimalist Design
58
+ Every extra unit of information competes with relevant units.
59
+ - Remove decorative elements that don't aid comprehension
60
+ - Progressive disclosure (summary → detail on demand)
61
+ - Visual hierarchy: clear primary, secondary, tertiary
62
+ - Information density appropriate for use case
63
+
64
+ ## 9. Help Users Recognize, Diagnose, and Recover from Errors
65
+ Error messages should be expressed in plain language.
66
+ - Formula: what happened + why + how to fix
67
+ - No error codes without explanation
68
+ - Suggest specific corrective action
69
+ - Preserve user input on error (don't clear forms)
70
+ - Retry option for network/server errors
71
+
72
+ ## 10. Help and Documentation
73
+ Easy to search, focused on user's task.
74
+ - Contextual help (tooltips, info icons)
75
+ - Onboarding for first-time users
76
+ - Empty states with guidance and action
77
+ - Keyboard shortcut reference
78
+ - FAQ/search for complex features
79
+
80
+ ## Severity Scale
81
+
82
+ | Rating | Description |
83
+ |--------|-------------|
84
+ | 0 | Not a usability problem |
85
+ | 1 | Cosmetic — fix if time permits |
86
+ | 2 | Minor — low priority fix |
87
+ | 3 | Major — important to fix, high priority |
88
+ | 4 | Catastrophe — must fix before release |
@@ -4,14 +4,46 @@
4
4
  - Buttons without loading states during async operations
5
5
  - Missing error handling with user feedback
6
6
  - State changes without visual updates
7
- - Double-click vulnerabilities
8
-
9
- ## State Issues
10
- - Stale data after mutations
11
- - Race conditions in async operations
12
- - Missing rollback for failed optimistic updates
13
-
14
- ## Feedback Issues
7
+ - Double-click vulnerabilities (missing debounce)
8
+ - No disabled state during processing
15
9
  - Silent failures without user notification
16
10
  - Generic error messages without actionable guidance
17
11
  - Missing confirmation for destructive actions
12
+ - No empty state placeholder for data lists
13
+ - Input without validation rules or inline feedback
14
+
15
+ ## State Management Issues
16
+ - Stale data after mutations (direct array/object mutation)
17
+ - Race conditions in async operations (no cancellation)
18
+ - Missing rollback for failed optimistic updates
19
+ - Stale closure capturing old state value
20
+ - Missing loading/error/success state tracking
21
+
22
+ ## Visual Design Anti-Patterns (AI Slop)
23
+ - AI Color Palette: cyan-on-dark, purple gradients (zero design intent)
24
+ - Gradient text: background-clip: text as emphasis crutch
25
+ - Glassmorphism everywhere: backdrop-filter as default aesthetic
26
+ - All Buttons Primary: no visual hierarchy, every button filled
27
+ - Pure Black/White: #000/#fff without tint (harsh, sterile)
28
+ - Generic fonts: Inter, Roboto as defaults (forgettable)
29
+ - Identical card grids: all items same visual weight
30
+ - Nested cards: cards inside cards creating noise
31
+ - Same spacing everywhere: no rhythm variation
32
+ - Bounce/elastic easing: dated animation feel
33
+ - Everything centered: including body text
34
+
35
+ ## Motion Issues
36
+ - Layout animations (width/height/margin/padding triggers)
37
+ - No reduced-motion query (@media prefers-reduced-motion)
38
+ - CSS will-change set permanently (GPU waste)
39
+ - ease/linear as default easing (unnatural)
40
+ - Stagger exceeding 500ms total
41
+
42
+ ## Accessibility Issues
43
+ - outline: none without :focus-visible replacement
44
+ - Missing :focus-visible (using bare :focus)
45
+ - Color-only state indication
46
+ - Touch targets < 44px
47
+ - No skip links
48
+ - Placeholder used as label
49
+ - Missing aria-describedby for error messages
@@ -1,14 +1,34 @@
1
1
  # State Management Patterns
2
2
 
3
- ## Local Component State
4
- - Use for UI-only state (open/closed, hover, focus)
5
- - Keep close to where it's used
6
-
7
- ## Shared State
8
- - Lift state to lowest common ancestor
9
- - Use context or state management library for deep trees
10
-
11
- ## Async State
12
- - Track loading, error, and success states
13
- - Handle race conditions with request cancellation
14
- - Implement retry logic with exponential backoff
3
+ ## Reactive Update Rules
4
+ - NEVER mutate arrays/objects directly
5
+ - React: use spread operator, filter/map for new references
6
+ - Vue: use ref() for primitives, reactive() for objects, computed() for derived
7
+ - Always trigger re-render through proper state API
8
+
9
+ ## Async State Pattern
10
+ ```
11
+ const [data, setData] = useState(null);
12
+ const [loading, setLoading] = useState(false);
13
+ const [error, setError] = useState(null);
14
+
15
+ // Always: loading -> success/error -> cleanup
16
+ ```
17
+
18
+ ## Race Condition Prevention
19
+ - AbortController for fetch cancellation
20
+ - Debounce for search/filter inputs (250-500ms)
21
+ - Latest-wins pattern for concurrent requests
22
+ - Disable trigger during processing
23
+
24
+ ## Optimistic Updates
25
+ - Update UI immediately
26
+ - Track pending state
27
+ - Rollback on failure with error notification
28
+ - Never lose user data silently
29
+
30
+ ## Form State
31
+ - Controlled inputs (React) / v-model (Vue)
32
+ - Validation on blur + on submit
33
+ - Error clearing on re-input
34
+ - Dirty tracking for unsaved changes warning
@@ -1,16 +1,40 @@
1
1
  # UI Feedback Patterns
2
2
 
3
3
  ## Loading States
4
- - Use skeleton loaders for content areas
5
- - Disable buttons during async operations
6
- - Show progress indicators for long operations
4
+ - Button: set disabled + aria-busy="true", show spinner, restore on complete
5
+ - Page: skeleton screens (prefer over spinners for content areas)
6
+ - Inline: progress indicator for multi-step operations
7
+ - Duration: show loading after 200ms delay (avoid flash for fast operations)
7
8
 
8
- ## Error Handling
9
- - Display errors inline when possible
10
- - Provide actionable error messages
11
- - Allow retry for transient failures
9
+ ## Error States
10
+ - Form: inline validation with aria-invalid + aria-describedby
11
+ - API: toast/snackbar for non-blocking, inline for blocking errors
12
+ - Error message: specific, actionable (not "Something went wrong")
13
+ - Visual: red border on input, error icon, error text below
12
14
 
13
- ## Success Feedback
14
- - Toast notifications for non-critical successes
15
- - Inline confirmation for critical actions
16
- - Auto-dismiss non-critical notifications
15
+ ## Success States
16
+ - Form submit: success message + next action guidance
17
+ - CRUD: optimistic update with subtle confirmation
18
+ - Duration: success message visible 3-5 seconds
19
+
20
+ ## Empty States
21
+ - Data list: illustration + message + primary action
22
+ - Search: "No results" + suggestions
23
+ - First use: onboarding guidance
24
+
25
+ ## Focus Feedback
26
+ - :focus-visible only (not bare :focus)
27
+ - Ring: 2px solid accent, offset 2px
28
+ - Contrast: 3:1 against adjacent colors
29
+ - Custom for dark backgrounds: lighter ring color
30
+
31
+ ## Hover Feedback
32
+ - Wrap in @media(hover:hover) for touch safety
33
+ - Subtle: background opacity change or slight color shift
34
+ - Duration: 100-150ms transition
35
+ - Cursor: pointer for clickable, not-allowed for disabled
36
+
37
+ ## Active Feedback
38
+ - Scale: transform: scale(0.97) for physical feel
39
+ - Or: darker background shade
40
+ - Duration: instant (< 50ms feel)
@@ -1,16 +1,43 @@
1
1
  # General UX Principles
2
2
 
3
3
  ## Feedback & Responsiveness
4
- - Every user action should have immediate visual feedback
5
- - Loading states must be shown for operations >200ms
6
- - Success/error states should be clearly communicated
4
+ - Every user action must have immediate visual feedback (< 100ms perceived)
5
+ - Loading states for operations > 200ms: use skeleton/spinner, set aria-busy="true"
6
+ - Success/error states clearly communicated with both visual and ARIA cues
7
+ - Feedback duration: 100-150ms for hover/active/focus transitions
8
+ - State change transitions: 200-300ms
9
+ - Layout changes: 300-500ms
10
+
11
+ ## Interaction States (8 Required)
12
+ Every interactive element must define all 8 states:
13
+ 1. Default — base appearance
14
+ 2. Hover — subtle bg/opacity change, wrap in @media(hover:hover)
15
+ 3. Focus — :focus-visible with 2px solid accent, offset 2px, 3:1 contrast ratio
16
+ 4. Active — scale(0.97) or darker background
17
+ 5. Disabled — opacity 0.5, cursor: not-allowed, aria-disabled="true"
18
+ 6. Loading — spinner/skeleton, disable interaction, aria-busy="true"
19
+ 7. Error — red border, error message below, aria-invalid="true"
20
+ 8. Success — green check, success message
7
21
 
8
22
  ## State Management
9
- - UI state should reflect the underlying data state
10
- - Optimistic updates should have rollback mechanisms
11
- - State changes should be atomic and predictable
23
+ - UI state must reflect underlying data state immediately
24
+ - Optimistic updates must have rollback mechanisms
25
+ - State changes must be atomic and predictable
26
+ - No direct array/object mutation (use spread/filter/map for reactive frameworks)
27
+ - Race conditions: use request cancellation or debounce
28
+
29
+ ## Visual Design Quality
30
+ - Color: OKLCH-based, tinted neutrals (never pure gray/black/white), 60-30-10 rule
31
+ - Typography: distinctive fonts (not Inter/Roboto), modular scale, fluid clamp()
32
+ - Spacing: 4pt base scale with varied rhythm (tight/comfortable/generous)
33
+ - Motion: transform+opacity only, ease-out-quart easing, reduced-motion query required
34
+ - Hierarchy: squint test, single primary CTA per viewport
12
35
 
13
36
  ## Accessibility
14
- - Interactive elements must be keyboard accessible
15
- - Color should not be the only indicator of state
16
- - Focus states must be visible
37
+ - All interactive elements keyboard accessible (tab + enter/space)
38
+ - Color must NOT be the only indicator of state
39
+ - Focus states must use :focus-visible (not bare :focus)
40
+ - Focus ring: 3:1 contrast against adjacent colors
41
+ - Touch targets: minimum 44x44px, 8px gap between adjacent
42
+ - Visible labels on all form inputs (placeholder is not a label)
43
+ - Skip links for keyboard navigation
@@ -0,0 +1,143 @@
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: Agent, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep, TaskList, TaskGet, TaskUpdate, TaskCreate, TeamCreate, TeamDelete, SendMessage, 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
+ ## Shared Constants
61
+
62
+ - **Session prefix**: `VA`
63
+ - **Session path**: `.workflow/.team/VA-<slug>-<date>/`
64
+ - **team_name**: `visual-a11y`
65
+ - **CLI tools**: `ccw cli --mode analysis` (read-only), `ccw cli --mode write` (modifications)
66
+ - **Message bus**: `mcp__ccw-tools__team_msg(session_id=<session-id>, ...)`
67
+ - **Max GC rounds**: 2
68
+
69
+ ## Worker Spawn Template
70
+
71
+ Coordinator spawns workers using this template:
72
+
73
+ ```
74
+ Agent({
75
+ subagent_type: "team-worker",
76
+ description: "Spawn <role> worker for <task-id>",
77
+ team_name: "visual-a11y",
78
+ name: "<role>",
79
+ run_in_background: true,
80
+ prompt: `## Role Assignment
81
+ role: <role>
82
+ role_spec: <skill_root>/roles/<role>/role.md
83
+ session: <session-folder>
84
+ session_id: <session-id>
85
+ team_name: visual-a11y
86
+ requirement: <task-description>
87
+ inner_loop: <true|false>
88
+
89
+ Read role_spec file (@<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
90
+ Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).`
91
+ })
92
+ ```
93
+
94
+ ## User Commands
95
+
96
+ | Command | Action |
97
+ |---------|--------|
98
+ | `check` / `status` | View execution status graph |
99
+ | `resume` / `continue` | Advance to next step |
100
+
101
+ ## Specs Reference
102
+
103
+ - [specs/pipelines.md](specs/pipelines.md) -- Pipeline definitions and task registry
104
+ - [specs/oklch-standards.md](specs/oklch-standards.md) -- OKLCH color accessibility rules
105
+ - [specs/wcag-matrix.md](specs/wcag-matrix.md) -- WCAG 2.1 criteria matrix
106
+ - [specs/typography-scale.md](specs/typography-scale.md) -- Typography accessibility rules
107
+ - [specs/focus-patterns.md](specs/focus-patterns.md) -- Focus management patterns
108
+
109
+ ## Session Directory
110
+
111
+ ```
112
+ .workflow/.team/VA-<slug>-<date>/
113
+ +-- .msg/
114
+ | +-- messages.jsonl # Team message bus
115
+ | +-- meta.json # Pipeline config + GC state
116
+ +-- audits/
117
+ | +-- color/ # Color auditor output
118
+ | | +-- color-audit-001.md
119
+ | +-- typography/ # Typography auditor output
120
+ | | +-- typo-audit-001.md
121
+ | +-- focus/ # Focus auditor output
122
+ | +-- focus-audit-001.md
123
+ +-- remediation/ # Remediation planner output
124
+ | +-- remediation-plan.md
125
+ +-- fixes/ # Fix implementer output
126
+ | +-- fix-summary-001.md
127
+ +-- re-audit/ # Re-audit output (GC loop)
128
+ | +-- color-audit-002.md
129
+ | +-- focus-audit-002.md
130
+ +-- evidence/ # Screenshots, traces
131
+ ```
132
+
133
+ ## Error Handling
134
+
135
+ | Scenario | Resolution |
136
+ |----------|------------|
137
+ | Unknown command | Error with available command list |
138
+ | Role not found | Error with role registry |
139
+ | Session corruption | Attempt recovery, fallback to manual |
140
+ | Fast-advance conflict | Coordinator reconciles on next callback |
141
+ | Completion action fails | Default to Keep Active |
142
+ | GC loop stuck > 2 rounds | Escalate to user: accept / retry / terminate |
143
+ | Chrome DevTools unavailable | Degrade to static analysis only |