@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,92 @@
1
+ # `Zoom` — spec
2
+
3
+ > Synthesized from MUI `Zoom`. Transition primitive — wraps a child to fade-and-zoom in / out on mount / unmount. Sibling to `Fade`, `Grow`, `Slide`, `Collapse`.
4
+
5
+ ## When to use
6
+
7
+ - Floating action button entrance / exit.
8
+ - Modal / Popover entrance.
9
+ - Notification card entrance.
10
+ - Anywhere "zoom + fade" feels right (vs "slide" or "fade").
11
+
12
+ When NOT to use:
13
+ - Page transitions (use `Slide` or fade).
14
+ - Scroll-into-view animations (use `ScrollReveal`).
15
+
16
+ ## API
17
+
18
+ ```tsx
19
+ <Zoom in={open} timeout={250}>
20
+ <div className="floating-content">
21
+ Content here
22
+ </div>
23
+ </Zoom>
24
+ ```
25
+
26
+ | Prop | Type | Default | Description |
27
+ | --- | --- | --- | --- |
28
+ | `in` | `boolean` | required | Show / hide trigger |
29
+ | `timeout` | `number \| { enter, exit }` | `225` | Ms |
30
+ | `easing` | `string \| { enter, exit }` | per Material | CSS easing |
31
+ | `appear` | `boolean` | `false` | Animate on first mount |
32
+ | `mountOnEnter` | `boolean` | `false` | Don't render until first true |
33
+ | `unmountOnExit` | `boolean` | `false` | Remove from DOM after exit |
34
+
35
+ ## CSS
36
+
37
+ ```css
38
+ .zoom-enter { transform: scale(0); opacity: 0; }
39
+ .zoom-enter-active {
40
+ transform: scale(1); opacity: 1;
41
+ transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1),
42
+ opacity 200ms cubic-bezier(0.4, 0, 0.2, 1);
43
+ }
44
+ .zoom-exit { transform: scale(1); opacity: 1; }
45
+ .zoom-exit-active {
46
+ transform: scale(0); opacity: 0;
47
+ transition: transform 195ms cubic-bezier(0.4, 0, 0.2, 1);
48
+ }
49
+ ```
50
+
51
+ ## Reduced motion
52
+
53
+ ```css
54
+ @media (prefers-reduced-motion: reduce) {
55
+ .zoom-enter-active, .zoom-exit-active {
56
+ transition: none;
57
+ }
58
+ }
59
+ ```
60
+
61
+ ## Tokens consumed
62
+
63
+ ```
64
+ --motion-medium (default duration)
65
+ --ease-out
66
+ ```
67
+
68
+ ## Code example — FAB entrance
69
+
70
+ ```tsx
71
+ <Zoom in={!loading} appear>
72
+ <SpeedDial ariaLabel="새로 만들기" icon={<PlusIcon />}>
73
+ <SpeedDial.Action ... />
74
+ </SpeedDial>
75
+ </Zoom>
76
+ ```
77
+
78
+ ## Don't
79
+
80
+ - Don't zoom large content (jarring). Use Fade for big surfaces.
81
+ - Don't zoom from `scale(0.01)` to `scale(1)` — exits feel wrong. Stay near full scale (0.7-1).
82
+ - Don't ignore reduced motion.
83
+
84
+ ## References
85
+
86
+ - MUI: [`Zoom`](../refs/mui/packages/mui-material/src/Zoom)
87
+ - Material Design: motion easing
88
+
89
+ ## Cross-reference
90
+
91
+ - [`knowledge/motion/principles.md`](../knowledge/motion/principles.md)
92
+ - [`examples/component-spinner.md`](component-spinner.md)
@@ -0,0 +1,196 @@
1
+ # Worked example: explanation
2
+
3
+ > Generated by `skills/document-author` with type=`explanation`. Demonstrates the canonical Diátaxis explanation format — discursive, motivation-driven, justifies design decisions.
4
+
5
+ ---
6
+
7
+ ```markdown
8
+ ---
9
+ title: Why design-ai uses W3C DTCG token format (and not Tokens Studio's native format)
10
+ description: The decision behind design-ai's choice of W3C DTCG (Style Dictionary–compatible) for token serialization, the alternatives we considered, and the tradeoffs accepted.
11
+ type: explanation
12
+ audience: Engineers and designers extending design-ai or integrating it with another token system
13
+ last_updated: 2026.05.08
14
+ ---
15
+
16
+ # Why design-ai uses W3C DTCG token format
17
+
18
+ ## The problem
19
+
20
+ A design token is a key-value pair: `color.primary.600 = #7C3AED`. The data model is trivial. The hard part is **the format**: how do you serialize this so that it's:
21
+
22
+ 1. Readable by humans
23
+ 2. Convertible across platforms (CSS, iOS, Android, Figma)
24
+ 3. Compatible with existing tooling
25
+ 4. Stable as the token system evolves
26
+
27
+ Several formats exist. design-ai picks one — W3C DTCG (Design Tokens Community Group format). This doc explains why.
28
+
29
+ ## What we considered
30
+
31
+ ### Option A: Tokens Studio's native JSON
32
+
33
+ ```json
34
+ {
35
+ "global": {
36
+ "color": {
37
+ "primary": {
38
+ "600": {
39
+ "value": "#7C3AED",
40
+ "type": "color",
41
+ "description": "Brand primary"
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
47
+ ```
48
+
49
+ Pros: well-supported by the Tokens Studio Figma plugin. Has 5+ years of evolution. Many consumers.
50
+
51
+ Cons: vendor-specific. Tokens Studio has been promising migration to W3C DTCG. Format isn't a standard.
52
+
53
+ ### Option B: Style Dictionary's traditional format
54
+
55
+ ```json
56
+ {
57
+ "color": {
58
+ "primary": {
59
+ "600": {
60
+ "value": "#7C3AED",
61
+ "type": "color"
62
+ }
63
+ }
64
+ }
65
+ }
66
+ ```
67
+
68
+ Pros: enormous tooling ecosystem. Style Dictionary is from 2018, widely adopted at Amazon/Salesforce/etc. Battle-tested transformations.
69
+
70
+ Cons: pre-dates the W3C effort. Not technically a standard. `type` is sometimes `attributes.category`.
71
+
72
+ ### Option C: W3C DTCG format (the chosen one)
73
+
74
+ ```json
75
+ {
76
+ "color": {
77
+ "primary": {
78
+ "600": {
79
+ "$value": "#7C3AED",
80
+ "$type": "color"
81
+ }
82
+ }
83
+ }
84
+ }
85
+ ```
86
+
87
+ Note the `$value` / `$type` (with `$` prefix) — that's the W3C distinction.
88
+
89
+ Pros: emerging W3C standard. Tokens Studio is migrating to it. Style Dictionary v4 supports it natively. Future-proof.
90
+
91
+ Cons: less mature than Style Dictionary's traditional format. Some tools still in transition.
92
+
93
+ ### Option D: Vendor formats (Material Tokens, Primer, etc.)
94
+
95
+ Each large design system (Material 3, Primer, Polaris, Carbon) has its own token format. For consumers of those systems, native is fine. For a generic system like design-ai? Wrong choice — locks consumers into the parent vendor.
96
+
97
+ ## What we chose
98
+
99
+ **W3C DTCG format** (Option C).
100
+
101
+ ```json
102
+ {
103
+ "color": {
104
+ "brand": {
105
+ "primary": {
106
+ "50": { "$value": "#F5F3FF", "$type": "color" },
107
+ "600": { "$value": "#7C3AED", "$type": "color" }
108
+ }
109
+ },
110
+ "semantic": {
111
+ "primary": { "$value": "{color.brand.primary.600}", "$type": "color" }
112
+ }
113
+ }
114
+ }
115
+ ```
116
+
117
+ The reasoning:
118
+
119
+ 1. **Standard track.** The W3C DTCG group includes Adobe, Figma, Atlassian, GitHub, and others. The format will likely become a real standard within 2 years.
120
+
121
+ 2. **Tools converge here.** Style Dictionary v4 reads it. Tokens Studio is migrating to it. Custom tooling we write today will keep working.
122
+
123
+ 3. **Distinguishable from JSON-data.** The `$value` prefix prevents collision with regular JSON keys. `{ "value": ... }` was ambiguous.
124
+
125
+ 4. **Already widely supported.** The major upstream design systems are publishing tokens in this format.
126
+
127
+ ## Tradeoffs accepted
128
+
129
+ ### Tradeoff 1 — early-adopter ecosystem
130
+
131
+ Some Figma plugins haven't migrated yet. Specifically: older Tokens Studio versions still use the non-`$` format. Workaround: convert at the boundary using `tokens-studio-format` npm package.
132
+
133
+ **Impact**: minor. The Tokens Studio team has signaled migration.
134
+
135
+ ### Tradeoff 2 — slightly more verbose
136
+
137
+ `$value` + `$type` adds 4 chars per entry over the bare `value` + `type`. For a 200-token system that's ~800 chars of bytes. Negligible.
138
+
139
+ **Impact**: nil.
140
+
141
+ ### Tradeoff 3 — older docs reference the non-$ format
142
+
143
+ Some older Style Dictionary tutorials say `"value": ...`. New users may copy-paste and get the old format. Workaround: design-ai's docs explicitly use `$value` everywhere, with a "if you see `value`, that's the old format" note.
144
+
145
+ **Impact**: minor — primarily a docs / onboarding cost.
146
+
147
+ ## What this means in practice
148
+
149
+ - design-ai's `tokens/source.json` examples use `$value` / `$type`.
150
+ - The Figma plugin (`tools/figma-plugin/`) reads `$value` directly.
151
+ - The `figma-token-sync` skill outputs `$value` format.
152
+ - Tokens Studio plugin: "When importing the JSON to Tokens Studio, use the W3C DTCG import option."
153
+
154
+ ## What might change
155
+
156
+ If the W3C DTCG format diverges significantly from current expectations (e.g., dramatic schema changes), we'll re-evaluate. The transformation is mechanical — switching is a one-time change to the extractor scripts.
157
+
158
+ If Tokens Studio decides not to support W3C DTCG (unlikely as of mid-2025), we may need to bridge formats per consumer.
159
+
160
+ For now: **W3C DTCG is the bet**.
161
+
162
+ ## Related decisions
163
+
164
+ - **Why nested vs flat**: nested matches the way tokens are reasoned about (hierarchy). Flat (`color.brand.primary.600 = #7C3AED`) loses that semantic.
165
+ - **Why JSON not YAML**: JSON has stronger machine-tooling. YAML's whitespace sensitivity bites here.
166
+ - **Why allow references**: `{color.brand.primary.600}` aliases let semantic tokens cleanly point to primitives without duplicating values.
167
+
168
+ ## See also
169
+
170
+ - [W3C DTCG specification](https://design-tokens.github.io/community-group/format/)
171
+ - [Style Dictionary v4 docs](https://styledictionary.com/)
172
+ - [`docs/TOKEN-SYNC.md`](../docs/TOKEN-SYNC.md) — three-tier token strategy
173
+ - [`knowledge/design-tokens/ant-design.md`](../knowledge/design-tokens/ant-design.md) — token reference docs per upstream system
174
+ - `tools/figma-plugin/src/code.ts` — implementation
175
+ ```
176
+
177
+ ---
178
+
179
+ ## Why this is a good explanation example
180
+
181
+ - **Problem stated up front** — frames the decision space.
182
+ - **Options enumerated** — A through D, each with pros + cons.
183
+ - **Choice declared, with reasoning** — not just "we chose C", but why.
184
+ - **Tradeoffs accepted** — what we gave up; honest.
185
+ - **What might change** — when this decision should be revisited.
186
+ - **Related decisions** — links the broader rationale.
187
+ - **Discursive but rigorous** — not preachy, not academic. Conversational with structure.
188
+
189
+ Cite [`knowledge/patterns/technical-writing.md`](../knowledge/patterns/technical-writing.md) — explanation voice is more discursive than tutorial / how-to.
190
+
191
+ ## Cross-reference
192
+
193
+ - [`examples/doc-tutorial-example.md`](doc-tutorial-example.md)
194
+ - [`examples/doc-how-to-example.md`](doc-how-to-example.md)
195
+ - [`skills/document-author/PLAYBOOK.md`](../skills/document-author/PLAYBOOK.md)
196
+ - [`knowledge/patterns/information-architecture.md`](../knowledge/patterns/information-architecture.md) — Diátaxis 4 types
@@ -0,0 +1,205 @@
1
+ # Worked example: how-to
2
+
3
+ > Generated by `skills/document-author` with type=`how-to`. Demonstrates the canonical Diátaxis how-to format — direct, problem-driven, no fluff.
4
+
5
+ ---
6
+
7
+ ```markdown
8
+ ---
9
+ title: How to add Korean copy to existing English-only components
10
+ description: Translate component copy to Korean while preserving design-ai conventions for honorific level, IME handling, and Daum Postcode integration.
11
+ type: how-to
12
+ audience: Developers shipping a Korean version of an English product
13
+ last_updated: 2026.05.08
14
+ ---
15
+
16
+ # How to add Korean copy to existing English-only components
17
+
18
+ When you need to: ship a Korean locale for a product currently in English only.
19
+
20
+ ## TL;DR
21
+
22
+ ```ts
23
+ // 1. Wrap copy in a t() function
24
+ <button>{t("Save")}</button>
25
+
26
+ // 2. Use Korean-aware t() with honorific level
27
+ import { t } from "@/lib/i18n";
28
+ t("Save"); // → "저장" (consumer) or "저장하기" (formal)
29
+ ```
30
+
31
+ Set `LOCALE=ko` and `HONORIFIC=informal` (해요체) or `formal` (합쇼체) per app configuration. Default `formal` for fintech / B2B; `informal` for consumer.
32
+
33
+ ## Steps
34
+
35
+ ### 1. Inventory the copy
36
+
37
+ Find every literal string in your components. Tools:
38
+
39
+ ```bash
40
+ # Quick grep
41
+ grep -r "Save\|Cancel\|Submit" src/
42
+
43
+ # Better: use react-i18next's extractor
44
+ i18next-scanner --config i18next-scanner.config.js
45
+ ```
46
+
47
+ Output: a JSON file mapping every English string to a key.
48
+
49
+ ### 2. Pick honorific level for your product
50
+
51
+ Use [`knowledge/i18n/korean-product-conventions.md`](../knowledge/i18n/korean-product-conventions.md) to decide:
52
+
53
+ - **Consumer mobile / friendly**: 해요체 (~해요)
54
+ - **B2B / formal / fintech / banking**: 합쇼체 (~합니다)
55
+ - **Government / legal / healthcare**: 합쇼체 always
56
+
57
+ Decision sticks for the entire app — don't mix.
58
+
59
+ ### 3. Translate using design-ai conventions
60
+
61
+ For UI strings, use the canonical Korean per [`knowledge/i18n/korean-typography.md`](../knowledge/i18n/korean-typography.md):
62
+
63
+ | English | 해요체 | 합쇼체 |
64
+ | --- | --- | --- |
65
+ | Save | 저장 | 저장하기 |
66
+ | Cancel | 취소 | 취소 |
67
+ | Submit | 제출 / 등록 | 제출하기 |
68
+ | Delete | 삭제 | 삭제하기 |
69
+ | Sign in | 로그인 | 로그인 |
70
+ | Sign up | 가입 | 회원가입 |
71
+ | Loading | 로딩 중 | 불러오는 중 |
72
+ | Try again | 다시 시도 | 다시 시도해 주세요 |
73
+
74
+ Don't direct-translate — Korean has different defaults. Example: "Submit" rarely means 제출 in Korean apps; it usually means 등록 or 저장.
75
+
76
+ ### 4. Replace English in components
77
+
78
+ For each component:
79
+
80
+ ```diff
81
+ - <Button>Save</Button>
82
+ + <Button>{t("save")}</Button>
83
+ ```
84
+
85
+ Where `t()` reads from your locale JSON.
86
+
87
+ ### 5. Handle Korean IME for input components
88
+
89
+ If your component has typeahead / autocomplete / mention features, IME composition must be respected. Update existing components:
90
+
91
+ ```diff
92
+ + const [isComposing, setIsComposing] = useState(false);
93
+
94
+ - <input onChange={(e) => onChange(e.target.value)} />
95
+ + <input
96
+ + onChange={(e) => !isComposing && onChange(e.target.value)}
97
+ + onCompositionStart={() => setIsComposing(true)}
98
+ + onCompositionEnd={(e) => {
99
+ + setIsComposing(false);
100
+ + onChange(e.target.value);
101
+ + }}
102
+ + />
103
+ ```
104
+
105
+ Cite [`examples/component-input.md`](component-input.md) for the full pattern.
106
+
107
+ ### 6. Replace address inputs with Daum Postcode
108
+
109
+ Korean users won't tolerate free-form address. Replace any `<AddressInput>` with the Daum Postcode-integrated version:
110
+
111
+ ```bash
112
+ # Install
113
+ npm install react-daum-postcode
114
+ ```
115
+
116
+ ```tsx
117
+ import { DaumPostcode } from "react-daum-postcode";
118
+ // ...use the Daum widget; see knowledge/i18n/korean-product-conventions.md
119
+ ```
120
+
121
+ Cite [`examples/component-address-input.md`](component-address-input.md).
122
+
123
+ ### 7. Apply Korean typography
124
+
125
+ Add Pretendard to your font stack:
126
+
127
+ ```css
128
+ :root {
129
+ --font-family-base: 'Pretendard', -apple-system, BlinkMacSystemFont,
130
+ 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif;
131
+ }
132
+ ```
133
+
134
+ Bump body line-height to 1.6 (Korean +10% adjustment) per [`knowledge/i18n/korean-typography.md`](../knowledge/i18n/korean-typography.md):
135
+
136
+ ```css
137
+ body { line-height: 1.6; }
138
+ ```
139
+
140
+ Contrast check: translated Korean body text must keep at least **4.5:1** against the page background, and focus indicators on locale switchers or copy controls must keep **3:1** per [`knowledge/a11y/contrast.md`](../knowledge/a11y/contrast.md). Screen reader output must announce the active locale and any language switcher state via `aria-current` or equivalent text.
141
+
142
+ ### 8. Add Korean-specific patterns
143
+
144
+ If your app has:
145
+ - **Payment**: replace generic with Toss/KakaoPay/NaverPay buttons. See [`knowledge/i18n/korean-payments.md`](../knowledge/i18n/korean-payments.md).
146
+ - **Phone auth**: add SMS verification flow with InputOTP — see [`examples/component-input-otp.md`](component-input-otp.md).
147
+ - **Identity verification**: integrate PASS — see [`examples/component-pass-auth.md`](component-pass-auth.md).
148
+ - **Money display**: use KRWAmount or AmountInput — see [`examples/component-krw-amount.md`](component-krw-amount.md).
149
+
150
+ ## Variations
151
+
152
+ ### Just translation, no Korean-specific UX
153
+
154
+ If you're only translating words (e.g., a documentation site), skip steps 5–8. The result will work but won't feel native.
155
+
156
+ ### Multi-locale (en + ko in one app)
157
+
158
+ Use a locale switcher in settings. Persist to localStorage + send via Accept-Language header.
159
+
160
+ ```ts
161
+ const locale = useLocale(); // "en" | "ko"
162
+ ```
163
+
164
+ ### Korean-only product
165
+
166
+ Skip the en stage entirely. Don't ship english-strings-with-Korean-fallback — just write Korean directly.
167
+
168
+ ## Common pitfalls
169
+
170
+ | Pitfall | Fix |
171
+ | --- | --- |
172
+ | Mixed 합쇼체 + 해요체 in same screen | Pick one. Document in style guide. |
173
+ | Translation breaks layout (Korean longer or shorter) | Use `flex-grow` not fixed widths; allow wrap. |
174
+ | Phone validation regex assumes US format | Update to Korean: `/^01[0-9]-?\d{3,4}-?\d{4}$/` |
175
+ | English error messages slip through | Add a CI check via `tools/audit/korean-copy-check.py`. |
176
+ | Date format mm/dd/yyyy | Switch to yyyy.MM.dd (KR convention). |
177
+
178
+ ## See also
179
+
180
+ - [`knowledge/i18n/korean-product-conventions.md`](../knowledge/i18n/korean-product-conventions.md) — broader UX conventions
181
+ - [`knowledge/i18n/korean-typography.md`](../knowledge/i18n/korean-typography.md) — type rules
182
+ - [`knowledge/i18n/korean-payments.md`](../knowledge/i18n/korean-payments.md) — payment patterns
183
+ - [`knowledge/i18n/korean-publishing.md`](../knowledge/i18n/korean-publishing.md) — store submission
184
+ - `tools/audit/korean-copy-check.py` — automated check
185
+ ```
186
+
187
+ ---
188
+
189
+ ## Why this is a good how-to example
190
+
191
+ - **Problem stated up front** ("when you need to…").
192
+ - **TL;DR with code snippet** — for the reader who'll only read 5 seconds.
193
+ - **Numbered steps with concrete actions.**
194
+ - **Variations section** for adjacent cases.
195
+ - **Common pitfalls** save debug time.
196
+ - **No motivation/background** — that's an explanation doc.
197
+ - **Imperative voice throughout** ("install", "replace", "switch").
198
+
199
+ Cite [`knowledge/patterns/technical-writing.md`](../knowledge/patterns/technical-writing.md) for voice rules.
200
+
201
+ ## Cross-reference
202
+
203
+ - [`examples/doc-tutorial-example.md`](doc-tutorial-example.md) — tutorial format (different)
204
+ - [`skills/document-author/PLAYBOOK.md`](../skills/document-author/PLAYBOOK.md)
205
+ - [`knowledge/patterns/information-architecture.md`](../knowledge/patterns/information-architecture.md)
@@ -0,0 +1,162 @@
1
+ # Worked example: tutorial
2
+
3
+ > Generated by `skills/document-author` with type=`tutorial`. Demonstrates the canonical Diátaxis tutorial format.
4
+
5
+ ---
6
+
7
+ ```markdown
8
+ ---
9
+ title: Build your first design token set
10
+ description: Learn the design-ai workflow by generating, customizing, and exporting a complete design token set in 15 minutes.
11
+ type: tutorial
12
+ audience: New users — designers or front-end developers familiar with their design system but new to design-ai
13
+ last_updated: 2026.05.08
14
+ ---
15
+
16
+ # Build your first design token set
17
+
18
+ > Time: 15 minutes · Audience: New to design-ai
19
+
20
+ In this tutorial you'll generate a fintech-flavored color palette, customize it for your brand, and export it as Tailwind v4 + shadcn-ui tokens.
21
+
22
+ ## What you'll build
23
+
24
+ By the end you'll have:
25
+ - A `tokens/source.json` with your brand palette
26
+ - A `src/styles/tokens.css` with CSS custom properties
27
+ - A working `palette.preview.html` you can open in a browser to verify
28
+
29
+ ## Prerequisites
30
+
31
+ - Node 20+
32
+ - A terminal
33
+ - A brand color (or a mood — we'll pick one if you don't have one)
34
+
35
+ ## Step 1 — Clone design-ai
36
+
37
+ ```bash
38
+ git clone https://github.com/your-org/design-ai
39
+ cd design-ai
40
+ ```
41
+
42
+ You should see `knowledge/`, `skills/`, `examples/` — the design-ai system layout.
43
+
44
+ ## Step 2 — Generate a palette
45
+
46
+ Run the `palette-from-brand` command in your AI agent (Claude Code, Codex, or paste into a chat):
47
+
48
+ ```
49
+ /palette-from-brand "B2C Korean fintech, calming + youthful, teal seed #0D9488"
50
+ ```
51
+
52
+ The agent reads `skills/color-palette/PLAYBOOK.md` and generates a full palette spec at `examples/my-palette.md`.
53
+
54
+ Open it. You should see:
55
+ - An 11-step ramp (50–950) for primary, accent, and neutrals
56
+ - Light + dark mode semantic aliases
57
+ - A WCAG contrast matrix
58
+ - Code blocks for Tailwind v4 / shadcn-ui / Style Dictionary
59
+
60
+ > ℹ Note: if your contrast matrix shows ✗ for any pair, the palette needs adjustment. The agent should flag this.
61
+
62
+ ## Step 3 — Visually verify
63
+
64
+ Generate the HTML preview:
65
+
66
+ ```bash
67
+ python3 tools/preview/render-tokens.py examples/my-palette.md
68
+ ```
69
+
70
+ Open `examples/my-palette.preview.html`. You'll see:
71
+ - Token swatches (light + dark)
72
+ - Live Button/Input/Alert/Card with your tokens
73
+ - A theme toggle at the top
74
+
75
+ Click the theme toggle. The whole preview switches. **If anything looks wrong** (low-contrast text, washed-out buttons), revise via `/iterate`.
76
+
77
+ ## Step 4 — Export to Style Dictionary
78
+
79
+ Save the JSON code block from your palette doc to `tokens/source.json`:
80
+
81
+ ```bash
82
+ # Copy the JSON block from examples/my-palette.md → tokens/source.json
83
+ ```
84
+
85
+ Install Style Dictionary:
86
+
87
+ ```bash
88
+ npm init -y
89
+ npm install -D style-dictionary
90
+ ```
91
+
92
+ Create `style-dictionary.config.json`:
93
+
94
+ ```json
95
+ {
96
+ "source": ["tokens/source.json"],
97
+ "platforms": {
98
+ "css": {
99
+ "transformGroup": "css",
100
+ "buildPath": "src/styles/",
101
+ "files": [
102
+ { "destination": "tokens.css", "format": "css/variables" }
103
+ ]
104
+ }
105
+ }
106
+ }
107
+ ```
108
+
109
+ Build:
110
+
111
+ ```bash
112
+ npx style-dictionary build
113
+ ```
114
+
115
+ You should see `src/styles/tokens.css` with your tokens as CSS custom properties.
116
+
117
+ ## Step 5 — Use the tokens
118
+
119
+ Reference them in any CSS:
120
+
121
+ ```css
122
+ .my-button {
123
+ background: var(--color-primary-default);
124
+ color: var(--color-on-primary);
125
+ padding: var(--space-md);
126
+ border-radius: var(--radius-md);
127
+ }
128
+ ```
129
+
130
+ The button now uses your brand-derived tokens.
131
+
132
+ ## What's next
133
+
134
+ You generated tokens. Now:
135
+
136
+ - **Spec your first component** with `/component-spec Button` — see [`skills/component-spec-writer`](../skills/component-spec-writer/PLAYBOOK.md).
137
+ - **Bootstrap a full design system** with `/design-from-brief` — see [`commands/design-from-brief.md`](../commands/design-from-brief.md).
138
+ - **Sync with Figma** via Tokens Studio plugin — see [`docs/integrations/figma-mcp.md`](../docs/integrations/figma-mcp.md).
139
+
140
+ If you got stuck, check [`docs/USING.md`](../docs/USING.md) for agent-specific setup.
141
+ ```
142
+
143
+ ---
144
+
145
+ ## Why this is a good tutorial example
146
+
147
+ - **Time + audience stated up top** — sets expectations.
148
+ - **"What you'll build" with concrete deliverables** — motivates.
149
+ - **Numbered steps** — easy to follow.
150
+ - **Each step has visible outcome** ("you should see…") — confirms progress.
151
+ - **Callout for warning** when contrast fails.
152
+ - **What's next section** — bridges to next learning.
153
+ - **No throat-clearing.** Tutorials are encouraging but direct.
154
+
155
+ Cite [`knowledge/patterns/information-architecture.md`](../knowledge/patterns/information-architecture.md) for the canonical tutorial structure.
156
+
157
+ ## Cross-reference
158
+
159
+ - [`skills/document-author/PLAYBOOK.md`](../skills/document-author/PLAYBOOK.md) — skill that generates this
160
+ - [`commands/document-from-brief.md`](../commands/document-from-brief.md)
161
+ - [`knowledge/patterns/information-architecture.md`](../knowledge/patterns/information-architecture.md) — Diátaxis types
162
+ - [`knowledge/patterns/technical-writing.md`](../knowledge/patterns/technical-writing.md) — voice rules