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.
Files changed (416) 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-interactive-craft/SKILL.md +127 -0
  27. package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
  28. package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
  29. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
  30. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
  31. package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
  32. package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
  33. package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
  34. package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
  35. package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
  36. package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
  37. package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
  38. package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
  39. package/.claude/skills/team-motion-design/SKILL.md +129 -0
  40. package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
  41. package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
  42. package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
  43. package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
  44. package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
  45. package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
  46. package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
  47. package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
  48. package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
  49. package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
  50. package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
  51. package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
  52. package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
  53. package/.claude/skills/team-ui-polish/SKILL.md +127 -0
  54. package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
  55. package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
  56. package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
  57. package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
  58. package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
  59. package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
  60. package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
  61. package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
  62. package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
  63. package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
  64. package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
  65. package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
  66. package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
  67. package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
  68. package/.claude/skills/team-uidesign/SKILL.md +6 -1
  69. package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
  70. package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
  71. package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
  72. package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
  73. package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
  74. package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
  75. package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
  76. package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
  77. package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
  78. package/.claude/skills/team-ux-improve/SKILL.md +3 -0
  79. package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
  80. package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
  81. package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
  82. package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
  83. package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
  84. package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
  85. package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
  86. package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
  87. package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
  88. package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
  89. package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
  90. package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
  91. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
  92. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
  93. package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
  94. package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
  95. package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
  96. package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
  97. package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
  98. package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
  99. package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
  100. package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
  101. package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
  102. package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
  103. package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
  104. package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
  105. package/.codex/skills/brainstorm/SKILL.md +3 -3
  106. package/.codex/skills/clean/SKILL.md +3 -3
  107. package/.codex/skills/investigate/agents/investigator.md +392 -0
  108. package/.codex/skills/investigate/orchestrator.md +362 -0
  109. package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
  110. package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
  111. package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
  112. package/.codex/skills/investigate/phases/04-implementation.md +195 -0
  113. package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
  114. package/.codex/skills/issue-discover/SKILL.md +13 -13
  115. package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
  116. package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
  117. package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
  118. package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
  119. package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
  120. package/.codex/skills/review-cycle/SKILL.md +10 -10
  121. package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
  122. package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
  123. package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
  124. package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
  125. package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
  126. package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
  127. package/.codex/skills/security-audit/orchestrator.md +384 -0
  128. package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
  129. package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
  130. package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
  131. package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
  132. package/.codex/skills/ship/agents/ship-operator.md +318 -0
  133. package/.codex/skills/ship/orchestrator.md +426 -0
  134. package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
  135. package/.codex/skills/ship/phases/02-code-review.md +228 -0
  136. package/.codex/skills/ship/phases/03-version-bump.md +259 -0
  137. package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
  138. package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
  139. package/.codex/skills/spec-generator/README.md +1 -1
  140. package/.codex/skills/spec-generator/SKILL.md +184 -88
  141. package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
  142. package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
  143. package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
  144. package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
  145. package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
  146. package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
  147. package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
  148. package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
  149. package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
  150. package/.codex/skills/spec-setup/SKILL.md +4 -4
  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/.codex/skills/workflow-plan/SKILL.md +6 -6
  210. package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
  211. package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
  212. package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
  213. package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
  214. package/README.md +8 -0
  215. package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
  216. package/ccw/dist/core/hooks/hook-templates.js +114 -1
  217. package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
  218. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  219. package/ccw/dist/core/routes/cli-routes.js +34 -0
  220. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  221. package/ccw/dist/core/routes/system-routes.js +2 -2
  222. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  223. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-exlTDW81.js} +3 -3
  224. package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-exlTDW81.js.map} +1 -1
  225. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-cgV9LfAI.js} +2 -2
  226. package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
  227. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
  228. package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
  229. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-Be9xsPiv.js} +2 -2
  230. package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
  231. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
  232. package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
  233. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BrE-oyEq.js} +2 -2
  234. package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
  235. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cd3nrC93.js} +2 -2
  236. package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
  237. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DXFl3VKF.js} +2 -2
  238. package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
  239. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
  240. package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
  241. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-CpDxtmRX.js} +2 -2
  242. package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
  243. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-BchjWe7s.js} +2 -2
  244. package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
  245. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-CbWvaJ0y.js} +2 -2
  246. package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
  247. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-YMjVRiCk.js} +2 -2
  248. package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
  249. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
  250. package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
  251. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BtqzqDVq.js} +2 -2
  252. package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
  253. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
  254. package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
  255. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-BuWpQ7k5.js} +2 -2
  256. package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
  257. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-D0BtMIWy.js} +2 -2
  258. package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
  259. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-C7dwsAKG.js} +2 -2
  260. package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
  261. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-D0nCNaeB.js} +2 -2
  262. package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
  263. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
  264. package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
  265. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-C-S5CehM.js} +2 -2
  266. package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
  267. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-P_B0JVUQ.js} +2 -2
  268. package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
  269. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-S4Jn9LUE.js} +2 -2
  270. package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
  271. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
  272. package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
  273. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
  274. package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
  275. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-YEMjFARX.js} +3 -3
  276. package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
  277. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-DnTm55nG.js} +2 -2
  278. package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
  279. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CUwebtO2.js} +2 -2
  280. package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
  281. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
  282. package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
  283. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-BpgP4087.js} +2 -2
  284. package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-BpgP4087.js.map} +1 -1
  285. package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
  286. package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
  287. package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
  288. package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
  289. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
  290. package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
  291. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-CYSPdqWk.js} +2 -2
  292. package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-CYSPdqWk.js.map} +1 -1
  293. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-CPh6Zor1.js} +2 -2
  294. package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
  295. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-Ds-8830B.js} +2 -2
  296. package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
  297. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-CJODUxBk.js} +2 -2
  298. package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-CJODUxBk.js.map} +1 -1
  299. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
  300. package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
  301. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-CjwVpw6k.js} +2 -2
  302. package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-CjwVpw6k.js.map} +1 -1
  303. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-2vZa9Ic3.js} +2 -2
  304. package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
  305. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-CUU5XDgT.js} +2 -2
  306. package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
  307. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
  308. package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
  309. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-BwpSRDUa.js} +2 -2
  310. package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-BwpSRDUa.js.map} +1 -1
  311. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-DBzUW1XC.js} +2 -2
  312. package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-DBzUW1XC.js.map} +1 -1
  313. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CGNNsjvE.js} +2 -2
  314. package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
  315. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-D27G86Ul.js} +2 -2
  316. package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-D27G86Ul.js.map} +1 -1
  317. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
  318. package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
  319. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-C6MOB7Au.js} +2 -2
  320. package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-C6MOB7Au.js.map} +1 -1
  321. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-BxfBlZ26.js} +2 -2
  322. package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-BxfBlZ26.js.map} +1 -1
  323. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-NI237wA-.js} +2 -2
  324. package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-NI237wA-.js.map} +1 -1
  325. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-Byn2_2v6.js} +2 -2
  326. package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-Byn2_2v6.js.map} +1 -1
  327. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-D-7PhZjx.js} +2 -2
  328. package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-D-7PhZjx.js.map} +1 -1
  329. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-BoAsK_FL.js} +2 -2
  330. package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-BoAsK_FL.js.map} +1 -1
  331. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-DCSxJIS4.js} +2 -2
  332. package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-DCSxJIS4.js.map} +1 -1
  333. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-CHS3prza.js} +2 -2
  334. package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-CHS3prza.js.map} +1 -1
  335. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-D7K35U7S.js} +2 -2
  336. package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
  337. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-eq9xE07G.js} +2 -2
  338. package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-eq9xE07G.js.map} +1 -1
  339. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-C1DMpBua.js} +2 -2
  340. package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-C1DMpBua.js.map} +1 -1
  341. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-Di5SBCY-.js} +2 -2
  342. package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-Di5SBCY-.js.map} +1 -1
  343. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index--_R7COnA.js} +2 -2
  344. package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index--_R7COnA.js.map} +1 -1
  345. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-BUol9HDD.js} +3 -3
  346. package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-BUol9HDD.js.map} +1 -1
  347. package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-CT9oykfw.js} +2 -2
  348. package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-CT9oykfw.js.map} +1 -1
  349. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-Ddwvf87H.js} +2 -2
  350. package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-Ddwvf87H.js.map} +1 -1
  351. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-LiX0qZbN.js} +2 -2
  352. package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
  353. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-CL3DVEwb.js} +2 -2
  354. package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
  355. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CC5cFeq6.js} +2 -2
  356. package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CC5cFeq6.js.map} +1 -1
  357. package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-ngFQ9bs0.js} +2 -2
  358. package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-ngFQ9bs0.js.map} +1 -1
  359. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-BEU6I0KK.js} +2 -2
  360. package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-BEU6I0KK.js.map} +1 -1
  361. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BWZdLA6y.js} +2 -2
  362. package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BWZdLA6y.js.map} +1 -1
  363. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-K6_Chm7n.js} +2 -2
  364. package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-K6_Chm7n.js.map} +1 -1
  365. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CWkphauf.js} +2 -2
  366. package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CWkphauf.js.map} +1 -1
  367. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-DrNgkamn.js} +2 -2
  368. package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-DrNgkamn.js.map} +1 -1
  369. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CMo3sw5_.js} +2 -2
  370. package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CMo3sw5_.js.map} +1 -1
  371. package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-DppNTW5e.js} +2 -2
  372. package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-DppNTW5e.js.map} +1 -1
  373. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-CD8aPMbZ.js} +2 -2
  374. package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-CD8aPMbZ.js.map} +1 -1
  375. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-B4z90fQD.js} +2 -2
  376. package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-B4z90fQD.js.map} +1 -1
  377. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2-CAKRU_QC.js} +2 -2
  378. package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2-CAKRU_QC.js.map} +1 -1
  379. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-KhI3HrzX.js} +2 -2
  380. package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
  381. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-BtdGIpuq.js} +2 -2
  382. package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-BtdGIpuq.js.map} +1 -1
  383. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-ZoBUkXoD.js} +2 -2
  384. package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-ZoBUkXoD.js.map} +1 -1
  385. package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CltxQP-P.js} +2 -2
  386. package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CltxQP-P.js.map} +1 -1
  387. package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-C32OUSGf.js} +2 -2
  388. package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-C32OUSGf.js.map} +1 -1
  389. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-0IxoyAVZ.js} +2 -2
  390. package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
  391. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-4eKCkyBn.js} +2 -2
  392. package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-4eKCkyBn.js.map} +1 -1
  393. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-zLTUWqhi.js} +2 -2
  394. package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
  395. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-BtN2vpOX.js} +2 -2
  396. package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-BtN2vpOX.js.map} +1 -1
  397. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-_spj49qL.js} +2 -2
  398. package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-_spj49qL.js.map} +1 -1
  399. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-Bm9KFZvd.js} +2 -2
  400. package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
  401. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-DOmpm6v9.js} +2 -2
  402. package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
  403. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-D2rj4rea.js} +2 -2
  404. package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-D2rj4rea.js.map} +1 -1
  405. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-OskEpomF.js} +3 -3
  406. package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-OskEpomF.js.map} +1 -1
  407. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-BjMgsNSF.js} +2 -2
  408. package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
  409. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-CLhyYWa7.js} +2 -2
  410. package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-CLhyYWa7.js.map} +1 -1
  411. package/ccw/frontend/dist/index.html +1 -1
  412. package/package.json +105 -105
  413. package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js +0 -150
  414. package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
  415. package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js +0 -7
  416. package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js.map +0 -1
@@ -0,0 +1,86 @@
1
+ # UX Writing Standards
2
+
3
+ Guidelines for all text content in UI components. From Impeccable's UX writing reference.
4
+
5
+ ---
6
+
7
+ ## Button Labels
8
+
9
+ - **NEVER**: "OK", "Submit", "Yes", "No", "Cancel" (generic)
10
+ - **ALWAYS**: verb + object — "Save changes", "Create account", "Delete message"
11
+ - Destructive actions: name the destruction + show count — "Delete 5 items" not "Delete selected"
12
+ - Primary CTA: specific benefit — "Start free trial" not "Get started"
13
+
14
+ ## Error Messages
15
+
16
+ Formula: (1) What happened + (2) Why + (3) How to fix
17
+
18
+ | Type | Template |
19
+ |------|----------|
20
+ | Format | "{Field} must be {format}. Example: {example}" |
21
+ | Required | "{Field} is required to {reason}" |
22
+ | Permission | "You don't have access to {resource}. Contact {who} for access" |
23
+ | Network | "Couldn't reach the server. Check your connection and try again" |
24
+ | Server | "Something went wrong on our end. Try again in a few minutes" |
25
+
26
+ - Never blame user: "Please enter..." not "You entered..."
27
+ - Never use codes alone: "Error 404" → "Page not found"
28
+ - Be specific: "Password must be 8+ characters with a number" not "Invalid password"
29
+
30
+ ## Empty States
31
+
32
+ Three components: (1) Acknowledge + (2) Explain value + (3) Provide action
33
+
34
+ | Context | Example |
35
+ |---------|---------|
36
+ | First use | "No projects yet. Create your first project to get started. [Create project]" |
37
+ | Search | "No results for '{query}'. Try a different search term or [browse all]" |
38
+ | Filtered | "No items match these filters. [Clear filters]" |
39
+ | Error | "Couldn't load items. [Try again]" |
40
+
41
+ ## Loading States
42
+
43
+ - Be specific: "Saving your draft..." not "Loading..."
44
+ - Multi-step: show progress — "Uploading (2 of 5 files)..."
45
+ - Duration hint: "This usually takes about 30 seconds"
46
+
47
+ ## Confirmation Dialogs
48
+
49
+ - Use sparingly — prefer undo over confirm
50
+ - Title: what will happen — "Delete this project?"
51
+ - Body: consequences — "This will permanently delete 12 files. This can't be undone."
52
+ - Buttons: specific — "Delete project" / "Keep project" (not OK/Cancel)
53
+
54
+ ## Voice & Tone
55
+
56
+ - **Voice**: consistent brand personality (professional/friendly/technical — choose one)
57
+ - **Tone**: adapts to moment — cheerful for success, empathetic for errors, neutral for routine
58
+ - Keep consistent: same word for same concept everywhere (delete/remove/trash → pick one)
59
+
60
+ ## Form Instructions
61
+
62
+ - Show format with placeholder: `placeholder="john@example.com"`
63
+ - Explain non-obvious fields with helper text below label
64
+ - Mark optional fields (not required ones) — most fields should be required
65
+ - Group related fields with clear section headers
66
+
67
+ ## Translation Planning
68
+
69
+ | Language | Length vs English |
70
+ |----------|------------------|
71
+ | German | +30% |
72
+ | French | +20% |
73
+ | Finnish | +30-40% |
74
+ | Chinese | -30% |
75
+ | Japanese | -10-20% |
76
+
77
+ - Design for longest language (German)
78
+ - Never truncate translated text — allow wrapping
79
+ - Avoid idioms and cultural references in source text
80
+
81
+ ## Redundant Copy Detection
82
+
83
+ - Don't repeat visible information (heading ≠ first paragraph)
84
+ - Labels describe the field, not restate the value
85
+ - Tooltips add information, not repeat the label
86
+ - If heading says it all, skip the intro paragraph
@@ -98,6 +98,9 @@ Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5
98
98
  ## Specs Reference
99
99
 
100
100
  - [specs/pipelines.md](specs/pipelines.md) — Pipeline definitions and task registry
101
+ - [specs/design-standards.md](specs/design-standards.md) — Impeccable visual design standards
102
+ - [specs/anti-patterns.md](specs/anti-patterns.md) — AI slop detection catalog (20 items)
103
+ - [specs/heuristics.md](specs/heuristics.md) — Nielsen's 10 usability heuristics evaluation framework
101
104
 
102
105
  ## Session Directory
103
106
 
@@ -101,6 +101,36 @@ const handleSubmit = async () => {
101
101
  | Text input for folder path | Add directory picker: `<input type="file" webkitdirectory />` |
102
102
  | No validation | Add validation rules and error messages |
103
103
 
104
+ ### Visual Design Solutions
105
+
106
+ Reference `specs/design-standards.md` for target standards.
107
+
108
+ | Issue | Solution Design |
109
+ |-------|-----------------|
110
+ | Pure black/white | Define OKLCH neutral scale tinted toward brand hue (chroma 0.005-0.01) |
111
+ | Generic fonts | Select from: Instrument Sans, Plus Jakarta Sans, DM Sans, Space Grotesk, Fraunces |
112
+ | No modular scale | Choose ratio (1.200 or 1.250), derive all sizes from base 16px |
113
+ | Missing fluid sizing | Apply clamp() to display sizes (xl+): `clamp(1.25rem, 1.1rem + 0.5vw, 1.5rem)` |
114
+ | All buttons primary | Define: primary (filled), secondary (outline/ghost), tertiary (text link) |
115
+ | Monotonous spacing | Apply 4pt scale with rhythm: tight (4-8px), comfortable (16-24px), generous (48-96px) |
116
+ | Nested cards | Flatten: remove inner card, use spacing + subtle border-bottom divider |
117
+ | Layout animations | Replace with transform: translateX/Y/scale + opacity transitions |
118
+ | No reduced-motion | Add global `@media (prefers-reduced-motion: reduce)` reset |
119
+ | Missing focus-visible | Add `:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px }` |
120
+ | Bounce easing | Replace with ease-out-quart: `cubic-bezier(0.25, 1, 0.5, 1)` |
121
+ | Missing interaction states | Define all 8 states per component with CSS selectors and ARIA attributes |
122
+
123
+ ### UX Writing Solutions
124
+
125
+ | Issue | Solution |
126
+ |-------|----------|
127
+ | Generic button labels | Replace with verb+object: "Save changes", "Create project", "Delete 3 items" |
128
+ | Error without guidance | Apply formula: what happened + why + how to fix. Template per error type |
129
+ | Empty state without action | Three parts: acknowledge → explain value → provide action button |
130
+ | Loading text generic | Be specific: "Saving your draft..." not "Loading..." Show progress for multi-step |
131
+ | Confirmation too generic | Title: what will happen. Body: consequences. Buttons: specific actions (not OK/Cancel) |
132
+ | Redundant copy | Remove intro paragraph if heading is self-explanatory. Labels ≠ values |
133
+
104
134
  ## Phase 4: Design Document Generation
105
135
 
106
136
  1. Generate implementation guide for each issue and write to `<session>/artifacts/design-guide.md`
@@ -69,6 +69,20 @@ For each issue from scan report:
69
69
  | No error handling | Missing catch block | Add try/catch with error state |
70
70
  | Race condition | Multiple concurrent requests | Add request cancellation or debounce |
71
71
 
72
+ ### Visual Design Diagnosis
73
+
74
+ | Pattern | Root Cause | Fix Strategy |
75
+ |---------|------------|--------------|
76
+ | Pure black/white colors | No intentional color system | Introduce OKLCH palette with tinted neutrals |
77
+ | Generic font usage | Default font selection | Replace with distinctive alternatives from recommended list |
78
+ | Missing interaction states | Incomplete component design | Add all 8 states per Impeccable spec |
79
+ | Layout animations | Wrong animation properties | Switch to transform + opacity, add will-change via JS |
80
+ | No reduced-motion | Accessibility oversight | Add @media (prefers-reduced-motion: reduce) global query |
81
+ | All buttons primary | No hierarchy design | Establish primary/secondary/tertiary button system |
82
+ | Monotonous spacing | No spacing system | Implement 4pt scale with rhythm variation |
83
+ | Nested cards | Over-containment | Flatten to spacing + dividers |
84
+ | Missing focus-visible | Outdated focus handling | Replace :focus with :focus-visible, add ring spec |
85
+
72
86
  ## Phase 4: Diagnosis Report
73
87
 
74
88
  1. Generate root cause analysis for each issue and write to `<session>/artifacts/diagnosis.md`
@@ -87,7 +101,8 @@ If new root cause patterns discovered:
87
101
  pattern_types: {
88
102
  state_management: <count>,
89
103
  event_binding: <count>,
90
- async_handling: <count>
104
+ async_handling: <count>,
105
+ visual_design: <count>
91
106
  }
92
107
  })
93
108
  ```
@@ -63,6 +63,48 @@ Scan strategy:
63
63
  | Input without validation | Form input without validation rules | Low |
64
64
  | Missing file selector | Text input for file/folder path without picker | Medium |
65
65
 
66
+ ### Visual Design Scanning
67
+
68
+ In addition to interaction issues, scan for visual design quality problems.
69
+ Reference `specs/design-standards.md` and `specs/anti-patterns.md`.
70
+
71
+ | Category | Detection Pattern | Severity |
72
+ |----------|-------------------|----------|
73
+ | AI color palette | Cyan (#00d4ff, #06b6d4), purple-blue gradients on dark | High |
74
+ | Pure black/white | #000, #fff, rgb(0,0,0), rgb(255,255,255) as primary colors | High |
75
+ | Generic font | Inter, Roboto, Open Sans, Arial as primary font-family | Medium |
76
+ | All buttons primary | Every button has same fill treatment, no hierarchy | High |
77
+ | Nested cards | border/shadow inside border/shadow containers | Medium |
78
+ | No focus-visible | Using :focus or outline:none without :focus-visible | High |
79
+ | Layout animations | Animating width/height/margin/padding | Medium |
80
+ | No reduced-motion | Missing @media(prefers-reduced-motion) | Medium |
81
+ | Bounce easing | cubic-bezier with negative values, spring/bounce | Medium |
82
+ | Monotonous spacing | >70% same padding/margin value | Low |
83
+ | Missing 8 states | Interactive elements with <5 defined states | Medium |
84
+ | Glassmorphism overuse | backdrop-filter:blur on >2 components | Medium |
85
+ | Generic button labels | "OK", "Submit", "Yes/No", "Cancel" without specific verb+object | Medium |
86
+ | Error messages without fix guidance | Error shows "Something went wrong" with no next step | High |
87
+ | Empty states without action | Data list shows "No data" without create/import action | Medium |
88
+ | Redundant copy | Heading text repeated in first paragraph (>50% word overlap) | Low |
89
+
90
+ ### Heuristic UX Scanning
91
+
92
+ Apply Nielsen's 10 usability heuristics as a structured scan checklist.
93
+ Reference: `specs/heuristics.md`
94
+
95
+ | Heuristic | What to Check | Severity |
96
+ |-----------|---------------|----------|
97
+ | Visibility of system status | Loading indicators, progress bars, state feedback, timestamps | High |
98
+ | Match between system and real world | Jargon-free labels, familiar metaphors, logical ordering | Medium |
99
+ | User control and freedom | Undo/redo, back navigation, cancel actions, escape from modals | High |
100
+ | Consistency and standards | Same terms/icons for same actions, platform conventions | Medium |
101
+ | Error prevention | Confirmation for destructive actions, input validation, disable invalid options | High |
102
+ | Recognition over recall | Visible options, recent items, search suggestions, breadcrumbs | Medium |
103
+ | Flexibility and efficiency | Keyboard shortcuts, power-user features, bulk actions | Low |
104
+ | Aesthetic and minimalist design | Information density, noise reduction, visual hierarchy | Medium |
105
+ | Help users recover from errors | Error messages with fix guidance (what+why+fix), retry options | High |
106
+ | Help and documentation | Tooltips, onboarding, contextual help, empty states with guidance | Low |
107
+
66
108
  For each component file:
67
109
  1. Read file content
68
110
  2. Scan for interaction patterns using Grep
@@ -73,7 +115,7 @@ For each component file:
73
115
  ## Phase 4: Issue Report Generation
74
116
 
75
117
  1. Classify issues by severity (High/Medium/Low)
76
- 2. Group by category (unresponsive, missing feedback, state issues, input UX)
118
+ 2. Group by category (unresponsive, missing feedback, state issues, input UX, visual design)
77
119
  3. Generate structured report and write to `<session>/artifacts/scan-report.md`
78
120
  4. Share state via team_msg:
79
121
  ```
@@ -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)