@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,312 @@
1
+ <!-- hand-written -->
2
+ ---
3
+ title: Chatbot design (rule-based, intent-driven, hybrid)
4
+ applies_to: [chatbot, conversational, customer-support]
5
+ version: 1.0.0
6
+ last_updated: 2026-05
7
+ stability: stable
8
+ ---
9
+
10
+ # Chatbot design
11
+
12
+ Chatbots are conversational text interfaces, often for customer support, FAQ deflection, lead capture, or transactional flows. This file covers traditional / intent-based / hybrid chatbots; for LLM-based AI chat (ChatGPT-style), see [`ai-chat-interfaces.md`](ai-chat-interfaces.md).
13
+
14
+ Read [`conversational-ui-fundamentals.md`](conversational-ui-fundamentals.md) first.
15
+
16
+ ## Three architectures
17
+
18
+ ### 1. Rule-based / button-driven
19
+
20
+ User clicks options; bot responds per scripted tree.
21
+
22
+ ```
23
+ Bot: "What can I help with?"
24
+ [Order status] [Returns] [Other]
25
+ User: [taps "Order status"]
26
+ Bot: "Please share your order number."
27
+ User: "ORD-12345"
28
+ Bot: [looks up; responds with status]
29
+ ```
30
+
31
+ Pros: predictable, cheap, no AI.
32
+ Cons: rigid; users escape via "Other" → human.
33
+
34
+ ### 2. Intent-based (NLP / classifier)
35
+
36
+ User types free text; bot classifies intent and responds.
37
+
38
+ ```
39
+ User: "Where's my package?"
40
+ [Intent: ORDER_STATUS]
41
+ Bot: "Sure, let me check. What's your order number?"
42
+ ```
43
+
44
+ Tools: Dialogflow, Rasa, Microsoft Bot Framework, Amazon Lex.
45
+
46
+ Pros: more natural; users don't have to find buttons.
47
+ Cons: misclassifies; needs training data; updates are work.
48
+
49
+ ### 3. Hybrid (intent + buttons + LLM fallback)
50
+
51
+ Most modern chatbots:
52
+ - Buttons for common flows.
53
+ - Intent classification for typed input.
54
+ - LLM fallback when intent unknown.
55
+ - Human handoff when stuck.
56
+
57
+ ```
58
+ User: [opens chat]
59
+ Bot: "Hi! What can I help with?"
60
+ [Order status] [Returns] [Other questions]
61
+
62
+ User: "I want to know about your shipping policy"
63
+ [Intent classified: SHIPPING_INFO; confidence 0.85]
64
+ Bot: "We ship within 1-3 days for domestic..."
65
+ [Track package] [Talk to a human]
66
+ ```
67
+
68
+ Pros: best of all. Cons: more engineering.
69
+
70
+ ## Anatomy of a chatbot UI
71
+
72
+ ```
73
+ ┌──────────────────────────┐
74
+ │ Chat with Support [×] │ ← header
75
+ ├──────────────────────────┤
76
+ │ Bot: 안녕하세요! 무엇을 │
77
+ │ 도와드릴까요? │
78
+ │ │
79
+ │ [상품 문의] [반품 문의] [기타]│ ← suggested chips
80
+ │ │
81
+ │ User: 배송 언제 와요? │
82
+ │ │
83
+ │ Bot: 주문 번호를 알려주세요.│
84
+ │ │
85
+ │ [Bot is typing...] │ ← typing indicator
86
+ ├──────────────────────────┤
87
+ │ Type a message... [Send]│ ← input
88
+ └──────────────────────────┘
89
+ ```
90
+
91
+ ### Anatomy parts
92
+
93
+ | Part | Purpose |
94
+ | --- | --- |
95
+ | Header | Branding, agent identity, close button |
96
+ | Message list | Scrollable history of turns |
97
+ | Bot bubble | Bot messages; typically left-aligned, distinct color |
98
+ | User bubble | User messages; right-aligned, brand color |
99
+ | Suggested chips | Quick reply buttons below bot message |
100
+ | Typing indicator | "..." while bot processes |
101
+ | Input field | Text entry + Send button |
102
+ | Attachment | File / image upload (if supported) |
103
+
104
+ ## Conversation patterns
105
+
106
+ ### Greeting
107
+
108
+ First message sets tone:
109
+
110
+ | Style | Example |
111
+ | --- | --- |
112
+ | Helpful | "Hi! What can I help with today?" |
113
+ | Branded | "Welcome to [Brand]. How can we make your day better?" |
114
+ | Direct | "What's your question?" |
115
+ | Korean (해요체) | "안녕하세요! 무엇을 도와드릴까요?" |
116
+
117
+ Don't greet with feature list — overwhelms.
118
+
119
+ ### Quick replies
120
+
121
+ Suggested next-step buttons. Reduces typing friction:
122
+
123
+ ```
124
+ Bot: "What kind of issue?"
125
+ [Login problem] [Payment] [Bug report]
126
+ ```
127
+
128
+ Quick replies should:
129
+ - Be 3-5 max (more = scroll / paralysis).
130
+ - Cover 80% of common cases.
131
+ - Always include "Other / 기타" escape.
132
+
133
+ ### Forms in chat
134
+
135
+ Long forms in chat = bad. Two patterns:
136
+
137
+ **Inline questions** (one-at-a-time):
138
+
139
+ ```
140
+ Bot: "What's your name?"
141
+ User: "John"
142
+ Bot: "Email?"
143
+ User: "john@example.com"
144
+ ```
145
+
146
+ OK for 2-4 fields. Above that, switch to form embed.
147
+
148
+ **Form card** (embedded):
149
+
150
+ ```
151
+ Bot: "Please complete this:"
152
+ ┌─────────────────────┐
153
+ │ [Name field] │
154
+ │ [Email field] │
155
+ │ [Issue type ▼] │
156
+ │ [Description text] │
157
+ │ [Submit] │
158
+ └─────────────────────┘
159
+ ```
160
+
161
+ For 5+ fields. Don't make user type "name", "email" via separate turns.
162
+
163
+ ### Lists / cards
164
+
165
+ Bot can show rich card content (product list, search results):
166
+
167
+ ```
168
+ Bot: "Found these for you:"
169
+
170
+ [Product card 1] [Product card 2] [Product card 3]
171
+ [image] [image] [image]
172
+ [name] [name] [name]
173
+ [price] [price] [price]
174
+ [Buy] [Buy] [Buy]
175
+ ```
176
+
177
+ Carousel-style or grid. Keep cards small; full detail behind tap.
178
+
179
+ ### Confirmation
180
+
181
+ Before destructive / costly actions:
182
+
183
+ ```
184
+ Bot: "Just to confirm: cancel order ORD-12345 for ₩50,000?"
185
+ User: [Yes, cancel] [No, keep it]
186
+ ```
187
+
188
+ ## Korean chatbot conventions
189
+
190
+ - **Greeting**: "안녕하세요" + 해요체.
191
+ - **Confirmation**: 합쇼체 sometimes for formality ("주문을 취소하시겠습니까?").
192
+ - **Channel integration**: 카카오톡 채널 — bots common in KakaoTalk.
193
+ - **Customer service** chatbots heavy in fintech, e-commerce, telecom.
194
+
195
+ For 카카오톡 채널 bots:
196
+ - Use Kakao's bot builder (i 챗봇 / Kakao Channel).
197
+ - Persona consistency with the company's main brand.
198
+ - Often hand off to human after 2-3 unresolved turns.
199
+ - Operating hours displayed.
200
+
201
+ ## Empty states / no-match
202
+
203
+ When bot doesn't understand:
204
+
205
+ | Recovery | Phrase |
206
+ | --- | --- |
207
+ | Re-ask | "Sorry, could you rephrase?" |
208
+ | Suggest | "I can help with: [Order] [Returns] [Returns]. Which?" |
209
+ | Hand-off | "Let me connect you with a human." |
210
+ | Search alternative | "Try asking differently or search our help center." |
211
+
212
+ After 2-3 failures: hand off, don't keep cycling.
213
+
214
+ ## Human handoff
215
+
216
+ Critical for chatbot UX:
217
+
218
+ ```
219
+ Bot: "Let me get a person to help. One moment..."
220
+ [connecting indicator]
221
+ [Human agent joins]
222
+ Agent: "Hi, I'm 김대리. How can I help?"
223
+ ```
224
+
225
+ Design:
226
+ - **Always available** — user can request "human" at any point.
227
+ - **Context transfer** — agent sees the prior conversation; user doesn't repeat.
228
+ - **Wait time displayed** — "Estimated wait: 3 minutes" / "Position 4 in queue".
229
+ - **Off-hours behavior** — "We're closed; leave a message" or schedule callback.
230
+
231
+ ## Personality
232
+
233
+ Bots should feel consistent:
234
+
235
+ | Pattern | Use |
236
+ | --- | --- |
237
+ | **Branded persona** | "I'm Aera Bot, here to help." |
238
+ | **Generic helpful** | Standard support tone |
239
+ | **Anonymous** | Just "Bot" or company name |
240
+
241
+ Don't pretend bot is a human. Disclose: "You're chatting with an AI assistant; switch to a human anytime."
242
+
243
+ For Korean: 자기소개 ("저는 [브랜드] 봇이에요") common; helps relationship.
244
+
245
+ ## Persistent vs ephemeral
246
+
247
+ | Type | Use |
248
+ | --- | --- |
249
+ | **Persistent** (history saved) | Customer support; multi-session; transactional |
250
+ | **Ephemeral** (cleared on close) | One-shot help; non-sensitive |
251
+
252
+ For persistent:
253
+ - User can return and see history.
254
+ - Cross-device sync.
255
+ - Privacy: user can delete history.
256
+
257
+ For ephemeral:
258
+ - Less storage, simpler.
259
+ - User can't refer to past.
260
+ - Common for onboarding bots.
261
+
262
+ ## Notification UX
263
+
264
+ For persistent chatbots that proactively message:
265
+
266
+ - **Notification badge** on chat icon when new bot message.
267
+ - **Sound / push** when bot messages user (configurable).
268
+ - **Quiet hours** — don't bot-message at 3am.
269
+
270
+ ## Accessibility
271
+
272
+ - **ARIA live region** for new messages (screen reader announces).
273
+ - **Keyboard nav** — Tab to focus input; Up/Down to navigate messages.
274
+ - **Read aloud** option for users who prefer voice.
275
+ - **Adjustable text size**.
276
+ - **Color contrast** for bubble bg / text.
277
+ - **Suggested chips**: must be focusable + keyboard activatable.
278
+
279
+ ## Performance
280
+
281
+ - **Streaming bot responses** when LLM-driven.
282
+ - **Lazy-load message history** when long.
283
+ - **Debounce typing indicator** updates.
284
+ - **Optimistic send** — show user's message immediately, retry if failed.
285
+
286
+ ## Common chatbot mistakes
287
+
288
+ - **Hiding human handoff** — users get trapped.
289
+ - **Long preamble** — bot's first 3 messages before action.
290
+ - **Confusing "I" / "we"** — pretending bot has feelings or memories it doesn't.
291
+ - **Robotic confirmations** — "I have processed your request" vs "Done!"
292
+ - **Not handling typos** — strict matching breaks.
293
+ - **Forgetting context** within session.
294
+ - **Spam-style proactive messages**.
295
+
296
+ ## Don't
297
+
298
+ - Don't pretend the bot is human.
299
+ - Don't make human handoff hidden / hard.
300
+ - Don't write the bot's first message as a feature menu.
301
+ - Don't run forms longer than 2-3 turns inline. Switch to form card.
302
+ - Don't ignore typos / variations.
303
+ - Don't push proactive messages outside business hours.
304
+ - Don't hide what data the bot stores. Be transparent.
305
+
306
+ ## Cross-reference
307
+
308
+ - [`knowledge/conversational/conversational-ui-fundamentals.md`](conversational-ui-fundamentals.md) — fundamentals
309
+ - [`knowledge/conversational/voice-ui-patterns.md`](voice-ui-patterns.md) — voice
310
+ - [`knowledge/conversational/ai-chat-interfaces.md`](ai-chat-interfaces.md) — LLM-based
311
+ - [`knowledge/conversational/korean-voice-conventions.md`](korean-voice-conventions.md) — KR
312
+ - [`examples/component-chat-interface.md`](../../examples/component-chat-interface.md) — chat UI spec
@@ -0,0 +1,299 @@
1
+ <!-- hand-written -->
2
+ ---
3
+ title: Conversational UI fundamentals (turn-taking, intents, context, modalities)
4
+ applies_to: [conversational-ui, voice, chat, ai-chat]
5
+ version: 1.0.0
6
+ last_updated: 2026-05
7
+ stability: stable
8
+ ---
9
+
10
+ # Conversational UI fundamentals
11
+
12
+ Conversational UI is design for back-and-forth exchanges. Voice assistants (Siri, Bixby), chatbots (customer support), AI chat (ChatGPT, Claude), and voice-controlled features in apps all share a foundation: a turn-taking exchange where each side has limited information about the other.
13
+
14
+ This file is the foundation for [`voice-ui-patterns.md`](voice-ui-patterns.md), [`chatbot-design.md`](chatbot-design.md), [`ai-chat-interfaces.md`](ai-chat-interfaces.md), and [`korean-voice-conventions.md`](korean-voice-conventions.md).
15
+
16
+ ## Modalities
17
+
18
+ | Modality | Examples |
19
+ | --- | --- |
20
+ | **Voice-only** | Smart speakers (Echo, Nest), in-car assistants |
21
+ | **Voice + visual** | Phone assistants (Siri, Bixby) — voice input, visual response |
22
+ | **Text-only chat** | SMS bots, Slack bots, in-app chatbots |
23
+ | **Multimodal AI chat** | ChatGPT (text + image upload + voice), Claude (text + image) |
24
+ | **Hybrid (voice → text)** | Voice search → text results |
25
+
26
+ Each modality has different constraints. Voice can't show a list of 20 options; chat can't convey vocal warmth. Pick the modality that matches the task.
27
+
28
+ ## Turn-taking
29
+
30
+ Conversation is **turn-based**:
31
+
32
+ ```
33
+ User: [request]
34
+ System: [response]
35
+ User: [follow-up or new request]
36
+ System: [response]
37
+ ```
38
+
39
+ The system must:
40
+ 1. **Detect end of turn** — when has the user finished speaking / typing?
41
+ 2. **Respond appropriately** — relevant, paced, complete.
42
+ 3. **Yield turn** — signal "your turn" via prompt, cursor, or pause.
43
+
44
+ For voice: end-of-utterance detection is hard. Pauses can be thinking, not finishing.
45
+
46
+ For chat: end of turn is "Send" button or Enter. Easy.
47
+
48
+ ## Intents and slots (the canonical model)
49
+
50
+ Most voice / chatbot systems classify input via **intents**:
51
+
52
+ ```
53
+ User: "Set a timer for 5 minutes"
54
+
55
+ Intent: SET_TIMER
56
+ Slots: duration: 5 minutes
57
+ ```
58
+
59
+ The system maps utterance → intent + parameters → action.
60
+
61
+ | Concept | Definition |
62
+ | --- | --- |
63
+ | **Intent** | What the user wants (action / question type) |
64
+ | **Slot / entity** | Specific values (time, amount, name) |
65
+ | **Context** | Prior turns; user state; system state |
66
+ | **Confidence** | How sure the system is about the interpretation |
67
+
68
+ For LLM-based systems (ChatGPT, Claude): intents are implicit. The model interprets natural language end-to-end. But for product features (smart-home control, customer support), explicit intent + slot architecture is cheaper / more reliable.
69
+
70
+ ## Conversational design principles
71
+
72
+ ### 1. One thing per turn
73
+
74
+ Don't ask for two pieces of info in one turn:
75
+
76
+ ✗ "What's your name and email?"
77
+ ✓ "What's your name?" → user answers → "And your email?"
78
+
79
+ For visual chat: more info OK per turn (UI can hold a list). Voice: stricter.
80
+
81
+ ### 2. Confirmation for destructive / costly actions
82
+
83
+ ```
84
+ User: "Delete all my photos"
85
+ System: "Are you sure? This will delete 1,247 photos and can't be undone."
86
+ User: "Yes"
87
+ System: [does it]
88
+ ```
89
+
90
+ Confirmation friction prevents accidents.
91
+
92
+ ### 3. Graceful failure
93
+
94
+ When the system doesn't understand:
95
+
96
+ | Bad | Good |
97
+ | --- | --- |
98
+ | "Error" | "Sorry, I didn't catch that. Could you say it differently?" |
99
+ | Silence | Visible "Thinking..." indicator |
100
+ | Repeat exactly the same prompt | Try a re-phrase or offer alternatives |
101
+
102
+ After 2-3 failures: hand off to alternative (text input, human agent, settings menu).
103
+
104
+ ### 4. Context-awareness
105
+
106
+ Remember context within a session:
107
+
108
+ ```
109
+ User: "What's the weather in Seoul?"
110
+ System: "Sunny, 12°C."
111
+ User: "What about tomorrow?" ← "tomorrow's weather in Seoul"
112
+ System: "Tomorrow in Seoul: cloudy, 9°C."
113
+ ```
114
+
115
+ Don't make the user repeat "Seoul" every turn.
116
+
117
+ ### 5. Be honest about capabilities
118
+
119
+ Don't pretend to know more than you do:
120
+
121
+ ✗ "Yes, I can help you book a hotel" (when you can't)
122
+ ✓ "I can search hotels, but you'll need to book on the hotel's site."
123
+
124
+ Misrepresentation breaks trust permanently.
125
+
126
+ ### 6. Respect user time
127
+
128
+ - Voice: don't make users sit through long preamble.
129
+ - Chat: don't message-bomb (5 short messages = noise; one combined message is better).
130
+ - AI chat: stream tokens so user sees response forming, not just a blank screen.
131
+
132
+ ## Streaming responses
133
+
134
+ For LLM-based chat, **stream the response token-by-token** rather than waiting for full completion:
135
+
136
+ ```
137
+ [blank screen for 8 seconds] vs [text appears word-by-word starting at 200ms]
138
+ ```
139
+
140
+ Streaming feels 10× faster even at the same total latency. Users see progress; mind fills in.
141
+
142
+ For voice: stream audio similarly (start speaking before full response is generated, hide TTS latency).
143
+
144
+ ## Latency budgets
145
+
146
+ | Modality | Acceptable latency |
147
+ | --- | --- |
148
+ | **Voice (assistant)** | < 1 second to first audio |
149
+ | **Chat (typing indicator)** | < 500ms to typing indicator |
150
+ | **Chat (first response token)** | < 1 second |
151
+ | **AI chat full response** | streamed; total 5-30s OK |
152
+ | **Wake word detection** | < 200ms |
153
+
154
+ Beyond the budget: users assume broken / abandon.
155
+
156
+ ## Affordances
157
+
158
+ For voice: how does the user know they can talk?
159
+ - **Wake word** ("Hey Siri", "OK Google", "헤이 빅스비").
160
+ - **Tap-to-talk** button (visible mic icon, button press, holding).
161
+ - **Always listening** mode (controversial; privacy concerns).
162
+
163
+ For chat:
164
+ - **Persistent input field** at bottom.
165
+ - **Suggested prompts** (chips above input) lower friction.
166
+ - **"Type a message..." placeholder** with hint of capabilities.
167
+
168
+ ## Personality and voice
169
+
170
+ Conversational UI has personality. Define:
171
+
172
+ | Dimension | Examples |
173
+ | --- | --- |
174
+ | **Formality** | Casual ("Hey!") vs Formal ("How may I assist you?") |
175
+ | **Verbosity** | Terse vs Discursive |
176
+ | **Warmth** | Professional vs Warm |
177
+ | **Humor** | None vs Dry vs Playful |
178
+ | **Emoji** | Never vs Rare vs Frequent |
179
+
180
+ For Korean fintech: 해요체 friendly; minimal humor; emoji rare.
181
+ For Korean entertainment: 해체 / 해요체 casual; some humor; more emoji.
182
+ For Korean B2B: 합쇼체 formal; no humor; no emoji.
183
+
184
+ Pick deliberately and document. Don't let each engineer / writer pick differently.
185
+
186
+ ## Speech-to-text (STT) and text-to-speech (TTS)
187
+
188
+ For voice UIs:
189
+
190
+ ### STT (recognition)
191
+
192
+ - **Confidence scores** — each transcription has a confidence; below threshold = "Sorry, I didn't catch that".
193
+ - **Language model bias** — train STT on domain (medical, legal, fintech terms).
194
+ - **Noise robustness** — test in real environments (kitchen, car, street).
195
+ - **Latency** — STT runs in background; final transcript at end of utterance.
196
+
197
+ ### TTS (synthesis)
198
+
199
+ - **Voice choice** — male / female / neutral; per-language.
200
+ - **Persona consistency** — use one voice per assistant; users build relationship.
201
+ - **Prosody** — emphasis, pauses, intonation matter. SSML allows control.
202
+ - **Latency** — pre-render common phrases; stream long ones.
203
+
204
+ For Korean: Naver Clova, Samsung Bixby, Google TTS Korean, ElevenLabs Korean — all available. Test for naturalness; some still sound robotic.
205
+
206
+ ## Errors and recovery
207
+
208
+ ### Voice errors
209
+
210
+ | Error | Recovery |
211
+ | --- | --- |
212
+ | Couldn't hear | "Sorry, could you say that again?" |
213
+ | Heard but didn't understand | "I'm not sure what you meant. Did you mean X or Y?" |
214
+ | Understood but can't do | "I can't do X. I can help with Y or Z." |
215
+ | System failure | "Something went wrong. Try again later or say 'help' for options." |
216
+
217
+ ### Chat errors
218
+
219
+ | Error | Recovery |
220
+ | --- | --- |
221
+ | Network error | Retry button + offline indicator |
222
+ | AI response failed | "Couldn't generate response. Try again?" |
223
+ | Rate limited | "You've sent a lot of messages. Wait a minute." |
224
+ | Inappropriate content | "I can't help with that. Try rephrasing." |
225
+
226
+ After repeated failures: offer alternative (text input, human agent, web link).
227
+
228
+ ## Privacy and consent
229
+
230
+ Voice especially has privacy implications:
231
+
232
+ - **Always-on listening** disclosure required.
233
+ - **Recording retention** disclosure (where stored, how long, who can access).
234
+ - **Opt-in for voice training** (using user audio to improve models).
235
+ - **Wake word false-positive** transparency — Apple, Amazon publish how often Siri / Alexa false-trigger.
236
+
237
+ For Korean market:
238
+ - Personal Information Protection Act (개인정보보호법) compliance.
239
+ - Consent flows for voice recording / storage.
240
+ - Right-to-delete for voice data.
241
+
242
+ For chat:
243
+ - Disclose if conversations are stored / used for training.
244
+ - Allow deletion.
245
+ - Clear what's visible to humans (support agents, training reviewers).
246
+
247
+ ## Multilingual and code-switching
248
+
249
+ Korean conversational UI often has mixed Korean + English:
250
+
251
+ ```
252
+ User: "맥북 프로 16인치 가격 알려줘"
253
+ User: "Schedule a meeting with 김철수 at 3pm"
254
+ ```
255
+
256
+ System must:
257
+ - Handle code-switching (mixed language input).
258
+ - Preserve names / proper nouns in source language.
259
+ - Choose response language (match user's primary, or per query).
260
+
261
+ Modern LLMs handle this natively. Older intent-based bots struggle.
262
+
263
+ ## Accessibility
264
+
265
+ ### Voice UI accessibility
266
+
267
+ - **Visual transcript** of voice (deaf / hard-of-hearing).
268
+ - **Text alternative input** for users who can't speak (motor disability, voice issues).
269
+ - **Visual feedback** of audio (listening, processing, responding states).
270
+ - **Adjustable TTS speed**.
271
+
272
+ ### Chat UI accessibility
273
+
274
+ - Standard text accessibility (contrast, screen reader support).
275
+ - Skip-to-content (long histories).
276
+ - ARIA live regions for new messages.
277
+ - Keyboard nav for messages (Up / Down to navigate).
278
+
279
+ For multimodal: provide both modalities. Voice-only excludes deaf users; text-only excludes low-vision / motor-impaired users.
280
+
281
+ ## Don't
282
+
283
+ - Don't treat voice like a typed-command interface ("syntax errors" don't translate).
284
+ - Don't ignore confidence scores — low-confidence guesses are worse than asking.
285
+ - Don't bury error recovery in obscure phrases.
286
+ - Don't break context within a session.
287
+ - Don't lie about capabilities.
288
+ - Don't force users into long preamble before action.
289
+ - Don't leak privacy ("Did you say X?" loud in public is awkward).
290
+ - Don't ship without graceful degradation when backend is down.
291
+
292
+ ## Cross-reference
293
+
294
+ - [`knowledge/conversational/voice-ui-patterns.md`](voice-ui-patterns.md) — voice-specific
295
+ - [`knowledge/conversational/chatbot-design.md`](chatbot-design.md) — text chat
296
+ - [`knowledge/conversational/ai-chat-interfaces.md`](ai-chat-interfaces.md) — LLM chat
297
+ - [`knowledge/conversational/korean-voice-conventions.md`](korean-voice-conventions.md) — KR
298
+ - [`knowledge/i18n/korean-document-style.md`](../i18n/korean-document-style.md) — honorific level
299
+ - [`knowledge/a11y/keyboard-and-focus.md`](../a11y/keyboard-and-focus.md) — keyboard a11y