@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,199 @@
1
+ # `Paper` — spec
2
+
3
+ > Synthesized from MUI `Paper`. The most primitive surface in Material Design — a backgrounded, shadowed container that other components extend (Card, Modal, Drawer all use Paper underneath in MUI). Provides consistent elevation + theming.
4
+
5
+ ## When to use
6
+
7
+ - **As a base surface** for custom components (build a Card, a Toolbar, a panel from Paper).
8
+ - **Standalone surfaces** that need elevation but don't fit Card / Modal patterns (e.g., a sticky toolbar, a tooltip-like floating panel).
9
+
10
+ When NOT to use:
11
+ - Use `Card` for content cards — Card adds composition slots.
12
+ - Use `Modal` for overlay dialogs.
13
+ - Use `Sheet` for side-anchored panels.
14
+ - Use plain `<div>` for non-elevated containers.
15
+
16
+ ## Anatomy
17
+
18
+ Paper is just a surface — a styled `<div>` with elevation:
19
+
20
+ ```
21
+ ┌─ Paper ─────────────┐
22
+ │ │
23
+ │ (children) │
24
+ │ │
25
+ └─────────────────────┘
26
+ ↑ shadow lifts off the page
27
+ ```
28
+
29
+ ## API
30
+
31
+ ```tsx
32
+ <Paper elevation={2}>
33
+ <h2>Card title</h2>
34
+ <p>Card content...</p>
35
+ </Paper>
36
+
37
+ <Paper variant="outlined">
38
+ Bordered surface (no shadow)
39
+ </Paper>
40
+
41
+ <Paper elevation={4} square>
42
+ No corner radius
43
+ </Paper>
44
+ ```
45
+
46
+ | Prop | Type | Default | Description |
47
+ | --- | --- | --- | --- |
48
+ | `elevation` | `0 \| 1 \| 2 \| 3 \| 4 \| 6 \| 8 \| 12 \| 16 \| 24` | `1` | Material shadow depth |
49
+ | `variant` | `"elevation" \| "outlined"` | `"elevation"` | Shadow vs border |
50
+ | `square` | `boolean` | `false` | Disable border-radius |
51
+ | `as` | Component | `"div"` | Render as different element |
52
+
53
+ ## Variants
54
+
55
+ ### `elevation` (default)
56
+
57
+ Box-shadow conveys depth. Higher elevation = larger / softer shadow.
58
+
59
+ | Elevation | Use |
60
+ | --- | --- |
61
+ | `0` | No shadow (visually = plain div) |
62
+ | `1` (default) | Resting card |
63
+ | `2-3` | Subtle hover lift |
64
+ | `4-6` | Floating elements (tooltips, snackbars) |
65
+ | `8-12` | Drawers, navigation rails |
66
+ | `16-24` | Modals, dialogs |
67
+
68
+ Material 3 reduces this to a 6-level scale (0 / 1 / 2 / 3 / 4 / 5). For new design systems: prefer 4-5 levels max.
69
+
70
+ ### `outlined`
71
+
72
+ Border instead of shadow. Used in flat designs / dark themes where shadows feel out of place.
73
+
74
+ ```css
75
+ [data-variant="outlined"] {
76
+ background: var(--color-bg-default);
77
+ border: 1px solid var(--color-border-default);
78
+ box-shadow: none;
79
+ }
80
+ ```
81
+
82
+ ## States
83
+
84
+ Stateless. Paper is purely visual surface.
85
+
86
+ For interactive elevation (lift on hover): apply via CSS, not via the `elevation` prop alone:
87
+
88
+ ```css
89
+ .interactive-paper {
90
+ transition: box-shadow var(--motion-fast) var(--ease-out);
91
+ }
92
+ .interactive-paper:hover {
93
+ box-shadow: var(--shadow-elevation-3);
94
+ }
95
+ ```
96
+
97
+ ## Tokens consumed
98
+
99
+ ```
100
+ --paper-bg (surface background)
101
+ --paper-border (outlined variant)
102
+ --shadow-elevation-0 (no shadow)
103
+ --shadow-elevation-1 (resting)
104
+ --shadow-elevation-2
105
+ --shadow-elevation-3
106
+ --shadow-elevation-4
107
+ --shadow-elevation-6
108
+ --shadow-elevation-8
109
+ --shadow-elevation-12
110
+ --shadow-elevation-16
111
+ --shadow-elevation-24
112
+ --radius-md (default corner)
113
+ --motion-fast (transition for interactive)
114
+ ```
115
+
116
+ For dark mode: shadows on dark are subtle. Compensate with subtle background lightening at higher elevation (Material 3 approach).
117
+
118
+ ```css
119
+ [data-theme="dark"] [data-elevation="1"] { background: var(--paper-bg-1); }
120
+ [data-theme="dark"] [data-elevation="2"] { background: var(--paper-bg-2); }
121
+ [data-theme="dark"] [data-elevation="3"] { background: var(--paper-bg-3); }
122
+ ```
123
+
124
+ Each higher elevation = slightly lighter bg (+5% lightness per level).
125
+
126
+ ## Accessibility
127
+
128
+ - Paper is presentational. No role.
129
+ - For surfaces holding interactive content: ensure children have proper roles.
130
+ - Don't put `tabindex` on Paper itself unless it's specifically a focusable surface (rare).
131
+
132
+ ## Code example
133
+
134
+ ### Custom Card built on Paper
135
+
136
+ ```tsx
137
+ function StatCard({ label, value, change }: Props) {
138
+ return (
139
+ <Paper elevation={1} className="stat-card">
140
+ <p className="label">{label}</p>
141
+ <p className="value">{value}</p>
142
+ <p className={cn("change", change > 0 ? "positive" : "negative")}>
143
+ {change > 0 ? "+" : ""}{change}%
144
+ </p>
145
+ </Paper>
146
+ );
147
+ }
148
+ ```
149
+
150
+ ### Sticky toolbar
151
+
152
+ ```tsx
153
+ function EditorToolbar() {
154
+ return (
155
+ <Paper elevation={4} className="sticky top-0">
156
+ <ToolbarActions />
157
+ </Paper>
158
+ );
159
+ }
160
+ ```
161
+
162
+ ### Outlined panel for low-key surfaces
163
+
164
+ ```tsx
165
+ <Paper variant="outlined">
166
+ <h3>Tips</h3>
167
+ <ul>
168
+ <li>Tip 1</li>
169
+ <li>Tip 2</li>
170
+ </ul>
171
+ </Paper>
172
+ ```
173
+
174
+ ## Edge cases
175
+
176
+ - **Paper inside Paper**: avoid; nested elevation gets confusing. Use composition (header + content) within a single Paper.
177
+ - **Paper on patterned background**: shadows may not show; switch to outlined variant.
178
+ - **Print**: shadows don't print; elevation invisible. Outlined variant prints correctly.
179
+ - **Reduced motion**: skip elevation transition on hover.
180
+ - **RTL**: no impact (shadows are symmetric).
181
+
182
+ ## Don't
183
+
184
+ - Don't use Paper for everything — overuse dilutes the elevation system.
185
+ - Don't combine elevation + outlined; pick one.
186
+ - Don't ship custom shadows that don't match the elevation scale.
187
+ - Don't put interactive content directly inside Paper without proper button / link semantics.
188
+ - Don't rely on Paper for layout (use Grid / Flex). Paper is a surface, not a layout primitive.
189
+
190
+ ## References
191
+
192
+ - MUI: [`Paper`](../refs/mui/packages/mui-material/src/Paper)
193
+ - Material Design: [Elevation](https://m3.material.io/styles/elevation/overview)
194
+
195
+ ## Cross-reference
196
+
197
+ - [`examples/component-card.md`](component-card.md) — Paper + composition slots
198
+ - [`examples/component-modal.md`](component-modal.md) — modal surface (uses Paper at elevation 24)
199
+ - [`knowledge/design-tokens/material-3.md`](../knowledge/design-tokens/material-3.md) — elevation scale
@@ -0,0 +1,265 @@
1
+ # `PASSAuth` (custom — Korean 본인인증) — spec
2
+
3
+ > Korean fintech custom component. Wraps the PASS app / NICE / KCB 본인인증 flow into a single React component. Required for any Korean financial app handling transactions over ~₩500,000 OR account creation in regulated categories.
4
+
5
+ ## Purpose
6
+
7
+ Verifies a Korean user's real-name identity via:
8
+ - **PASS app** — modern primary path (KT/SKT/LGU+ joint app)
9
+ - **SMS-based 본인인증** — fallback (older users, no PASS app)
10
+ - **공동인증서** — legacy path (rare, falling out of use)
11
+
12
+ Returns a `verificationToken` that the server can use to confirm with the vendor API (NICE / KCB / NICE-pass).
13
+
14
+ ## When to use
15
+
16
+ | Required | Optional |
17
+ | --- | --- |
18
+ | Financial transactions > ~₩500K | Account creation (most apps) |
19
+ | Stock account opening | Subscription with auto-billing |
20
+ | Insurance enrollment | Refund processing for high-value |
21
+ | Real-name account verification | KYC for crypto exchanges |
22
+ | Age-gated content | |
23
+ | Mobile carrier signup | |
24
+ | Securities apps (legal) | |
25
+
26
+ ## Anatomy
27
+
28
+ ```
29
+ ┌─────────────────────────────────────────────────┐
30
+ │ │
31
+ │ 본인인증이 필요합니다 │ ← title
32
+ │ 안전한 거래를 위해 본인인증을 진행해 주세요. │ ← description
33
+ │ │
34
+ │ ┌────────────────────────────────────┐ │
35
+ │ │ [PASS] PASS 앱으로 인증 │ → │ ← primary path
36
+ │ └────────────────────────────────────┘ │
37
+ │ ┌────────────────────────────────────┐ │
38
+ │ │ [SMS] SMS로 인증 │ → │ ← fallback
39
+ │ └────────────────────────────────────┘ │
40
+ │ │
41
+ │ ┌────────────────────────────────────┐ │
42
+ │ │ 공동인증서 (보안카드) │ → │ ← legacy, rare
43
+ │ └────────────────────────────────────┘ │
44
+ │ │
45
+ │ 인증 시 약 1분이 소요됩니다. │ ← duration hint
46
+ │ │
47
+ └─────────────────────────────────────────────────┘
48
+ ```
49
+
50
+ | Slot | Required | Notes |
51
+ | --- | --- | --- |
52
+ | Title | yes | "본인인증이 필요합니다" |
53
+ | Description | yes | Why; what happens next |
54
+ | PASS button | yes | Primary path (most users) |
55
+ | SMS button | yes | Fallback |
56
+ | 공동인증서 button | optional | Legacy; show only if needed |
57
+ | Duration hint | yes | Manages user expectations |
58
+
59
+ ## API
60
+
61
+ ```tsx
62
+ <PASSAuth
63
+ vendor="nice"
64
+ reason="송금을 위해 본인 확인이 필요합니다"
65
+ amount={500000} // for high-value transactions
66
+ onSuccess={(token) => {
67
+ api.verifyTransaction(token);
68
+ navigate("/transfer/confirm");
69
+ }}
70
+ onCancel={() => navigate(-1)}
71
+ onError={(err) => toast.error(err.message)}
72
+ preferredMethod="pass"
73
+ allowedMethods={["pass", "sms"]}
74
+ />
75
+ ```
76
+
77
+ | Prop | Type | Default | Description |
78
+ | --- | --- | --- | --- |
79
+ | `vendor` | `"nice" \| "kcb" \| "kakao"` | `"nice"` | Identity vendor |
80
+ | `reason` | `string` | — | Required. Shown to user + passed to vendor. |
81
+ | `amount` | `number` | — | Optional. For high-value transactions. |
82
+ | `onSuccess` | `(token: string, info: VerifiedInfo) => void` | — | |
83
+ | `onCancel` | `() => void` | — | |
84
+ | `onError` | `(error: VerificationError) => void` | — | |
85
+ | `preferredMethod` | `"pass" \| "sms" \| "cert"` | `"pass"` | Default highlighted button |
86
+ | `allowedMethods` | `Method[]` | `["pass", "sms"]` | Which methods to show |
87
+ | `requireRealName` | `boolean` | `true` | Require real-name verification (vs anonymous identity check) |
88
+
89
+ ```ts
90
+ type VerifiedInfo = {
91
+ name: string; // real name
92
+ birthDate: string; // YYYYMMDD
93
+ gender: "M" | "F";
94
+ ci: string; // 89-byte connecting info (server-stored only)
95
+ di: string; // duplicate info (per service)
96
+ phoneNumber: string;
97
+ carrier: "SKT" | "KT" | "LGU+" | "MVNO";
98
+ };
99
+
100
+ type VerificationError = {
101
+ code: "user_cancel" | "timeout" | "info_mismatch" | "carrier_unsupported" | "vendor_error";
102
+ message: string;
103
+ };
104
+ ```
105
+
106
+ ## Vendor differences
107
+
108
+ | Vendor | Strengths | Use |
109
+ | --- | --- | --- |
110
+ | **NICE** | Most market share, all 3 carriers, PASS support | Default for new fintech |
111
+ | **KCB** | Banking + securities focus | When already integrated for credit |
112
+ | **KakaoPay** (간편 본인인증) | Frictionless if user has Kakao | B2C consumer where Kakao is prevalent |
113
+
114
+ For most apps: NICE is the safe default.
115
+
116
+ ## Behavior
117
+
118
+ ### PASS app flow
119
+
120
+ 1. User taps "PASS 앱으로 인증".
121
+ 2. Component calls vendor SDK → opens PASS app.
122
+ 3. User authenticates in PASS app (fingerprint / face / PIN).
123
+ 4. PASS app returns to your app via deep link with token.
124
+ 5. `onSuccess(token, info)` fires.
125
+
126
+ ### SMS flow
127
+
128
+ 1. User taps "SMS로 인증".
129
+ 2. Sub-screen: phone input + carrier dropdown.
130
+ 3. User enters phone number → SMS sent.
131
+ 4. User enters 6-digit code in `InputOTP`.
132
+ 5. Vendor verifies → `onSuccess`.
133
+
134
+ Cite [`examples/component-input-otp.md`](component-input-otp.md) for the OTP step.
135
+
136
+ ### Error states
137
+
138
+ | Error | What user sees |
139
+ | --- | --- |
140
+ | `user_cancel` | Return to previous screen (no error toast) |
141
+ | `timeout` | "인증 시간이 초과되었습니다. 다시 시도해 주세요." |
142
+ | `info_mismatch` | "본인 정보가 일치하지 않습니다." (don't say which field) |
143
+ | `carrier_unsupported` | "이용하시는 통신사는 지원되지 않습니다. 고객센터로 문의해 주세요." |
144
+ | `vendor_error` | "일시적인 문제가 발생했습니다. 잠시 후 다시 시도해 주세요." |
145
+
146
+ ## States
147
+
148
+ | State | Visual |
149
+ | --- | --- |
150
+ | Idle | Method buttons visible |
151
+ | Initiating PASS | "PASS 앱을 여는 중..." with spinner |
152
+ | In PASS / SMS flow | This component dimmed; vendor UI in foreground |
153
+ | Verifying | Spinner + "인증 확인 중..." |
154
+ | Success | Brief checkmark, then navigate (or instant) |
155
+ | Failed | Error message + retry CTA |
156
+
157
+ ## Tokens consumed
158
+
159
+ ```
160
+ --color-bg-default
161
+ --color-bg-elevated
162
+ --color-text-primary
163
+ --color-text-secondary
164
+ --color-primary-default (preferred method button)
165
+ --color-error (error state)
166
+ --color-success (success)
167
+ --space-md, --space-lg
168
+ --radius-md
169
+ --font-size-base, --font-size-lg
170
+ --motion-default
171
+ ```
172
+
173
+ ## Accessibility
174
+
175
+ - Title is `<h1>` for the screen.
176
+ - Description is `<p>`.
177
+ - Method buttons: standard `<button>` with `aria-label` describing the method.
178
+ - For users without PASS app: SMS path must work fully.
179
+ - Sub-screen for SMS: focus trap + back button.
180
+
181
+ ## Privacy + compliance
182
+
183
+ This is sensitive data. The component:
184
+ - **Does not log or persist `info` client-side.** Pass token + info to server immediately.
185
+ - **Server stores only what's necessary** (CI/DI typically; not full info).
186
+ - **No screenshots / screen recording** of the PASS / vendor screens.
187
+ - **Privacy disclosure**: app must declare 본인인증 in privacy policy.
188
+
189
+ Cite [`knowledge/i18n/korean-publishing.md`](../knowledge/i18n/korean-publishing.md) for legal requirements.
190
+
191
+ ## Code example
192
+
193
+ ```tsx
194
+ function HighValueTransferConfirm({ amount, recipient }: Props) {
195
+ const [authOpen, setAuthOpen] = useState(false);
196
+
197
+ const handleAuth = (token: string, info: VerifiedInfo) => {
198
+ setAuthOpen(false);
199
+ // Pass to server immediately; don't persist client-side
200
+ executeTransfer({ amount, recipient, verificationToken: token });
201
+ };
202
+
203
+ return (
204
+ <>
205
+ <Page>
206
+ <Heading>송금 확인</Heading>
207
+ <p>{recipient.name} 님에게 ₩{amount.toLocaleString()} 송금</p>
208
+ <Button onClick={() => setAuthOpen(true)}>본인인증 후 송금</Button>
209
+ </Page>
210
+
211
+ {authOpen && (
212
+ <Sheet open onOpenChange={setAuthOpen}>
213
+ <PASSAuth
214
+ vendor="nice"
215
+ reason={`${recipient.name} 님에게 ₩${amount.toLocaleString()} 송금`}
216
+ amount={amount}
217
+ onSuccess={handleAuth}
218
+ onCancel={() => setAuthOpen(false)}
219
+ preferredMethod="pass"
220
+ />
221
+ </Sheet>
222
+ )}
223
+ </>
224
+ );
225
+ }
226
+ ```
227
+
228
+ ## Edge cases
229
+
230
+ - **No PASS app installed**: detection via deep link timeout. Fall back to SMS.
231
+ - **Foreign phone (no Korean carrier)**: SMS path fails. Show "한국 휴대폰만 지원됩니다" message.
232
+ - **Outdated PASS app**: prompt to update.
233
+ - **Vendor temporarily down**: show "일시적인 문제" with retry.
234
+ - **Parental verification** (under-14 users): different flow + parent's identity. Out of scope; document separately.
235
+ - **Foreign worker / 외국인등록증**: alternative ID flow; contact vendor for SDK options.
236
+
237
+ ## Don't
238
+
239
+ - Don't roll your own verification — use a licensed vendor.
240
+ - Don't store CI / DI / personal info client-side.
241
+ - Don't let users skip 본인인증 for actions that legally require it.
242
+ - Don't show 본인인증 for trivial actions — user fatigue + cost (~₩70-200 per call).
243
+ - Don't omit privacy disclosure.
244
+ - Don't translate the vendor's UI — they handle locale.
245
+ - Don't take screenshots of the verification UI.
246
+
247
+ ## References
248
+
249
+ This is a Korean-market-specific custom pattern. No upstream design system has it.
250
+
251
+ Vendor SDKs:
252
+ - NICE 본인인증: [niceapi.co.kr](https://www.niceapi.co.kr/)
253
+ - KCB 본인인증: [kcb.co.kr](https://www.kcb.co.kr/)
254
+ - PASS 인증: included in NICE/KCB SDK
255
+
256
+ For implementation: each vendor provides JS SDK + iOS / Android SDKs. React wrapper typically built in-house.
257
+
258
+ ## Cross-reference
259
+
260
+ - [`knowledge/i18n/korean-payments.md`](../knowledge/i18n/korean-payments.md) — broader payment + 본인인증 context
261
+ - [`knowledge/i18n/korean-product-conventions.md`](../knowledge/i18n/korean-product-conventions.md) — when 본인인증 is required
262
+ - [`knowledge/i18n/korean-publishing.md`](../knowledge/i18n/korean-publishing.md) — legal compliance
263
+ - [`examples/component-biometric-gate.md`](component-biometric-gate.md) — biometric (different from 본인인증)
264
+ - [`examples/component-input-otp.md`](component-input-otp.md) — SMS code input
265
+ - [`examples/component-modal.md`](component-modal.md) — Sheet wrapping