@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,245 @@
1
+ <!-- hand-written -->
2
+ ---
3
+ title: Comfort and accessibility in spatial / VR / AR
4
+ applies_to: [spatial, vr, ar, accessibility, comfort]
5
+ version: 1.0.0
6
+ last_updated: 2026-05
7
+ stability: stable
8
+ ---
9
+
10
+ # Comfort and accessibility in spatial
11
+
12
+ VR / AR has unique comfort and accessibility concerns. Some users get sick within minutes; some can't physically use spatial tech. Plan for it.
13
+
14
+ Read [`spatial-design-fundamentals.md`](spatial-design-fundamentals.md) first.
15
+
16
+ ## Motion sickness — the #1 comfort issue
17
+
18
+ VR motion sickness is real. It's caused by sensory mismatch: your eyes see motion that your inner ear doesn't feel.
19
+
20
+ ### Triggers (worst to less bad)
21
+
22
+ | Trigger | Severity |
23
+ | --- | --- |
24
+ | **Smooth locomotion + smooth turn** | Most severe |
25
+ | **Forced camera motion** (cinematic without user input) | Severe |
26
+ | **Acceleration / deceleration** | Moderate |
27
+ | **Constant velocity** | Mild |
28
+ | **Vertical motion** (elevators, falling) | Severe |
29
+ | **Roll / pitch rotation** without user-initiated | Severe |
30
+ | **Frame drops below 90 fps** | Severe |
31
+ | **Mismatched real-vs-virtual height / scale** | Mild |
32
+
33
+ ### Mitigations
34
+
35
+ | Mitigation | Helps |
36
+ | --- | --- |
37
+ | **Teleport locomotion** | Most users; default for accessible VR |
38
+ | **Snap turn** (vs smooth turn) | Most users |
39
+ | **Comfort vignette** during motion | Tunneled vision reduces peripheral motion |
40
+ | **Stable horizon** (cockpit, pod) | Anchors the world; reduces sickness |
41
+ | **Constant velocity, no accel** | Less sickness than accelerate/decelerate |
42
+ | **Movement initiated by user only** | No surprise camera moves |
43
+ | **Reduce motion option** | Total skip of physical motion |
44
+ | **Frame rate above 90 fps** | Non-negotiable |
45
+ | **Match user's eye height** | If user is 5'4", don't render them as 6'2" |
46
+ | **IPD calibration** | Wrong inter-pupillary distance causes strain |
47
+
48
+ ### Ramp-up
49
+
50
+ For new VR users:
51
+ - Start in stationary scene (lobby, beach).
52
+ - Introduce teleport locomotion.
53
+ - Add smooth turn only after first session.
54
+ - Slowly introduce smooth locomotion.
55
+
56
+ ### Comfort settings menu
57
+
58
+ Make these prominent:
59
+
60
+ ```
61
+ Comfort Settings
62
+ ─────────────────
63
+ Locomotion [Teleport] [Smooth] [Hybrid]
64
+ Turning [Snap] [Smooth]
65
+ Snap turn angle [30°] [45°] [60°] [90°]
66
+ Comfort vignette [Off] [Low] [High]
67
+ Smooth turn speed [Slow] [Medium] [Fast]
68
+ Camera motion [Allow] [Limited] [None]
69
+ Reduce flashing [On / Off]
70
+ Reduce particles [On / Off]
71
+ ```
72
+
73
+ ## Vision accessibility
74
+
75
+ ### Low vision
76
+
77
+ - **Larger text option** (1.5×, 2×).
78
+ - **High contrast mode**.
79
+ - **Bold weight default**.
80
+ - **UI scale** independent of game scale.
81
+
82
+ ### Color blindness
83
+
84
+ - **Color-blind modes** (protanopia, deuteranopia, tritanopia).
85
+ - **Don't rely on color alone** — shape, pattern, text redundancy.
86
+
87
+ ### Total blindness
88
+
89
+ - **Spatial audio dominant** — sound design must convey position, threats, navigation.
90
+ - **Audio cues for UI elements** (button hover, panel opens).
91
+ - **Voice navigation** (Vision Pro VoiceOver).
92
+ - **Haptic feedback** for state changes.
93
+
94
+ Vision Pro VoiceOver navigates spatial UI with voice + gestures.
95
+
96
+ ## Hearing accessibility
97
+
98
+ - **Subtitles for all dialogue + audio cues**.
99
+ - **Visual sound indicators** ("[footsteps approaching from left]") critical in VR — spatial audio can't be heard.
100
+ - **Adjustable per-channel volume**.
101
+ - **Vibrating notification** if controllers vibrate (haptic feedback).
102
+
103
+ For hearing-impaired VR: spatial audio replaced by visual indicators; bigger UX shift than 2D apps.
104
+
105
+ ## Motor accessibility
106
+
107
+ ### One-handed users
108
+
109
+ VR commonly assumes two controllers + two hands:
110
+ - **One-handed mode** — all interactions doable with one controller.
111
+ - **Toggle vs hold** for sustained inputs.
112
+ - **Auto-aim** in shooters.
113
+
114
+ ### Limited mobility
115
+
116
+ - **Seated mode** — no requirement to stand or duck.
117
+ - **Reduced reach** — UI within arm-reach distance.
118
+ - **Smaller play area** option (vs requiring full room scale).
119
+
120
+ ### Tremor / Parkinson's
121
+
122
+ - **Click-confirmation** vs precise targeting.
123
+ - **Slow-tap** option — hold to register.
124
+ - **Forgiveness window** for accidental presses.
125
+
126
+ ### Voice control alternative
127
+
128
+ For users who can't use hands or controllers:
129
+ - **Voice-only navigation**.
130
+ - **Eye tracking + voice confirm** (if available).
131
+
132
+ ## Cognitive accessibility
133
+
134
+ - **Clear instructions** in spatial onboarding.
135
+ - **Skip / replay tutorials**.
136
+ - **Pause anytime** — VR is intense; break ability mandatory.
137
+ - **Save state often** — don't require long sessions.
138
+ - **Reduce information density** — spatial overstimulation real.
139
+ - **Predictable interactions** — same gesture means same thing across the app.
140
+
141
+ ## Photosensitive epilepsy
142
+
143
+ - **No flashing > 3Hz** without warning.
144
+ - **Disable particle storms** option.
145
+ - **Reduce post-processing effects** option.
146
+ - **Warning at start** for any flashing content.
147
+
148
+ ## Eye strain
149
+
150
+ Long VR sessions cause:
151
+ - **Vergence-accommodation conflict** strain.
152
+ - **Dryness** (less blinking).
153
+ - **Eye fatigue**.
154
+
155
+ Mitigations:
156
+ - **Break reminder** every 30 min.
157
+ - **Distant content** (less convergence stress).
158
+ - **Background dim** option.
159
+ - **Reduce brightness** option.
160
+
161
+ ## Physical safety
162
+
163
+ VR users can hit walls / furniture / pets:
164
+
165
+ - **Guardian / chaperone boundary** required (Quest, PSVR2).
166
+ - **Passthrough** when approaching boundary (Quest 3, Vision Pro).
167
+ - **Visual outline** of real obstacles.
168
+ - **Clear setup instructions** — clear play area before starting.
169
+ - **Stop and rest** prompts after 60 min.
170
+
171
+ For seated VR: less critical but still — chair stability, headphone cord management.
172
+
173
+ ## Wheelchair / mobility-device users
174
+
175
+ - **Sitting-height calibration** (not just standing).
176
+ - **Reachable UI** from wheelchair height.
177
+ - **Locomotion** via teleport / vehicle (not requiring physical walking).
178
+
179
+ Vision Pro / Quest support seated mode well.
180
+
181
+ ## Korean accessibility
182
+
183
+ Korean spatial product market is small but growing:
184
+ - **NEXON / NCSoft** developing accessible game UX.
185
+ - **Samsung Galaxy XR** (upcoming) — Galaxy accessibility ecosystem.
186
+
187
+ For Korean spatial products:
188
+ - 자막 standard.
189
+ - 한국어 voice control / VoiceOver.
190
+ - 신체 장애인 (disabled person) considerations.
191
+
192
+ Korean Disability Discrimination Act (장애인차별금지법) may apply to digital products including spatial.
193
+
194
+ ## Hygiene and shared headsets
195
+
196
+ For shared / public VR:
197
+ - **Disposable face covers** (museums, location-based VR).
198
+ - **IPD adjustment** — different face sizes need different settings.
199
+ - **Easy decontamination** — non-porous surfaces.
200
+
201
+ For consumer headsets: less concern but still — share carefully.
202
+
203
+ ## Session length guidance
204
+
205
+ | Use case | Recommended session length |
206
+ | --- | --- |
207
+ | Game / immersive | 30-60 min, then break |
208
+ | Productivity | 45-90 min, then break |
209
+ | Cinema | Movie length OK with break |
210
+ | Training / education | 20-30 min sessions |
211
+ | First-time user | 5-10 min, build up |
212
+
213
+ Some users tolerate longer; some less. Provide **break reminder** options; don't lock out.
214
+
215
+ ## Comfort = inclusion
216
+
217
+ Comfort options aren't optional features. They're inclusion:
218
+ - **Without teleport**, many users can't play.
219
+ - **Without subtitles**, deaf users excluded.
220
+ - **Without seated mode**, wheelchair users excluded.
221
+ - **Without color-blind**, ~6% of men excluded.
222
+
223
+ Plan from start; don't bolt on at end.
224
+
225
+ ## Don't
226
+
227
+ - Don't ship without comfort options.
228
+ - Don't default to smooth locomotion + smooth turn for new users.
229
+ - Don't head-lock content.
230
+ - Don't drop frames.
231
+ - Don't ignore guardian / chaperone — physical injury risk.
232
+ - Don't lock users out of pause.
233
+ - Don't require standing.
234
+ - Don't ignore hearing-impaired users in audio-heavy VR.
235
+ - Don't render text below 1° visual angle.
236
+
237
+ ## Cross-reference
238
+
239
+ - [`knowledge/spatial/spatial-design-fundamentals.md`](spatial-design-fundamentals.md) — fundamentals
240
+ - [`knowledge/spatial/vr-patterns.md`](vr-patterns.md) — VR
241
+ - [`knowledge/spatial/ar-patterns.md`](ar-patterns.md) — AR
242
+ - [`knowledge/spatial/spatial-ui-elements.md`](spatial-ui-elements.md) — UI elements
243
+ - [`knowledge/a11y/contrast.md`](../a11y/contrast.md) — color contrast
244
+ - [`knowledge/a11y/keyboard-and-focus.md`](../a11y/keyboard-and-focus.md) — alt input
245
+ - [`knowledge/game-ui/game-accessibility.md`](../game-ui/game-accessibility.md) — game a11y broader
@@ -0,0 +1,346 @@
1
+ <!-- hand-written -->
2
+ ---
3
+ title: Spatial design fundamentals (3D, depth, comfort, distance, units)
4
+ applies_to: [spatial, ar, vr, xr, 3d]
5
+ version: 1.0.0
6
+ last_updated: 2026-05
7
+ stability: stable
8
+ ---
9
+
10
+ # Spatial design fundamentals
11
+
12
+ Designing for AR, VR, MR, and spatial computing (Vision Pro, Quest, ARKit, ARCore) is fundamentally different from screen design. The user is *inside* the UI; comfort and physical realism matter; 2D interface patterns translate poorly.
13
+
14
+ This file is the foundation for [`vr-patterns.md`](vr-patterns.md), [`ar-patterns.md`](ar-patterns.md), [`spatial-ui-elements.md`](spatial-ui-elements.md), and [`comfort-and-accessibility.md`](comfort-and-accessibility.md).
15
+
16
+ ## Reality–virtuality continuum (Milgram)
17
+
18
+ ```
19
+ Real world → Augmented Reality → Mixed Reality → Augmented Virtuality → Virtual Reality
20
+ (real only) (real + overlay) (real + virtual (virtual + real (virtual only)
21
+ interact) accents)
22
+ ```
23
+
24
+ | Mode | Examples |
25
+ | --- | --- |
26
+ | **AR** (Augmented Reality) | Pokemon Go, IKEA Place, Snapchat filters, ARKit / ARCore mobile apps |
27
+ | **MR** (Mixed Reality) | HoloLens, Quest passthrough, Vision Pro |
28
+ | **VR** (Virtual Reality) | Quest 3 immersive, PSVR2, Valve Index, Vive |
29
+ | **XR** | Umbrella term for all of the above |
30
+
31
+ Different design constraints per mode. AR works in real environments (variable lighting, surface detection); VR is fully controlled.
32
+
33
+ ## Spatial units
34
+
35
+ ### Real-world units
36
+
37
+ Spatial design uses **meters, centimeters, millimeters** — physical measurements. Unlike screen design (pixels, points), distance from the user is real.
38
+
39
+ | Distance from user | Use |
40
+ | --- | --- |
41
+ | < 25cm | Hands / close inspection (object held) |
42
+ | 25-75cm | Personal space; reading distance for text |
43
+ | 75cm-1.5m | Conversation distance; primary UI plane |
44
+ | 1.5-3m | Social distance; secondary content |
45
+ | 3m+ | Distant background / world objects |
46
+
47
+ ### Visual angle (more important than absolute size)
48
+
49
+ What matters is how big something appears in the user's field of view, not its absolute size.
50
+
51
+ ```
52
+ Visual angle = 2 × atan(size / 2 / distance)
53
+ ```
54
+
55
+ For text:
56
+ - Easily readable: 1° visual angle minimum (~2.5cm tall at 1.5m).
57
+ - Comfortable reading: 1.5-2° visual angle.
58
+ - Headlines: 3-5°.
59
+
60
+ This is the spatial equivalent of font size + reading distance.
61
+
62
+ ### Field of view (FOV)
63
+
64
+ | Device | Horizontal FOV |
65
+ | --- | --- |
66
+ | Apple Vision Pro | ~100° |
67
+ | Quest 3 | ~110° |
68
+ | Quest 2 | ~90° |
69
+ | Valve Index | ~130° |
70
+ | HoloLens 2 | ~52° (small "window") |
71
+ | Mobile AR (iPhone) | varies with camera FOV |
72
+
73
+ Design **inside the central FOV** (roughly 60-80° horizontal). Peripheral content is missed unless the user turns.
74
+
75
+ ## Comfort zones
76
+
77
+ ```
78
+ Above (uncomfortable for long viewing)
79
+ ─────────────────
80
+
81
+ │ Comfortable
82
+ Left periphery → │ center zone ← Right periphery
83
+ │ (60° wide)
84
+
85
+ ─────────────────
86
+ Below (uncomfortable for long viewing)
87
+ ```
88
+
89
+ ### Vertical comfort
90
+
91
+ - **Eye level (0°)**: best for primary content; comfortable indefinitely.
92
+ - **Slightly below (-10° to -20°)**: natural rest position; very comfortable.
93
+ - **Above eye level (+15°+)**: neck strain after a few minutes.
94
+ - **Below -30°**: must look down; uncomfortable for long viewing.
95
+
96
+ Default UI plane: at or slightly below eye level (matching reading-position natural neck angle).
97
+
98
+ ### Horizontal comfort
99
+
100
+ - **0° (centered)**: most comfortable.
101
+ - **±15°**: easy eye movement, no head turn.
102
+ - **±30°**: small head turn comfortable.
103
+ - **±45°**: requires head turn.
104
+ - **±90°+**: requires significant body rotation.
105
+
106
+ For primary UI: stay within ±30° of forward gaze.
107
+
108
+ ## Stereoscopic depth
109
+
110
+ VR / spatial devices render two images (one per eye), creating stereo depth perception.
111
+
112
+ ### Depth cues
113
+
114
+ | Cue | Strength |
115
+ | --- | --- |
116
+ | Stereopsis (binocular disparity) | Strong < 10m |
117
+ | Convergence (eye angle) | Strong < 2m |
118
+ | Motion parallax | Strong at all distances |
119
+ | Shading / shadows | Medium |
120
+ | Occlusion (one object in front) | Strong |
121
+ | Atmospheric perspective | Distant only |
122
+ | Texture gradient | Medium |
123
+ | Familiar size | Medium |
124
+
125
+ For close UI (< 2m): rely on stereopsis + convergence. For distant: use occlusion, atmospheric.
126
+
127
+ ### Vergence-accommodation conflict
128
+
129
+ In real life, when you focus on something close, your eyes converge AND your lenses focus. In VR / Vision Pro, eyes converge to perceived 3D depth, but lenses must focus on the actual physical screen distance (typically infinity for VR).
130
+
131
+ Result: eye strain over time, especially with content very close (< 1m perceived).
132
+
133
+ Mitigations:
134
+ - Default UI distance: 1-1.5m (sweet spot for most headsets).
135
+ - Avoid making users focus < 50cm for extended periods.
136
+ - Vision Pro mitigates this with vari-focal optics in research; current devices don't.
137
+
138
+ ## Locomotion
139
+
140
+ How the user moves in VR / MR. Major UX decision.
141
+
142
+ | Method | Comfort | Use |
143
+ | --- | --- | --- |
144
+ | **Teleport** | High (no nausea) | Default for casual / accessible VR |
145
+ | **Smooth locomotion** (joystick) | Variable; some users feel sick | Hardcore VR; comfort options needed |
146
+ | **Snap turn** (instant rotation by 30/45°) | High | Reduces nausea vs smooth turn |
147
+ | **Smooth turn** | Moderate; some sickness | Default for some FPS-style games |
148
+ | **Room-scale walking** | Highest comfort (real walking) | Limited by physical play space |
149
+ | **Vehicle / fixed pod** | High (cockpit anchors world) | Driving / flying games |
150
+ | **Climbing / arm-pulling** | High | Physical engagement |
151
+
152
+ For first-time users: default to teleport + snap turn + comfort vignette. Offer smooth locomotion as opt-in.
153
+
154
+ ## Comfort vignette
155
+
156
+ Reduces field of view during locomotion to mimic peripheral darkening, reducing motion sickness:
157
+
158
+ ```
159
+ Stationary: Moving:
160
+ [full view] [tunnel-vision view]
161
+ (reduced FOV ~70%, dark frame)
162
+ ```
163
+
164
+ Standard in modern VR. Strength is configurable.
165
+
166
+ ## Spatial audio
167
+
168
+ In VR / spatial:
169
+ - **3D positional audio** (HRTF — head-related transfer function).
170
+ - Sounds emit from where they appear.
171
+ - Critical for immersion; equally critical for accessibility (visually impaired users navigate by sound).
172
+
173
+ For UI sounds:
174
+ - Notifications come from the notification's spatial position.
175
+ - Confirmation sounds emit from the button.
176
+ - Ambient sounds are 3D (forest from all around, not flat stereo).
177
+
178
+ ## Hand vs controller vs gaze input
179
+
180
+ ### Hand tracking (Vision Pro, Quest 3, HoloLens)
181
+
182
+ - **Pinch** (thumb + index): primary "click" gesture.
183
+ - **Tap in air**: secondary gesture.
184
+ - **Grab**: hold pinch.
185
+ - **Pointing**: ray-cast from index finger.
186
+ - **Eye gaze + pinch** (Vision Pro signature): look at target, pinch to select.
187
+
188
+ ### Controllers (Quest, PSVR, Index)
189
+
190
+ - **Trigger**: primary action.
191
+ - **Grip**: grab / hold.
192
+ - **Joystick**: locomotion / scroll.
193
+ - **Buttons (A/B/X/Y)**: confirm / back / menu.
194
+
195
+ ### Gaze (HoloLens, eye-tracked headsets)
196
+
197
+ - **Dwell**: look at target for N ms = select.
198
+ - **Eye tracking + voice / hand**: combination.
199
+
200
+ Most modern apps support both hand tracking AND controllers (user picks).
201
+
202
+ ## 2D vs 3D UI
203
+
204
+ ### 2D-in-3D (panels)
205
+
206
+ A 2D UI floating in 3D space:
207
+
208
+ ```
209
+ [floating panel — basically a 2D web page in space]
210
+ Headlines
211
+ Body text
212
+ [Buttons]
213
+ ```
214
+
215
+ Most common for productivity apps (Vision Pro, Quest browser). Mostly works; can use existing web / native UI patterns adapted.
216
+
217
+ ### True 3D UI
218
+
219
+ UI elements ARE 3D objects:
220
+ - 3D buttons that physically depress.
221
+ - Levers, dials, switches that turn.
222
+ - Spatial volumes (a box you can turn around).
223
+ - Hand-held objects (pick up, manipulate, put down).
224
+
225
+ More immersive; harder to design.
226
+
227
+ For productivity / reading: 2D-in-3D is fine.
228
+ For immersive games / training: true 3D shines.
229
+
230
+ ## Anchoring
231
+
232
+ Where does UI exist in space?
233
+
234
+ | Anchor | Behavior |
235
+ | --- | --- |
236
+ | **Head-locked** | Follows the user's head (always in front) |
237
+ | **World-locked** | Fixed in space; user moves around it |
238
+ | **Wrist-anchored** | Attached to user's wrist (Vision Pro Home View); user looks at wrist to invoke |
239
+ | **Hand-anchored** | Held in hand |
240
+ | **Object-anchored** (AR) | Pinned to a real-world object |
241
+
242
+ | When | Anchor |
243
+ | --- | --- |
244
+ | HUD that must always be visible | Head-locked (sparingly; nauseating) |
245
+ | Reading content / detailed inspection | World-locked |
246
+ | Quick-access menu | Wrist-anchored |
247
+ | Tool currently in use | Hand-anchored |
248
+ | AR overlays on a product | Object-anchored |
249
+
250
+ ## Don't head-lock for long content
251
+
252
+ Head-locked UI moves with you constantly. For long content (reading, watching video): nauseating because you can't look around without text following.
253
+
254
+ Default: world-locked. User positions content where they want, then looks naturally.
255
+
256
+ Exception: reticle / crosshair (head-locked); small tooltips (head-locked briefly).
257
+
258
+ ## Resolution and pixel density
259
+
260
+ Modern headsets:
261
+ - **Quest 3**: 2064×2208 per eye.
262
+ - **Vision Pro**: 3660×3200 per eye.
263
+ - **PSVR2**: 2000×2040 per eye.
264
+
265
+ But the FOV is wide, so pixels per degree (PPD) is what matters:
266
+
267
+ | Device | PPD |
268
+ | --- | --- |
269
+ | Quest 3 | ~25 PPD |
270
+ | Vision Pro | ~34 PPD |
271
+ | Human eye | ~60 PPD (foveal) |
272
+
273
+ Even Vision Pro is below human eye. Text at small sizes pixelates. Plan for this — design at 1.5-2× the size you'd use on a desktop monitor.
274
+
275
+ ## Performance budget
276
+
277
+ VR / spatial runs at 90Hz / 120Hz / 144Hz. Each frame must be on time or motion sickness ensues.
278
+
279
+ | Constraint | Budget |
280
+ | --- | --- |
281
+ | Frame budget at 90Hz | 11.1ms |
282
+ | Frame budget at 120Hz | 8.3ms |
283
+ | Frame budget at 144Hz | 6.9ms |
284
+ | Draw calls | < 1000 typical |
285
+ | Polygons | varies; mobile VR ≈ 500K-1M |
286
+ | Texture memory | < 1-2GB |
287
+
288
+ UI overhead must fit within frame budget. Optimize aggressively for mobile VR (Quest standalone) — mobile-class GPU.
289
+
290
+ ## Spatial design platforms
291
+
292
+ | Platform | OS / SDK |
293
+ | --- | --- |
294
+ | **Apple Vision Pro** | visionOS, SwiftUI + RealityKit |
295
+ | **Meta Quest** | Horizon OS; Unity / Unreal / native |
296
+ | **HTC Vive / Index** | SteamVR; Unity / Unreal |
297
+ | **PSVR2** | PlayStation; Unity / Unreal / proprietary |
298
+ | **HoloLens** | Windows; Unity (most common) |
299
+ | **iOS AR** | ARKit; SwiftUI / RealityKit / Unity |
300
+ | **Android AR** | ARCore; Unity / native |
301
+ | **Web XR** | A-Frame / Three.js + WebXR |
302
+
303
+ Design tools:
304
+ - Figma (2D screens, panel mockups).
305
+ - Unity / Unreal (full 3D).
306
+ - Reality Composer Pro (visionOS).
307
+ - Bezi, ShapesXR, Gravity Sketch (spatial design tools).
308
+
309
+ ## Korean market context
310
+
311
+ Korea has limited spatial product market (2024+):
312
+ - **Samsung XR headset** (in development, Galaxy XR) launching 2025+.
313
+ - **Naver Z (Zepeto)** — metaverse mobile/desktop platform.
314
+ - **NCSoft, Krafton** experimenting with VR.
315
+ - **NEXON metaverse** initiatives.
316
+ - **AR for retail / commerce**: limited.
317
+
318
+ Most Korean users encounter spatial via:
319
+ - Mobile AR (Snapchat, Instagram filters).
320
+ - Some VR gaming (PSVR2, Quest imports).
321
+ - Pokémon GO and similar.
322
+
323
+ For Korean spatial product:
324
+ - Samsung XR ecosystem (when launches).
325
+ - Galaxy phone AR features.
326
+ - WebXR for accessibility.
327
+
328
+ ## Don't
329
+
330
+ - Don't apply 2D web UX patterns directly to spatial. Distance + scale + depth change everything.
331
+ - Don't head-lock long content — nauseating.
332
+ - Don't ignore comfort. Motion sickness loses users permanently.
333
+ - Don't put critical UI in peripheral. Stay within ±30°.
334
+ - Don't make text too small. PPD limits real legibility.
335
+ - Don't drop frames. 90Hz is non-negotiable; below = sickness.
336
+ - Don't ignore vergence-accommodation. < 50cm content for extended use = strain.
337
+ - Don't make locomotion-only smooth without comfort options.
338
+
339
+ ## Cross-reference
340
+
341
+ - [`knowledge/spatial/vr-patterns.md`](vr-patterns.md) — VR specifics
342
+ - [`knowledge/spatial/ar-patterns.md`](ar-patterns.md) — AR specifics
343
+ - [`knowledge/spatial/spatial-ui-elements.md`](spatial-ui-elements.md) — panels, controls, menus
344
+ - [`knowledge/spatial/comfort-and-accessibility.md`](comfort-and-accessibility.md) — comfort + a11y
345
+ - [`knowledge/motion/principles.md`](../motion/principles.md) — motion / animation
346
+ - [`knowledge/a11y/keyboard-and-focus.md`](../a11y/keyboard-and-focus.md) — alt input