@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,285 @@
1
+ <!-- hand-written -->
2
+ # Print spec: folding carton (Korean cosmetics, mid-tier)
3
+
4
+ > Worked example: spec for a Korean skincare brand's primary product carton. Covers dieline, regulatory content, color, finish, sustainability, and Korean labeling. Pairs with [`knowledge/print/packaging.md`](../knowledge/print/packaging.md) and [`knowledge/print/korean-print-conventions.md`](../knowledge/print/korean-print-conventions.md).
5
+
6
+ ## Brief
7
+
8
+ - **Product**: 50ml moisturizer in glass jar, secondary carton
9
+ - **Brand**: Reun (가상의 한국 화장품 브랜드)
10
+ - **Tier**: Mid-premium (clean beauty, eco-aware audience)
11
+ - **Channel**: Korean online (Olive Young, Coupang) + retail (boutique stores)
12
+ - **Audience**: KR primary; some EN secondary copy for export potential
13
+ - **Volume**: 10,000 cartons initial run
14
+ - **Sustainability**: FSC-certified board, soy ink
15
+
16
+ ## Specs
17
+
18
+ | Spec | Value |
19
+ | --- | --- |
20
+ | **Style** | Tuck-end folding carton (TT — top-tuck-bottom-tuck) |
21
+ | **Size** | 70mm × 70mm × 80mm (W×D×H) |
22
+ | **Material** | 350gsm SBS (solid bleached sulfate), FSC-certified |
23
+ | **Inside coat** | None (uncoated interior) |
24
+ | **Color** | CMYK + 1 spot Pantone (brand color) |
25
+ | **Finish** | Matte aqueous coating |
26
+ | **Special** | Spot UV on logo (front panel only); deboss on brand wordmark |
27
+ | **Inks** | Soy-based |
28
+ | **File** | PDF/X-1a, fonts outlined, dieline on separate non-printing layer |
29
+
30
+ ### Color tokens
31
+
32
+ ```
33
+ --brand-primary: PANTONE 5807 C (sage green)
34
+ --brand-text: 90% K
35
+ --brand-meta: 60% K (regulatory text)
36
+ --accent: PANTONE warm gray 5 C (very subtle accent line)
37
+ ```
38
+
39
+ ### Dieline
40
+
41
+ ```
42
+ Top tuck
43
+ ┌──────────────────────┐
44
+ │ │
45
+ │ TOP PANEL │
46
+ │ 70 × 70mm │
47
+ │ │
48
+ ├───────────┬──────────┤
49
+ ─ ─ ─ ─ │ │ │ ─ ─ ─ ─
50
+ │ │ │
51
+ Side │ FRONT │ RIGHT │ Side
52
+ panel │ 70 × 80 │ 70 × 80 │ panel
53
+ 70×80 │ │ │ 70×80
54
+ │ PANEL │ PANEL │
55
+ ─ ─ ─ ─ │ │ │ ─ ─ ─ ─
56
+ ├───────────┴──────────┤
57
+ │ │
58
+ │ BOTTOM PANEL │
59
+ │ 70 × 70mm │
60
+ │ │
61
+ └──────────────────────┘
62
+ Bottom tuck
63
+
64
+ Lay flat with glue tab on outside-right; folds in.
65
+ Dotted lines = creases. Solid = cuts.
66
+ ```
67
+
68
+ Total flat dimensions including bleed: ~330mm × 240mm.
69
+
70
+ ## Panel content
71
+
72
+ ### Front panel — brand-defining
73
+
74
+ ```
75
+ ┌─────────────────────────────┐
76
+ │ │
77
+ │ ▣ REUN │ ← logo, deboss + spot UV
78
+ │ │ (top center, 30mm)
79
+ │ │
80
+ │ │
81
+ │ Calming Moisturizer │ ← product name, 11pt
82
+ │ 카밍 모이스처라이저 │ ← 10pt KR
83
+ │ │
84
+ │ │
85
+ │ 50ml │ ← net contents, 9pt 600
86
+ │ │
87
+ └─────────────────────────────┘
88
+ ```
89
+
90
+ ### Right panel (and Left, symmetric) — story
91
+
92
+ ```
93
+ ┌─────────────────────────────┐
94
+ │ │
95
+ │ 센텔라와 약쑥이 진정시키는 │ ← KR copy, 8.5pt
96
+ │ 데일리 수분 크림. │
97
+ │ │
98
+ │ Centella + mugwort calm │ ← EN secondary, 8pt
99
+ │ irritated skin. │
100
+ │ │
101
+ │ • 7가지 식물 추출물 │ ← bullet feature list
102
+ │ • 무향료, 무알코올 │
103
+ │ • 비건 인증 │
104
+ │ │
105
+ └─────────────────────────────┘
106
+ ```
107
+
108
+ ### Back panel — regulatory + ingredient
109
+
110
+ KFDA-compliant cosmetics labeling:
111
+
112
+ ```
113
+ ┌─────────────────────────────┐
114
+ │ 화장품의 명칭 │ ← 6.5pt headers
115
+ │ Calming Moisturizer │
116
+ │ │
117
+ │ 내용량 50ml │
118
+ │ │
119
+ │ 제조판매업자 │
120
+ │ (주)르운, 서울시 강남구 ... │
121
+ │ 화장품 제조업 신고 제2024-...호 │
122
+ │ │
123
+ │ 사용기한: 박스 측면 표기 │
124
+ │ (개봉 후 12개월) │
125
+ │ │
126
+ │ 전성분 │
127
+ │ 정제수, 글리세린, 센텔라아시아티카 │ ← 6pt; all listed
128
+ │ 추출물, 인삼뿌리추출물, │
129
+ │ 베타글루칸, 히알루론산, ... │
130
+ │ │
131
+ │ 사용 시 주의사항 │
132
+ │ 1. 화장품을 사용하여 다음과 │ ← KFDA-mandated text
133
+ │ 같은 이상이 있는 경우에는 ... │
134
+ │ │
135
+ │ 소비자 상담실 080-1234-5678 │
136
+ │ │
137
+ │ 원산지: 한국 │
138
+ │ │
139
+ │ ┌─┐ ┌─┐ 분리배출 표시: │ ← recycling marks
140
+ │ │종│ │플│ 종이/플라스틱 │ mandatory
141
+ │ └─┘ └─┘ │
142
+ │ │
143
+ │ [barcode 1.5cm × 3cm] │
144
+ └─────────────────────────────┘
145
+ ```
146
+
147
+ ### Top panel — utility
148
+
149
+ ```
150
+ ┌─────────────────────────────┐
151
+ │ │
152
+ │ ▣ REUN │ ← small logo
153
+ │ Calming Moisturizer │
154
+ │ │
155
+ └─────────────────────────────┘
156
+ ```
157
+
158
+ ### Bottom panel
159
+
160
+ ```
161
+ ┌─────────────────────────────┐
162
+ │ │
163
+ │ 제조번호 / Lot: │ ← will be ink-jet printed
164
+ │ 사용기한 / Best by: │ by manufacturer at fill
165
+ │ │
166
+ │ Made in Korea │
167
+ │ │
168
+ └─────────────────────────────┘
169
+ ```
170
+
171
+ ## Regulatory checklist (Korean cosmetics)
172
+
173
+ - [x] **화장품의 명칭** (product name in Korean)
174
+ - [x] **내용량** (net contents) prominent
175
+ - [x] **제조판매업자** (manufacturer/distributor name + address)
176
+ - [x] **화장품 제조업 신고번호** (manufacturing license)
177
+ - [x] **사용기한 / 개봉 후 사용기간** (use-by or PAO)
178
+ - [x] **전성분** (full ingredients in INCI Korean naming)
179
+ - [x] **사용 시 주의사항** (KFDA-mandated standard text)
180
+ - [x] **소비자 상담실** (customer service phone)
181
+ - [x] **원산지** (country of origin)
182
+ - [x] **분리배출 표시** (recycling marks for paper + any plastic component)
183
+ - [x] **바코드** (barcode for retail)
184
+
185
+ ## Sustainability + ESG callouts
186
+
187
+ Visible on packaging:
188
+ - **FSC certification mark** (small, on bottom panel or near recycling marks).
189
+ - **"100% recycled paperboard"** if applicable; for this case using FSC virgin fiber.
190
+ - **"Soy-based ink"** mentioned on product website + occasionally on packaging back.
191
+ - **No plastic window** — full opaque carton.
192
+
193
+ ## Production rationale
194
+
195
+ | Decision | Why |
196
+ | --- | --- |
197
+ | Tuck-end folding carton | Standard, cost-effective for cosmetics |
198
+ | 350gsm SBS, FSC-certified | Premium feel + eco-aware audience |
199
+ | Matte aqueous coating | Soft, premium look without plastic-feel of UV varnish |
200
+ | Spot UV on logo only | Tactile signal; subtle |
201
+ | Deboss wordmark | Premium tactile detail |
202
+ | Soy ink | Aligns with eco brand voice |
203
+ | Pantone 5807 C (sage) | Brand consistency across runs; CMYK fallback for less critical surfaces |
204
+ | KR primary, EN secondary | Domestic primary audience; export-ready secondary |
205
+
206
+ ## Cost estimate
207
+
208
+ | Item | Per unit (KRW) |
209
+ | --- | --- |
210
+ | 350gsm SBS, CMYK + 1 spot, matte aqueous, spot UV, deboss | 280-350 KRW |
211
+ | 10,000 unit run | 2,800,000-3,500,000 KRW |
212
+ | Dieline + setup (one-time) | 200,000-400,000 KRW |
213
+ | Press proof | 50,000 KRW |
214
+ | **Total initial run** | ~3,000,000-3,900,000 KRW |
215
+
216
+ For high-volume reorders (50,000+), per-unit drops to ~180-220 KRW.
217
+
218
+ ## File delivery
219
+
220
+ 1. **PDF/X-1a** with:
221
+ - Dieline on separate non-printing layer (named `dieline`)
222
+ - All artwork on print layers
223
+ - 3mm bleed
224
+ - Crop marks + dieline output marks
225
+ - Fonts outlined
226
+ - All images 300 DPI at final size, embedded
227
+ - CMYK color + Pantone 5807 C as spot
228
+ - ICC: Japan Color 2001 Coated
229
+ 2. **Source files**: AI master + INDD if used; layered PSD for any photographic elements
230
+ 3. **Spec sheet** (this document)
231
+ 4. **Press proof** required before bulk run
232
+
233
+ ## Pre-press checklist
234
+
235
+ - [ ] Dieline on separate layer, set non-printing
236
+ - [ ] Color mode: CMYK + Pantone 5807 C as spot
237
+ - [ ] Pantone color defined as spot (not silently converted)
238
+ - [ ] All fonts outlined
239
+ - [ ] All images embedded, 300+ DPI
240
+ - [ ] Bleed: 3mm all sides
241
+ - [ ] No critical content within 5mm of cut/fold lines
242
+ - [ ] All regulatory content present (checklist above)
243
+ - [ ] Recycling marks at minimum 8mm × 8mm
244
+ - [ ] Barcode scannable (test with phone)
245
+ - [ ] Total ink coverage: ≤ 280%
246
+ - [ ] Black: 100K for body, no rich black for small text
247
+ - [ ] Korean copy proofread by native speaker
248
+ - [ ] Korean regulatory text matches KFDA template exactly
249
+ - [ ] Spell check KR + EN
250
+
251
+ ## Press proof approval
252
+
253
+ - [ ] Color matches Pantone 5807 C (visually + by colorimeter if available)
254
+ - [ ] Spot UV positioned correctly (only on logo)
255
+ - [ ] Deboss depth feels premium (not too shallow)
256
+ - [ ] Matte coating uniform (no streaks)
257
+ - [ ] Trim and crease lines clean
258
+ - [ ] Box folds correctly without breaking print
259
+ - [ ] Inside (uncoated) doesn't show through to outside
260
+ - [ ] Recycling marks legible
261
+
262
+ ## Common things that go wrong
263
+
264
+ - **Sage green prints muddy** — Pantone match critical; press proof + sign-off mandatory.
265
+ - **Crease lines crack the print** — too-thick coating + sharp creases. Solution: ask printer to use scoring rule that pre-conditions paper.
266
+ - **Deboss feels weak** — depth too shallow. Specify minimum impression depth.
267
+ - **Regulatory text 6pt is too small to read at retail** — push to 7pt minimum where possible while staying within total panel content limits.
268
+ - **Korean ingredient list mistranslated** — INCI naming has standard Korean translations; use KFDA-approved table.
269
+
270
+ ## Don't
271
+
272
+ - Don't skip the dieline. Designing without one means wrong fold positions.
273
+ - Don't put critical content within 5mm of cut or crease lines.
274
+ - Don't use rich black for ingredient text — registration shifts cause unreadable fringes.
275
+ - Don't approve a digital proof for color-critical packaging. Press proof is mandatory.
276
+ - Don't shrink regulatory text below KFDA minimum (typically 6pt for ingredients on small packages).
277
+ - Don't skip recycling marks. KFDA / Ministry of Environment can require recall.
278
+
279
+ ## Cross-reference
280
+
281
+ - [`knowledge/print/print-fundamentals.md`](../knowledge/print/print-fundamentals.md) — CMYK, bleed, DPI
282
+ - [`knowledge/print/packaging.md`](../knowledge/print/packaging.md) — packaging fundamentals
283
+ - [`knowledge/print/korean-print-conventions.md`](../knowledge/print/korean-print-conventions.md) — KR regulatory
284
+ - [`knowledge/patterns/brand-identity.md`](../knowledge/patterns/brand-identity.md) — brand foundation
285
+ - [`knowledge/i18n/korean-document-style.md`](../knowledge/i18n/korean-document-style.md) — Korean voice
@@ -0,0 +1,228 @@
1
+ # Worked example: design audit report
2
+
3
+ > Generated by `skills/ux-audit` (or `skills/design-system-qa`). Demonstrates the canonical audit report format — TL;DR pyramid, severity-aggregated findings, citations.
4
+
5
+ ---
6
+
7
+ ```markdown
8
+ # UX Audit: 신규 가입 흐름
9
+
10
+ > 검토일: 2026.05.08
11
+ > 검토자: design-ai (skills/ux-audit)
12
+ > 사용자 목표: 첫 화면에서 30초 안에 가입 완료
13
+ > 플랫폼: 모바일 웹 (iOS Safari + Android Chrome)
14
+ > 검토 기준: WCAG 2.1 AA + design-ai PRINCIPLES.md
15
+
16
+ ## TL;DR
17
+
18
+ 신규 가입 흐름에 12개 문제가 있습니다 (Critical 3 / High 4 / Medium 3 / Low 2). 가입 성공률이 32% 떨어지는 주된 원인은 (1) 비밀번호 필드가 IME 영향 받음, (2) 이메일 검증 후에도 form이 reset됨, (3) 마케팅 동의가 default-checked로 들어가 있어 한국 e-commerce 법 위반입니다.
19
+
20
+ **최우선 권장사항**: 마케팅 동의 default-checked 즉시 해제. 법적 리스크 + 사용자 신뢰 양쪽 회복.
21
+
22
+ ## 핵심 발견
23
+
24
+ 1. **마케팅 동의 default-checked로 체크됨** 🔴 — 정보통신망법 위반 가능
25
+ 2. **비밀번호 입력 시 IME 활성화** 🔴 — 한글 자모가 비밀번호로 인식되어 검증 실패
26
+ 3. **이메일 인증 후 form reset** 🔴 — 사용자가 입력한 값을 잃음 (이탈 발생)
27
+ 4. **휴대폰 번호 검증 regex가 미국 형식** 🟠 — 한국 010-####-#### 거부
28
+ 5. ~~기타 8건~~ (아래 상세)
29
+
30
+ ## 권장사항
31
+
32
+ | 권장사항 | 담당 | 마감 |
33
+ | --- | --- | --- |
34
+ | 마케팅 동의 unchecked로 변경 | 프론트엔드 팀 | **즉시** |
35
+ | 비밀번호 필드 IME 비활성화 | 프론트엔드 팀 | 이번 sprint |
36
+ | 이메일 인증 후 form state 보존 | 풀스택 | 이번 sprint |
37
+ | 휴대폰 regex 한국 형식으로 변경 | 프론트엔드 팀 | 이번 sprint |
38
+
39
+ ---
40
+
41
+ ## 상세
42
+
43
+ ### Critical (3건 — 출시 전 반드시 수정)
44
+
45
+ #### 1. 마케팅 동의 default-checked
46
+ **위치**: `src/screens/Signup.tsx:147`
47
+
48
+ **문제**: 마케팅 정보 수신 동의 체크박스가 페이지 로드 시 체크 상태로 표시됩니다.
49
+
50
+ **왜 문제인가**:
51
+ - 한국 정보통신망법 제50조의2: 마케팅 동의는 사용자가 명시적으로 opt-in해야 하며, default-checked는 명백한 위반.
52
+ - 사용자 신뢰 손상.
53
+ - 신고 시 과태료 (최대 3,000만원).
54
+
55
+ **해결**:
56
+ ```diff
57
+ - <Checkbox defaultChecked label="마케팅 정보 수신 동의" />
58
+ + <Checkbox label="마케팅 정보 수신 동의" />
59
+ ```
60
+
61
+ 또한 약관 동의(필수)와 분리해 별도 checkbox로 두어야 함.
62
+
63
+ **참고**:
64
+ - [`knowledge/i18n/korean-product-conventions.md`](../knowledge/i18n/korean-product-conventions.md) — 마케팅 동의 분리 규칙
65
+ - [`knowledge/i18n/korean-publishing.md`](../knowledge/i18n/korean-publishing.md) — 약관/동의 패턴
66
+ - [정보통신망법 제50조의2](https://www.law.go.kr/...)
67
+
68
+ ---
69
+
70
+ #### 2. 비밀번호 필드 IME 활성화
71
+ **위치**: `src/screens/Signup.tsx:198`
72
+
73
+ **문제**: 비밀번호 입력 필드에 IME(한글 입력)이 활성화되어, 사용자가 영문 비밀번호 입력 시 한글 자모가 섞여 검증 실패.
74
+
75
+ **재현**:
76
+ 1. 사용자가 비밀번호 `Hello123` 입력 의도
77
+ 2. 한글 키보드 켜진 상태에서 `H`를 누르면 `ㅗ` 또는 `ㅎ` 입력됨
78
+ 3. 사용자는 `Hello123`을 보고 있다고 생각하지만 서버는 `ㅗㅔㅣㅣㅗ123` 받음
79
+ 4. 검증 실패 → 사용자 이탈
80
+
81
+ **왜 문제인가**:
82
+ - 사용자에게 보이지 않는 silent failure
83
+ - "분명 맞게 입력했는데 왜 안 되지?" → 이탈
84
+
85
+ **해결**:
86
+ ```diff
87
+ - <input type="password" />
88
+ + <input type="password" inputMode="text" lang="en" autoCapitalize="off" />
89
+ ```
90
+
91
+ iOS Safari에서는 `lang="en"` 속성이 IME를 영문 모드로 전환합니다.
92
+
93
+ **참고**:
94
+ - [`knowledge/i18n/korean-typography.md`](../knowledge/i18n/korean-typography.md) — IME composition handling
95
+ - [`examples/component-input.md`](component-input.md) — Input spec
96
+
97
+ ---
98
+
99
+ #### 3. 이메일 인증 후 form state reset
100
+ **위치**: `src/screens/Signup.tsx:312` (state management)
101
+
102
+ **문제**: 이메일 인증 코드 입력 단계에서 페이지 navigate 되면, 이전 form 입력값(이름, 휴대폰, 비밀번호)이 모두 초기화됩니다.
103
+
104
+ **재현**:
105
+ 1. 사용자가 1페이지에 모든 정보 입력 완료
106
+ 2. 이메일 코드 받기 위해 2페이지 navigate
107
+ 3. 코드 입력 후 1페이지로 돌아오면 모두 빈 칸
108
+
109
+ **왜 문제인가**:
110
+ - 입력 다시 처음부터 — 정확한 이탈 트리거
111
+ - A/B 테스트 결과 (신규 가입 다단계의 default 이탈률) ~28% (n=4,521)
112
+
113
+ **해결**:
114
+ - React Router 사용 시 form state를 URL search params 또는 localStorage에 보관.
115
+ - 이메일 인증을 별도 화면 navigate 하지 말고 modal로 처리.
116
+
117
+ ```tsx
118
+ // Option A: URL state
119
+ useSearchParams().set("email-verify", "true")
120
+
121
+ // Option B: in-place modal
122
+ <Modal open={verifyOpen}>...</Modal> // Form state preserved
123
+ ```
124
+
125
+ **참고**:
126
+ - [`knowledge/patterns/form-design.md`](../knowledge/patterns/form-design.md) — multi-step form 패턴
127
+ - [`examples/component-form.md`](component-form.md) — Form spec
128
+ - [`examples/component-modal.md`](component-modal.md) — modal 사용
129
+
130
+ ---
131
+
132
+ ### High (4건 — 이번 sprint 수정)
133
+
134
+ #### 4. 휴대폰 번호 검증 regex가 미국 형식
135
+ **위치**: `src/lib/validators.ts:23`
136
+
137
+ **문제**: 한국 010-####-#### 형식이 거부됩니다.
138
+
139
+ **해결**:
140
+ ```ts
141
+ - /^\d{3}-\d{3}-\d{4}$/ // (123) 456-7890 ← US 형식
142
+ + /^01[0-9]-?\d{3,4}-?\d{4}$/ // KR 010-####-####
143
+ ```
144
+
145
+ **참고**: [`knowledge/i18n/korean-product-conventions.md`](../knowledge/i18n/korean-product-conventions.md)
146
+
147
+ ---
148
+
149
+ #### 5. Submit button이 disabled로 시작
150
+ **위치**: `src/screens/Signup.tsx:405`
151
+
152
+ **문제**: 사용자가 모든 필드 채우기 전엔 submit button이 disabled 상태. 사용자가 button 클릭하면 무엇이 잘못됐는지 알려주지 않음.
153
+
154
+ **해결**: button을 항상 enabled로 두고, 클릭 시 invalid field로 focus 이동 + 에러 메시지 표시.
155
+
156
+ cite [`knowledge/patterns/form-design.md`](../knowledge/patterns/form-design.md).
157
+
158
+ ---
159
+
160
+ #### 6. (이하 4건 생략)
161
+ ...
162
+
163
+ ### Medium (3건)
164
+ ...
165
+
166
+ ### Low (2건)
167
+ ...
168
+
169
+ ---
170
+
171
+ ## 잘 작동하는 부분
172
+
173
+ - 헤더의 "회원가입" 타이틀이 명확하고 위치가 좋음 (h1 with proper hierarchy)
174
+ - 약관 링크가 새 탭으로 열려 form state 유지됨
175
+ - 입력 필드의 focus ring이 명확함 (3:1 contrast clear)
176
+ - 한글 입력 — 비밀번호 외 — 모두 정상
177
+
178
+ ---
179
+
180
+ ## Methodology
181
+
182
+ - **검토 기준**:
183
+ - WCAG 2.1 AA
184
+ - design-ai/PRINCIPLES.md 30 rules
185
+ - 한국 정보통신망법 + e-commerce 법
186
+ - **테스트 환경**:
187
+ - iOS 17.4 Safari (iPhone 14)
188
+ - Android 14 Chrome (Galaxy S24)
189
+ - 데스크톱 Chrome 124
190
+ - **Responsive scope**: mobile 360px / 390px, tablet 768px, and desktop 1440px viewports. Findings must state whether the issue is mobile-only, desktop-only, or cross-breakpoint.
191
+ - **Assistive technology scope**: screen reader pass covers field labels, error announcements, `aria-describedby`, and route-change focus restoration.
192
+ - **Tools**: axe-core, manual review, A/B 테스트 데이터 (Mixpanel)
193
+ - **Sample**: production 데이터 2026-04-01 ~ 2026-05-01, n=4,521 신규 가입 시도
194
+
195
+ ---
196
+
197
+ ## Appendix
198
+
199
+ - A. 12 발견 사항 전체 목록 (severity / location / cite)
200
+ - B. 각 발견에 대한 스크린샷 / 재현 동영상
201
+ - C. axe-core 자동 스캔 raw 결과
202
+ - D. A/B 테스트 데이터 raw
203
+
204
+ (Appendix omitted in this example — would be 5+ pages of detail.)
205
+ ```
206
+
207
+ ---
208
+
209
+ ## Why this is a good audit report example
210
+
211
+ - **TL;DR가 답을 먼저 제시** — 12 문제, 우선 마케팅 동의부터.
212
+ - **Severity로 정렬** (Critical → High → Medium → Low), file-by-file 아닌 severity-by-severity.
213
+ - **각 발견은 위치 / 문제 / 왜 / 해결 / 참고** 5가지 항목 일관.
214
+ - **법적 issue를 별도 강조** (정보통신망법 위반).
215
+ - **Code diff 제공** — 즉시 적용 가능.
216
+ - **Knowledge file 인용** — 이유 + 참고로.
217
+ - **"잘 작동하는 부분"** — 균형 잡힌 보고서.
218
+ - **Methodology가 마지막** — 신뢰도 검증 가능하지만 본질은 위에 있음.
219
+ - **Don't bury the decision** — avoid putting methodology before TL;DR in audit reports.
220
+
221
+ Cite [`knowledge/patterns/report-design.md`](../knowledge/patterns/report-design.md) for the canonical structure.
222
+
223
+ ## Cross-reference
224
+
225
+ - [`skills/ux-audit/PLAYBOOK.md`](../skills/ux-audit/PLAYBOOK.md)
226
+ - [`skills/design-system-qa/PLAYBOOK.md`](../skills/design-system-qa/PLAYBOOK.md)
227
+ - [`knowledge/patterns/report-design.md`](../knowledge/patterns/report-design.md)
228
+ - [`knowledge/i18n/korean-document-style.md`](../knowledge/i18n/korean-document-style.md) — Korean voice for reports