@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,343 @@
1
+ <!-- hand-written -->
2
+ ---
3
+ title: Spatial UI elements (panels, billboards, controls, menus)
4
+ applies_to: [spatial, vr, ar, ui-elements, panels]
5
+ version: 1.0.0
6
+ last_updated: 2026-05
7
+ stability: stable
8
+ ---
9
+
10
+ # Spatial UI elements
11
+
12
+ UI primitives for spatial / AR / VR. Panels, billboards, buttons, sliders, menus — adapted for 3D space.
13
+
14
+ Read [`spatial-design-fundamentals.md`](spatial-design-fundamentals.md) first.
15
+
16
+ ## Panel — the core spatial UI element
17
+
18
+ A panel is a 2D surface floating in 3D space. Most "interface" content lives on panels.
19
+
20
+ ### Panel anatomy
21
+
22
+ ```
23
+ [shadow / glow]
24
+ ┌──────────────┐
25
+ │ [Title bar] │
26
+ ├──────────────┤
27
+ │ │
28
+ │ [Content] │
29
+ │ │
30
+ │ │
31
+ └──────────────┘
32
+ [tail / handle for grabbing]
33
+ ```
34
+
35
+ ### Panel anchoring
36
+
37
+ | Anchor | Use |
38
+ | --- | --- |
39
+ | **World-locked** | Default for primary content; user moves around it |
40
+ | **Wrist-locked** | Quick-access menus (Vision Pro Home, Quest dock) |
41
+ | **Hand-locked** | Tools / palettes the user holds |
42
+ | **Object-locked** (AR) | Content overlaid on real things |
43
+
44
+ ### Panel sizing
45
+
46
+ Standard sizes:
47
+
48
+ | Size | Use | Visual angle |
49
+ | --- | --- | --- |
50
+ | **Small / quick info** | Tooltips, notifications | 5-10° wide |
51
+ | **Medium / panel** | Settings, dialogs | 20-30° wide |
52
+ | **Large / window** | Productivity, content | 40-50° wide |
53
+ | **Cinema / video** | Movies, presentations | 60-90° wide |
54
+
55
+ Convert visual angle to real size based on distance:
56
+ - 30° at 1.5m distance ≈ 80cm wide.
57
+ - 50° at 1.5m distance ≈ 1.4m wide.
58
+
59
+ ### Panel placement defaults
60
+
61
+ - **Distance**: 1.2-1.5m from user (sweet spot).
62
+ - **Height**: at or slightly below eye level.
63
+ - **Angle**: tilted 5-10° toward user (face-on feels stiff).
64
+
65
+ For Vision Pro: SwiftUI auto-positions; manual override available.
66
+
67
+ ### Multi-panel layouts
68
+
69
+ For productivity (Vision Pro multi-window, Quest workspace):
70
+ - **Curved arrangement** — panels arc around user.
71
+ - **Grid layout** — 2×2, 3×2, etc.
72
+ - **Snap-to-grid** for organization.
73
+ - **Save / restore layouts** per session.
74
+
75
+ ## Billboarding
76
+
77
+ Billboarding = a 2D plane that always faces the user, regardless of view angle.
78
+
79
+ | Pattern | Use |
80
+ | --- | --- |
81
+ | **Full billboarding** | Always faces user (text labels, icons in world) |
82
+ | **Y-axis billboarding** | Rotates only on Y axis (text on a sign) |
83
+ | **No billboarding** | Fixed orientation (book on table) |
84
+
85
+ For text labels in 3D worlds: full billboarding so always readable.
86
+
87
+ For environmental UI (signs, posters in a virtual room): no billboarding — looks placed.
88
+
89
+ ## Buttons
90
+
91
+ Spatial buttons are 3D objects users interact with.
92
+
93
+ ### Visual states
94
+
95
+ | State | Visual |
96
+ | --- | --- |
97
+ | **Idle** | Resting, default |
98
+ | **Hover** (gaze / hand near) | Slight glow, tint, lift |
99
+ | **Pressed** | Pushed in (z-depth) |
100
+ | **Disabled** | Desaturated, no interaction |
101
+
102
+ ### Push button (depressed)
103
+
104
+ Most natural: physical push.
105
+
106
+ ```
107
+ [ idle ] → [ pressed (lower z) ] → [ release ]
108
+ ```
109
+
110
+ User pushes finger / controller through button surface. Animation: 0.5-2cm of physical depression.
111
+
112
+ ### Tap-button (no physical depth)
113
+
114
+ For Vision Pro hand tracking: pinch gesture activates without "pushing":
115
+
116
+ ```
117
+ [idle] → [hover (gaze)] → [pinch] → [activated]
118
+ ```
119
+
120
+ No physical depression needed.
121
+
122
+ ### Sizing
123
+
124
+ - **Hand-pressed button**: 5cm minimum (fingertip-friendly).
125
+ - **Pinch / gaze**: 1-2cm minimum (smaller OK with gaze precision).
126
+ - **Far buttons** (raycast / pointer): scale to maintain visual angle.
127
+
128
+ ### Audio feedback
129
+
130
+ Every button needs sound:
131
+ - **Hover**: subtle.
132
+ - **Press**: distinct click.
133
+ - **Release**: confirm tone.
134
+
135
+ ## Sliders
136
+
137
+ | Type | Use |
138
+ | --- | --- |
139
+ | **Linear slider** (horizontal/vertical) | Volume, scale, percentage |
140
+ | **Radial slider** (dial) | Rotational adjustments |
141
+ | **3D slider** (z-axis) | Depth-related |
142
+
143
+ Interaction:
144
+ - **Hand grab handle** + drag.
145
+ - **Pinch + drag** (Vision Pro hand tracking).
146
+ - **Controller stick** → slider value.
147
+
148
+ Show:
149
+ - **Current value** clearly.
150
+ - **Range markers** (0%, 50%, 100%).
151
+ - **Snap to common values** if applicable.
152
+
153
+ ## Menus
154
+
155
+ ### Wrist menu (Vision Pro / Quest)
156
+
157
+ Look at wrist to invoke menu:
158
+
159
+ ```
160
+ User looks at wrist →
161
+ Wrist UI appears →
162
+ Pinch to select →
163
+ Confirms / closes
164
+ ```
165
+
166
+ Quick-access pattern. Stays on wrist; user always knows where to find it.
167
+
168
+ ### Floating menu
169
+
170
+ Hand-anchored or world-locked menu panel:
171
+
172
+ ```
173
+ [Trigger] →
174
+ Menu panel appears at gaze direction →
175
+ Tap / pinch to select item →
176
+ Menu closes / cascades
177
+ ```
178
+
179
+ For tools, options, settings.
180
+
181
+ ### Radial menu
182
+
183
+ Items arranged in a circle around user's hand or cursor:
184
+
185
+ ```
186
+ [Item 1]
187
+ [Item 4] [Item 2]
188
+ [Item 3]
189
+ ```
190
+
191
+ Press direction to select. Fast for power users; common in VR games (Half-Life: Alyx weapon select).
192
+
193
+ ### Pie menu (variant)
194
+
195
+ Radial menu but using gesture direction (flick / drag direction).
196
+
197
+ ## Input affordances
198
+
199
+ ### Pointer / ray
200
+
201
+ Visible ray from controller / hand pointing at target:
202
+
203
+ ```
204
+ [hand] -------------→ [target]
205
+ [highlight on target]
206
+ ```
207
+
208
+ Standard for distant interaction. Hover effect on targeted object.
209
+
210
+ ### Hand cursor (touch range)
211
+
212
+ When hand is close to a target:
213
+ - **No ray needed**.
214
+ - **Pinch / push** directly.
215
+
216
+ Mode switches automatically based on distance (Vision Pro does this elegantly).
217
+
218
+ ### Gaze cursor (eye tracking)
219
+
220
+ For eye-tracked devices (Vision Pro):
221
+ - **Subtle indicator** at gaze point (Vision Pro shows nothing — just visual focus shift).
222
+ - **Pinch to confirm** (gaze + pinch = signature Vision Pro interaction).
223
+
224
+ ### Voice
225
+
226
+ For accessibility / hands-busy:
227
+ - **"Open settings"** opens settings.
228
+ - **"Click that"** while looking at target.
229
+ - Coexists with hand / controller input.
230
+
231
+ ## Notifications in spatial
232
+
233
+ Different from 2D notifications:
234
+
235
+ | Pattern | Use |
236
+ | --- | --- |
237
+ | **Wrist notification** | Brief preview on user's wrist |
238
+ | **Floating notification** at gaze | Short panel near gaze direction |
239
+ | **Spatial audio chime** | Direction indicates source location |
240
+ | **Ambient pulsing** | Subtle attention cue |
241
+
242
+ Don't:
243
+ - **Lock notification to head** for too long (annoying).
244
+ - **Block important real content** in AR (real road, etc.).
245
+ - **Loud audio** when private headset.
246
+
247
+ ## Lists
248
+
249
+ ### Vertical scrolling list (in panel)
250
+
251
+ Same as 2D web — scroll inside panel.
252
+
253
+ ### Carousel (3D rotation)
254
+
255
+ Items arranged in arc around user; rotate to browse:
256
+
257
+ ```
258
+ [item] [item]
259
+ ↘ ↙
260
+ [user]
261
+
262
+ [item] [item]
263
+ ```
264
+
265
+ Spatial-native; uses depth.
266
+
267
+ ### Cover-flow (depth-based)
268
+
269
+ Items at different depths; closest is "selected"; user pushes / scrolls to bring others forward.
270
+
271
+ ## Forms in spatial
272
+
273
+ Forms (login, search, settings) are awkward in spatial:
274
+ - **Virtual keyboards** — slow to type.
275
+ - **Voice dictation** — common preferred input.
276
+ - **Auto-fill** — leverage system credentials, never make user type passwords.
277
+
278
+ For Vision Pro: keyboard floats; user looks at keys + pinches. Slow for long input.
279
+
280
+ For Quest: ray-cast at virtual keyboard; both controllers can type at once. Faster.
281
+
282
+ For mobile AR: device's native keyboard pops up; tap as usual.
283
+
284
+ Plan to **avoid long forms** in spatial. If unavoidable: voice + autocomplete first.
285
+
286
+ ## Korean text in spatial
287
+
288
+ Hangul considerations:
289
+ - **Larger size needed** at low PPD; 1.5-2× equivalent Latin size.
290
+ - **Font choice**: Pretendard, NanumSquare, NanumGothic — render well at low resolutions.
291
+ - **Line height**: Korean needs more leading; 1.6-1.8 × font-size.
292
+ - **Mixed Korean + English**: pick a font with both glyphs (Pretendard, Noto Sans CJK).
293
+
294
+ ## Dialogs
295
+
296
+ Modal dialogs in spatial:
297
+ - **Float in front of user** at comfortable distance.
298
+ - **Dim / blur background** to focus attention.
299
+ - **Confirm + cancel** clearly.
300
+ - **Don't trap user** — always allow back / dismiss.
301
+
302
+ ## Loading / progress
303
+
304
+ ```
305
+ [spinning indicator] or [progress bar]
306
+ [text: "Loading..."] [text: "60%"]
307
+ ```
308
+
309
+ Spatial loading should feel diegetic when possible:
310
+ - Hourglass / loading orb in 3D.
311
+ - Door opening animation.
312
+ - Materializing object.
313
+
314
+ Avoid floating "Loading" text alone — feels cheap.
315
+
316
+ ## Icons in spatial
317
+
318
+ Same iconography as 2D, but:
319
+ - **3D versions** for important actions (button = depressible 3D shape).
320
+ - **Higher contrast** required.
321
+ - **Larger size** for visibility at distance.
322
+
323
+ For brand consistency: maintain icon system; render in 3D where appropriate.
324
+
325
+ ## Don't
326
+
327
+ - Don't head-lock long-form content.
328
+ - Don't make panels smaller than 20° visual angle for dense content.
329
+ - Don't put critical UI in peripheral (>30°).
330
+ - Don't omit hover / press feedback. Spatial without feedback feels broken.
331
+ - Don't make buttons smaller than 5cm for hand-press; 1cm for gaze + pinch.
332
+ - Don't forget audio feedback. Spatial UI is multisensory.
333
+ - Don't require long-form text input. Voice or autofill first.
334
+ - Don't leave panels at uncomfortable angles. User should not have to look up / down for primary UI.
335
+
336
+ ## Cross-reference
337
+
338
+ - [`knowledge/spatial/spatial-design-fundamentals.md`](spatial-design-fundamentals.md) — fundamentals
339
+ - [`knowledge/spatial/vr-patterns.md`](vr-patterns.md) — VR specifics
340
+ - [`knowledge/spatial/ar-patterns.md`](ar-patterns.md) — AR specifics
341
+ - [`knowledge/spatial/comfort-and-accessibility.md`](comfort-and-accessibility.md) — comfort + a11y
342
+ - [`examples/component-spatial-panel.md`](../../examples/component-spatial-panel.md) — panel spec
343
+ - [`knowledge/i18n/korean-typography.md`](../i18n/korean-typography.md) — Korean fonts
@@ -0,0 +1,302 @@
1
+ <!-- hand-written -->
2
+ ---
3
+ title: VR patterns (immersive virtual reality design)
4
+ applies_to: [vr, virtual-reality, immersive, quest, psvr]
5
+ version: 1.0.0
6
+ last_updated: 2026-05
7
+ stability: stable
8
+ ---
9
+
10
+ # VR patterns
11
+
12
+ Fully immersive Virtual Reality (Quest, PSVR2, Valve Index, Vive). The user is replaced in a virtual environment.
13
+
14
+ Read [`spatial-design-fundamentals.md`](spatial-design-fundamentals.md) first.
15
+
16
+ ## VR experiences — categories
17
+
18
+ | Category | Examples | UX focus |
19
+ | --- | --- | --- |
20
+ | **Games / immersive** | Beat Saber, Half-Life: Alyx, Asgard's Wrath | Fun, presence, interaction |
21
+ | **Productivity** | Immersed, Virtual Desktop, Horizon Workrooms | Multi-monitor, focus |
22
+ | **Social** | VRChat, Rec Room, Horizon Worlds | Avatars, voice, presence |
23
+ | **Training / simulation** | Medical, military, industrial training | Realism, repeat-ability |
24
+ | **Cinema / video** | Bigscreen, Apple TV in Vision Pro | Reading distance, comfort |
25
+ | **Fitness** | Supernatural, Beat Saber, FitXR | Movement, calorie tracking |
26
+
27
+ ## Three core VR design principles
28
+
29
+ ### 1. Presence is everything
30
+
31
+ VR's killer feature is *presence* — feeling like you're really there. Design choices that break presence are the worst design failures:
32
+
33
+ - **UI floating awkwardly** in space (vs anchored to logical thing).
34
+ - **Hands clipping through objects** (no haptic / collision feedback).
35
+ - **Visible loading screens** with no diegetic explanation.
36
+ - **Sudden teleports** without grounding.
37
+ - **Floating numbers** without context.
38
+
39
+ Design solutions diegetically (in-fiction):
40
+ - Health on a wrist watch (not floating HUD).
41
+ - Inventory in a backpack (not pop-up menu).
42
+ - Weapon ammo on the gun (not text overlay).
43
+
44
+ ### 2. Comfort over flash
45
+
46
+ Cool effects that make users sick are unshipable:
47
+ - Avoid camera shakes (player's body doesn't shake).
48
+ - Avoid forced motion (player must initiate).
49
+ - Avoid black flashes / strobing.
50
+ - Limit acceleration (constant velocity is more comfortable).
51
+
52
+ ### 3. Use the body
53
+
54
+ Real interactions feel better than abstract:
55
+ - Grab a door handle, turn it (vs press a button to open door).
56
+ - Throw a ball physically (vs click).
57
+ - Look around to spot enemies (vs minimap).
58
+ - Reach over your shoulder for inventory (vs menu).
59
+
60
+ ## VR HUD anti-patterns
61
+
62
+ Traditional 2D HUD doesn't work in VR. What to do instead:
63
+
64
+ | Bad (2D HUD) | Good (VR-native) |
65
+ | --- | --- |
66
+ | Health bar in corner | Glow on player's hands when low |
67
+ | Floating ammo count | Magazine count visible on the gun |
68
+ | Mini-map overlay | Compass on wrist; map in journal |
69
+ | Score top-right | Score on a scoreboard in the world |
70
+ | Floating quest waypoint | Compass needle, NPC pointing, in-world signs |
71
+
72
+ Diegetic UI > head-locked UI > world-anchored UI.
73
+
74
+ ## Locomotion in detail
75
+
76
+ ### Teleport
77
+
78
+ User points at destination, presses button, instantly arrives.
79
+
80
+ Variants:
81
+ - **Arc teleport**: arc trajectory shows where you'll land.
82
+ - **Straight teleport**: simple ray.
83
+ - **Dash**: short, immediate.
84
+ - **Blink**: instantaneous fade-cut.
85
+
86
+ UI:
87
+ - **Visible target indicator** at landing spot (circle, footprint).
88
+ - **Direction post-teleport**: where will player be facing? (Some games let you snap to a direction during teleport.)
89
+ - **Cooldown / no-cost**: most games have no cooldown.
90
+
91
+ ### Smooth (joystick) locomotion
92
+
93
+ Push joystick → move at walking speed.
94
+
95
+ Comfort options:
96
+ - **Speed setting** — slower = more comfortable.
97
+ - **Comfort vignette** — peripheral darkening during motion.
98
+ - **Snap turn** for rotation (don't combine smooth-walk with smooth-turn for new users — too much).
99
+
100
+ ### Snap turn
101
+
102
+ Pressing left/right rotates view 30° / 45° / 90° instantly.
103
+
104
+ - Avoids the disorientation of smooth turn.
105
+ - Standard angles: 30°, 45°, 60°, 90°.
106
+ - Default 30-45°.
107
+
108
+ ### Room-scale walking
109
+
110
+ User physically walks around in their playspace. Most comfortable; limited by physical room.
111
+
112
+ - **Guardian / chaperone** boundary system warns when approaching real wall.
113
+ - **Re-center** option for users in cramped spaces.
114
+
115
+ ### Hybrid locomotion
116
+
117
+ Most games offer multiple options; let player pick. Common combination:
118
+ - Smooth walk + snap turn + comfort vignette.
119
+
120
+ ## Movement guardrails
121
+
122
+ ### Speed limits
123
+
124
+ Walking pace ~1.5 m/s feels natural. Faster than 3-4 m/s starts feeling sicky.
125
+
126
+ Running / vehicles can go faster but with:
127
+ - **Cockpit anchor** (steering wheel grounds you).
128
+ - **Cinematic vignette** during high speed.
129
+ - **Physical input** (pumping arms, cycling motion) reduces sickness perceptually.
130
+
131
+ ### Acceleration
132
+
133
+ Constant velocity is more comfortable than acceleration. Vehicle / sled experiences feel sickier than steady walk.
134
+
135
+ For combat / chase: avoid sudden direction changes; use teleport for big jumps.
136
+
137
+ ## Spatial UI placement
138
+
139
+ ### Default panel position
140
+
141
+ ```
142
+ eye height
143
+ ─────────────
144
+
145
+ │ [panel ~1.2m wide]
146
+ │ floats at 1.5m distance
147
+ │ slightly below eye level (-10°)
148
+
149
+ ─────────────
150
+ user
151
+ ```
152
+
153
+ Within reach of natural arm extension if the panel needs touching.
154
+
155
+ ### Multi-panel productivity
156
+
157
+ For workspaces (Immersed, Vision Pro):
158
+ - Multiple windows positioned around user.
159
+ - User repositions via drag handles.
160
+ - Snap to grid / columns helps organization.
161
+ - Save layouts for repeat sessions.
162
+
163
+ ### Inventory access
164
+
165
+ Patterns:
166
+ - **Reach over shoulder** (Half-Life: Alyx) — diegetic, immersive.
167
+ - **Wrist menu** (palm up to reveal) — quick access.
168
+ - **Belt slots** — items at hip.
169
+ - **Spawn-in front** — modal overlay appears.
170
+
171
+ ## Hands and avatars
172
+
173
+ ### Hand representation
174
+
175
+ | Style | Use |
176
+ | --- | --- |
177
+ | **Realistic hands** | Most immersive; uncanny valley risk |
178
+ | **Stylized hands** | Cartoon, anime, robotic — safer |
179
+ | **Floating gloves** | Half-Life: Alyx style — clean |
180
+ | **Tools only** (no hands visible) | Sterile but works for some |
181
+
182
+ Hand presence requires good tracking; mismatched real-vs-virtual hand position breaks immersion.
183
+
184
+ ### Self-avatar
185
+
186
+ Should the user see their own body?
187
+ - **Hands only** — most VR (Quest, etc.).
188
+ - **Hands + arms** — IK-driven from headset + controllers.
189
+ - **Full body** — requires extra trackers (Vive trackers, Slime VR).
190
+ - **No body** — tools / disembodied; for some experiences.
191
+
192
+ If full body: legs / movement match real walking via room-scale; otherwise, IK approximations risk uncanny.
193
+
194
+ ## Multiplayer / social VR
195
+
196
+ ### Avatars
197
+
198
+ - **Customizable** — users build identity.
199
+ - **Realistic vs cartoon** — picking lane.
200
+ - **Lip sync** from voice input.
201
+ - **Eye contact** if eye-tracking available.
202
+
203
+ ### Personal space
204
+
205
+ Korean cultural note: Korean users may have different comfort distances than Western. Default 1.5m personal space; allow adjustment.
206
+
207
+ In social VR:
208
+ - **Personal space bubble** (auto-mute when too close).
209
+ - **Block / mute** prominent.
210
+ - **Safe zone** to escape harassment.
211
+
212
+ ### Voice + gestures
213
+
214
+ Communication:
215
+ - **Voice chat** primary.
216
+ - **Hand gestures** (waves, thumbs up).
217
+ - **Avatar emotes** triggered by buttons.
218
+ - **Text chat** as secondary (typing in VR is hard).
219
+
220
+ ## Reading text in VR
221
+
222
+ ### Sizing for legibility
223
+
224
+ | Distance | Min readable text size |
225
+ | --- | --- |
226
+ | 0.5m | 12mm character height |
227
+ | 1m | 24mm |
228
+ | 1.5m | 35mm |
229
+ | 3m | 70mm |
230
+
231
+ Equivalent of "1° visual angle" rule.
232
+
233
+ ### Font choices
234
+
235
+ - **Sans-serif** for legibility at low PPD.
236
+ - **Higher weight** (medium-bold) renders cleaner.
237
+ - **High contrast** (white on dark, dark on light).
238
+ - **Anti-aliased / sub-pixel** rendering enabled.
239
+
240
+ For Korean: Pretendard, NanumSquare; bold weights for VR clarity.
241
+
242
+ ### Long-form reading
243
+
244
+ Reading a book in VR is uncomfortable for >15 min currently:
245
+ - Text appears clear at distance but pixels show on close inspection.
246
+ - Eye strain from fixed focal distance.
247
+ - Better: cinema-style (large text far away) for novels.
248
+
249
+ ## Cinema / video in VR
250
+
251
+ For Bigscreen, Apple TV in Vision Pro:
252
+ - **Screen size 3-5m wide** (perceived).
253
+ - **Distance 5-15m** (perceived).
254
+ - **Curved screen** wraps slightly.
255
+ - **Dimmable environment** (movie theater black, beach, etc.).
256
+ - **Stereoscopic 3D** for 3D content.
257
+ - **Pause / play** via controller / pinch / voice.
258
+
259
+ ## Performance for VR
260
+
261
+ Hard requirement: **90Hz minimum, no dropped frames**.
262
+
263
+ | Tech | Use |
264
+ | --- | --- |
265
+ | **Foveated rendering** | Render high-detail at gaze point only |
266
+ | **Single-pass stereo** | Render both eyes in one pass |
267
+ | **Multi-view rendering** | Hardware-accelerated stereo |
268
+ | **Asynchronous reprojection** | Re-warp frame to current head pose if late |
269
+ | **Fixed foveated rendering** | Reduce edge resolution (fixed pattern) |
270
+
271
+ For mobile VR (Quest standalone): aggressive optimization — limited GPU.
272
+
273
+ ## Common VR mistakes
274
+
275
+ - **Dropping frames** — instant sickness.
276
+ - **Forced camera motion** — sickness.
277
+ - **Tiny text** — illegible at low PPD.
278
+ - **2D HUD ports** — breaks immersion.
279
+ - **No comfort options** — alienates new users.
280
+ - **Ignoring guardian boundary** — players hit walls.
281
+ - **No avatar self-representation** — disorienting absence.
282
+ - **Long unskippable cutscenes** in VR — players stuck.
283
+
284
+ ## Don't
285
+
286
+ - Don't drop below 90 fps. Period.
287
+ - Don't head-lock long content.
288
+ - Don't move the camera without user input.
289
+ - Don't put text smaller than 1° visual angle.
290
+ - Don't use 2D HUD patterns. Diegetic > overlay.
291
+ - Don't force smooth locomotion without comfort options.
292
+ - Don't ignore guardian / chaperone — players walk into real walls.
293
+ - Don't combine smooth turn + smooth walk + tiny FOV without comfort fallback.
294
+
295
+ ## Cross-reference
296
+
297
+ - [`knowledge/spatial/spatial-design-fundamentals.md`](spatial-design-fundamentals.md) — fundamentals
298
+ - [`knowledge/spatial/ar-patterns.md`](ar-patterns.md) — AR
299
+ - [`knowledge/spatial/spatial-ui-elements.md`](spatial-ui-elements.md) — panels, controls
300
+ - [`knowledge/spatial/comfort-and-accessibility.md`](comfort-and-accessibility.md) — comfort + a11y
301
+ - [`knowledge/game-ui/game-ui-fundamentals.md`](../game-ui/game-ui-fundamentals.md) — game UI broader
302
+ - [`knowledge/motion/principles.md`](../motion/principles.md) — motion