@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,258 @@
1
+ <!-- hand-written -->
2
+ ---
3
+ title: Marketing video (landing-page hero, brand films, product demos)
4
+ applies_to: [video, marketing, landing, brand]
5
+ version: 1.0.0
6
+ last_updated: 2026-05
7
+ stability: stable
8
+ ---
9
+
10
+ # Marketing video
11
+
12
+ Video on marketing surfaces does one of three things:
13
+
14
+ 1. **Stop the scroll** (hero loop, autoplay).
15
+ 2. **Tell the story** (brand film, founder video, customer testimonial).
16
+ 3. **Show the product** (demo, walkthrough, feature highlight).
17
+
18
+ Each has different rules.
19
+
20
+ Read [`video-fundamentals.md`](video-fundamentals.md) first.
21
+
22
+ ## Three categories
23
+
24
+ ### 1. Hero loop (above-the-fold)
25
+
26
+ Short autoplay loop on landing page hero. The video IS the visual — no separate hero image needed.
27
+
28
+ | Spec | Target |
29
+ | --- | --- |
30
+ | Duration | 5-15 seconds, seamless loop |
31
+ | Resolution | 1080p (often 720p delivered) |
32
+ | Aspect | 16:9 desktop / 4:5 or 9:16 mobile |
33
+ | File size | < 5MB |
34
+ | Audio | None (autoplay = muted) |
35
+ | Captions | None (no audio) |
36
+ | Reduced motion | Show static poster |
37
+
38
+ Use for:
39
+ - Product with motion (Linear's keyboard demo, Cron's calendar).
40
+ - Atmospheric brand setting (lifestyle imagery).
41
+ - Process / "money flowing" shot (Toss-style).
42
+
43
+ Don't use for:
44
+ - Static products (form builder, CMS).
45
+ - Mobile-primary audiences in low-bandwidth regions.
46
+
47
+ ### 2. Brand film / story video (1-3 minutes)
48
+
49
+ A longer, narrative video. Click-to-play (not autoplay). Lives on a section of the landing page or "About" page.
50
+
51
+ | Spec | Target |
52
+ | --- | --- |
53
+ | Duration | 60-180 seconds |
54
+ | Resolution | 1080p / 4K |
55
+ | Aspect | 16:9 |
56
+ | Audio | Yes; mixed properly (-14 LUFS) |
57
+ | Captions | Mandatory |
58
+ | Music | Brand-aligned; licensed |
59
+ | Voiceover | Often founder / customer |
60
+
61
+ Structure:
62
+ ```
63
+ 0:00-0:05 Hook (visual or question)
64
+ 0:05-0:30 Problem (what users face today)
65
+ 0:30-1:00 Solution (your product, in real use)
66
+ 1:00-2:00 Story (founder, customer, vision)
67
+ 2:00-2:30 Proof (numbers, logos, testimonials)
68
+ 2:30-3:00 CTA (try it, watch demo, contact)
69
+ ```
70
+
71
+ For most B2B SaaS: a 90-second brand film outperforms a 3-minute one. Short attention span; respect it.
72
+
73
+ ### 3. Product demo / walkthrough (30-90 seconds)
74
+
75
+ Shows the product working. Often screen-captured + voiceover.
76
+
77
+ | Spec | Target |
78
+ | --- | --- |
79
+ | Duration | 30-90 seconds (longer for complex products) |
80
+ | Resolution | 1080p (60fps for smooth UI) |
81
+ | Audio | Voiceover + ambient music low |
82
+ | Captions | Mandatory |
83
+ | Pace | Brisk; cut every 3-5 seconds |
84
+ | Cursor | Highlighted (custom cursor or zoom on click) |
85
+
86
+ Structure:
87
+ ```
88
+ 0:00-0:05 What problem this solves
89
+ 0:05-0:15 Step 1 (open product, basic action)
90
+ 0:15-0:35 Step 2-3 (core feature)
91
+ 0:35-0:50 Result / outcome
92
+ 0:50-1:00 CTA (try free, sign up)
93
+ ```
94
+
95
+ Pace matters. Slow demos feel unproductive. Cut aggressively; dwell only on results.
96
+
97
+ ## Production budget tiers
98
+
99
+ ### Tier 1: DIY (budget < 500,000 KRW)
100
+
101
+ - Phone or webcam shoot.
102
+ - Software like Capcut, DaVinci Resolve free, Final Cut.
103
+ - Royalty-free music (Epidemic Sound, Artlist, Musicbed).
104
+ - Auto-caption + manual review.
105
+
106
+ Realistic output: 30-60 second product demo, decent for landing pages.
107
+
108
+ ### Tier 2: Indie production (5-20M KRW)
109
+
110
+ - Hired videographer + editor (1-2 people, 1-3 days).
111
+ - Better cameras (Sony A7, Canon R-series).
112
+ - Licensed music.
113
+ - Color grading.
114
+ - Captions + light motion graphics.
115
+
116
+ Realistic output: brand film 60-120s + 2-3 product demos.
117
+
118
+ ### Tier 3: Production company (20-100M+ KRW)
119
+
120
+ - Full crew (director, DP, sound, makeup, gaffer).
121
+ - Professional cameras (Arri, RED).
122
+ - Talent / actors.
123
+ - Studio + locations.
124
+ - Music composition.
125
+ - Full post (color, sound mix, motion graphics).
126
+
127
+ Realistic output: brand film with cinematic quality, multi-spot ad campaign.
128
+
129
+ ## Korean marketing video conventions
130
+
131
+ Korean B2C / fintech video trends:
132
+
133
+ - **Toss-style**: clean product shots + Korean voiceover (gentle female voice common), warm color grade, slow pan / push, minimal cuts.
134
+ - **Kakao-style**: mascot integration, playful, brighter colors, faster cuts.
135
+ - **Coupang-style**: rapid product cuts, emphasis on speed (rocket motion), urgency.
136
+ - **Naver-style**: dense info, multiple use cases shown, often a product walkthrough.
137
+
138
+ Korean B2B video:
139
+ - More formal voiceover (해요체 or 합쇼체).
140
+ - Often subtitled (자막) for in-meeting playback.
141
+ - Numbers / testimonials prominent (사용 기업 N개 등).
142
+
143
+ For Korean market:
144
+ - **Voiceover language**: Korean primary; English subtitles for international.
145
+ - **Music**: Korean-pop / instrumental Korean / royalty-free; avoid Western pop with copyright issues.
146
+ - **Pacing**: slightly faster cuts than Western (Korean video tradition).
147
+ - **Captions**: Korean 자막 always (even if voice is Korean) — common for accessibility + sound-off.
148
+
149
+ ## Hero loop production tips
150
+
151
+ ```
152
+ 0:00 — start state (calm)
153
+ 0:05 — peak action (the "wow" beat)
154
+ 0:10 — settle back to start state (loops cleanly)
155
+ ```
156
+
157
+ Match exit frame to entry frame for invisible loop.
158
+
159
+ ### Filming for hero loops
160
+
161
+ - **Steady framing** — handheld looks amateur on autoplay.
162
+ - **Subtle motion** > dramatic — viewers see this many times.
163
+ - **No talking heads** — no audio means no lip-sync needed.
164
+ - **Brand color anchored** — if brand is teal, dominant frame color is teal.
165
+ - **No visible text in video** — overlay text in HTML / CSS instead (responsive, localized).
166
+
167
+ ### Vertical version
168
+
169
+ For mobile landing page: shoot 9:16 OR shoot 4K 16:9 and crop to 9:16.
170
+
171
+ If cropping: plan composition with 9:16 safe zone marked at shoot. Subject must work in vertical crop.
172
+
173
+ ## Video on landing pages — placement
174
+
175
+ | Section | Video type |
176
+ | --- | --- |
177
+ | **Hero** | 5-15s autoplay loop OR 60-90s click-to-play brand film with thumbnail |
178
+ | **How it works** | 30-60s product demo |
179
+ | **Customer stories** | 60-120s testimonial video |
180
+ | **Features** | Per-feature 15-30s demo loops |
181
+ | **CTA / closing** | Optional brand film replay |
182
+
183
+ Don't put video in every section — fatigue.
184
+
185
+ ## Video accessibility
186
+
187
+ - **Captions**: required for any video with speech / dialogue.
188
+ - **Transcripts**: post the full transcript on the page (or behind a "Show transcript" toggle).
189
+ - **Audio descriptions**: required for videos where critical info is visual-only (e.g., "the cursor moves to the gear icon" — sighted viewers see this; screen readers don't).
190
+ - **Pause control**: for autoplay loops, provide a way to pause (button or click-to-pause).
191
+ - **Don't auto-play with sound**: browsers block; users hate.
192
+ - **Reduced motion**: hide autoplay loops; show static poster instead.
193
+
194
+ ## Performance budget
195
+
196
+ | Metric | Target |
197
+ | --- | --- |
198
+ | Hero loop (above-fold) | < 3MB; < 1.5s LCP impact |
199
+ | Click-to-play brand film | Lazy-load; only fetched when clicked |
200
+ | Product demo | Lazy-load below the fold |
201
+ | All videos combined per page | < 10MB total |
202
+
203
+ For LCP-critical hero: provide poster image as primary `<img>` and load video asynchronously after first paint.
204
+
205
+ ## File delivery for marketing video
206
+
207
+ Provide multiple formats:
208
+
209
+ ```html
210
+ <video autoplay muted loop playsinline poster="hero.jpg">
211
+ <source src="hero.webm" type="video/webm" />
212
+ <source src="hero-h265.mp4" type='video/mp4; codecs="hev1.1.6.L93.B0"' />
213
+ <source src="hero-h264.mp4" type="video/mp4" />
214
+ </video>
215
+ ```
216
+
217
+ Browser picks the first one it supports. WebM (AV1 / VP9) → H.265 → H.264.
218
+
219
+ For product demos with audio: include caption track:
220
+
221
+ ```html
222
+ <video controls poster="demo.jpg">
223
+ <source src="demo.mp4" type="video/mp4" />
224
+ <track kind="captions" src="demo-ko.vtt" srclang="ko" label="한국어" default />
225
+ <track kind="captions" src="demo-en.vtt" srclang="en" label="English" />
226
+ </video>
227
+ ```
228
+
229
+ ## Common marketing video mistakes
230
+
231
+ - **Too long**. Cut 30%, then cut 30% more.
232
+ - **Audio is afterthought**. Bad audio = abandon at 5 seconds.
233
+ - **Cinematic shots of irrelevant things**. The product matters; sunset b-roll doesn't.
234
+ - **No captions**. 80% watch muted.
235
+ - **Wrong aspect for platform**. Vertical for TikTok / Reels; landscape for YouTube.
236
+ - **Auto-play with sound**. Browsers block; if it played, users hate.
237
+ - **Slow product demos**. Show the result; cut the typing.
238
+ - **Talking head only**. Visual variety required (b-roll, screen, product).
239
+
240
+ ## Don't
241
+
242
+ - Don't make a 4-minute brand film. Cut to 90 seconds.
243
+ - Don't shoot 4K hero loops if the delivery is 720p. Wasted time + storage.
244
+ - Don't skip color grading. Raw footage looks amateur.
245
+ - Don't use unlicensed music. Copyright strikes are real.
246
+ - Don't auto-play with sound on. Hostile to users.
247
+ - Don't forget mobile. Most marketing video is consumed on phones.
248
+ - Don't ship without captions.
249
+ - Don't put text inside the video frame — overlay in HTML for responsive / localizable.
250
+
251
+ ## Cross-reference
252
+
253
+ - [`knowledge/video/video-fundamentals.md`](video-fundamentals.md) — codecs, resolution, captions
254
+ - [`knowledge/video/social-and-short-form.md`](social-and-short-form.md) — TikTok / Reels / Shorts
255
+ - [`knowledge/video/in-product-video.md`](in-product-video.md) — onboarding / help
256
+ - [`knowledge/video/korean-video-conventions.md`](korean-video-conventions.md) — KR-specific
257
+ - [`knowledge/patterns/landing-hero-design.md`](../patterns/landing-hero-design.md) — hero strategy
258
+ - [`knowledge/motion/marketing-motion.md`](../motion/marketing-motion.md) — motion vs video
@@ -0,0 +1,257 @@
1
+ <!-- hand-written -->
2
+ ---
3
+ title: Social and short-form video (TikTok, Reels, Shorts, vertical)
4
+ applies_to: [video, social, short-form, tiktok, reels, shorts]
5
+ version: 1.0.0
6
+ last_updated: 2026-05
7
+ stability: stable
8
+ ---
9
+
10
+ # Social and short-form video
11
+
12
+ Short-form vertical video has its own rules. The 30-90 second YouTube product demo doesn't translate to a 15-second TikTok. Different aspect, different pacing, different audience expectation.
13
+
14
+ Read [`video-fundamentals.md`](video-fundamentals.md) first.
15
+
16
+ ## Platforms
17
+
18
+ | Platform | Aspect | Length | Audience |
19
+ | --- | --- | --- | --- |
20
+ | **TikTok** | 9:16 (1080×1920) | 15s, 60s, 3min, 10min | Gen Z + Millennial; KR usage growing |
21
+ | **Instagram Reels** | 9:16 | 15s, 30s, 60s, 90s | Millennial + Gen Z |
22
+ | **Instagram Stories** | 9:16 | 15s per clip; 24h ephemeral | Existing followers |
23
+ | **YouTube Shorts** | 9:16 | up to 60s | All ages; Korean default for video |
24
+ | **YouTube** (long-form) | 16:9 | unlimited | Default everywhere |
25
+ | **NaverTV / Kakao TV** | 16:9 | varies | KR primary |
26
+ | **LinkedIn video** | 16:9 or 1:1 | up to 10min | Professional |
27
+ | **Twitter / X video** | 16:9 or 1:1 | 2:20 max | Public-square content |
28
+
29
+ For Korean B2C marketing in 2024+: Instagram Reels + YouTube Shorts dominate; TikTok growing; LinkedIn for B2B.
30
+
31
+ ## The vertical video reality
32
+
33
+ > **9:16 isn't 16:9 cropped to 9:16.**
34
+ > It's a different format with different rules.
35
+
36
+ | Difference | 16:9 (landscape) | 9:16 (vertical) |
37
+ | --- | --- | --- |
38
+ | Subject | Often centered or rule-of-thirds | Larger; closer to camera |
39
+ | Background | Wide; lots of context | Narrow; minimal |
40
+ | Text overlay | Optional, top or bottom | Often, mid-frame |
41
+ | Captions | Bottom 10% | Mid-frame, away from edges |
42
+ | Pacing | Steady; longer takes | Faster cuts; first 1s critical |
43
+ | Sound | Often expected on | Often muted; captions critical |
44
+
45
+ ## Hook in 1 second
46
+
47
+ For social video, the first second decides everything. The user is scrolling. Stop them, or they're gone.
48
+
49
+ | Type | Opening 1s |
50
+ | --- | --- |
51
+ | Question hook | "How do you save 4 hours a week?" |
52
+ | Bold claim | "I cut my expenses in half." |
53
+ | Surprising visual | Action shot; counterintuitive scene |
54
+ | Pattern interrupt | Loud sound, sudden cut |
55
+ | Direct address | "Stop scrolling. Watch this." |
56
+
57
+ Don't use:
58
+ - Slow burn intros (90s YouTube intro = scroll past in 1s).
59
+ - Logo first (anti-hook).
60
+ - "Hi guys" greeting.
61
+ - Subtitle title cards.
62
+
63
+ ## Korean short-form conventions
64
+
65
+ - **자막 dominant** — Korean short-form almost always has subtitles burned in (sound off → sound on) with playful styling.
66
+ - **Brand color text + white outline** — common subtitle style for visibility.
67
+ - **Vertical first** — Korean creators design vertical, then crop landscape if needed.
68
+ - **Music**: K-pop instrumentals + trending TikTok / Reels sounds; copyright considerations.
69
+ - **Pace**: faster than Western (Korean attention to dense info).
70
+ - **Mascot integration** for B2C: Kakao Friends, brand characters appear.
71
+
72
+ For Korean short-form B2C:
73
+ - 첫 1초 hook + 자막
74
+ - Music or sound effect
75
+ - 브랜드 노출 (logo / product) within first 5 seconds
76
+ - CTA in last 2-3 seconds (link in bio / 채널 / 사이트 URL)
77
+
78
+ ## Composition for vertical
79
+
80
+ ### Safe areas
81
+
82
+ ```
83
+ ┌─────────────────────────────┐
84
+ │ ───── Top UI (10%) ───── │ ← username, follow button overlay
85
+ │ │
86
+ │ │
87
+ │ │
88
+ │ │
89
+ │ SAFE AREA │ ← put main content here (60% of height)
90
+ │ │
91
+ │ │
92
+ │ │
93
+ │ │
94
+ │ ──── Bottom UI (15%) ─── │ ← like/comment/share buttons + caption
95
+ │ │
96
+ └─────────────────────────────┘
97
+ ```
98
+
99
+ Top 10% and bottom 15% are platform UI. Don't put critical content there.
100
+
101
+ For text overlay: position **between 25-65% of height** for visibility above bottom UI without competing with top UI.
102
+
103
+ ### Subject framing
104
+
105
+ Vertical video subjects fill more of the frame:
106
+ - **Single person**: chest-up to head-and-shoulders.
107
+ - **Product**: closer than landscape would be.
108
+ - **Action**: subject's path of motion fits within narrow frame.
109
+
110
+ Don't shoot a wide group shot in vertical — bodies get cut off awkwardly.
111
+
112
+ ## Pacing
113
+
114
+ | Length | Approximate cut count |
115
+ | --- | --- |
116
+ | 15s | 5-8 cuts |
117
+ | 30s | 8-15 cuts |
118
+ | 60s | 15-30 cuts |
119
+
120
+ Short-form expects pace. Long takes (5+ seconds) feel slow.
121
+
122
+ Exceptions:
123
+ - ASMR / cooking / craft videos: longer takes are the point.
124
+ - Storytelling videos: medium-paced.
125
+ - Product demos: brisk; show the result fast.
126
+
127
+ ## Subtitle styling for short-form
128
+
129
+ Burn-in subtitles (open captions) for short-form because:
130
+ - 80%+ watch muted.
131
+ - Algorithm boosts videos with text on screen.
132
+ - Accessibility.
133
+
134
+ Common styles:
135
+
136
+ | Style | Look |
137
+ | --- | --- |
138
+ | **TikTok native** | White text, black drop shadow, 1-2 lines |
139
+ | **Highlight word** | One word highlighted in brand color per phrase |
140
+ | **Karaoke-style** | Word-by-word reveal |
141
+ | **Captioned with emoji** | Text + emoji for emphasis |
142
+ | **Minimalist** | Small white text, bottom |
143
+
144
+ For brand-aligned: pick ONE style and stick with it across videos.
145
+
146
+ ### Korean subtitle styling
147
+
148
+ - Pretendard / NanumSquare / SB 어그로체 commonly used (bold, condensed).
149
+ - Yellow / brand-color highlight on key words.
150
+ - White text + thick black outline (visibility on any background).
151
+ - Smaller than English subtitle (Hangul reads bigger at same size).
152
+
153
+ ## Music and sound
154
+
155
+ ### Music sources
156
+
157
+ - **Platform-native trending sounds**: TikTok / Reels surface trending audio. Using them boosts algorithm reach.
158
+ - **Royalty-free libraries**: Epidemic Sound, Artlist, Musicbed.
159
+ - **Custom composition**: for brand-defining campaigns.
160
+
161
+ ### Korean music
162
+ - **Korean production music**: Audionetwork KR, Pond5 KR.
163
+ - **Avoid K-pop**: copyright strikes; commercial use rights are expensive and sometimes unavailable.
164
+ - **Brand jingle**: short 2-3s sting at brand logo reveal.
165
+
166
+ ### Voice
167
+ - **Korean voiceover**: for KR primary.
168
+ - **AI voice (clone or generic)**: increasingly common for short-form; pre-generated with services like ElevenLabs (Korean voice support exists).
169
+ - **Subtitles always** even with voiceover — sound-off viewing.
170
+
171
+ ## Frequency / consistency
172
+
173
+ Short-form is volume-driven. Posting weekly < daily for algorithm reach.
174
+
175
+ For brand presence:
176
+ - 3-7 short-form videos per week is typical for active brands.
177
+ - Repurpose across platforms (Reels → Shorts → TikTok).
178
+ - Don't crop randomly — re-edit per platform if budget allows.
179
+
180
+ ## Production budget tiers
181
+
182
+ ### Tier 1: Phone shoot (DIY)
183
+
184
+ - Phone with stabilizer / tripod.
185
+ - Capcut / InShot / Canva for editing.
186
+ - Auto-captions + manual review.
187
+ - Royalty-free music or platform-native sounds.
188
+
189
+ Cost per video: < 100,000 KRW (mostly time).
190
+
191
+ ### Tier 2: Influencer / creator
192
+
193
+ - Hire a content creator who specializes in short-form.
194
+ - They handle shoot + edit + posting.
195
+
196
+ Cost per video: 500,000 - 5,000,000 KRW depending on creator size.
197
+
198
+ ### Tier 3: Agency
199
+
200
+ - Full short-form video agency.
201
+ - Strategy + production + posting + analytics.
202
+
203
+ Cost: 5,000,000 - 50,000,000+ KRW per month for ongoing campaigns.
204
+
205
+ ## Repurposing long-form to short-form
206
+
207
+ If you have long-form video (60-min webinar, 5-min product demo), extract short-form clips:
208
+
209
+ 1. **Find moments** — quotable lines, surprising moments, big reveals.
210
+ 2. **Crop to 9:16** — re-frame manually; subject often needs to be re-positioned.
211
+ 3. **Add subtitles** — burn in.
212
+ 4. **Add hook** — first 1 second is critical; usually need a new opening.
213
+ 5. **Trim to 15-60s**.
214
+ 6. **Brand the end** — logo + CTA in last 2-3 seconds.
215
+
216
+ Tools that help: **Opus Clip, Vizard, CapCut Auto-clip** — AI-driven re-cutting.
217
+
218
+ ## Analytics that matter
219
+
220
+ For short-form:
221
+ - **View-through rate** (% who watched to end).
222
+ - **Average watch time**.
223
+ - **Engagement rate** (likes + comments + shares / views).
224
+ - **Algorithm reach** (impressions / followers).
225
+ - **CTR to bio link / website**.
226
+
227
+ Don't obsess over total views. View-through rate is the leading indicator of whether the content works.
228
+
229
+ ## Common short-form mistakes
230
+
231
+ - **Slow first second** — algorithm penalty.
232
+ - **Landscape video posted vertically** (with black bars) — looks lazy.
233
+ - **Watermark from another platform** (TikTok logo on Reels) — Reels deprioritizes.
234
+ - **No subtitles** — 80% miss the message.
235
+ - **Logo first** — kills hook.
236
+ - **Long intro** — anti-hook.
237
+ - **Recycling without re-editing** — captions / aspect / pacing wrong for new platform.
238
+ - **Talking-head only** — visual variety needed.
239
+
240
+ ## Don't
241
+
242
+ - Don't post landscape video vertically with bars. Crop or reframe.
243
+ - Don't skip the hook. First second is everything.
244
+ - Don't post without captions.
245
+ - Don't reuse a TikTok download (with watermark) on Reels — algorithm penalizes.
246
+ - Don't ignore platform-native sounds — using trending audio gives algorithm boost.
247
+ - Don't post once and call it done. Volume + consistency drive reach.
248
+ - Don't put critical content in top 10% or bottom 15% — covered by platform UI.
249
+ - Don't use copyrighted music for commercial brand — strikes.
250
+
251
+ ## Cross-reference
252
+
253
+ - [`knowledge/video/video-fundamentals.md`](video-fundamentals.md) — encoding, resolution
254
+ - [`knowledge/video/marketing-video.md`](marketing-video.md) — long-form marketing
255
+ - [`knowledge/video/in-product-video.md`](in-product-video.md) — in-app video
256
+ - [`knowledge/video/korean-video-conventions.md`](korean-video-conventions.md) — KR-specific
257
+ - [`knowledge/i18n/korean-app-store-visual.md`](../i18n/korean-app-store-visual.md) — Korean visual conventions