@booklib/core 2.0.0

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 (374) hide show
  1. package/.cursor/rules/booklib-standards.mdc +40 -0
  2. package/.gemini/context.md +372 -0
  3. package/AGENTS.md +166 -0
  4. package/CHANGELOG.md +226 -0
  5. package/CLAUDE.md +81 -0
  6. package/CODE_OF_CONDUCT.md +31 -0
  7. package/CONTRIBUTING.md +304 -0
  8. package/LICENSE +21 -0
  9. package/PLAN.md +28 -0
  10. package/README.ja.md +198 -0
  11. package/README.ko.md +198 -0
  12. package/README.md +503 -0
  13. package/README.pt-BR.md +198 -0
  14. package/README.uk.md +241 -0
  15. package/README.zh-CN.md +198 -0
  16. package/SECURITY.md +9 -0
  17. package/agents/architecture-reviewer.md +136 -0
  18. package/agents/booklib-reviewer.md +90 -0
  19. package/agents/data-reviewer.md +107 -0
  20. package/agents/jvm-reviewer.md +146 -0
  21. package/agents/python-reviewer.md +128 -0
  22. package/agents/rust-reviewer.md +115 -0
  23. package/agents/ts-reviewer.md +110 -0
  24. package/agents/ui-reviewer.md +117 -0
  25. package/assets/logo.svg +36 -0
  26. package/bin/booklib-mcp.js +304 -0
  27. package/bin/booklib.js +1705 -0
  28. package/bin/skills.cjs +1292 -0
  29. package/booklib-router.mdc +36 -0
  30. package/booklib.config.json +19 -0
  31. package/commands/animation-at-work.md +10 -0
  32. package/commands/clean-code-reviewer.md +10 -0
  33. package/commands/data-intensive-patterns.md +10 -0
  34. package/commands/data-pipelines.md +10 -0
  35. package/commands/design-patterns.md +10 -0
  36. package/commands/domain-driven-design.md +10 -0
  37. package/commands/effective-java.md +10 -0
  38. package/commands/effective-kotlin.md +10 -0
  39. package/commands/effective-python.md +10 -0
  40. package/commands/effective-typescript.md +10 -0
  41. package/commands/kotlin-in-action.md +10 -0
  42. package/commands/lean-startup.md +10 -0
  43. package/commands/microservices-patterns.md +10 -0
  44. package/commands/programming-with-rust.md +10 -0
  45. package/commands/refactoring-ui.md +10 -0
  46. package/commands/rust-in-action.md +10 -0
  47. package/commands/skill-router.md +10 -0
  48. package/commands/spring-boot-in-action.md +10 -0
  49. package/commands/storytelling-with-data.md +10 -0
  50. package/commands/system-design-interview.md +10 -0
  51. package/commands/using-asyncio-python.md +10 -0
  52. package/commands/web-scraping-python.md +10 -0
  53. package/community/registry.json +1616 -0
  54. package/hooks/hooks.json +23 -0
  55. package/hooks/posttooluse-capture.mjs +67 -0
  56. package/hooks/suggest.js +153 -0
  57. package/lib/agent-behaviors.js +40 -0
  58. package/lib/agent-detector.js +96 -0
  59. package/lib/config-loader.js +39 -0
  60. package/lib/conflict-resolver.js +148 -0
  61. package/lib/context-builder.js +574 -0
  62. package/lib/discovery-engine.js +298 -0
  63. package/lib/doctor/hook-installer.js +83 -0
  64. package/lib/doctor/usage-tracker.js +87 -0
  65. package/lib/engine/ai-features.js +253 -0
  66. package/lib/engine/auditor.js +103 -0
  67. package/lib/engine/bm25-index.js +178 -0
  68. package/lib/engine/capture.js +120 -0
  69. package/lib/engine/corrections.js +198 -0
  70. package/lib/engine/doctor.js +195 -0
  71. package/lib/engine/graph-injector.js +137 -0
  72. package/lib/engine/graph.js +161 -0
  73. package/lib/engine/handoff.js +405 -0
  74. package/lib/engine/indexer.js +242 -0
  75. package/lib/engine/parser.js +53 -0
  76. package/lib/engine/query-expander.js +42 -0
  77. package/lib/engine/reranker.js +40 -0
  78. package/lib/engine/rrf.js +59 -0
  79. package/lib/engine/scanner.js +151 -0
  80. package/lib/engine/searcher.js +139 -0
  81. package/lib/engine/session-coordinator.js +306 -0
  82. package/lib/engine/session-manager.js +429 -0
  83. package/lib/engine/synthesizer.js +70 -0
  84. package/lib/installer.js +70 -0
  85. package/lib/instinct-block.js +33 -0
  86. package/lib/mcp-config-writer.js +88 -0
  87. package/lib/paths.js +57 -0
  88. package/lib/profiles/design.md +19 -0
  89. package/lib/profiles/general.md +16 -0
  90. package/lib/profiles/research-analysis.md +22 -0
  91. package/lib/profiles/software-development.md +23 -0
  92. package/lib/profiles/writing-content.md +19 -0
  93. package/lib/project-initializer.js +916 -0
  94. package/lib/registry/skills.js +102 -0
  95. package/lib/registry-searcher.js +99 -0
  96. package/lib/rules/rules-manager.js +169 -0
  97. package/lib/skill-fetcher.js +333 -0
  98. package/lib/well-known-builder.js +70 -0
  99. package/lib/wizard/index.js +404 -0
  100. package/lib/wizard/integration-detector.js +41 -0
  101. package/lib/wizard/project-detector.js +100 -0
  102. package/lib/wizard/prompt.js +156 -0
  103. package/lib/wizard/registry-embeddings.js +107 -0
  104. package/lib/wizard/skill-recommender.js +69 -0
  105. package/llms-full.txt +254 -0
  106. package/llms.txt +70 -0
  107. package/package.json +45 -0
  108. package/research-reports/2026-04-01-current-architecture.md +160 -0
  109. package/research-reports/IDEAS.md +93 -0
  110. package/rules/common/clean-code.md +42 -0
  111. package/rules/java/effective-java.md +42 -0
  112. package/rules/kotlin/effective-kotlin.md +37 -0
  113. package/rules/python/effective-python.md +38 -0
  114. package/rules/rust/rust.md +37 -0
  115. package/rules/typescript/effective-typescript.md +42 -0
  116. package/scripts/gen-llms-full.mjs +36 -0
  117. package/scripts/gen-og.mjs +142 -0
  118. package/scripts/validate-frontmatter.js +25 -0
  119. package/skills/animation-at-work/SKILL.md +270 -0
  120. package/skills/animation-at-work/assets/example_asset.txt +1 -0
  121. package/skills/animation-at-work/evals/evals.json +44 -0
  122. package/skills/animation-at-work/evals/results.json +13 -0
  123. package/skills/animation-at-work/examples/after.md +64 -0
  124. package/skills/animation-at-work/examples/before.md +35 -0
  125. package/skills/animation-at-work/references/api_reference.md +369 -0
  126. package/skills/animation-at-work/references/review-checklist.md +79 -0
  127. package/skills/animation-at-work/scripts/audit_animations.py +295 -0
  128. package/skills/animation-at-work/scripts/example.py +1 -0
  129. package/skills/clean-code-reviewer/SKILL.md +444 -0
  130. package/skills/clean-code-reviewer/audit.json +35 -0
  131. package/skills/clean-code-reviewer/evals/evals.json +185 -0
  132. package/skills/clean-code-reviewer/evals/results.json +13 -0
  133. package/skills/clean-code-reviewer/examples/after.md +48 -0
  134. package/skills/clean-code-reviewer/examples/before.md +33 -0
  135. package/skills/clean-code-reviewer/references/api_reference.md +158 -0
  136. package/skills/clean-code-reviewer/references/practices-catalog.md +282 -0
  137. package/skills/clean-code-reviewer/references/review-checklist.md +254 -0
  138. package/skills/clean-code-reviewer/scripts/pre-review.py +206 -0
  139. package/skills/data-intensive-patterns/SKILL.md +267 -0
  140. package/skills/data-intensive-patterns/assets/example_asset.txt +1 -0
  141. package/skills/data-intensive-patterns/evals/evals.json +54 -0
  142. package/skills/data-intensive-patterns/evals/results.json +13 -0
  143. package/skills/data-intensive-patterns/examples/after.md +61 -0
  144. package/skills/data-intensive-patterns/examples/before.md +38 -0
  145. package/skills/data-intensive-patterns/references/api_reference.md +34 -0
  146. package/skills/data-intensive-patterns/references/patterns-catalog.md +551 -0
  147. package/skills/data-intensive-patterns/references/review-checklist.md +193 -0
  148. package/skills/data-intensive-patterns/scripts/adr.py +213 -0
  149. package/skills/data-intensive-patterns/scripts/example.py +1 -0
  150. package/skills/data-pipelines/SKILL.md +259 -0
  151. package/skills/data-pipelines/assets/example_asset.txt +1 -0
  152. package/skills/data-pipelines/evals/evals.json +45 -0
  153. package/skills/data-pipelines/evals/results.json +13 -0
  154. package/skills/data-pipelines/examples/after.md +97 -0
  155. package/skills/data-pipelines/examples/before.md +37 -0
  156. package/skills/data-pipelines/references/api_reference.md +301 -0
  157. package/skills/data-pipelines/references/review-checklist.md +181 -0
  158. package/skills/data-pipelines/scripts/example.py +1 -0
  159. package/skills/data-pipelines/scripts/new_pipeline.py +444 -0
  160. package/skills/design-patterns/SKILL.md +271 -0
  161. package/skills/design-patterns/assets/example_asset.txt +1 -0
  162. package/skills/design-patterns/evals/evals.json +46 -0
  163. package/skills/design-patterns/evals/results.json +13 -0
  164. package/skills/design-patterns/examples/after.md +52 -0
  165. package/skills/design-patterns/examples/before.md +29 -0
  166. package/skills/design-patterns/references/api_reference.md +1 -0
  167. package/skills/design-patterns/references/patterns-catalog.md +726 -0
  168. package/skills/design-patterns/references/review-checklist.md +173 -0
  169. package/skills/design-patterns/scripts/example.py +1 -0
  170. package/skills/design-patterns/scripts/scaffold.py +807 -0
  171. package/skills/domain-driven-design/SKILL.md +142 -0
  172. package/skills/domain-driven-design/assets/example_asset.txt +1 -0
  173. package/skills/domain-driven-design/evals/evals.json +48 -0
  174. package/skills/domain-driven-design/evals/results.json +13 -0
  175. package/skills/domain-driven-design/examples/after.md +80 -0
  176. package/skills/domain-driven-design/examples/before.md +43 -0
  177. package/skills/domain-driven-design/references/api_reference.md +1 -0
  178. package/skills/domain-driven-design/references/patterns-catalog.md +545 -0
  179. package/skills/domain-driven-design/references/review-checklist.md +158 -0
  180. package/skills/domain-driven-design/scripts/example.py +1 -0
  181. package/skills/domain-driven-design/scripts/scaffold.py +421 -0
  182. package/skills/effective-java/SKILL.md +227 -0
  183. package/skills/effective-java/assets/example_asset.txt +1 -0
  184. package/skills/effective-java/evals/evals.json +46 -0
  185. package/skills/effective-java/evals/results.json +13 -0
  186. package/skills/effective-java/examples/after.md +83 -0
  187. package/skills/effective-java/examples/before.md +37 -0
  188. package/skills/effective-java/references/api_reference.md +1 -0
  189. package/skills/effective-java/references/items-catalog.md +955 -0
  190. package/skills/effective-java/references/review-checklist.md +216 -0
  191. package/skills/effective-java/scripts/checkstyle_setup.py +211 -0
  192. package/skills/effective-java/scripts/example.py +1 -0
  193. package/skills/effective-kotlin/SKILL.md +271 -0
  194. package/skills/effective-kotlin/assets/example_asset.txt +1 -0
  195. package/skills/effective-kotlin/audit.json +29 -0
  196. package/skills/effective-kotlin/evals/evals.json +45 -0
  197. package/skills/effective-kotlin/evals/results.json +13 -0
  198. package/skills/effective-kotlin/examples/after.md +36 -0
  199. package/skills/effective-kotlin/examples/before.md +38 -0
  200. package/skills/effective-kotlin/references/api_reference.md +1 -0
  201. package/skills/effective-kotlin/references/practices-catalog.md +1228 -0
  202. package/skills/effective-kotlin/references/review-checklist.md +126 -0
  203. package/skills/effective-kotlin/scripts/example.py +1 -0
  204. package/skills/effective-python/SKILL.md +441 -0
  205. package/skills/effective-python/evals/evals.json +44 -0
  206. package/skills/effective-python/evals/results.json +13 -0
  207. package/skills/effective-python/examples/after.md +56 -0
  208. package/skills/effective-python/examples/before.md +40 -0
  209. package/skills/effective-python/ref-01-pythonic-thinking.md +202 -0
  210. package/skills/effective-python/ref-02-lists-and-dicts.md +146 -0
  211. package/skills/effective-python/ref-03-functions.md +186 -0
  212. package/skills/effective-python/ref-04-comprehensions-generators.md +211 -0
  213. package/skills/effective-python/ref-05-classes-interfaces.md +188 -0
  214. package/skills/effective-python/ref-06-metaclasses-attributes.md +209 -0
  215. package/skills/effective-python/ref-07-concurrency.md +213 -0
  216. package/skills/effective-python/ref-08-robustness-performance.md +248 -0
  217. package/skills/effective-python/ref-09-testing-debugging.md +253 -0
  218. package/skills/effective-python/ref-10-collaboration.md +175 -0
  219. package/skills/effective-python/references/api_reference.md +218 -0
  220. package/skills/effective-python/references/practices-catalog.md +483 -0
  221. package/skills/effective-python/references/review-checklist.md +190 -0
  222. package/skills/effective-python/scripts/lint.py +173 -0
  223. package/skills/effective-typescript/SKILL.md +262 -0
  224. package/skills/effective-typescript/audit.json +29 -0
  225. package/skills/effective-typescript/evals/evals.json +37 -0
  226. package/skills/effective-typescript/evals/results.json +13 -0
  227. package/skills/effective-typescript/examples/after.md +70 -0
  228. package/skills/effective-typescript/examples/before.md +47 -0
  229. package/skills/effective-typescript/references/api_reference.md +118 -0
  230. package/skills/effective-typescript/references/practices-catalog.md +371 -0
  231. package/skills/effective-typescript/scripts/review.py +169 -0
  232. package/skills/kotlin-in-action/SKILL.md +261 -0
  233. package/skills/kotlin-in-action/assets/example_asset.txt +1 -0
  234. package/skills/kotlin-in-action/evals/evals.json +43 -0
  235. package/skills/kotlin-in-action/evals/results.json +13 -0
  236. package/skills/kotlin-in-action/examples/after.md +53 -0
  237. package/skills/kotlin-in-action/examples/before.md +39 -0
  238. package/skills/kotlin-in-action/references/api_reference.md +1 -0
  239. package/skills/kotlin-in-action/references/practices-catalog.md +436 -0
  240. package/skills/kotlin-in-action/references/review-checklist.md +204 -0
  241. package/skills/kotlin-in-action/scripts/example.py +1 -0
  242. package/skills/kotlin-in-action/scripts/setup_detekt.py +224 -0
  243. package/skills/lean-startup/SKILL.md +160 -0
  244. package/skills/lean-startup/assets/example_asset.txt +1 -0
  245. package/skills/lean-startup/evals/evals.json +43 -0
  246. package/skills/lean-startup/evals/results.json +13 -0
  247. package/skills/lean-startup/examples/after.md +80 -0
  248. package/skills/lean-startup/examples/before.md +34 -0
  249. package/skills/lean-startup/references/api_reference.md +319 -0
  250. package/skills/lean-startup/references/review-checklist.md +137 -0
  251. package/skills/lean-startup/scripts/example.py +1 -0
  252. package/skills/lean-startup/scripts/new_experiment.py +286 -0
  253. package/skills/microservices-patterns/SKILL.md +384 -0
  254. package/skills/microservices-patterns/evals/evals.json +45 -0
  255. package/skills/microservices-patterns/evals/results.json +13 -0
  256. package/skills/microservices-patterns/examples/after.md +69 -0
  257. package/skills/microservices-patterns/examples/before.md +40 -0
  258. package/skills/microservices-patterns/references/patterns-catalog.md +391 -0
  259. package/skills/microservices-patterns/references/review-checklist.md +169 -0
  260. package/skills/microservices-patterns/scripts/new_service.py +583 -0
  261. package/skills/programming-with-rust/SKILL.md +209 -0
  262. package/skills/programming-with-rust/evals/evals.json +37 -0
  263. package/skills/programming-with-rust/evals/results.json +13 -0
  264. package/skills/programming-with-rust/examples/after.md +107 -0
  265. package/skills/programming-with-rust/examples/before.md +59 -0
  266. package/skills/programming-with-rust/references/api_reference.md +152 -0
  267. package/skills/programming-with-rust/references/practices-catalog.md +335 -0
  268. package/skills/programming-with-rust/scripts/review.py +142 -0
  269. package/skills/refactoring-ui/SKILL.md +362 -0
  270. package/skills/refactoring-ui/assets/example_asset.txt +1 -0
  271. package/skills/refactoring-ui/evals/evals.json +45 -0
  272. package/skills/refactoring-ui/evals/results.json +13 -0
  273. package/skills/refactoring-ui/examples/after.md +85 -0
  274. package/skills/refactoring-ui/examples/before.md +58 -0
  275. package/skills/refactoring-ui/references/api_reference.md +355 -0
  276. package/skills/refactoring-ui/references/review-checklist.md +114 -0
  277. package/skills/refactoring-ui/scripts/audit_css.py +250 -0
  278. package/skills/refactoring-ui/scripts/example.py +1 -0
  279. package/skills/rust-in-action/SKILL.md +350 -0
  280. package/skills/rust-in-action/evals/evals.json +38 -0
  281. package/skills/rust-in-action/evals/results.json +13 -0
  282. package/skills/rust-in-action/examples/after.md +156 -0
  283. package/skills/rust-in-action/examples/before.md +56 -0
  284. package/skills/rust-in-action/references/practices-catalog.md +346 -0
  285. package/skills/rust-in-action/scripts/review.py +147 -0
  286. package/skills/skill-router/SKILL.md +186 -0
  287. package/skills/skill-router/evals/evals.json +38 -0
  288. package/skills/skill-router/evals/results.json +13 -0
  289. package/skills/skill-router/examples/after.md +63 -0
  290. package/skills/skill-router/examples/before.md +39 -0
  291. package/skills/skill-router/references/api_reference.md +24 -0
  292. package/skills/skill-router/references/routing-heuristics.md +89 -0
  293. package/skills/skill-router/references/skill-catalog.md +174 -0
  294. package/skills/skill-router/scripts/route.py +266 -0
  295. package/skills/spring-boot-in-action/SKILL.md +340 -0
  296. package/skills/spring-boot-in-action/evals/evals.json +39 -0
  297. package/skills/spring-boot-in-action/evals/results.json +13 -0
  298. package/skills/spring-boot-in-action/examples/after.md +185 -0
  299. package/skills/spring-boot-in-action/examples/before.md +84 -0
  300. package/skills/spring-boot-in-action/references/practices-catalog.md +403 -0
  301. package/skills/spring-boot-in-action/scripts/review.py +184 -0
  302. package/skills/storytelling-with-data/SKILL.md +241 -0
  303. package/skills/storytelling-with-data/assets/example_asset.txt +1 -0
  304. package/skills/storytelling-with-data/evals/evals.json +47 -0
  305. package/skills/storytelling-with-data/evals/results.json +13 -0
  306. package/skills/storytelling-with-data/examples/after.md +50 -0
  307. package/skills/storytelling-with-data/examples/before.md +33 -0
  308. package/skills/storytelling-with-data/references/api_reference.md +379 -0
  309. package/skills/storytelling-with-data/references/review-checklist.md +111 -0
  310. package/skills/storytelling-with-data/scripts/chart_review.py +301 -0
  311. package/skills/storytelling-with-data/scripts/example.py +1 -0
  312. package/skills/system-design-interview/SKILL.md +233 -0
  313. package/skills/system-design-interview/assets/example_asset.txt +1 -0
  314. package/skills/system-design-interview/evals/evals.json +46 -0
  315. package/skills/system-design-interview/evals/results.json +13 -0
  316. package/skills/system-design-interview/examples/after.md +94 -0
  317. package/skills/system-design-interview/examples/before.md +27 -0
  318. package/skills/system-design-interview/references/api_reference.md +582 -0
  319. package/skills/system-design-interview/references/review-checklist.md +201 -0
  320. package/skills/system-design-interview/scripts/example.py +1 -0
  321. package/skills/system-design-interview/scripts/new_design.py +421 -0
  322. package/skills/using-asyncio-python/SKILL.md +290 -0
  323. package/skills/using-asyncio-python/assets/example_asset.txt +1 -0
  324. package/skills/using-asyncio-python/evals/evals.json +43 -0
  325. package/skills/using-asyncio-python/evals/results.json +13 -0
  326. package/skills/using-asyncio-python/examples/after.md +68 -0
  327. package/skills/using-asyncio-python/examples/before.md +39 -0
  328. package/skills/using-asyncio-python/references/api_reference.md +267 -0
  329. package/skills/using-asyncio-python/references/review-checklist.md +149 -0
  330. package/skills/using-asyncio-python/scripts/check_blocking.py +270 -0
  331. package/skills/using-asyncio-python/scripts/example.py +1 -0
  332. package/skills/web-scraping-python/SKILL.md +280 -0
  333. package/skills/web-scraping-python/assets/example_asset.txt +1 -0
  334. package/skills/web-scraping-python/evals/evals.json +46 -0
  335. package/skills/web-scraping-python/evals/results.json +13 -0
  336. package/skills/web-scraping-python/examples/after.md +109 -0
  337. package/skills/web-scraping-python/examples/before.md +40 -0
  338. package/skills/web-scraping-python/references/api_reference.md +393 -0
  339. package/skills/web-scraping-python/references/review-checklist.md +163 -0
  340. package/skills/web-scraping-python/scripts/example.py +1 -0
  341. package/skills/web-scraping-python/scripts/new_scraper.py +231 -0
  342. package/skills/writing-plans/audit.json +34 -0
  343. package/tests/agent-detector.test.js +83 -0
  344. package/tests/corrections.test.js +245 -0
  345. package/tests/doctor/hook-installer.test.js +72 -0
  346. package/tests/doctor/usage-tracker.test.js +140 -0
  347. package/tests/engine/benchmark-eval.test.js +31 -0
  348. package/tests/engine/bm25-index.test.js +85 -0
  349. package/tests/engine/capture-command.test.js +35 -0
  350. package/tests/engine/capture.test.js +17 -0
  351. package/tests/engine/graph-augmented-search.test.js +107 -0
  352. package/tests/engine/graph-injector.test.js +44 -0
  353. package/tests/engine/graph.test.js +216 -0
  354. package/tests/engine/hybrid-searcher.test.js +74 -0
  355. package/tests/engine/indexer-bm25.test.js +37 -0
  356. package/tests/engine/mcp-tools.test.js +73 -0
  357. package/tests/engine/project-initializer-mcp.test.js +99 -0
  358. package/tests/engine/query-expander.test.js +36 -0
  359. package/tests/engine/reranker.test.js +51 -0
  360. package/tests/engine/rrf.test.js +49 -0
  361. package/tests/engine/srag-prefix.test.js +47 -0
  362. package/tests/instinct-block.test.js +23 -0
  363. package/tests/mcp-config-writer.test.js +60 -0
  364. package/tests/project-initializer-new-agents.test.js +48 -0
  365. package/tests/rules/rules-manager.test.js +230 -0
  366. package/tests/well-known-builder.test.js +40 -0
  367. package/tests/wizard/integration-detector.test.js +31 -0
  368. package/tests/wizard/project-detector.test.js +51 -0
  369. package/tests/wizard/prompt-session.test.js +61 -0
  370. package/tests/wizard/prompt.test.js +16 -0
  371. package/tests/wizard/registry-embeddings.test.js +35 -0
  372. package/tests/wizard/skill-recommender.test.js +34 -0
  373. package/tests/wizard/slot-count.test.js +25 -0
  374. package/vercel.json +21 -0
@@ -0,0 +1,355 @@
1
+ # Refactoring UI — Design Tokens & Systems Reference
2
+
3
+ Complete catalog of design systems, scales, and token values from all 9 chapters.
4
+
5
+ ---
6
+
7
+ ## Ch 1: Starting from Scratch
8
+
9
+ ### Design Process
10
+ - Start with a feature, not a layout — don't begin with shell (navbar, sidebar, footer)
11
+ - Work low-fidelity first: grayscale, no shadows, system fonts, constrained sizes
12
+ - Design in cycles: design a simple version → build it → iterate on the real thing
13
+ - Hold the detail — don't waste time on perfect icons or color when the layout isn't right
14
+ - Don't over-design: only design the next thing you're going to build
15
+
16
+ ### Choosing a Personality
17
+ Personality should be decided before picking any specific design values:
18
+
19
+ | Attribute | Elegant/Formal | Neutral/Safe | Playful/Fun |
20
+ |-----------|---------------|-------------|-------------|
21
+ | **Font** | Serif, thin sans-serif | System fonts, clean sans | Rounded sans, display fonts |
22
+ | **Color** | Muted, few hues, gold/navy | Blue, grey, safe palette | Bright, saturated, many hues |
23
+ | **Border-radius** | None or minimal (0–2px) | Small (4px) | Large (8px–full) |
24
+ | **Language** | Formal, professional | Neutral, clear | Casual, friendly, fun |
25
+
26
+ ### Limiting Your Choices
27
+ - **Define systems in advance**: type scale, spacing scale, color palette, shadow scale, font weights, border-radius, width, opacity
28
+ - **Design by choosing from constrained options**, not by picking arbitrary values
29
+ - Systems provide speed (fewer decisions) and consistency (same values everywhere)
30
+
31
+ ---
32
+
33
+ ## Ch 2: Hierarchy is Everything
34
+
35
+ ### The Three Levers of Hierarchy
36
+ 1. **Size** — Larger = more important
37
+ 2. **Weight** — Bolder = more important (use 600–700 for emphasis, 400–500 for normal; never go below 400 for UI text)
38
+ 3. **Color** — Darker = more important
39
+
40
+ ### Text Color System (Light Background)
41
+ | Role | Description | Example Value |
42
+ |------|-------------|---------------|
43
+ | **Primary** | Main content, headings, important text | `hsl(0, 0%, 10%)` — near-black |
44
+ | **Secondary** | Supporting text, descriptions, meta | `hsl(0, 0%, 45%)` — medium grey |
45
+ | **Tertiary** | Placeholders, disabled, timestamps | `hsl(0, 0%, 65%)` — light grey |
46
+
47
+ ### Emphasis Techniques
48
+ - **Don't just make things bigger** — Try weight and color changes first
49
+ - **Emphasize by de-emphasizing surroundings** — Make competing elements less prominent
50
+ - **Labels as supporting cast** — Labels describe data; the data itself should be emphasized
51
+ - **Visual hierarchy ≠ document hierarchy** — An `<h1>` can be small if it's not the focal point
52
+ - **Bold icons need softer color** — Heavy visual weight + high contrast = too loud
53
+
54
+ ### Icon Sizing in Context
55
+ - Icons next to text: match the font size or slightly smaller
56
+ - Icons as primary elements: can be larger, but tone down color/weight to balance
57
+ - Avoid scaling icons beyond their designed size — use different icon sets for different sizes
58
+
59
+ ---
60
+
61
+ ## Ch 3: Layout and Spacing
62
+
63
+ ### Spacing Scale
64
+ A limited set of spacing values to use everywhere:
65
+
66
+ ```
67
+ 4px — Tight: icon-to-label gap, inline element spacing
68
+ 8px — Compact: tight form fields, dense lists
69
+ 12px — Default small: label-to-input, list item padding
70
+ 16px — Default: standard padding, gaps between small elements
71
+ 24px — Comfortable: card padding, section gaps within a component
72
+ 32px — Roomy: between components in a group
73
+ 48px — Spacious: between distinct sections
74
+ 64px — Section: major section separators
75
+ 96px — Large: between page sections
76
+ 128px — Extra large: hero/header padding
77
+ 192px — Maximum padding for very large screens
78
+ 256px — Full-width section padding on desktops
79
+ ```
80
+
81
+ ### Layout Principles
82
+ - **Start with too much white space, then remove** — Easier to tighten than to create breathing room
83
+ - **Don't fill the screen** — Use max-width (e.g., 600–800px for content, 1200px for full layouts)
84
+ - **Grids are a tool, not a rule** — Use them when you need proportional columns; many layouts don't need a grid
85
+ - **Relative sizing doesn't scale** — A 250px sidebar is fine at all widths; don't make it 20% of viewport
86
+ - **Dense UIs need smaller spacing** — Dashboards and data-heavy UIs can use tighter spacing from the scale
87
+ - **Generous UIs need larger spacing** — Marketing pages and hero sections use wider spacing
88
+
89
+ ### Grouping with Spacing
90
+ - **Close = related** — Elements that belong together should have less space between them
91
+ - **Far = unrelated** — Use larger spacing to separate distinct groups
92
+ - **Ambiguous spacing is the enemy** — If spacing between items is uniform, the grouping is unclear
93
+
94
+ ---
95
+
96
+ ## Ch 4: Designing Text
97
+
98
+ ### Type Scale
99
+ A limited set of font sizes to use everywhere:
100
+
101
+ ```
102
+ 12px — Fine print, captions, badges
103
+ 14px — Secondary text, meta information, labels
104
+ 16px — Body text (base size for most interfaces)
105
+ 18px — Slightly emphasized body, lead paragraphs
106
+ 20px — Large body, small headings, subheadings
107
+ 24px — Section headings (h3 equivalent)
108
+ 30px — Page section headings (h2 equivalent)
109
+ 36px — Page titles, hero subheadings
110
+ 48px — Display headings, hero titles
111
+ 60px — Large display, landing page headlines
112
+ 72px — Extra-large display, maximum emphasis
113
+ ```
114
+
115
+ ### Font Weight Scale
116
+ | Weight | Use |
117
+ |--------|-----|
118
+ | 400 (Regular) | Body text, descriptions, de-emphasized content |
119
+ | 500 (Medium) | Slightly emphasized body, labels, navigation |
120
+ | 600 (Semi-bold) | Headings, buttons, emphasized text |
121
+ | 700 (Bold) | Strong emphasis, primary headings |
122
+
123
+ **Never use weights below 400** for UI text — they're too hard to read.
124
+
125
+ ### Line-Height Guidelines
126
+ | Font Size | Recommended Line-Height |
127
+ |-----------|------------------------|
128
+ | 12–14px | 1.5–1.75 (more leading for small text) |
129
+ | 16–18px | 1.5 (standard reading comfort) |
130
+ | 20–24px | 1.25–1.4 (can tighten slightly) |
131
+ | 30–48px | 1.1–1.25 (headings need less) |
132
+ | 48px+ | 1–1.1 (display text: nearly solid) |
133
+
134
+ ### Line Length
135
+ - **Optimal**: 45–75 characters per line
136
+ - **Implementation**: `max-width: 20em` to `35em` on text containers
137
+ - **Centered text**: Only for 1–2 lines maximum; left-align everything else
138
+
139
+ ### Letter-Spacing
140
+ | Context | Letter-Spacing |
141
+ |---------|---------------|
142
+ | Large headings (36px+) | -0.02em to -0.05em (tighten) |
143
+ | Normal body text | 0 (default) |
144
+ | Small uppercase labels | +0.05em to +0.1em (widen) |
145
+ | All-caps text | +0.05em (widen for readability) |
146
+
147
+ ### Link Styling
148
+ - **In body text**: Colored + underlined (or underlined on hover)
149
+ - **In navigation**: No special color; use weight, underline-on-hover, or active indicator
150
+ - **In cards**: The whole card can be clickable; no link styling needed
151
+
152
+ ---
153
+
154
+ ## Ch 5: Working with Color
155
+
156
+ ### HSL Color Model
157
+ ```
158
+ hsl(hue, saturation%, lightness%)
159
+ ```
160
+ - **Hue**: 0–360 (color wheel: 0=red, 120=green, 240=blue)
161
+ - **Saturation**: 0%=grey, 100%=vivid
162
+ - **Lightness**: 0%=black, 50%=pure color, 100%=white
163
+
164
+ ### Building a Complete Palette
165
+
166
+ **Greys (8–9 shades)**:
167
+ | Shade | Lightness Range | Use |
168
+ |-------|----------------|-----|
169
+ | 50 | 97–98% | Page backgrounds, subtle tints |
170
+ | 100 | 93–95% | Card backgrounds, alternate rows |
171
+ | 200 | 85–90% | Borders, dividers |
172
+ | 300 | 75–80% | Disabled text, placeholder icons |
173
+ | 400 | 60–65% | Placeholder text |
174
+ | 500 | 45–50% | Secondary text |
175
+ | 600 | 35–40% | Icons, labels |
176
+ | 700 | 25–30% | Secondary headings |
177
+ | 800 | 15–20% | Primary text, headings |
178
+ | 900 | 5–10% | Maximum emphasis text |
179
+
180
+ **Primary/Accent colors (5–10 shades each)**:
181
+ Follow same pattern: pick middle (button bg), darkest (text), lightest (tinted bg), fill in between.
182
+
183
+ ### Color Accessibility
184
+ | Standard | Ratio | When |
185
+ |----------|-------|------|
186
+ | WCAG AA (normal text) | 4.5:1 | Body text, labels, inputs |
187
+ | WCAG AA (large text) | 3:1 | Headings 18px+ bold, or 24px+ |
188
+ | WCAG AAA (normal) | 7:1 | Enhanced accessibility |
189
+
190
+ ### Grey on Colored Backgrounds
191
+ **Problem**: Pure grey (`hsl(0, 0%, X%)`) looks washed out on colored backgrounds.
192
+
193
+ **Solutions**:
194
+ 1. **Reduce opacity**: `rgba(255,255,255,0.8)` on dark bg; `rgba(0,0,0,0.5)` on light bg
195
+ 2. **Hand-pick**: Choose a color with same hue as background but adjusted saturation/lightness
196
+
197
+ ### Perceived Brightness by Hue
198
+ Hues have different apparent brightness at same HSL lightness:
199
+ - **Brightest** (feel lighter): Yellow (60°), Cyan (180°), Green (120°)
200
+ - **Darkest** (feel darker): Blue (240°), Red (0°), Magenta (300°)
201
+ - Adjust lightness values to compensate when building palettes across hues
202
+
203
+ ### Dark Mode Adaptation
204
+ - Reverse the shade scale: shade-900 becomes background, shade-50 becomes text
205
+ - Reduce saturation slightly (vivid colors are harsh on dark backgrounds)
206
+ - Shadows are less visible on dark — use subtle glows or border accents instead
207
+ - Test carefully: contrast requirements still apply
208
+
209
+ ---
210
+
211
+ ## Ch 6: Creating Depth
212
+
213
+ ### Shadow Elevation Scale
214
+
215
+ ```css
216
+ --shadow-xs: 0 1px 2px rgba(0,0,0,0.05);
217
+ --shadow-sm: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06);
218
+ --shadow-md: 0 4px 6px rgba(0,0,0,0.1), 0 2px 4px rgba(0,0,0,0.06);
219
+ --shadow-lg: 0 10px 15px rgba(0,0,0,0.1), 0 4px 6px rgba(0,0,0,0.05);
220
+ --shadow-xl: 0 20px 25px rgba(0,0,0,0.15), 0 10px 10px rgba(0,0,0,0.05);
221
+ ```
222
+
223
+ ### Shadow Best Practices
224
+ - **Two shadows per level**: Large diffuse + small tight for realism
225
+ - **Raised elements**: Buttons, cards, navbars, floating action buttons
226
+ - **Inset elements**: Input fields, wells, pressed button states
227
+ - **Interactive shadows**: Increase shadow on hover (sm → md) to show clickability
228
+ - **Don't overdo flat design**: Some depth helps users understand interactive affordances
229
+ - **Keep it consistent**: Use only the defined scale; no random shadow values
230
+
231
+ ### Depth Through Overlap
232
+ - Offset an element (e.g., card) so it overlaps a background section
233
+ - Creates visual layering without shadows
234
+ - Negative margins or absolute positioning to achieve the overlap
235
+
236
+ ### Color and Depth
237
+ - **Lighter elements appear closer** to the viewer
238
+ - **Darker elements appear farther** away
239
+ - Use this with shadows: elevated elements can also be slightly lighter in bg color
240
+
241
+ ---
242
+
243
+ ## Ch 7: Working with Images
244
+
245
+ ### Text on Images
246
+
247
+ | Technique | CSS | Best For |
248
+ |-----------|-----|----------|
249
+ | Dark overlay | `background: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)), url(...)` | Hero sections |
250
+ | Lower brightness | `filter: brightness(0.7)` | Subtle dimming |
251
+ | Colorize | `filter: grayscale(100%); mix-blend-mode: multiply` + color overlay | Brand consistency |
252
+ | Text shadow | `text-shadow: 0 2px 4px rgba(0,0,0,0.5)` | Quick fix |
253
+ | Scrim/card | Semi-opaque `background-color` on text container | Readable blocks |
254
+
255
+ ### Image Sizing
256
+
257
+ | Scenario | Approach |
258
+ |----------|----------|
259
+ | Icons at different sizes | Use different icon sets (16px, 24px, 32px) — don't scale |
260
+ | Screenshots in marketing | Capture at display size; don't scale down |
261
+ | User-uploaded avatars | `object-fit: cover` + fixed aspect ratio + bg color fallback |
262
+ | User-uploaded hero images | `object-fit: cover` + fixed height + handle extremes (panoramic, portrait) |
263
+
264
+ ### Object-Fit Values
265
+ ```css
266
+ object-fit: cover; /* Crop to fill — best for avatars, hero images */
267
+ object-fit: contain; /* Fit inside — best for product images, logos */
268
+ object-fit: fill; /* Stretch — avoid for most UI use cases */
269
+ ```
270
+
271
+ ---
272
+
273
+ ## Ch 8: Finishing Touches
274
+
275
+ ### Accent Borders
276
+ ```css
277
+ /* Top accent on card */
278
+ .card { border-top: 4px solid var(--primary-500); }
279
+
280
+ /* Left accent on alert */
281
+ .alert { border-left: 4px solid var(--warning-500); }
282
+
283
+ /* Color-code by type */
284
+ .alert-success { border-left-color: var(--success-500); }
285
+ .alert-danger { border-left-color: var(--danger-500); }
286
+ ```
287
+
288
+ ### Replacing Borders
289
+ | Instead of Border | Try |
290
+ |-------------------|-----|
291
+ | Between list items | More padding/spacing between items |
292
+ | Around cards | Box-shadow (subtle shadow creates implied boundary) |
293
+ | Between sections | Different background color |
294
+ | Around inputs | Background color difference + subtle shadow |
295
+
296
+ ### Empty States
297
+ - **Don't**: Show just "No items found" in grey text
298
+ - **Do**: Show an illustration + explanation + primary call to action
299
+ - **Example**: "No projects yet — Create your first project" with a big button
300
+ - Empty states are onboarding opportunities
301
+
302
+ ### Custom Defaults
303
+ | Default Element | Upgrade |
304
+ |----------------|---------|
305
+ | Bullet lists | Icon lists (checkmarks, arrows, custom icons) |
306
+ | Blockquotes | Large border-left + background tint + italic |
307
+ | Form inputs | Colored focus ring, custom checkbox/radio |
308
+ | Tables | Alternating rows, sticky headers, row hover |
309
+ | Links | Custom underline color/thickness |
310
+
311
+ ---
312
+
313
+ ## Ch 9: Leveling Up
314
+
315
+ ### Learning Approach
316
+ - **Steal from good designs** — Rebuild UIs you admire to understand why they work
317
+ - **Analyze decisions** — Ask "why does this work?" not just "what does it look like?"
318
+ - **Think in systems** — Every decision should fit into a reusable system
319
+ - **Look outside your domain** — SaaS, e-commerce, media, dashboards — all have lessons
320
+ - **Rebuild for practice** — Pick a well-designed app and recreate a page pixel-by-pixel
321
+
322
+ ### Design System Assembly
323
+ Collect all your scales into one system:
324
+
325
+ ```css
326
+ :root {
327
+ /* Spacing */
328
+ --space-1: 4px; --space-2: 8px; --space-3: 12px;
329
+ --space-4: 16px; --space-5: 24px; --space-6: 32px;
330
+ --space-8: 48px; --space-10: 64px; --space-12: 96px;
331
+ --space-16: 128px;
332
+
333
+ /* Type */
334
+ --text-xs: 12px; --text-sm: 14px; --text-base: 16px;
335
+ --text-lg: 18px; --text-xl: 20px; --text-2xl: 24px;
336
+ --text-3xl: 30px; --text-4xl: 36px; --text-5xl: 48px;
337
+
338
+ /* Font Weight */
339
+ --font-normal: 400; --font-medium: 500;
340
+ --font-semibold: 600; --font-bold: 700;
341
+
342
+ /* Shadows */
343
+ --shadow-xs: 0 1px 2px rgba(0,0,0,0.05);
344
+ --shadow-sm: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06);
345
+ --shadow-md: 0 4px 6px rgba(0,0,0,0.1), 0 2px 4px rgba(0,0,0,0.06);
346
+ --shadow-lg: 0 10px 15px rgba(0,0,0,0.1), 0 4px 6px rgba(0,0,0,0.05);
347
+ --shadow-xl: 0 20px 25px rgba(0,0,0,0.15), 0 10px 10px rgba(0,0,0,0.05);
348
+
349
+ /* Border Radius */
350
+ --radius-sm: 2px; --radius-md: 4px;
351
+ --radius-lg: 8px; --radius-full: 9999px;
352
+
353
+ /* Colors: define full shade scales for grey, primary, accent, etc. */
354
+ }
355
+ ```
@@ -0,0 +1,114 @@
1
+ # Refactoring UI — Design Review Checklist
2
+
3
+ Systematic checklist for reviewing UI designs against the 9 chapters
4
+ from *Refactoring UI* by Adam Wathan & Steve Schoger.
5
+
6
+ ---
7
+
8
+ ## 1. Visual Hierarchy (Chapter 2)
9
+
10
+ - [ ] **Ch 2 — Clear hierarchy** — Can you tell what's most important at a glance?
11
+ - [ ] **Ch 2 — Three levers used** — Is hierarchy controlled through size, weight, AND color (not just size)?
12
+ - [ ] **Ch 2 — Labels de-emphasized** — Are labels secondary to the data they describe?
13
+ - [ ] **Ch 2 — No competing elements** — Does only one element dominate attention per section?
14
+ - [ ] **Ch 2 — Font weight ≥400** — Are all UI font weights 400 or above?
15
+ - [ ] **Ch 2 — Icon weight balanced** — Are bold icons toned down with lighter color?
16
+ - [ ] **Ch 2 — Visual ≠ document hierarchy** — Are heading sizes based on design role, not HTML tag?
17
+
18
+ ---
19
+
20
+ ## 2. Layout & Spacing (Chapter 3)
21
+
22
+ - [ ] **Ch 3 — Spacing scale used** — Are all spacing values from a defined scale (e.g., 4/8/12/16/24/32/48/64)?
23
+ - [ ] **Ch 3 — No arbitrary values** — Are there any one-off spacing values not in the scale?
24
+ - [ ] **Ch 3 — Grouping clear** — Are related elements closer together, unrelated elements farther apart?
25
+ - [ ] **Ch 3 — White space generous** — Is there enough breathing room, or is everything crammed?
26
+ - [ ] **Ch 3 — Not filling the screen** — Are content areas max-width constrained?
27
+ - [ ] **Ch 3 — Grid justified** — If a grid is used, does the layout actually need one?
28
+
29
+ ---
30
+
31
+ ## 3. Typography (Chapter 4)
32
+
33
+ - [ ] **Ch 4 — Type scale defined** — Are all font sizes from a defined scale (e.g., 12/14/16/18/20/24/30/36/48)?
34
+ - [ ] **Ch 4 — No arbitrary sizes** — Are there any one-off font sizes not in the scale?
35
+ - [ ] **Ch 4 — Line length controlled** — Are paragraphs 45–75 characters wide (20–35em max-width)?
36
+ - [ ] **Ch 4 — Line-height appropriate** — Taller for body (1.5+), shorter for headings (1–1.25)?
37
+ - [ ] **Ch 4 — No long centered text** — Is centered text limited to 1–2 lines?
38
+ - [ ] **Ch 4 — Numbers right-aligned** — Are numbers in tables right-aligned?
39
+ - [ ] **Ch 4 — Letter-spacing adjusted** — Tightened for large headings, widened for small uppercase?
40
+ - [ ] **Ch 4 — Good font choice** — Is the font appropriate for the personality (serif vs sans, round vs sharp)?
41
+
42
+ ---
43
+
44
+ ## 4. Color (Chapter 5)
45
+
46
+ - [ ] **Ch 5 — HSL-based palette** — Are colors defined in HSL (not random hex picks)?
47
+ - [ ] **Ch 5 — Shade scales built** — Does each color have 5–10 shades (not just one value)?
48
+ - [ ] **Ch 5 — 8+ grey shades** — Is there a full grey palette from near-white to near-black?
49
+ - [ ] **Ch 5 — No grey on color** — Is grey text avoided on colored backgrounds (use opacity or hue-match)?
50
+ - [ ] **Ch 5 — Contrast accessible** — Does body text meet 4.5:1 ratio? Large text 3:1?
51
+ - [ ] **Ch 5 — Perceived brightness** — Are yellow/green hues darkened and blue/purple lightened to balance?
52
+ - [ ] **Ch 5 — Color not sole indicator** — Is information available without relying on color alone?
53
+
54
+ ---
55
+
56
+ ## 5. Depth & Shadows (Chapter 6)
57
+
58
+ - [ ] **Ch 6 — Shadow scale defined** — Are shadows from a defined scale (xs/sm/md/lg/xl)?
59
+ - [ ] **Ch 6 — No arbitrary shadows** — Are there any one-off shadow values not in the scale?
60
+ - [ ] **Ch 6 — Two-shadow technique** — Do shadows combine a large diffuse + small tight shadow?
61
+ - [ ] **Ch 6 — Shadows match elevation** — Are modals higher than cards, cards higher than buttons?
62
+ - [ ] **Ch 6 — Interactive shadows** — Do clickable elements change shadow on hover?
63
+ - [ ] **Ch 6 — Overlap used** — Are overlapping elements creating depth where appropriate?
64
+
65
+ ---
66
+
67
+ ## 6. Images (Chapter 7)
68
+
69
+ - [ ] **Ch 7 — Text on images readable** — Is text over images using overlay, scrim, or shadow?
70
+ - [ ] **Ch 7 — Icons not scaled** — Are icons used at their designed size (not stretched)?
71
+ - [ ] **Ch 7 — Screenshots actual size** — Are screenshots captured at display size, not scaled down?
72
+ - [ ] **Ch 7 — User content controlled** — Are user-uploaded images using object-fit + fixed aspect ratios?
73
+ - [ ] **Ch 7 — Fallback backgrounds** — Do image containers have background-color for loading/transparent images?
74
+
75
+ ---
76
+
77
+ ## 7. Finishing Touches (Chapter 8)
78
+
79
+ - [ ] **Ch 8 — Borders minimal** — Are borders replaced with spacing, bg color, or box-shadow where possible?
80
+ - [ ] **Ch 8 — Empty states designed** — Do empty states have illustrations and calls to action?
81
+ - [ ] **Ch 8 — Defaults enhanced** — Are bullet lists, blockquotes, form inputs enhanced beyond browser defaults?
82
+ - [ ] **Ch 8 — Accent borders used** — Do cards or alerts have colored top/left accent borders?
83
+ - [ ] **Ch 8 — Backgrounds decorated** — Are plain white sections enhanced with subtle patterns or color?
84
+
85
+ ---
86
+
87
+ ## 8. Process & Systems (Chapters 1, 9)
88
+
89
+ - [ ] **Ch 1 — Personality consistent** — Does every design choice align with the chosen personality?
90
+ - [ ] **Ch 1 — Systems defined** — Are spacing, type, color, and shadow scales documented?
91
+ - [ ] **Ch 1 — Low fidelity first** — Was the design started in low fidelity before adding detail?
92
+ - [ ] **Ch 9 — Reusable patterns** — Can these design decisions be applied to other components?
93
+ - [ ] **Ch 9 — Design system updated** — Are new tokens/patterns documented in the system?
94
+
95
+ ---
96
+
97
+ ## Quick Review Workflow
98
+
99
+ 1. **Hierarchy pass** — Squint test: can you identify the most important element in each section?
100
+ 2. **Systems pass** — Are spacing, type sizes, colors, and shadows all from defined scales?
101
+ 3. **Typography pass** — Line length, line-height, alignment, letter-spacing all correct?
102
+ 4. **Color pass** — Accessible contrast? No grey on color? Shade scales used?
103
+ 5. **Depth pass** — Consistent shadow scale? Interactive elevation changes?
104
+ 6. **Polish pass** — Empty states designed? Fewer borders? Enhanced defaults? Accent borders?
105
+ 7. **Prioritize findings** — Hierarchy > Accessibility > Systems > Typography > Depth > Polish
106
+
107
+ ## Severity Levels
108
+
109
+ | Severity | Description | Example |
110
+ |----------|-------------|---------|
111
+ | **Critical** | Accessibility or readability violation | Contrast below 3:1, font weight <400, unreadable text on image |
112
+ | **High** | Hierarchy or usability issue | No clear visual hierarchy, ambiguous spacing/grouping, line-length >80ch |
113
+ | **Medium** | Inconsistency or design quality gap | Arbitrary spacing values, missing shade scale, inconsistent shadow use |
114
+ | **Low** | Polish or documentation | Missing accent borders, default empty states, undocumented tokens |