@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,240 @@
1
+ # video-designer — playbook
2
+
3
+ Design and spec video for marketing, social, or in-product use. Output is a production-ready video spec a producer / videographer / editor can deliver against.
4
+
5
+ ## When to use
6
+
7
+ - "Design the hero video for our landing page."
8
+ - "Spec a 60-second product demo."
9
+ - "Plan a YouTube Shorts campaign."
10
+ - "What captions / formats do we need?"
11
+ - "Spec the onboarding video for our app."
12
+
13
+ ## Inputs (ask if missing)
14
+
15
+ 1. **Surface** — landing-page hero / brand film / product demo / onboarding / help video / short-form social / ad spot.
16
+ 2. **Platform** — YouTube / Reels / Shorts / TikTok / website / in-app / OOH.
17
+ 3. **Length** — desired duration.
18
+ 4. **Audience** — Korean / international / mixed; B2C / B2B; age range.
19
+ 5. **Brand voice** — Toss-style / playful / formal / cinematic.
20
+ 6. **Production budget** — DIY / indie / production-company / TVCM-tier.
21
+ 7. **Audio strategy** — voiceover / music-only / silent autoplay.
22
+ 8. **Existing assets** — existing footage, brand video, music library.
23
+
24
+ ## Steps
25
+
26
+ ### 1. Classify the video
27
+
28
+ | Type | Read |
29
+ | --- | --- |
30
+ | Hero loop, brand film, demo, ad | [`marketing-video.md`](../../knowledge/video/marketing-video.md) |
31
+ | Reels / Shorts / TikTok / vertical | [`social-and-short-form.md`](../../knowledge/video/social-and-short-form.md) |
32
+ | Onboarding, help, changelog | [`in-product-video.md`](../../knowledge/video/in-product-video.md) |
33
+ | Korean market specifics | [`korean-video-conventions.md`](../../knowledge/video/korean-video-conventions.md) |
34
+
35
+ Always also: [`video-fundamentals.md`](../../knowledge/video/video-fundamentals.md).
36
+
37
+ ### 2. Spec the technical format
38
+
39
+ | Spec | Decide |
40
+ | --- | --- |
41
+ | Resolution | 1080p default; 4K master if reframing needed |
42
+ | Aspect ratio | 16:9 landscape / 9:16 vertical / 1:1 square |
43
+ | Framerate | 30fps default; 60fps for fast UI / sports |
44
+ | Codec | H.264 (compatibility) + H.265 / AV1 (size); WebM for web |
45
+ | Audio | AAC 128-256 kbps; -14 LUFS for online |
46
+ | Captions | WebVTT or burned-in (specify language tracks) |
47
+ | File size | Target by use: < 5MB hero loop, < 50MB demo |
48
+
49
+ ### 3. Pick length
50
+
51
+ | Use | Length |
52
+ | --- | --- |
53
+ | Hero loop autoplay | 5-15s |
54
+ | Product demo | 30-90s |
55
+ | Brand film | 60-180s |
56
+ | Onboarding video | 30-90s |
57
+ | Help video | 30-120s |
58
+ | Reels / Shorts | 15-60s |
59
+ | TikTok | 15-60s (up to 3min, 10min) |
60
+ | YouTube long-form | varies |
61
+ | TVCM | 15s, 30s, 60s spots |
62
+
63
+ Cut to shortest that conveys the message. Default: **shorter than the obvious answer**.
64
+
65
+ ### 4. Spec the script structure
66
+
67
+ For long-form (60+ seconds):
68
+ ```
69
+ 0:00-0:05 Hook (1-second-grade attention grab)
70
+ 0:05-0:20 Problem (what users face)
71
+ 0:20-0:50 Solution (your product / value)
72
+ 0:50-end CTA (try it, sign up, learn more)
73
+ ```
74
+
75
+ For short-form (15-30s):
76
+ ```
77
+ 0:00-0:01 Hook (must stop scroll)
78
+ 0:01-end Single message / single demo
79
+ 0:end-1s CTA / brand mark
80
+ ```
81
+
82
+ For hero loop (5-15s):
83
+ ```
84
+ 0:00 Calm starting frame
85
+ 0:05 Peak action (the "wow" beat)
86
+ 0:end Settle to start frame (loop)
87
+ ```
88
+
89
+ ### 5. Captions / subtitles
90
+
91
+ | Use | Captions |
92
+ | --- | --- |
93
+ | Hero loop (silent autoplay) | None needed (no audio) |
94
+ | Brand film / demo | WebVTT, multi-language |
95
+ | Social short-form | Burned-in (open captions) — 80% watch muted |
96
+ | In-product | WebVTT toggle, default ON |
97
+ | Korean any platform | Korean subtitle always |
98
+
99
+ Style:
100
+ - Bottom 10-20% of frame.
101
+ - White text + black outline OR brand color.
102
+ - Sans-serif, condensed (Pretendard / NanumSquare for Korean).
103
+ - Max 2 lines, ≤ 32 chars per line.
104
+
105
+ ### 6. Voiceover (if applicable)
106
+
107
+ | Choice | Use |
108
+ | --- | --- |
109
+ | Korean female gentle | Toss-style fintech, beauty |
110
+ | Korean female professional | B2B, education |
111
+ | Korean male warm | Premium consumer, automotive |
112
+ | English voiceover | International primary |
113
+ | AI voice (Clova, ElevenLabs) | Short-form, changelogs, low-stakes |
114
+ | Human voiceover | Brand-critical, ads, hero |
115
+
116
+ Honorific level (Korean):
117
+ - 합쇼체 (~합니다) for B2B, banking, formal.
118
+ - 해요체 (~해요) for B2C, lifestyle, fintech (default 2024+).
119
+
120
+ ### 7. Music + sound
121
+
122
+ | Source | Use |
123
+ | --- | --- |
124
+ | Royalty-free libraries (Epidemic, Artlist, Musicbed) | Most B2B / B2C |
125
+ | Korean royalty-free (Audionetwork KR, Pond5 KR) | KR market |
126
+ | Platform-native trending sound | Reels / TikTok algorithm boost |
127
+ | Custom composition | Brand-defining campaigns |
128
+ | K-pop tracks | Avoid — copyright |
129
+
130
+ Mix loudness to **-14 LUFS** for online platforms.
131
+
132
+ ### 8. Korean ad disclosure (if branded)
133
+
134
+ For sponsored / paid promotion:
135
+ - YouTube: tag "Includes paid promotion" + verbal disclosure.
136
+ - Instagram / TikTok: `#광고`, `#유료광고`, `#PR` in caption.
137
+ - Public-facing ads: 표시광고법 compliance.
138
+
139
+ For health / cosmetic / financial products: KFDA / FSC pre-approval of claims.
140
+
141
+ ### 9. Performance + delivery
142
+
143
+ For web:
144
+ - Provide multiple formats (WebM + MP4 H.265 + MP4 H.264).
145
+ - Include poster for first paint.
146
+ - `preload="auto"` for hero, `preload="metadata"` below the fold.
147
+ - Use `<source media="...">` for art-direction (mobile vs desktop video).
148
+
149
+ For platform delivery:
150
+ - YouTube: 1080p+ at high bitrate; YouTube re-encodes.
151
+ - Reels / Shorts / TikTok: 1080×1920 vertical at platform spec.
152
+ - In-product: HLS adaptive bitrate for longer videos.
153
+
154
+ ### 10. Output
155
+
156
+ Use this structure:
157
+
158
+ ```markdown
159
+ # Video spec: <title>
160
+
161
+ > Surface: <hero loop / brand film / demo / shorts / etc>
162
+ > Platform: <YouTube / Reels / website / in-app>
163
+ > Audience: <KR / international>
164
+ > Brand voice: <...>
165
+ > Length: <duration>
166
+
167
+ ## Technical specs
168
+ | Spec | Value |
169
+ ... resolution, fps, codec, audio, captions
170
+
171
+ ## Script / structure
172
+ <beat-by-beat outline>
173
+
174
+ ## Captions
175
+ <language tracks, style, file format>
176
+
177
+ ## Voiceover
178
+ <voice, language, honorific level>
179
+
180
+ ## Music
181
+ <library / track, loudness>
182
+
183
+ ## Korean compliance (if applicable)
184
+ <ad disclosure, KFDA, KFTC>
185
+
186
+ ## File delivery
187
+ <formats, bitrates, file naming>
188
+
189
+ ## Performance budget
190
+ <file size, LCP impact>
191
+
192
+ ## Accessibility
193
+ <captions, transcripts, audio descriptions>
194
+
195
+ ## Don't
196
+ <2-3 specific misuses>
197
+ ```
198
+
199
+ ## Source files this skill reads
200
+
201
+ - [`knowledge/video/video-fundamentals.md`](../../knowledge/video/video-fundamentals.md)
202
+ - [`knowledge/video/marketing-video.md`](../../knowledge/video/marketing-video.md)
203
+ - [`knowledge/video/social-and-short-form.md`](../../knowledge/video/social-and-short-form.md)
204
+ - [`knowledge/video/in-product-video.md`](../../knowledge/video/in-product-video.md)
205
+ - [`knowledge/video/korean-video-conventions.md`](../../knowledge/video/korean-video-conventions.md)
206
+ - [`knowledge/motion/motion-tools.md`](../../knowledge/motion/motion-tools.md) — when motion < video
207
+ - [`knowledge/i18n/korean-document-style.md`](../../knowledge/i18n/korean-document-style.md) — honorific level
208
+ - [`examples/component-video-player.md`](../../examples/component-video-player.md) — player spec
209
+ - [`examples/component-video-hero.md`](../../examples/component-video-hero.md) — autoplay hero spec
210
+
211
+ ## Verification phase (run before declaring done)
212
+
213
+ - [ ] Is the surface category explicit (hero loop / demo / shorts / onboarding / etc)?
214
+ - [ ] Is the technical spec (resolution / fps / codec / aspect ratio) explicit?
215
+ - [ ] Is length within range for the surface?
216
+ - [ ] Is the script structure (hook / body / CTA) explicit?
217
+ - [ ] Are captions specified (language tracks + format)?
218
+ - [ ] If voiceover: is the language + tone + honorific level explicit?
219
+ - [ ] Is loudness target (-14 LUFS for online) specified?
220
+ - [ ] Are platform-specific constraints (Reels safe area, YouTube spec) addressed?
221
+ - [ ] If Korean B2C: is ad disclosure + KFDA where applicable addressed?
222
+ - [ ] Is file delivery format (multi-codec, poster, HLS) specified?
223
+ - [ ] Is performance budget (file size, LCP impact) stated?
224
+ - [ ] Is reduced-motion / slow-connection fallback specified for autoplay?
225
+ - [ ] Does "Don't" section catch 2-3 specific misuses?
226
+
227
+ ## Done when
228
+
229
+ - One markdown spec, < 400 lines.
230
+ - Surface, platform, audience, length explicit.
231
+ - Technical specs (resolution, fps, codec, audio, captions).
232
+ - Script structure.
233
+ - Captions language + format.
234
+ - Voiceover details if applicable.
235
+ - Music source + loudness.
236
+ - Korean compliance if applicable.
237
+ - File delivery format.
238
+ - Performance + accessibility addressed.
239
+ - "Don't" section.
240
+ - Verification passes.
@@ -0,0 +1,6 @@
1
+ ---
2
+ name: video-designer
3
+ description: Design and spec video for marketing, social, or in-product use. Picks length, format, aspect ratio, codec, captions, voiceover, and platform; produces production-ready spec. Korean conventions and ad-disclosure rules included.
4
+ ---
5
+
6
+ See [PLAYBOOK.md](PLAYBOOK.md).
@@ -0,0 +1,118 @@
1
+ # website-improvement — playbook
2
+
3
+ Plan and coordinate professional website improvement work for an existing site. This skill does not modify the target website repository directly; it prepares the audit, MCP readiness, task plan, prompts, and handoff report that another agent can execute in the target repo.
4
+
5
+ ## When to use
6
+
7
+ - "Improve this homepage."
8
+ - "Audit our website before a redesign sprint."
9
+ - "Create a Codex prompt to refactor the pricing page."
10
+ - "Plan MCP setup for a site improvement project."
11
+ - "Turn website audit findings into implementation tasks."
12
+
13
+ ## Inputs
14
+
15
+ 1. **Site Profile** — name, live URL, repo URL/local path, priority pages, user flows, Figma URL, brand notes, deploy provider, Sentry, CMS, database, and target viewports.
16
+ 2. **Audit findings** — visual design, UX flow, responsive QA, accessibility, performance, SEO, technical quality, runtime issues, and content quality.
17
+ 3. **MCP readiness** — GitHub, Figma, Browser/Playwright, Chrome DevTools, deploy provider, Sentry, database, CMS, collaboration, and research status.
18
+ 4. **Execution target** — Codex for repo work, Claude for design/research/copy review, or final handoff.
19
+
20
+ ## Steps
21
+
22
+ ### 1. Establish the Site Profile
23
+
24
+ Capture only operational metadata needed for planning. Do not copy private source code into design-ai. Treat Figma URLs, repo paths, Sentry project names, CMS details, and local filesystem paths as sensitive project metadata.
25
+
26
+ ### 2. Run the Audit Pipeline
27
+
28
+ Evaluate each category and record findings:
29
+
30
+ | Category | Check |
31
+ | --- | --- |
32
+ | Visual Design | Layout, type, color, spacing, visual hierarchy |
33
+ | UX Flow | Navigation, CTA, forms, conversion flow, confusion points |
34
+ | Responsive QA | Desktop, tablet, mobile layout and text wrapping |
35
+ | Accessibility | Keyboard, focus, contrast, semantic HTML, ARIA |
36
+ | Performance | Core Web Vitals, images, bundle size, render bottlenecks |
37
+ | SEO | Title, description, headings, canonical, OG, sitemap |
38
+ | Technical Quality | Component structure, style duplication, dead code, dependency risk |
39
+ | Runtime Issues | Console errors, network errors, hydration issues, broken assets |
40
+ | Content Quality | Copy clarity, IA, proof, trust, CTA language |
41
+
42
+ Use the relevant design-ai knowledge files when making judgments:
43
+
44
+ - [`knowledge/PRINCIPLES.md`](../../knowledge/PRINCIPLES.md)
45
+ - [`knowledge/patterns/ux-guidelines.md`](../../knowledge/patterns/ux-guidelines.md)
46
+ - [`knowledge/a11y/contrast.md`](../../knowledge/a11y/contrast.md)
47
+ - [`knowledge/a11y/keyboard-and-focus.md`](../../knowledge/a11y/keyboard-and-focus.md)
48
+ - [`knowledge/layout/spacing-and-grid.md`](../../knowledge/layout/spacing-and-grid.md)
49
+ - [`knowledge/typography/type-scale-fundamentals.md`](../../knowledge/typography/type-scale-fundamentals.md)
50
+ - [`knowledge/patterns/technical-writing.md`](../../knowledge/patterns/technical-writing.md)
51
+ - [`knowledge/patterns/report-design.md`](../../knowledge/patterns/report-design.md)
52
+
53
+ ### 3. Classify MCP Readiness
54
+
55
+ Set each MCP to one of:
56
+
57
+ - `required` — needed before implementation or verification can be trusted.
58
+ - `optional` — useful, but a manual fallback is acceptable.
59
+ - `unused` — not relevant to this site/project phase.
60
+ - `unavailable` — relevant, but not connected; mention as a risk.
61
+
62
+ Do not invent live MCP results. If a tool was not actually connected and checked, state that it is readiness planning only.
63
+
64
+ ### 4. Generate Refactor Tasks
65
+
66
+ Convert findings into task units with:
67
+
68
+ - problem
69
+ - evidence
70
+ - impact
71
+ - effort
72
+ - priority
73
+ - related pages
74
+ - related MCP
75
+ - Codex implementation prompt
76
+ - verification method
77
+ - risks
78
+
79
+ Tasks should be scoped enough for Codex to run in the target website repo after repo intake. Avoid tasks that mix unrelated design, copy, and technical work unless they are one user-flow fix.
80
+
81
+ ### 5. Generate Prompts
82
+
83
+ Generate the appropriate prompt:
84
+
85
+ - Codex repo intake
86
+ - Codex implementation
87
+ - Codex visual QA
88
+ - Codex deployment verification
89
+ - Claude design review
90
+ - Claude competitor research
91
+ - Claude copy/UX critique
92
+ - final handoff report
93
+
94
+ Every Codex prompt must say that the work happens in the target website repo and must preserve the target repo's architecture, components, state patterns, styling conventions, and verification commands.
95
+
96
+ ### 6. Produce Handoff Report
97
+
98
+ The report should include target site information, diagnostic summary, major issues, priority recommendations, executed work, verification results, remaining risks, and next tasks.
99
+
100
+ ## Output Template
101
+
102
+ Use [`TEMPLATE.md`](TEMPLATE.md) for the final report or planning artifact.
103
+
104
+ ## Verification phase
105
+
106
+ - [ ] Site Profile includes live URL, target repo reference, pages, user flows, viewports, and platform notes.
107
+ - [ ] Audit categories cover visual, UX, responsive, accessibility, performance, SEO, technical, runtime, and content quality.
108
+ - [ ] MCP readiness uses only `required`, `optional`, `unused`, or `unavailable`.
109
+ - [ ] Refactor tasks include problem, evidence, impact, effort, priority, pages, MCP, prompt, verification, and risks.
110
+ - [ ] Codex prompts clearly state that implementation happens in the target website repo.
111
+ - [ ] Handoff report includes verification evidence or explicit placeholders for evidence not yet run.
112
+ - [ ] Accessibility, responsive, and source-grounding notes are present.
113
+
114
+ ## Done when
115
+
116
+ - One Website Improvement plan or handoff report is produced.
117
+ - The plan can be executed by Codex in the target repo without requiring design-ai to contain the target source.
118
+ - The MVP boundary is explicit: no automatic crawling, external writes, model training, embeddings, or target repo mutation from design-ai.
@@ -0,0 +1,6 @@
1
+ ---
2
+ name: website-improvement
3
+ description: Plan and coordinate professional website improvement work. Use for existing website audits, Site Profile setup, MCP readiness planning, refactor task generation, Codex/Claude prompt generation, and handoff reports.
4
+ ---
5
+
6
+ See [PLAYBOOK.md](PLAYBOOK.md).
@@ -0,0 +1,103 @@
1
+ # Website Improvement Plan: <site name>
2
+
3
+ > Live URL: <url>
4
+ > Target repo: <repo URL or local path>
5
+ > Viewports: desktop / tablet / mobile
6
+ > Status: planning / implementation / verification / handoff
7
+
8
+ ## Site Profile
9
+
10
+ - Name:
11
+ - Live URL:
12
+ - Repo URL:
13
+ - Local path:
14
+ - Figma URL:
15
+ - Deploy provider:
16
+ - Sentry project:
17
+ - CMS:
18
+ - Database:
19
+ - Priority pages:
20
+ - Primary user flows:
21
+ - Brand/design notes:
22
+
23
+ ## Audit Summary
24
+
25
+ | Category | Status | Key findings |
26
+ | --- | --- | --- |
27
+ | Visual Design | todo | |
28
+ | UX Flow | todo | |
29
+ | Responsive QA | todo | |
30
+ | Accessibility | todo | |
31
+ | Performance | todo | |
32
+ | SEO | todo | |
33
+ | Technical Quality | todo | |
34
+ | Runtime Issues | todo | |
35
+ | Content Quality | todo | |
36
+
37
+ ## MCP Readiness
38
+
39
+ | MCP | Status | Reason |
40
+ | --- | --- | --- |
41
+ | GitHub | required | |
42
+ | Figma | optional | |
43
+ | Browser/Playwright | required | |
44
+ | Chrome DevTools | optional | |
45
+ | Deploy | required | |
46
+ | Sentry | optional | |
47
+ | Database | unused | |
48
+ | CMS | optional | |
49
+ | Collaboration | optional | |
50
+ | Research | optional | |
51
+
52
+ ## Refactor Plan
53
+
54
+ ### [P1] <task title>
55
+
56
+ - Category:
57
+ - Problem:
58
+ - Evidence:
59
+ - Impact:
60
+ - Effort:
61
+ - Pages:
62
+ - Recommended MCP:
63
+ - Codex prompt:
64
+ - Verification:
65
+ - Risks:
66
+
67
+ ## Prompt Pack
68
+
69
+ ### Codex repo intake
70
+
71
+ ```text
72
+ <prompt>
73
+ ```
74
+
75
+ ### Codex implementation
76
+
77
+ ```text
78
+ <prompt>
79
+ ```
80
+
81
+ ### Claude design review
82
+
83
+ ```text
84
+ <prompt>
85
+ ```
86
+
87
+ ## Handoff Report Draft
88
+
89
+ ### Executed Work
90
+
91
+ - Not run yet.
92
+
93
+ ### Verification Results
94
+
95
+ - Not run yet.
96
+
97
+ ### Remaining Risks
98
+
99
+ - Not run yet.
100
+
101
+ ### Next Actions
102
+
103
+ - Not run yet.
@@ -0,0 +1,176 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Generate CHANGELOG.md from git commit history.
4
+
5
+ Reads commits since the last tag (or all commits if no tags) and
6
+ formats them into a markdown changelog grouped by version.
7
+
8
+ Usage:
9
+ python3 tools/audit/changelog-generate.py [--since vN] [--output CHANGELOG.md]
10
+
11
+ Categorizes commits by conventional-commit prefix:
12
+ feat: → "Added"
13
+ fix: → "Fixed"
14
+ refactor: → "Changed"
15
+ docs: → "Documentation"
16
+ chore: → "Maintenance"
17
+ perf: → "Performance"
18
+
19
+ Skips commits matching ^(chore: bump|chore: release).
20
+ """
21
+ from __future__ import annotations
22
+
23
+ import argparse
24
+ import re
25
+ import subprocess
26
+ import sys
27
+ from datetime import date
28
+ from pathlib import Path
29
+
30
+ ROOT = Path(__file__).resolve().parents[2]
31
+
32
+
33
+ CATEGORY_MAP = {
34
+ "feat": "Added",
35
+ "fix": "Fixed",
36
+ "refactor": "Changed",
37
+ "docs": "Documentation",
38
+ "chore": "Maintenance",
39
+ "perf": "Performance",
40
+ "test": "Testing",
41
+ "ci": "CI/CD",
42
+ "build": "Build",
43
+ "style": "Style",
44
+ "revert": "Reverted",
45
+ }
46
+
47
+ SKIP_PATTERNS = [
48
+ r"^chore:\s*bump",
49
+ r"^chore:\s*release",
50
+ r"^Merge\s+",
51
+ ]
52
+
53
+
54
+ def run(cmd: list[str]) -> str:
55
+ return subprocess.run(cmd, capture_output=True, text=True, cwd=ROOT, check=True).stdout
56
+
57
+
58
+ def get_tags() -> list[str]:
59
+ out = run(["git", "tag", "--sort=-creatordate"])
60
+ return [t.strip() for t in out.splitlines() if t.strip()]
61
+
62
+
63
+ def get_commits_between(start: str | None, end: str = "HEAD") -> list[tuple[str, str, str]]:
64
+ """Return (sha, subject, date) tuples."""
65
+ if start:
66
+ rev_range = f"{start}..{end}"
67
+ else:
68
+ rev_range = end
69
+ out = run(["git", "log", "--pretty=format:%h|%s|%ad", "--date=short", rev_range])
70
+ commits = []
71
+ for line in out.splitlines():
72
+ if not line.strip():
73
+ continue
74
+ parts = line.split("|", 2)
75
+ if len(parts) == 3:
76
+ commits.append((parts[0], parts[1], parts[2]))
77
+ return commits
78
+
79
+
80
+ def should_skip(subject: str) -> bool:
81
+ for pattern in SKIP_PATTERNS:
82
+ if re.match(pattern, subject):
83
+ return True
84
+ return False
85
+
86
+
87
+ def categorize(subject: str) -> str:
88
+ match = re.match(r"^(\w+)(?:\(([^)]+)\))?:\s*(.+)$", subject)
89
+ if not match:
90
+ return "Other"
91
+ prefix = match.group(1).lower()
92
+ return CATEGORY_MAP.get(prefix, "Other")
93
+
94
+
95
+ def strip_prefix(subject: str) -> str:
96
+ """Remove the conventional-commit prefix from the subject for cleaner display."""
97
+ match = re.match(r"^(\w+)(?:\(([^)]+)\))?:\s*(.+)$", subject)
98
+ if match:
99
+ return match.group(3)
100
+ return subject
101
+
102
+
103
+ def render_section(version: str, commit_date: str, commits: list[tuple[str, str, str]]) -> str:
104
+ """Render one version section."""
105
+ if not commits:
106
+ return ""
107
+
108
+ by_category: dict[str, list[tuple[str, str]]] = {}
109
+ for sha, subject, _ in commits:
110
+ if should_skip(subject):
111
+ continue
112
+ cat = categorize(subject)
113
+ by_category.setdefault(cat, []).append((sha, strip_prefix(subject)))
114
+
115
+ if not by_category:
116
+ return ""
117
+
118
+ out = [f"## [{version}] — {commit_date}\n"]
119
+ # Order categories logically
120
+ order = ["Added", "Changed", "Fixed", "Removed", "Performance", "Documentation", "Testing", "CI/CD", "Build", "Maintenance", "Style", "Reverted", "Other"]
121
+ for cat in order:
122
+ if cat not in by_category:
123
+ continue
124
+ out.append(f"### {cat}\n")
125
+ for sha, subject in by_category[cat]:
126
+ out.append(f"- {subject} ({sha})")
127
+ out.append("")
128
+ return "\n".join(out)
129
+
130
+
131
+ def main() -> None:
132
+ parser = argparse.ArgumentParser(description=__doc__)
133
+ parser.add_argument("--since", help="Generate from this version backwards")
134
+ parser.add_argument("--output", default="CHANGELOG.md", help="Output file (default: CHANGELOG.md)")
135
+ parser.add_argument("--unreleased-version", default="Unreleased", help="Label for unreleased commits")
136
+ args = parser.parse_args()
137
+
138
+ output_path = ROOT / args.output
139
+
140
+ sections = [f"# Changelog\n\n_Generated by `tools/audit/changelog-generate.py` on {date.today().isoformat()}._\n"]
141
+
142
+ tags = get_tags()
143
+ if not tags:
144
+ # No tags — all commits as "Unreleased"
145
+ commits = get_commits_between(None)
146
+ sections.append(render_section(args.unreleased_version, date.today().isoformat(), commits))
147
+ else:
148
+ # Unreleased = HEAD .. latest tag
149
+ unreleased = get_commits_between(tags[0], "HEAD")
150
+ if unreleased:
151
+ sections.append(render_section(args.unreleased_version, date.today().isoformat(), unreleased))
152
+
153
+ # Each tag-to-tag range
154
+ for i, tag in enumerate(tags):
155
+ prev_tag = tags[i + 1] if i + 1 < len(tags) else None
156
+ commits = get_commits_between(prev_tag, tag)
157
+ tag_date_out = run(["git", "log", "-1", "--pretty=format:%ad", "--date=short", tag]).strip()
158
+ section = render_section(tag, tag_date_out, commits)
159
+ if section:
160
+ sections.append(section)
161
+
162
+ output_path.parent.mkdir(parents=True, exist_ok=True)
163
+ output_path.write_text("\n".join(s for s in sections if s) + "\n", encoding="utf-8")
164
+ try:
165
+ display_path = output_path.relative_to(ROOT)
166
+ except ValueError:
167
+ display_path = output_path
168
+ print(f"Wrote {display_path}")
169
+
170
+
171
+ if __name__ == "__main__":
172
+ try:
173
+ main()
174
+ except subprocess.CalledProcessError as e:
175
+ print(f"git command failed: {e.stderr}", file=sys.stderr)
176
+ sys.exit(1)