@design-ai/cli 4.55.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 (529) hide show
  1. package/.claude-plugin/plugin.json +164 -0
  2. package/AGENTS.ko.md +126 -0
  3. package/AGENTS.md +182 -0
  4. package/CHANGELOG.md +6883 -0
  5. package/CLAUDE.md +39 -0
  6. package/LICENSE +21 -0
  7. package/README.ko.md +245 -0
  8. package/README.md +277 -0
  9. package/agents/README.md +14 -0
  10. package/agents/a11y-reviewer.md +121 -0
  11. package/agents/component-architect.md +57 -0
  12. package/agents/design-critic.md +46 -0
  13. package/agents/token-extractor.md +63 -0
  14. package/cli/bin/design-ai-mcp.mjs +6 -0
  15. package/cli/bin/design-ai.mjs +40 -0
  16. package/cli/commands/audit.mjs +111 -0
  17. package/cli/commands/check.mjs +226 -0
  18. package/cli/commands/doctor.mjs +141 -0
  19. package/cli/commands/examples.mjs +58 -0
  20. package/cli/commands/help.mjs +271 -0
  21. package/cli/commands/install.mjs +161 -0
  22. package/cli/commands/learn.mjs +1871 -0
  23. package/cli/commands/list.mjs +143 -0
  24. package/cli/commands/mcp.mjs +27 -0
  25. package/cli/commands/pack.mjs +211 -0
  26. package/cli/commands/prompt.mjs +199 -0
  27. package/cli/commands/route.mjs +247 -0
  28. package/cli/commands/search.mjs +60 -0
  29. package/cli/commands/show.mjs +52 -0
  30. package/cli/commands/site.mjs +558 -0
  31. package/cli/commands/status.mjs +161 -0
  32. package/cli/commands/uninstall.mjs +119 -0
  33. package/cli/commands/update.mjs +184 -0
  34. package/cli/commands/version.mjs +94 -0
  35. package/cli/commands/workspace.mjs +176 -0
  36. package/cli/lib/brief.mjs +52 -0
  37. package/cli/lib/check.mjs +642 -0
  38. package/cli/lib/dispatch.mjs +109 -0
  39. package/cli/lib/doctor.mjs +505 -0
  40. package/cli/lib/examples.mjs +258 -0
  41. package/cli/lib/exec.mjs +63 -0
  42. package/cli/lib/help-flags.mjs +5 -0
  43. package/cli/lib/learn.mjs +3694 -0
  44. package/cli/lib/log.mjs +47 -0
  45. package/cli/lib/mcp-server.mjs +426 -0
  46. package/cli/lib/output.mjs +101 -0
  47. package/cli/lib/pack.mjs +599 -0
  48. package/cli/lib/paths.mjs +63 -0
  49. package/cli/lib/prompt.mjs +603 -0
  50. package/cli/lib/route.mjs +740 -0
  51. package/cli/lib/search.mjs +158 -0
  52. package/cli/lib/show.mjs +161 -0
  53. package/cli/lib/signals.mjs +2337 -0
  54. package/cli/lib/site.mjs +6617 -0
  55. package/cli/lib/skill-proposals.mjs +2046 -0
  56. package/cli/lib/suggest.mjs +66 -0
  57. package/cli/lib/workspace.mjs +1056 -0
  58. package/commands/README.md +25 -0
  59. package/commands/component-spec.md +34 -0
  60. package/commands/conversational.md +44 -0
  61. package/commands/design-from-brief.md +141 -0
  62. package/commands/design-review.md +62 -0
  63. package/commands/document-from-brief.md +47 -0
  64. package/commands/extract-tokens.md +38 -0
  65. package/commands/game-ui.md +40 -0
  66. package/commands/illustration.md +37 -0
  67. package/commands/iterate.md +167 -0
  68. package/commands/motion-design.md +54 -0
  69. package/commands/palette-from-brand.md +50 -0
  70. package/commands/print.md +49 -0
  71. package/commands/slide-deck.md +46 -0
  72. package/commands/spatial.md +47 -0
  73. package/commands/stability-review.md +74 -0
  74. package/commands/video.md +42 -0
  75. package/commands/website-improvement.md +77 -0
  76. package/docs/AGENT-DEVELOPMENT.md +658 -0
  77. package/docs/AI-LEARNING.md +429 -0
  78. package/docs/AIDER-INTEGRATION.md +224 -0
  79. package/docs/ARCHITECTURE.ko.md +183 -0
  80. package/docs/ARCHITECTURE.md +105 -0
  81. package/docs/CODEX-INTEGRATION.md +311 -0
  82. package/docs/COMPANY-WEBSITE-DOGFOOD.ko.md +144 -0
  83. package/docs/COMPANY-WEBSITE-DOGFOOD.md +150 -0
  84. package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.ko.md +153 -0
  85. package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.md +154 -0
  86. package/docs/CONTRIBUTING.ko.md +203 -0
  87. package/docs/CONTRIBUTING.md +242 -0
  88. package/docs/CURSOR-INTEGRATION.md +220 -0
  89. package/docs/DISTRIBUTION.ko.md +248 -0
  90. package/docs/DISTRIBUTION.md +253 -0
  91. package/docs/DOGFOOD-FINDINGS.md +180 -0
  92. package/docs/DOGFOOD-V4-FINDINGS.md +139 -0
  93. package/docs/DOGFOOD-V4-MKDOCS-FINDINGS.md +233 -0
  94. package/docs/DOGFOOD-V4-NPM-FINDINGS.md +157 -0
  95. package/docs/DOGFOOD-V4-VSCODE-FINDINGS.md +135 -0
  96. package/docs/FIGMA-INTEGRATION.md +222 -0
  97. package/docs/MCP-INTEGRATION.md +243 -0
  98. package/docs/MIGRATION-v4.md +121 -0
  99. package/docs/PLUGIN-PACKAGING.md +240 -0
  100. package/docs/PRODUCT-READINESS.md +66 -0
  101. package/docs/QUICKSTART.ko.md +178 -0
  102. package/docs/QUICKSTART.md +179 -0
  103. package/docs/RELEASE-CHECKLIST.md +292 -0
  104. package/docs/ROADMAP.md +19495 -0
  105. package/docs/SESSION-LOG.md +940 -0
  106. package/docs/TOKEN-SYNC.md +237 -0
  107. package/docs/USING.ko.md +206 -0
  108. package/docs/USING.md +218 -0
  109. package/docs/WEBSITE-IMPROVEMENT.ko.md +75 -0
  110. package/docs/WEBSITE-IMPROVEMENT.md +89 -0
  111. package/docs/announcements/README.md +56 -0
  112. package/docs/announcements/dev-to-korea.md +206 -0
  113. package/docs/announcements/hashnode-post.ko.md +232 -0
  114. package/docs/announcements/okky-post.ko.md +158 -0
  115. package/docs/announcements/press-kit.md +101 -0
  116. package/docs/announcements/reddit-r-korea.md +196 -0
  117. package/docs/announcements/show-hn.md +114 -0
  118. package/docs/announcements/twitter-thread.md +255 -0
  119. package/docs/external-status.md +34 -0
  120. package/docs/integrations/aider-walkthrough.ko.md +275 -0
  121. package/docs/integrations/aider-walkthrough.md +274 -0
  122. package/docs/integrations/codex-walkthrough.ko.md +297 -0
  123. package/docs/integrations/codex-walkthrough.md +297 -0
  124. package/docs/integrations/cursor-walkthrough.ko.md +281 -0
  125. package/docs/integrations/cursor-walkthrough.md +284 -0
  126. package/docs/integrations/design-ai-mcp-server.md +169 -0
  127. package/docs/integrations/figma-mcp.md +149 -0
  128. package/docs/integrations/github-mcp.md +178 -0
  129. package/docs/integrations/linear-mcp.md +215 -0
  130. package/docs/integrations/notion-mcp.md +174 -0
  131. package/docs/integrations/sdk-walkthrough.ko.md +375 -0
  132. package/docs/integrations/sdk-walkthrough.md +375 -0
  133. package/docs/integrations/slack-mcp.md +208 -0
  134. package/docs/integrations/vscode-walkthrough.ko.md +202 -0
  135. package/docs/integrations/vscode-walkthrough.md +205 -0
  136. package/docs/requirements.txt +16 -0
  137. package/docs/site-overrides/extra.css +83 -0
  138. package/docs/site-overrides/favicon.svg +4 -0
  139. package/docs/site-overrides/logo.svg +10 -0
  140. package/docs/site-overrides/main.html +18 -0
  141. package/docs/website-console/app.js +2540 -0
  142. package/docs/website-console/index.html +24 -0
  143. package/docs/website-console/styles.css +975 -0
  144. package/examples/README.md +252 -0
  145. package/examples/cases/dogfood-v4-korean-hr-onboarding.md +356 -0
  146. package/examples/component-accordion-actions.md +153 -0
  147. package/examples/component-accordion-details.md +147 -0
  148. package/examples/component-accordion-summary.md +180 -0
  149. package/examples/component-accordion.md +229 -0
  150. package/examples/component-account-card.md +284 -0
  151. package/examples/component-address-input.md +260 -0
  152. package/examples/component-affix.md +190 -0
  153. package/examples/component-alert-dialog.md +210 -0
  154. package/examples/component-alert-title.md +77 -0
  155. package/examples/component-alert.md +192 -0
  156. package/examples/component-amount-input.md +278 -0
  157. package/examples/component-anchor.md +198 -0
  158. package/examples/component-app-bar.md +249 -0
  159. package/examples/component-aspect-ratio.md +156 -0
  160. package/examples/component-auto-complete.md +199 -0
  161. package/examples/component-avatar-group.md +170 -0
  162. package/examples/component-avatar.md +191 -0
  163. package/examples/component-back-top.md +123 -0
  164. package/examples/component-backdrop.md +148 -0
  165. package/examples/component-badge.md +181 -0
  166. package/examples/component-banner.md +237 -0
  167. package/examples/component-biometric-gate.md +281 -0
  168. package/examples/component-blockquote.md +153 -0
  169. package/examples/component-border-beam.md +207 -0
  170. package/examples/component-bottom-navigation.md +226 -0
  171. package/examples/component-box.md +112 -0
  172. package/examples/component-breadcrumb.md +222 -0
  173. package/examples/component-button-base.md +190 -0
  174. package/examples/component-button-group.md +117 -0
  175. package/examples/component-button.md +213 -0
  176. package/examples/component-calendar.md +280 -0
  177. package/examples/component-callout.md +131 -0
  178. package/examples/component-card-actions.md +101 -0
  179. package/examples/component-card-content.md +90 -0
  180. package/examples/component-card-header.md +122 -0
  181. package/examples/component-card-media.md +79 -0
  182. package/examples/component-card.md +233 -0
  183. package/examples/component-carousel.md +266 -0
  184. package/examples/component-cascader.md +135 -0
  185. package/examples/component-category-picker.md +271 -0
  186. package/examples/component-chart.md +237 -0
  187. package/examples/component-chat-interface.md +399 -0
  188. package/examples/component-checkbox.md +149 -0
  189. package/examples/component-click-away-listener.md +87 -0
  190. package/examples/component-code.md +213 -0
  191. package/examples/component-collapsible.md +219 -0
  192. package/examples/component-color-picker.md +110 -0
  193. package/examples/component-combobox.md +267 -0
  194. package/examples/component-command.md +299 -0
  195. package/examples/component-config-provider.md +190 -0
  196. package/examples/component-context-menu.md +179 -0
  197. package/examples/component-css-baseline.md +148 -0
  198. package/examples/component-date-picker.md +249 -0
  199. package/examples/component-descriptions.md +242 -0
  200. package/examples/component-dialog-actions.md +111 -0
  201. package/examples/component-dialog-content-text.md +76 -0
  202. package/examples/component-dialog-content.md +105 -0
  203. package/examples/component-dialog-title.md +104 -0
  204. package/examples/component-dialog.md +176 -0
  205. package/examples/component-divider.md +182 -0
  206. package/examples/component-doc-page.md +217 -0
  207. package/examples/component-drawer.md +257 -0
  208. package/examples/component-dropdown.md +220 -0
  209. package/examples/component-email-layout.md +253 -0
  210. package/examples/component-empty-state.md +269 -0
  211. package/examples/component-empty.md +172 -0
  212. package/examples/component-fade.md +87 -0
  213. package/examples/component-feature-grid.md +201 -0
  214. package/examples/component-field.md +266 -0
  215. package/examples/component-filled-input.md +114 -0
  216. package/examples/component-flex.md +117 -0
  217. package/examples/component-float-button.md +214 -0
  218. package/examples/component-form-control-label.md +134 -0
  219. package/examples/component-form-control.md +113 -0
  220. package/examples/component-form-controls.md +251 -0
  221. package/examples/component-form-group.md +86 -0
  222. package/examples/component-form-helper-text.md +95 -0
  223. package/examples/component-form-label.md +98 -0
  224. package/examples/component-form.md +291 -0
  225. package/examples/component-game-hud.md +362 -0
  226. package/examples/component-game-menu.md +327 -0
  227. package/examples/component-grid.md +140 -0
  228. package/examples/component-grow.md +79 -0
  229. package/examples/component-hero-block.md +252 -0
  230. package/examples/component-hover-card.md +211 -0
  231. package/examples/component-icon-button.md +142 -0
  232. package/examples/component-icon.md +102 -0
  233. package/examples/component-illustration.md +280 -0
  234. package/examples/component-image-list.md +107 -0
  235. package/examples/component-image.md +282 -0
  236. package/examples/component-input-adornment.md +101 -0
  237. package/examples/component-input-base.md +134 -0
  238. package/examples/component-input-number.md +141 -0
  239. package/examples/component-input-otp.md +271 -0
  240. package/examples/component-input.md +213 -0
  241. package/examples/component-item.md +243 -0
  242. package/examples/component-kbd.md +197 -0
  243. package/examples/component-krw-amount.md +219 -0
  244. package/examples/component-label.md +118 -0
  245. package/examples/component-layout.md +217 -0
  246. package/examples/component-link.md +223 -0
  247. package/examples/component-list-item-avatar.md +72 -0
  248. package/examples/component-list-item-button.md +139 -0
  249. package/examples/component-list-item-icon.md +82 -0
  250. package/examples/component-list-item-text.md +98 -0
  251. package/examples/component-list-item.md +116 -0
  252. package/examples/component-list-subheader.md +70 -0
  253. package/examples/component-list.md +198 -0
  254. package/examples/component-loading-button.md +125 -0
  255. package/examples/component-loading-sequence.md +254 -0
  256. package/examples/component-lottie-player.md +279 -0
  257. package/examples/component-masonry.md +191 -0
  258. package/examples/component-mentions.md +189 -0
  259. package/examples/component-menu-item.md +102 -0
  260. package/examples/component-menu-list.md +98 -0
  261. package/examples/component-menu.md +139 -0
  262. package/examples/component-menubar.md +259 -0
  263. package/examples/component-message.md +162 -0
  264. package/examples/component-mobile-stepper.md +155 -0
  265. package/examples/component-modal.md +220 -0
  266. package/examples/component-navigation-menu.md +295 -0
  267. package/examples/component-notification.md +166 -0
  268. package/examples/component-otp-countdown.md +245 -0
  269. package/examples/component-outlined-input.md +145 -0
  270. package/examples/component-page-transition.md +281 -0
  271. package/examples/component-pagination.md +226 -0
  272. package/examples/component-paper.md +199 -0
  273. package/examples/component-pass-auth.md +265 -0
  274. package/examples/component-payment-brand-button.md +253 -0
  275. package/examples/component-payment-method-selector.md +272 -0
  276. package/examples/component-payment-receipt.md +277 -0
  277. package/examples/component-popconfirm.md +144 -0
  278. package/examples/component-popover.md +239 -0
  279. package/examples/component-popper.md +129 -0
  280. package/examples/component-pricing-cards.md +247 -0
  281. package/examples/component-progress.md +195 -0
  282. package/examples/component-qr-code.md +201 -0
  283. package/examples/component-radio.md +167 -0
  284. package/examples/component-rate.md +202 -0
  285. package/examples/component-resizable.md +163 -0
  286. package/examples/component-result.md +270 -0
  287. package/examples/component-scroll-area.md +199 -0
  288. package/examples/component-scroll-reveal.md +320 -0
  289. package/examples/component-segmented.md +178 -0
  290. package/examples/component-select.md +258 -0
  291. package/examples/component-separator.md +177 -0
  292. package/examples/component-sheet.md +277 -0
  293. package/examples/component-sidebar.md +257 -0
  294. package/examples/component-skeleton.md +178 -0
  295. package/examples/component-slide.md +89 -0
  296. package/examples/component-slider.md +208 -0
  297. package/examples/component-snackbar-content.md +92 -0
  298. package/examples/component-snackbar.md +121 -0
  299. package/examples/component-sonner.md +165 -0
  300. package/examples/component-space.md +125 -0
  301. package/examples/component-spatial-locomotion.md +373 -0
  302. package/examples/component-spatial-panel.md +330 -0
  303. package/examples/component-speed-dial-action.md +78 -0
  304. package/examples/component-speed-dial.md +177 -0
  305. package/examples/component-spin.md +173 -0
  306. package/examples/component-spinner.md +204 -0
  307. package/examples/component-splitter.md +210 -0
  308. package/examples/component-stack.md +130 -0
  309. package/examples/component-statistic.md +282 -0
  310. package/examples/component-step-button.md +157 -0
  311. package/examples/component-step-connector.md +157 -0
  312. package/examples/component-step-content.md +121 -0
  313. package/examples/component-step-icon.md +115 -0
  314. package/examples/component-step-label.md +101 -0
  315. package/examples/component-step.md +84 -0
  316. package/examples/component-steps.md +264 -0
  317. package/examples/component-stock-chart.md +251 -0
  318. package/examples/component-swipeable-drawer.md +149 -0
  319. package/examples/component-switch.md +99 -0
  320. package/examples/component-tab-scroll-button.md +180 -0
  321. package/examples/component-tab.md +120 -0
  322. package/examples/component-table-body.md +82 -0
  323. package/examples/component-table-cell.md +118 -0
  324. package/examples/component-table-container.md +75 -0
  325. package/examples/component-table-footer.md +72 -0
  326. package/examples/component-table-head.md +78 -0
  327. package/examples/component-table-pagination.md +137 -0
  328. package/examples/component-table-row.md +113 -0
  329. package/examples/component-table-sort-label.md +109 -0
  330. package/examples/component-table.md +202 -0
  331. package/examples/component-tabs.md +184 -0
  332. package/examples/component-tag-badge.md +309 -0
  333. package/examples/component-tag.md +102 -0
  334. package/examples/component-testimonial-carousel.md +218 -0
  335. package/examples/component-textarea-autosize.md +114 -0
  336. package/examples/component-textarea.md +173 -0
  337. package/examples/component-time-picker.md +205 -0
  338. package/examples/component-timeline.md +170 -0
  339. package/examples/component-toast.md +224 -0
  340. package/examples/component-toggle-button.md +129 -0
  341. package/examples/component-toggle.md +220 -0
  342. package/examples/component-toolbar.md +104 -0
  343. package/examples/component-tooltip.md +178 -0
  344. package/examples/component-tour.md +176 -0
  345. package/examples/component-transaction-list-item.md +243 -0
  346. package/examples/component-transfer.md +156 -0
  347. package/examples/component-tree-select.md +202 -0
  348. package/examples/component-tree.md +297 -0
  349. package/examples/component-typography.md +215 -0
  350. package/examples/component-upload.md +295 -0
  351. package/examples/component-video-hero.md +409 -0
  352. package/examples/component-video-player.md +340 -0
  353. package/examples/component-voice-input.md +408 -0
  354. package/examples/component-watermark.md +217 -0
  355. package/examples/component-zoom.md +92 -0
  356. package/examples/doc-explanation-example.md +196 -0
  357. package/examples/doc-how-to-example.md +205 -0
  358. package/examples/doc-tutorial-example.md +162 -0
  359. package/examples/dogfood-korean-fintech-system.md +433 -0
  360. package/examples/email-transactional-example.md +259 -0
  361. package/examples/palette-saas-violet.md +235 -0
  362. package/examples/print-business-card-spec.md +205 -0
  363. package/examples/print-packaging-spec.md +285 -0
  364. package/examples/report-example.md +228 -0
  365. package/examples/slide-deck-example.md +237 -0
  366. package/examples/website-improvement-report.md +128 -0
  367. package/examples/website-improvement-workspace.json +126 -0
  368. package/install.sh +189 -0
  369. package/knowledge/COVERAGE.md +740 -0
  370. package/knowledge/PRINCIPLES.md +108 -0
  371. package/knowledge/a11y/contrast.md +70 -0
  372. package/knowledge/a11y/keyboard-and-focus.md +108 -0
  373. package/knowledge/colors/color-theory.md +90 -0
  374. package/knowledge/colors/mui-palette-structure.md +105 -0
  375. package/knowledge/colors/palettes-by-product-type.md +876 -0
  376. package/knowledge/components/INDEX.md +231 -0
  377. package/knowledge/components/index.json +1470 -0
  378. package/knowledge/components/shadcn-registry.md +159 -0
  379. package/knowledge/conversational/ai-chat-interfaces.md +323 -0
  380. package/knowledge/conversational/chatbot-design.md +312 -0
  381. package/knowledge/conversational/conversational-ui-fundamentals.md +299 -0
  382. package/knowledge/conversational/korean-voice-conventions.md +281 -0
  383. package/knowledge/conversational/voice-ui-patterns.md +297 -0
  384. package/knowledge/design-tokens/ant-design.md +124 -0
  385. package/knowledge/design-tokens/material-3.md +235 -0
  386. package/knowledge/design-tokens/polaris-and-carbon.md +231 -0
  387. package/knowledge/design-tokens/tailwind-v4.md +284 -0
  388. package/knowledge/game-ui/game-accessibility.md +317 -0
  389. package/knowledge/game-ui/game-ui-fundamentals.md +281 -0
  390. package/knowledge/game-ui/hud-design.md +324 -0
  391. package/knowledge/game-ui/korean-gaming-conventions.md +312 -0
  392. package/knowledge/game-ui/menu-systems.md +388 -0
  393. package/knowledge/i18n/korean-app-store-visual.md +223 -0
  394. package/knowledge/i18n/korean-document-style.md +301 -0
  395. package/knowledge/i18n/korean-payments.md +211 -0
  396. package/knowledge/i18n/korean-product-conventions.md +96 -0
  397. package/knowledge/i18n/korean-publishing.md +139 -0
  398. package/knowledge/i18n/korean-typography.md +123 -0
  399. package/knowledge/icons/curated-sets.md +225 -0
  400. package/knowledge/illustration/hero-illustrations.md +234 -0
  401. package/knowledge/illustration/illustration-systems.md +221 -0
  402. package/knowledge/illustration/mascot-design.md +208 -0
  403. package/knowledge/illustration/spot-illustrations.md +246 -0
  404. package/knowledge/illustration/svg-optimization.md +308 -0
  405. package/knowledge/layout/spacing-and-grid.md +119 -0
  406. package/knowledge/motion/app-loading-sequences.md +277 -0
  407. package/knowledge/motion/choreography-depth.md +297 -0
  408. package/knowledge/motion/marketing-motion.md +223 -0
  409. package/knowledge/motion/micro-interactions.md +266 -0
  410. package/knowledge/motion/motion-tools.md +281 -0
  411. package/knowledge/motion/principles.md +126 -0
  412. package/knowledge/patterns/auth-flow-design.md +316 -0
  413. package/knowledge/patterns/b2b-onboarding-flows.md +182 -0
  414. package/knowledge/patterns/brand-identity.md +238 -0
  415. package/knowledge/patterns/brand-references.md +97 -0
  416. package/knowledge/patterns/chart-color-encoding.md +269 -0
  417. package/knowledge/patterns/chart-types.md +344 -0
  418. package/knowledge/patterns/dashboard-composition.md +299 -0
  419. package/knowledge/patterns/design-system-qa.md +356 -0
  420. package/knowledge/patterns/document-typography.md +248 -0
  421. package/knowledge/patterns/email-design.md +338 -0
  422. package/knowledge/patterns/empty-states.md +263 -0
  423. package/knowledge/patterns/error-states.md +318 -0
  424. package/knowledge/patterns/form-design.md +237 -0
  425. package/knowledge/patterns/information-architecture.md +341 -0
  426. package/knowledge/patterns/landing-hero-design.md +283 -0
  427. package/knowledge/patterns/landing-page-patterns.md +681 -0
  428. package/knowledge/patterns/list-and-feed.md +371 -0
  429. package/knowledge/patterns/mobile-navigation.md +278 -0
  430. package/knowledge/patterns/money-and-amount.md +301 -0
  431. package/knowledge/patterns/onboarding.md +300 -0
  432. package/knowledge/patterns/pricing-page-design.md +261 -0
  433. package/knowledge/patterns/realtime-data.md +280 -0
  434. package/knowledge/patterns/report-design.md +330 -0
  435. package/knowledge/patterns/search-ux.md +373 -0
  436. package/knowledge/patterns/settings-page.md +325 -0
  437. package/knowledge/patterns/slide-deck-design.md +316 -0
  438. package/knowledge/patterns/styles-catalog.md +2599 -0
  439. package/knowledge/patterns/technical-writing.md +306 -0
  440. package/knowledge/patterns/ui-reasoning.md +1853 -0
  441. package/knowledge/patterns/ux-guidelines.md +1454 -0
  442. package/knowledge/platforms/react-native.md +395 -0
  443. package/knowledge/print/brochures-and-flyers.md +276 -0
  444. package/knowledge/print/korean-print-conventions.md +284 -0
  445. package/knowledge/print/packaging.md +321 -0
  446. package/knowledge/print/print-fundamentals.md +238 -0
  447. package/knowledge/print/signage-and-posters.md +235 -0
  448. package/knowledge/print/stationery.md +262 -0
  449. package/knowledge/spatial/ar-patterns.md +253 -0
  450. package/knowledge/spatial/comfort-and-accessibility.md +245 -0
  451. package/knowledge/spatial/spatial-design-fundamentals.md +346 -0
  452. package/knowledge/spatial/spatial-ui-elements.md +343 -0
  453. package/knowledge/spatial/vr-patterns.md +302 -0
  454. package/knowledge/typography/font-pairings.md +332 -0
  455. package/knowledge/typography/mui-type-scale.md +57 -0
  456. package/knowledge/typography/type-scale-fundamentals.md +105 -0
  457. package/knowledge/video/in-product-video.md +277 -0
  458. package/knowledge/video/korean-video-conventions.md +247 -0
  459. package/knowledge/video/marketing-video.md +258 -0
  460. package/knowledge/video/social-and-short-form.md +257 -0
  461. package/knowledge/video/video-fundamentals.md +296 -0
  462. package/package.json +106 -0
  463. package/skills/README.md +39 -0
  464. package/skills/color-palette/PLAYBOOK.md +175 -0
  465. package/skills/color-palette/SKILL.md +6 -0
  466. package/skills/color-palette/TEMPLATE.md +103 -0
  467. package/skills/component-spec-writer/PLAYBOOK.md +169 -0
  468. package/skills/component-spec-writer/SKILL.md +6 -0
  469. package/skills/component-spec-writer/TEMPLATE.md +115 -0
  470. package/skills/conversational-ui-designer/PLAYBOOK.md +231 -0
  471. package/skills/conversational-ui-designer/SKILL.md +6 -0
  472. package/skills/design-broadcast/PLAYBOOK.md +146 -0
  473. package/skills/design-broadcast/SKILL.md +6 -0
  474. package/skills/design-critique/PLAYBOOK.md +137 -0
  475. package/skills/design-critique/SKILL.md +6 -0
  476. package/skills/design-pr-review/PLAYBOOK.md +171 -0
  477. package/skills/design-pr-review/SKILL.md +6 -0
  478. package/skills/design-system-builder/PLAYBOOK.md +218 -0
  479. package/skills/design-system-builder/SKILL.md +6 -0
  480. package/skills/design-system-qa/PLAYBOOK.md +163 -0
  481. package/skills/design-system-qa/SKILL.md +6 -0
  482. package/skills/document-author/PLAYBOOK.md +167 -0
  483. package/skills/document-author/SKILL.md +6 -0
  484. package/skills/figma-token-sync/PLAYBOOK.md +149 -0
  485. package/skills/figma-token-sync/SKILL.md +6 -0
  486. package/skills/game-ui-designer/PLAYBOOK.md +209 -0
  487. package/skills/game-ui-designer/SKILL.md +6 -0
  488. package/skills/handoff-spec/PLAYBOOK.md +170 -0
  489. package/skills/handoff-spec/SKILL.md +6 -0
  490. package/skills/illustration-designer/PLAYBOOK.md +166 -0
  491. package/skills/illustration-designer/SKILL.md +6 -0
  492. package/skills/motion-designer/PLAYBOOK.md +223 -0
  493. package/skills/motion-designer/SKILL.md +6 -0
  494. package/skills/print-designer/PLAYBOOK.md +209 -0
  495. package/skills/print-designer/SKILL.md +6 -0
  496. package/skills/slide-deck-author/PLAYBOOK.md +198 -0
  497. package/skills/slide-deck-author/SKILL.md +6 -0
  498. package/skills/spatial-designer/PLAYBOOK.md +238 -0
  499. package/skills/spatial-designer/SKILL.md +6 -0
  500. package/skills/ux-audit/PLAYBOOK.md +142 -0
  501. package/skills/ux-audit/SKILL.md +6 -0
  502. package/skills/video-designer/PLAYBOOK.md +240 -0
  503. package/skills/video-designer/SKILL.md +6 -0
  504. package/skills/website-improvement/PLAYBOOK.md +118 -0
  505. package/skills/website-improvement/SKILL.md +6 -0
  506. package/skills/website-improvement/TEMPLATE.md +103 -0
  507. package/tools/audit/changelog-generate.py +176 -0
  508. package/tools/audit/check-coverage.py +483 -0
  509. package/tools/audit/doctor_assertions.py +256 -0
  510. package/tools/audit/example-qa.py +108 -0
  511. package/tools/audit/frontmatter-check.py +199 -0
  512. package/tools/audit/integration-check.py +95 -0
  513. package/tools/audit/korean-copy-check.py +161 -0
  514. package/tools/audit/link-check.py +146 -0
  515. package/tools/audit/local-ci.py +558 -0
  516. package/tools/audit/package-contents.py +723 -0
  517. package/tools/audit/package-smoke.py +22443 -0
  518. package/tools/audit/raw-hex-check.py +252 -0
  519. package/tools/audit/registry-smoke.py +8188 -0
  520. package/tools/audit/release-metadata.py +9832 -0
  521. package/tools/audit/run-all.py +351 -0
  522. package/tools/audit/smoke_assertions.py +12742 -0
  523. package/tools/audit/stability-review.py +332 -0
  524. package/tools/audit/stale-check.py +156 -0
  525. package/tools/migrations/add-version-frontmatter.py +132 -0
  526. package/tools/migrations/bump-last-updated.py +131 -0
  527. package/tools/migrations/promote-stability.py +172 -0
  528. package/tools/preview/README.md +58 -0
  529. package/tools/preview/render-tokens.py +454 -0
@@ -0,0 +1,1454 @@
1
+ ---
2
+ title: UX guidelines
3
+ source: refs/ui-ux-pro-max/src/ui-ux-pro-max/data/ux-guidelines.csv
4
+ upstream: https://github.com/nextlevelbuilder/ui-ux-pro-max-skill
5
+ extracted_at: 2026-05-19
6
+ applies_to: [web, mobile, accessibility]
7
+ version: 1.0.0
8
+ last_updated: 2026-05
9
+ stability: stable
10
+ ---
11
+
12
+ # UX guidelines
13
+
14
+ A catalog of common UX issues with do/don't pairs. Use as a **review checklist** before sign-off and as a learning index for new designers.
15
+
16
+ ## AI Interaction
17
+
18
+ ### 🔴 Disclaimer _(_All_)_
19
+
20
+ Users need to know they talk to AI
21
+
22
+ **Do**: Clearly label AI generated content
23
+ **Don't**: Present AI as human
24
+
25
+ ```
26
+ // good
27
+ AI Assistant label
28
+ // bad
29
+ Fake human name without label
30
+ ```
31
+
32
+ ### 🟡 Streaming _(_All_)_
33
+
34
+ Waiting for full text is slow
35
+
36
+ **Do**: Stream text response token by token
37
+ **Don't**: Show loading spinner for 10s+
38
+
39
+ ```
40
+ // good
41
+ Typewriter effect
42
+ // bad
43
+ Spinner until 100% complete
44
+ ```
45
+
46
+ ### 🟢 Feedback Loop _(_All_)_
47
+
48
+ AI needs user feedback to improve
49
+
50
+ **Do**: Thumps up/down or 'Regenerate'
51
+ **Don't**: Static output only
52
+
53
+ ```
54
+ // good
55
+ Feedback component
56
+ // bad
57
+ Read-only text
58
+ ```
59
+
60
+
61
+ ## Accessibility
62
+
63
+ ### 🔴 Color Contrast _(_All_)_
64
+
65
+ Text must be readable against background
66
+
67
+ **Do**: Minimum 4.5:1 ratio for normal text
68
+ **Don't**: Low contrast text
69
+
70
+ ```
71
+ // good
72
+ #333 on white (7:1)
73
+ // bad
74
+ #999 on white (2.8:1)
75
+ ```
76
+
77
+ ### 🔴 Color Only _(_All_)_
78
+
79
+ Don't convey information by color alone
80
+
81
+ **Do**: Use icons/text in addition to color
82
+ **Don't**: Red/green only for error/success
83
+
84
+ ```
85
+ // good
86
+ Red text + error icon
87
+ // bad
88
+ Red border only for error
89
+ ```
90
+
91
+ ### 🔴 Alt Text _(_All_)_
92
+
93
+ Images need text alternatives
94
+
95
+ **Do**: Descriptive alt text for meaningful images
96
+ **Don't**: Empty or missing alt attributes
97
+
98
+ ```
99
+ // good
100
+ alt='Dog playing in park'
101
+ // bad
102
+ alt='' for content images
103
+ ```
104
+
105
+ ### 🟡 Heading Hierarchy _(_Web_)_
106
+
107
+ Screen readers use headings for navigation
108
+
109
+ **Do**: Use sequential heading levels h1-h6
110
+ **Don't**: Skip heading levels or misuse for styling
111
+
112
+ ```
113
+ // good
114
+ h1 then h2 then h3
115
+ // bad
116
+ h1 then h4
117
+ ```
118
+
119
+ ### 🔴 ARIA Labels _(_All_)_
120
+
121
+ Interactive elements need accessible names
122
+
123
+ **Do**: Add aria-label for icon-only buttons
124
+ **Don't**: Icon buttons without labels
125
+
126
+ ```
127
+ // good
128
+ aria-label='Close menu'
129
+ // bad
130
+ <button><Icon/></button>
131
+ ```
132
+
133
+ ### 🔴 Keyboard Navigation _(_Web_)_
134
+
135
+ All functionality accessible via keyboard
136
+
137
+ **Do**: Tab order matches visual order
138
+ **Don't**: Keyboard traps or illogical tab order
139
+
140
+ ```
141
+ // good
142
+ tabIndex for custom order
143
+ // bad
144
+ Unreachable elements
145
+ ```
146
+
147
+ ### 🟡 Screen Reader _(_All_)_
148
+
149
+ Content should make sense when read aloud
150
+
151
+ **Do**: Use semantic HTML and ARIA properly
152
+ **Don't**: Div soup with no semantics
153
+
154
+ ```
155
+ // good
156
+ <nav> <main> <article>
157
+ // bad
158
+ <div> for everything
159
+ ```
160
+
161
+ ### 🔴 Form Labels _(_All_)_
162
+
163
+ Inputs must have associated labels
164
+
165
+ **Do**: Use label with for attribute or wrap input
166
+ **Don't**: Placeholder-only inputs
167
+
168
+ ```
169
+ // good
170
+ <label for='email'>
171
+ // bad
172
+ placeholder='Email' only
173
+ ```
174
+
175
+ ### 🔴 Error Messages _(_All_)_
176
+
177
+ Error messages must be announced
178
+
179
+ **Do**: Use aria-live or role=alert for errors
180
+ **Don't**: Visual-only error indication
181
+
182
+ ```
183
+ // good
184
+ role='alert'
185
+ // bad
186
+ Red border only
187
+ ```
188
+
189
+ ### 🟡 Skip Links _(_Web_)_
190
+
191
+ Allow keyboard users to skip navigation
192
+
193
+ **Do**: Provide skip to main content link
194
+ **Don't**: No skip link on nav-heavy pages
195
+
196
+ ```
197
+ // good
198
+ Skip to main content link
199
+ // bad
200
+ 100 tabs to reach content
201
+ ```
202
+
203
+ ### 🔴 Motion Sensitivity _(_All_)_
204
+
205
+ Parallax/Scroll-jacking causes nausea
206
+
207
+ **Do**: Respect prefers-reduced-motion
208
+ **Don't**: Force scroll effects
209
+
210
+ ```
211
+ // good
212
+ @media (prefers-reduced-motion)
213
+ // bad
214
+ ScrollTrigger.create()
215
+ ```
216
+
217
+
218
+ ## Animation
219
+
220
+ ### 🔴 Excessive Motion _(_All_)_
221
+
222
+ Too many animations cause distraction and motion sickness
223
+
224
+ **Do**: Animate 1-2 key elements per view maximum
225
+ **Don't**: Animate everything that moves
226
+
227
+ ```
228
+ // good
229
+ Single hero animation
230
+ // bad
231
+ animate-bounce on 5+ elements
232
+ ```
233
+
234
+ ### 🟡 Duration Timing _(_All_)_
235
+
236
+ Animations should feel responsive not sluggish
237
+
238
+ **Do**: Use 150-300ms for micro-interactions
239
+ **Don't**: Use animations longer than 500ms for UI
240
+
241
+ ```
242
+ // good
243
+ transition-all duration-200
244
+ // bad
245
+ duration-1000
246
+ ```
247
+
248
+ ### 🔴 Reduced Motion _(_All_)_
249
+
250
+ Respect user's motion preferences
251
+
252
+ **Do**: Check prefers-reduced-motion media query
253
+ **Don't**: Ignore accessibility motion settings
254
+
255
+ ```
256
+ // good
257
+ @media (prefers-reduced-motion: reduce)
258
+ // bad
259
+ No motion query check
260
+ ```
261
+
262
+ ### 🔴 Loading States _(_All_)_
263
+
264
+ Show feedback during async operations
265
+
266
+ **Do**: Use skeleton screens or spinners
267
+ **Don't**: Leave UI frozen with no feedback
268
+
269
+ ```
270
+ // good
271
+ animate-pulse skeleton
272
+ // bad
273
+ Blank screen while loading
274
+ ```
275
+
276
+ ### 🔴 Hover vs Tap _(_All_)_
277
+
278
+ Hover effects don't work on touch devices
279
+
280
+ **Do**: Use click/tap for primary interactions
281
+ **Don't**: Rely only on hover for important actions
282
+
283
+ ```
284
+ // good
285
+ onClick handler
286
+ // bad
287
+ onMouseEnter only
288
+ ```
289
+
290
+ ### 🟡 Continuous Animation _(_All_)_
291
+
292
+ Infinite animations are distracting
293
+
294
+ **Do**: Use for loading indicators only
295
+ **Don't**: Use for decorative elements
296
+
297
+ ```
298
+ // good
299
+ animate-spin on loader
300
+ // bad
301
+ animate-bounce on icons
302
+ ```
303
+
304
+ ### 🟡 Transform Performance _(_Web_)_
305
+
306
+ Some CSS properties trigger expensive repaints
307
+
308
+ **Do**: Use transform and opacity for animations
309
+ **Don't**: Animate width/height/top/left properties
310
+
311
+ ```
312
+ // good
313
+ transform: translateY()
314
+ // bad
315
+ top: 10px animation
316
+ ```
317
+
318
+ ### 🟢 Easing Functions _(_All_)_
319
+
320
+ Linear motion feels robotic
321
+
322
+ **Do**: Use ease-out for entering ease-in for exiting
323
+ **Don't**: Use linear for UI transitions
324
+
325
+ ```
326
+ // good
327
+ ease-out
328
+ // bad
329
+ linear
330
+ ```
331
+
332
+
333
+ ## Content
334
+
335
+ ### 🟡 Truncation _(_All_)_
336
+
337
+ Handle long content gracefully
338
+
339
+ **Do**: Truncate with ellipsis and expand option
340
+ **Don't**: Overflow or broken layout
341
+
342
+ ```
343
+ // good
344
+ line-clamp-2 with expand
345
+ // bad
346
+ Overflow or cut off
347
+ ```
348
+
349
+ ### 🟢 Date Formatting _(_All_)_
350
+
351
+ Use locale-appropriate date formats
352
+
353
+ **Do**: Use relative or locale-aware dates
354
+ **Don't**: Ambiguous date formats
355
+
356
+ ```
357
+ // good
358
+ 2 hours ago or locale format
359
+ // bad
360
+ 01/02/03
361
+ ```
362
+
363
+ ### 🟢 Number Formatting _(_All_)_
364
+
365
+ Format large numbers for readability
366
+
367
+ **Do**: Use thousand separators or abbreviations
368
+ **Don't**: Long unformatted numbers
369
+
370
+ ```
371
+ // good
372
+ 1.2K or 1,234
373
+ // bad
374
+ 1234567
375
+ ```
376
+
377
+ ### 🟢 Placeholder Content _(_All_)_
378
+
379
+ Show realistic placeholders during dev
380
+
381
+ **Do**: Use realistic sample data
382
+ **Don't**: Lorem ipsum everywhere
383
+
384
+ ```
385
+ // good
386
+ Real sample content
387
+ // bad
388
+ Lorem ipsum
389
+ ```
390
+
391
+
392
+ ## Data Entry
393
+
394
+ ### 🟢 Bulk Actions _(_Web_)_
395
+
396
+ Editing one by one is tedious
397
+
398
+ **Do**: Allow multi-select and bulk edit
399
+ **Don't**: Single row actions only
400
+
401
+ ```
402
+ // good
403
+ Checkbox column + Action bar
404
+ // bad
405
+ Repeated actions per row
406
+ ```
407
+
408
+
409
+ ## Feedback
410
+
411
+ ### 🔴 Loading Indicators _(_All_)_
412
+
413
+ Show system status during waits
414
+
415
+ **Do**: Show spinner/skeleton for operations > 300ms
416
+ **Don't**: No feedback during loading
417
+
418
+ ```
419
+ // good
420
+ Skeleton or spinner
421
+ // bad
422
+ Frozen UI
423
+ ```
424
+
425
+ ### 🟡 Empty States _(_All_)_
426
+
427
+ Guide users when no content exists
428
+
429
+ **Do**: Show helpful message and action
430
+ **Don't**: Blank empty screens
431
+
432
+ ```
433
+ // good
434
+ No items yet. Create one!
435
+ // bad
436
+ Empty white space
437
+ ```
438
+
439
+ ### 🟡 Error Recovery _(_All_)_
440
+
441
+ Help users recover from errors
442
+
443
+ **Do**: Provide clear next steps
444
+ **Don't**: Error without recovery path
445
+
446
+ ```
447
+ // good
448
+ Try again button + help link
449
+ // bad
450
+ Error message only
451
+ ```
452
+
453
+ ### 🟡 Progress Indicators _(_All_)_
454
+
455
+ Show progress for multi-step processes
456
+
457
+ **Do**: Step indicators or progress bar
458
+ **Don't**: No indication of progress
459
+
460
+ ```
461
+ // good
462
+ Step 2 of 4 indicator
463
+ // bad
464
+ No step information
465
+ ```
466
+
467
+ ### 🟡 Toast Notifications _(_All_)_
468
+
469
+ Transient messages for non-critical info
470
+
471
+ **Do**: Auto-dismiss after 3-5 seconds
472
+ **Don't**: Toasts that never disappear
473
+
474
+ ```
475
+ // good
476
+ Auto-dismiss toast
477
+ // bad
478
+ Persistent toast
479
+ ```
480
+
481
+ ### 🟡 Confirmation Messages _(_All_)_
482
+
483
+ Confirm successful actions
484
+
485
+ **Do**: Brief success message
486
+ **Don't**: Silent success
487
+
488
+ ```
489
+ // good
490
+ Saved successfully toast
491
+ // bad
492
+ No confirmation
493
+ ```
494
+
495
+
496
+ ## Forms
497
+
498
+ ### 🔴 Input Labels _(_All_)_
499
+
500
+ Every input needs a visible label
501
+
502
+ **Do**: Always show label above or beside input
503
+ **Don't**: Placeholder as only label
504
+
505
+ ```
506
+ // good
507
+ <label>Email</label><input>
508
+ // bad
509
+ placeholder='Email' only
510
+ ```
511
+
512
+ ### 🟡 Error Placement _(_All_)_
513
+
514
+ Errors should appear near the problem
515
+
516
+ **Do**: Show error below related input
517
+ **Don't**: Single error message at top of form
518
+
519
+ ```
520
+ // good
521
+ Error under each field
522
+ // bad
523
+ All errors at form top
524
+ ```
525
+
526
+ ### 🟡 Inline Validation _(_All_)_
527
+
528
+ Validate as user types or on blur
529
+
530
+ **Do**: Validate on blur for most fields
531
+ **Don't**: Validate only on submit
532
+
533
+ ```
534
+ // good
535
+ onBlur validation
536
+ // bad
537
+ Submit-only validation
538
+ ```
539
+
540
+ ### 🟡 Input Types _(_All_)_
541
+
542
+ Use appropriate input types
543
+
544
+ **Do**: Use email tel number url etc
545
+ **Don't**: Text input for everything
546
+
547
+ ```
548
+ // good
549
+ type='email'
550
+ // bad
551
+ type='text' for email
552
+ ```
553
+
554
+ ### 🟡 Autofill Support _(_Web_)_
555
+
556
+ Help browsers autofill correctly
557
+
558
+ **Do**: Use autocomplete attribute properly
559
+ **Don't**: Block or ignore autofill
560
+
561
+ ```
562
+ // good
563
+ autocomplete='email'
564
+ // bad
565
+ autocomplete='off' everywhere
566
+ ```
567
+
568
+ ### 🟡 Required Indicators _(_All_)_
569
+
570
+ Mark required fields clearly
571
+
572
+ **Do**: Use asterisk or (required) text
573
+ **Don't**: No indication of required fields
574
+
575
+ ```
576
+ // good
577
+ * required indicator
578
+ // bad
579
+ Guess which are required
580
+ ```
581
+
582
+ ### 🟡 Password Visibility _(_All_)_
583
+
584
+ Let users see password while typing
585
+
586
+ **Do**: Toggle to show/hide password
587
+ **Don't**: No visibility toggle
588
+
589
+ ```
590
+ // good
591
+ Show/hide password button
592
+ // bad
593
+ Password always hidden
594
+ ```
595
+
596
+ ### 🔴 Submit Feedback _(_All_)_
597
+
598
+ Confirm form submission status
599
+
600
+ **Do**: Show loading then success/error state
601
+ **Don't**: No feedback after submit
602
+
603
+ ```
604
+ // good
605
+ Loading -> Success message
606
+ // bad
607
+ Button click with no response
608
+ ```
609
+
610
+ ### 🟡 Input Affordance _(_All_)_
611
+
612
+ Inputs should look interactive
613
+
614
+ **Do**: Use distinct input styling
615
+ **Don't**: Inputs that look like plain text
616
+
617
+ ```
618
+ // good
619
+ Border/background on inputs
620
+ // bad
621
+ Borderless inputs
622
+ ```
623
+
624
+ ### 🟡 Mobile Keyboards _(_Mobile_)_
625
+
626
+ Show appropriate keyboard for input type
627
+
628
+ **Do**: Use inputmode attribute
629
+ **Don't**: Default keyboard for all inputs
630
+
631
+ ```
632
+ // good
633
+ inputmode='numeric'
634
+ // bad
635
+ Text keyboard for numbers
636
+ ```
637
+
638
+
639
+ ## Interaction
640
+
641
+ ### 🔴 Focus States _(_All_)_
642
+
643
+ Keyboard users need visible focus indicators
644
+
645
+ **Do**: Use visible focus rings on interactive elements
646
+ **Don't**: Remove focus outline without replacement
647
+
648
+ ```
649
+ // good
650
+ focus:ring-2 focus:ring-blue-500
651
+ // bad
652
+ outline-none without alternative
653
+ ```
654
+
655
+ ### 🟡 Hover States _(_Web_)_
656
+
657
+ Visual feedback on interactive elements
658
+
659
+ **Do**: Change cursor and add subtle visual change
660
+ **Don't**: No hover feedback on clickable elements
661
+
662
+ ```
663
+ // good
664
+ hover:bg-gray-100 cursor-pointer
665
+ // bad
666
+ No hover style
667
+ ```
668
+
669
+ ### 🟡 Active States _(_All_)_
670
+
671
+ Show immediate feedback on press/click
672
+
673
+ **Do**: Add pressed/active state visual change
674
+ **Don't**: No feedback during interaction
675
+
676
+ ```
677
+ // good
678
+ active:scale-95
679
+ // bad
680
+ No active state
681
+ ```
682
+
683
+ ### 🟡 Disabled States _(_All_)_
684
+
685
+ Clearly indicate non-interactive elements
686
+
687
+ **Do**: Reduce opacity and change cursor
688
+ **Don't**: Confuse disabled with normal state
689
+
690
+ ```
691
+ // good
692
+ opacity-50 cursor-not-allowed
693
+ // bad
694
+ Same style as enabled
695
+ ```
696
+
697
+ ### 🔴 Loading Buttons _(_All_)_
698
+
699
+ Prevent double submission during async actions
700
+
701
+ **Do**: Disable button and show loading state
702
+ **Don't**: Allow multiple clicks during processing
703
+
704
+ ```
705
+ // good
706
+ disabled={loading} spinner
707
+ // bad
708
+ Button clickable while loading
709
+ ```
710
+
711
+ ### 🔴 Error Feedback _(_All_)_
712
+
713
+ Users need to know when something fails
714
+
715
+ **Do**: Show clear error messages near problem
716
+ **Don't**: Silent failures with no feedback
717
+
718
+ ```
719
+ // good
720
+ Red border + error message
721
+ // bad
722
+ No indication of error
723
+ ```
724
+
725
+ ### 🟡 Success Feedback _(_All_)_
726
+
727
+ Confirm successful actions to users
728
+
729
+ **Do**: Show success message or visual change
730
+ **Don't**: No confirmation of completed action
731
+
732
+ ```
733
+ // good
734
+ Toast notification or checkmark
735
+ // bad
736
+ Action completes silently
737
+ ```
738
+
739
+ ### 🔴 Confirmation Dialogs _(_All_)_
740
+
741
+ Prevent accidental destructive actions
742
+
743
+ **Do**: Confirm before delete/irreversible actions
744
+ **Don't**: Delete without confirmation
745
+
746
+ ```
747
+ // good
748
+ Are you sure modal
749
+ // bad
750
+ Direct delete on click
751
+ ```
752
+
753
+
754
+ ## Layout
755
+
756
+ ### 🔴 Z-Index Management _(_Web_)_
757
+
758
+ Stacking context conflicts cause hidden elements
759
+
760
+ **Do**: Define z-index scale system (10 20 30 50)
761
+ **Don't**: Use arbitrary large z-index values
762
+
763
+ ```
764
+ // good
765
+ z-10 z-20 z-50
766
+ // bad
767
+ z-[9999]
768
+ ```
769
+
770
+ ### 🟡 Overflow Hidden _(_Web_)_
771
+
772
+ Hidden overflow can clip important content
773
+
774
+ **Do**: Test all content fits within containers
775
+ **Don't**: Blindly apply overflow-hidden
776
+
777
+ ```
778
+ // good
779
+ overflow-auto with scroll
780
+ // bad
781
+ overflow-hidden truncating content
782
+ ```
783
+
784
+ ### 🟡 Fixed Positioning _(_Web_)_
785
+
786
+ Fixed elements can overlap or be inaccessible
787
+
788
+ **Do**: Account for safe areas and other fixed elements
789
+ **Don't**: Stack multiple fixed elements carelessly
790
+
791
+ ```
792
+ // good
793
+ Fixed nav + fixed bottom with gap
794
+ // bad
795
+ Multiple overlapping fixed elements
796
+ ```
797
+
798
+ ### 🟡 Stacking Context _(_Web_)_
799
+
800
+ New stacking contexts reset z-index
801
+
802
+ **Do**: Understand what creates new stacking context
803
+ **Don't**: Expect z-index to work across contexts
804
+
805
+ ```
806
+ // good
807
+ Parent with z-index isolates children
808
+ // bad
809
+ z-index: 9999 not working
810
+ ```
811
+
812
+ ### 🔴 Content Jumping _(_Web_)_
813
+
814
+ Layout shift when content loads is jarring
815
+
816
+ **Do**: Reserve space for async content
817
+ **Don't**: Let images/content push layout around
818
+
819
+ ```
820
+ // good
821
+ aspect-ratio or fixed height
822
+ // bad
823
+ No dimensions on images
824
+ ```
825
+
826
+ ### 🟡 Viewport Units _(_Web_)_
827
+
828
+ 100vh can be problematic on mobile browsers
829
+
830
+ **Do**: Use dvh or account for mobile browser chrome
831
+ **Don't**: Use 100vh for full-screen mobile layouts
832
+
833
+ ```
834
+ // good
835
+ min-h-dvh or min-h-screen
836
+ // bad
837
+ h-screen on mobile
838
+ ```
839
+
840
+ ### 🟡 Container Width _(_Web_)_
841
+
842
+ Content too wide is hard to read
843
+
844
+ **Do**: Limit max-width for text content (65-75ch)
845
+ **Don't**: Let text span full viewport width
846
+
847
+ ```
848
+ // good
849
+ max-w-prose or max-w-3xl
850
+ // bad
851
+ Full width paragraphs
852
+ ```
853
+
854
+
855
+ ## Navigation
856
+
857
+ ### 🔴 Smooth Scroll _(_Web_)_
858
+
859
+ Anchor links should scroll smoothly to target section
860
+
861
+ **Do**: Use scroll-behavior: smooth on html element
862
+ **Don't**: Jump directly without transition
863
+
864
+ ```
865
+ // good
866
+ html { scroll-behavior: smooth; }
867
+ // bad
868
+ <a href='#section'> without CSS
869
+ ```
870
+
871
+ ### 🟡 Sticky Navigation _(_Web_)_
872
+
873
+ Fixed nav should not obscure content
874
+
875
+ **Do**: Add padding-top to body equal to nav height
876
+ **Don't**: Let nav overlap first section content
877
+
878
+ ```
879
+ // good
880
+ pt-20 (if nav is h-20)
881
+ // bad
882
+ No padding compensation
883
+ ```
884
+
885
+ ### 🟡 Active State _(_All_)_
886
+
887
+ Current page/section should be visually indicated
888
+
889
+ **Do**: Highlight active nav item with color/underline
890
+ **Don't**: No visual feedback on current location
891
+
892
+ ```
893
+ // good
894
+ text-primary border-b-2
895
+ // bad
896
+ All links same style
897
+ ```
898
+
899
+ ### 🔴 Back Button _(_Mobile_)_
900
+
901
+ Users expect back to work predictably
902
+
903
+ **Do**: Preserve navigation history properly
904
+ **Don't**: Break browser/app back button behavior
905
+
906
+ ```
907
+ // good
908
+ history.pushState()
909
+ // bad
910
+ location.replace()
911
+ ```
912
+
913
+ ### 🟡 Deep Linking _(_All_)_
914
+
915
+ URLs should reflect current state for sharing
916
+
917
+ **Do**: Update URL on state/view changes
918
+ **Don't**: Static URLs for dynamic content
919
+
920
+ ```
921
+ // good
922
+ Use query params or hash
923
+ // bad
924
+ Single URL for all states
925
+ ```
926
+
927
+ ### 🟢 Breadcrumbs _(_Web_)_
928
+
929
+ Show user location in site hierarchy
930
+
931
+ **Do**: Use for sites with 3+ levels of depth
932
+ **Don't**: Use for flat single-level sites
933
+
934
+ ```
935
+ // good
936
+ Home > Category > Product
937
+ // bad
938
+ Only on deep nested pages
939
+ ```
940
+
941
+
942
+ ## Onboarding
943
+
944
+ ### 🟡 User Freedom _(_All_)_
945
+
946
+ Users should be able to skip tutorials
947
+
948
+ **Do**: Provide Skip and Back buttons
949
+ **Don't**: Force linear unskippable tour
950
+
951
+ ```
952
+ // good
953
+ Skip Tutorial button
954
+ // bad
955
+ Locked overlay until finished
956
+ ```
957
+
958
+
959
+ ## Performance
960
+
961
+ ### 🔴 Image Optimization _(_All_)_
962
+
963
+ Large images slow page load
964
+
965
+ **Do**: Use appropriate size and format (WebP)
966
+ **Don't**: Unoptimized full-size images
967
+
968
+ ```
969
+ // good
970
+ srcset with multiple sizes
971
+ // bad
972
+ 4000px image for 400px display
973
+ ```
974
+
975
+ ### 🟡 Lazy Loading _(_All_)_
976
+
977
+ Load content as needed
978
+
979
+ **Do**: Lazy load below-fold images and content
980
+ **Don't**: Load everything upfront
981
+
982
+ ```
983
+ // good
984
+ loading='lazy'
985
+ // bad
986
+ All images eager load
987
+ ```
988
+
989
+ ### 🟡 Code Splitting _(_Web_)_
990
+
991
+ Large bundles slow initial load
992
+
993
+ **Do**: Split code by route/feature
994
+ **Don't**: Single large bundle
995
+
996
+ ```
997
+ // good
998
+ dynamic import()
999
+ // bad
1000
+ All code in main bundle
1001
+ ```
1002
+
1003
+ ### 🟡 Caching _(_Web_)_
1004
+
1005
+ Repeat visits should be fast
1006
+
1007
+ **Do**: Set appropriate cache headers
1008
+ **Don't**: No caching strategy
1009
+
1010
+ ```
1011
+ // good
1012
+ Cache-Control headers
1013
+ // bad
1014
+ Every request hits server
1015
+ ```
1016
+
1017
+ ### 🟡 Font Loading _(_Web_)_
1018
+
1019
+ Web fonts can block rendering
1020
+
1021
+ **Do**: Use font-display swap or optional
1022
+ **Don't**: Invisible text during font load
1023
+
1024
+ ```
1025
+ // good
1026
+ font-display: swap
1027
+ // bad
1028
+ FOIT (Flash of Invisible Text)
1029
+ ```
1030
+
1031
+ ### 🟡 Third Party Scripts _(_Web_)_
1032
+
1033
+ External scripts can block rendering
1034
+
1035
+ **Do**: Load non-critical scripts async/defer
1036
+ **Don't**: Synchronous third-party scripts
1037
+
1038
+ ```
1039
+ // good
1040
+ async or defer attribute
1041
+ // bad
1042
+ <script src='...'> in head
1043
+ ```
1044
+
1045
+ ### 🟡 Bundle Size _(_Web_)_
1046
+
1047
+ Large JavaScript slows interaction
1048
+
1049
+ **Do**: Monitor and minimize bundle size
1050
+ **Don't**: Ignore bundle size growth
1051
+
1052
+ ```
1053
+ // good
1054
+ Bundle analyzer
1055
+ // bad
1056
+ No size monitoring
1057
+ ```
1058
+
1059
+ ### 🟡 Render Blocking _(_Web_)_
1060
+
1061
+ CSS/JS can block first paint
1062
+
1063
+ **Do**: Inline critical CSS defer non-critical
1064
+ **Don't**: Large blocking CSS files
1065
+
1066
+ ```
1067
+ // good
1068
+ Critical CSS inline
1069
+ // bad
1070
+ All CSS in head
1071
+ ```
1072
+
1073
+
1074
+ ## Responsive
1075
+
1076
+ ### 🟡 Mobile First _(_Web_)_
1077
+
1078
+ Design for mobile then enhance for larger
1079
+
1080
+ **Do**: Start with mobile styles then add breakpoints
1081
+ **Don't**: Desktop-first causing mobile issues
1082
+
1083
+ ```
1084
+ // good
1085
+ Default mobile + md: lg: xl:
1086
+ // bad
1087
+ Desktop default + max-width queries
1088
+ ```
1089
+
1090
+ ### 🟡 Breakpoint Testing _(_Web_)_
1091
+
1092
+ Test at all common screen sizes
1093
+
1094
+ **Do**: Test at 320 375 414 768 1024 1440
1095
+ **Don't**: Only test on your device
1096
+
1097
+ ```
1098
+ // good
1099
+ Multiple device testing
1100
+ // bad
1101
+ Single device development
1102
+ ```
1103
+
1104
+ ### 🔴 Touch Friendly _(_Web_)_
1105
+
1106
+ Mobile layouts need touch-sized targets
1107
+
1108
+ **Do**: Increase touch targets on mobile
1109
+ **Don't**: Same tiny buttons on mobile
1110
+
1111
+ ```
1112
+ // good
1113
+ Larger buttons on mobile
1114
+ // bad
1115
+ Desktop-sized targets on mobile
1116
+ ```
1117
+
1118
+ ### 🔴 Readable Font Size _(_All_)_
1119
+
1120
+ Text must be readable on all devices
1121
+
1122
+ **Do**: Minimum 16px body text on mobile
1123
+ **Don't**: Tiny text on mobile
1124
+
1125
+ ```
1126
+ // good
1127
+ text-base or larger
1128
+ // bad
1129
+ text-xs for body text
1130
+ ```
1131
+
1132
+ ### 🔴 Viewport Meta _(_Web_)_
1133
+
1134
+ Set viewport for mobile devices
1135
+
1136
+ **Do**: Use width=device-width initial-scale=1
1137
+ **Don't**: Missing or incorrect viewport
1138
+
1139
+ ```
1140
+ // good
1141
+ <meta name='viewport'...>
1142
+ // bad
1143
+ No viewport meta tag
1144
+ ```
1145
+
1146
+ ### 🔴 Horizontal Scroll _(_Web_)_
1147
+
1148
+ Avoid horizontal scrolling
1149
+
1150
+ **Do**: Ensure content fits viewport width
1151
+ **Don't**: Content wider than viewport
1152
+
1153
+ ```
1154
+ // good
1155
+ max-w-full overflow-x-hidden
1156
+ // bad
1157
+ Horizontal scrollbar on mobile
1158
+ ```
1159
+
1160
+ ### 🟡 Image Scaling _(_Web_)_
1161
+
1162
+ Images should scale with container
1163
+
1164
+ **Do**: Use max-width: 100% on images
1165
+ **Don't**: Fixed width images overflow
1166
+
1167
+ ```
1168
+ // good
1169
+ max-w-full h-auto
1170
+ // bad
1171
+ width='800' fixed
1172
+ ```
1173
+
1174
+ ### 🟡 Table Handling _(_Web_)_
1175
+
1176
+ Tables can overflow on mobile
1177
+
1178
+ **Do**: Use horizontal scroll or card layout
1179
+ **Don't**: Wide tables breaking layout
1180
+
1181
+ ```
1182
+ // good
1183
+ overflow-x-auto wrapper
1184
+ // bad
1185
+ Table overflows viewport
1186
+ ```
1187
+
1188
+
1189
+ ## Search
1190
+
1191
+ ### 🟡 Autocomplete _(_Web_)_
1192
+
1193
+ Help users find results faster
1194
+
1195
+ **Do**: Show predictions as user types
1196
+ **Don't**: Require full type and enter
1197
+
1198
+ ```
1199
+ // good
1200
+ Debounced fetch + dropdown
1201
+ // bad
1202
+ No suggestions
1203
+ ```
1204
+
1205
+ ### 🟡 No Results _(_Web_)_
1206
+
1207
+ Dead ends frustrate users
1208
+
1209
+ **Do**: Show 'No results' with suggestions
1210
+ **Don't**: Blank screen or '0 results'
1211
+
1212
+ ```
1213
+ // good
1214
+ Try searching for X instead
1215
+ // bad
1216
+ No results found.
1217
+ ```
1218
+
1219
+
1220
+ ## Spatial UI
1221
+
1222
+ ### 🔴 Gaze Hover _(_VisionOS_)_
1223
+
1224
+ Elements should respond to eye tracking before pinch
1225
+
1226
+ **Do**: Scale/highlight element on look
1227
+ **Don't**: Static element until pinch
1228
+
1229
+ ```
1230
+ // good
1231
+ hoverEffect()
1232
+ // bad
1233
+ onTap only
1234
+ ```
1235
+
1236
+ ### 🟡 Depth Layering _(_VisionOS_)_
1237
+
1238
+ UI needs Z-depth to separate content from environment
1239
+
1240
+ **Do**: Use glass material and z-offset
1241
+ **Don't**: Flat opaque panels blocking view
1242
+
1243
+ ```
1244
+ // good
1245
+ .glassBackgroundEffect()
1246
+ // bad
1247
+ bg-white
1248
+ ```
1249
+
1250
+
1251
+ ## Sustainability
1252
+
1253
+ ### 🟡 Auto-Play Video _(_Web_)_
1254
+
1255
+ Video consumes massive data and energy
1256
+
1257
+ **Do**: Click-to-play or pause when off-screen
1258
+ **Don't**: Auto-play high-res video loops
1259
+
1260
+ ```
1261
+ // good
1262
+ playsInline muted preload='none'
1263
+ // bad
1264
+ autoplay loop
1265
+ ```
1266
+
1267
+ ### 🟡 Asset Weight _(_Web_)_
1268
+
1269
+ Heavy 3D/Image assets increase carbon footprint
1270
+
1271
+ **Do**: Compress and lazy load 3D models
1272
+ **Don't**: Load 50MB textures
1273
+
1274
+ ```
1275
+ // good
1276
+ Draco compression
1277
+ // bad
1278
+ Raw .obj files
1279
+ ```
1280
+
1281
+
1282
+ ## Touch
1283
+
1284
+ ### 🔴 Touch Target Size _(_Mobile_)_
1285
+
1286
+ Small buttons are hard to tap accurately
1287
+
1288
+ **Do**: Minimum 44x44px touch targets
1289
+ **Don't**: Tiny clickable areas
1290
+
1291
+ ```
1292
+ // good
1293
+ min-h-[44px] min-w-[44px]
1294
+ // bad
1295
+ w-6 h-6 buttons
1296
+ ```
1297
+
1298
+ ### 🟡 Touch Spacing _(_Mobile_)_
1299
+
1300
+ Adjacent touch targets need adequate spacing
1301
+
1302
+ **Do**: Minimum 8px gap between touch targets
1303
+ **Don't**: Tightly packed clickable elements
1304
+
1305
+ ```
1306
+ // good
1307
+ gap-2 between buttons
1308
+ // bad
1309
+ gap-0 or gap-1
1310
+ ```
1311
+
1312
+ ### 🟡 Gesture Conflicts _(_Mobile_)_
1313
+
1314
+ Custom gestures can conflict with system
1315
+
1316
+ **Do**: Avoid horizontal swipe on main content
1317
+ **Don't**: Override system gestures
1318
+
1319
+ ```
1320
+ // good
1321
+ Vertical scroll primary
1322
+ // bad
1323
+ Horizontal swipe carousel only
1324
+ ```
1325
+
1326
+ ### 🟡 Tap Delay _(_Mobile_)_
1327
+
1328
+ 300ms tap delay feels laggy
1329
+
1330
+ **Do**: Use touch-action CSS or fastclick
1331
+ **Don't**: Default mobile tap handling
1332
+
1333
+ ```
1334
+ // good
1335
+ touch-action: manipulation
1336
+ // bad
1337
+ No touch optimization
1338
+ ```
1339
+
1340
+ ### 🟢 Pull to Refresh _(_Mobile_)_
1341
+
1342
+ Accidental refresh is frustrating
1343
+
1344
+ **Do**: Disable where not needed
1345
+ **Don't**: Enable by default everywhere
1346
+
1347
+ ```
1348
+ // good
1349
+ overscroll-behavior: contain
1350
+ // bad
1351
+ Default overscroll
1352
+ ```
1353
+
1354
+ ### 🟢 Haptic Feedback _(_Mobile_)_
1355
+
1356
+ Tactile feedback improves interaction feel
1357
+
1358
+ **Do**: Use for confirmations and important actions
1359
+ **Don't**: Overuse vibration feedback
1360
+
1361
+ ```
1362
+ // good
1363
+ navigator.vibrate(10)
1364
+ // bad
1365
+ Vibrate on every tap
1366
+ ```
1367
+
1368
+
1369
+ ## Typography
1370
+
1371
+ ### 🟡 Line Height _(_All_)_
1372
+
1373
+ Adequate line height improves readability
1374
+
1375
+ **Do**: Use 1.5-1.75 for body text
1376
+ **Don't**: Cramped or excessive line height
1377
+
1378
+ ```
1379
+ // good
1380
+ leading-relaxed (1.625)
1381
+ // bad
1382
+ leading-none (1)
1383
+ ```
1384
+
1385
+ ### 🟡 Line Length _(_Web_)_
1386
+
1387
+ Long lines are hard to read
1388
+
1389
+ **Do**: Limit to 65-75 characters per line
1390
+ **Don't**: Full-width text on large screens
1391
+
1392
+ ```
1393
+ // good
1394
+ max-w-prose
1395
+ // bad
1396
+ Full viewport width text
1397
+ ```
1398
+
1399
+ ### 🟡 Font Size Scale _(_All_)_
1400
+
1401
+ Consistent type hierarchy aids scanning
1402
+
1403
+ **Do**: Use consistent modular scale
1404
+ **Don't**: Random font sizes
1405
+
1406
+ ```
1407
+ // good
1408
+ Type scale (12 14 16 18 24 32)
1409
+ // bad
1410
+ Arbitrary sizes
1411
+ ```
1412
+
1413
+ ### 🟡 Font Loading _(_Web_)_
1414
+
1415
+ Fonts should load without layout shift
1416
+
1417
+ **Do**: Reserve space with fallback font
1418
+ **Don't**: Layout shift when fonts load
1419
+
1420
+ ```
1421
+ // good
1422
+ font-display: swap + similar fallback
1423
+ // bad
1424
+ No fallback font
1425
+ ```
1426
+
1427
+ ### 🔴 Contrast Readability _(_All_)_
1428
+
1429
+ Body text needs good contrast
1430
+
1431
+ **Do**: Use darker text on light backgrounds
1432
+ **Don't**: Gray text on gray background
1433
+
1434
+ ```
1435
+ // good
1436
+ text-gray-900 on white
1437
+ // bad
1438
+ text-gray-400 on gray-100
1439
+ ```
1440
+
1441
+ ### 🟡 Heading Clarity _(_All_)_
1442
+
1443
+ Headings should stand out from body
1444
+
1445
+ **Do**: Clear size/weight difference
1446
+ **Don't**: Headings similar to body text
1447
+
1448
+ ```
1449
+ // good
1450
+ Bold + larger size
1451
+ // bad
1452
+ Same size as body
1453
+ ```
1454
+