@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.
- package/.claude-plugin/plugin.json +164 -0
- package/AGENTS.ko.md +126 -0
- package/AGENTS.md +182 -0
- package/CHANGELOG.md +6883 -0
- package/CLAUDE.md +39 -0
- package/LICENSE +21 -0
- package/README.ko.md +245 -0
- package/README.md +277 -0
- package/agents/README.md +14 -0
- package/agents/a11y-reviewer.md +121 -0
- package/agents/component-architect.md +57 -0
- package/agents/design-critic.md +46 -0
- package/agents/token-extractor.md +63 -0
- package/cli/bin/design-ai-mcp.mjs +6 -0
- package/cli/bin/design-ai.mjs +40 -0
- package/cli/commands/audit.mjs +111 -0
- package/cli/commands/check.mjs +226 -0
- package/cli/commands/doctor.mjs +141 -0
- package/cli/commands/examples.mjs +58 -0
- package/cli/commands/help.mjs +271 -0
- package/cli/commands/install.mjs +161 -0
- package/cli/commands/learn.mjs +1871 -0
- package/cli/commands/list.mjs +143 -0
- package/cli/commands/mcp.mjs +27 -0
- package/cli/commands/pack.mjs +211 -0
- package/cli/commands/prompt.mjs +199 -0
- package/cli/commands/route.mjs +247 -0
- package/cli/commands/search.mjs +60 -0
- package/cli/commands/show.mjs +52 -0
- package/cli/commands/site.mjs +558 -0
- package/cli/commands/status.mjs +161 -0
- package/cli/commands/uninstall.mjs +119 -0
- package/cli/commands/update.mjs +184 -0
- package/cli/commands/version.mjs +94 -0
- package/cli/commands/workspace.mjs +176 -0
- package/cli/lib/brief.mjs +52 -0
- package/cli/lib/check.mjs +642 -0
- package/cli/lib/dispatch.mjs +109 -0
- package/cli/lib/doctor.mjs +505 -0
- package/cli/lib/examples.mjs +258 -0
- package/cli/lib/exec.mjs +63 -0
- package/cli/lib/help-flags.mjs +5 -0
- package/cli/lib/learn.mjs +3694 -0
- package/cli/lib/log.mjs +47 -0
- package/cli/lib/mcp-server.mjs +426 -0
- package/cli/lib/output.mjs +101 -0
- package/cli/lib/pack.mjs +599 -0
- package/cli/lib/paths.mjs +63 -0
- package/cli/lib/prompt.mjs +603 -0
- package/cli/lib/route.mjs +740 -0
- package/cli/lib/search.mjs +158 -0
- package/cli/lib/show.mjs +161 -0
- package/cli/lib/signals.mjs +2337 -0
- package/cli/lib/site.mjs +6617 -0
- package/cli/lib/skill-proposals.mjs +2046 -0
- package/cli/lib/suggest.mjs +66 -0
- package/cli/lib/workspace.mjs +1056 -0
- package/commands/README.md +25 -0
- package/commands/component-spec.md +34 -0
- package/commands/conversational.md +44 -0
- package/commands/design-from-brief.md +141 -0
- package/commands/design-review.md +62 -0
- package/commands/document-from-brief.md +47 -0
- package/commands/extract-tokens.md +38 -0
- package/commands/game-ui.md +40 -0
- package/commands/illustration.md +37 -0
- package/commands/iterate.md +167 -0
- package/commands/motion-design.md +54 -0
- package/commands/palette-from-brand.md +50 -0
- package/commands/print.md +49 -0
- package/commands/slide-deck.md +46 -0
- package/commands/spatial.md +47 -0
- package/commands/stability-review.md +74 -0
- package/commands/video.md +42 -0
- package/commands/website-improvement.md +77 -0
- package/docs/AGENT-DEVELOPMENT.md +658 -0
- package/docs/AI-LEARNING.md +429 -0
- package/docs/AIDER-INTEGRATION.md +224 -0
- package/docs/ARCHITECTURE.ko.md +183 -0
- package/docs/ARCHITECTURE.md +105 -0
- package/docs/CODEX-INTEGRATION.md +311 -0
- package/docs/COMPANY-WEBSITE-DOGFOOD.ko.md +144 -0
- package/docs/COMPANY-WEBSITE-DOGFOOD.md +150 -0
- package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.ko.md +153 -0
- package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.md +154 -0
- package/docs/CONTRIBUTING.ko.md +203 -0
- package/docs/CONTRIBUTING.md +242 -0
- package/docs/CURSOR-INTEGRATION.md +220 -0
- package/docs/DISTRIBUTION.ko.md +248 -0
- package/docs/DISTRIBUTION.md +253 -0
- package/docs/DOGFOOD-FINDINGS.md +180 -0
- package/docs/DOGFOOD-V4-FINDINGS.md +139 -0
- package/docs/DOGFOOD-V4-MKDOCS-FINDINGS.md +233 -0
- package/docs/DOGFOOD-V4-NPM-FINDINGS.md +157 -0
- package/docs/DOGFOOD-V4-VSCODE-FINDINGS.md +135 -0
- package/docs/FIGMA-INTEGRATION.md +222 -0
- package/docs/MCP-INTEGRATION.md +243 -0
- package/docs/MIGRATION-v4.md +121 -0
- package/docs/PLUGIN-PACKAGING.md +240 -0
- package/docs/PRODUCT-READINESS.md +66 -0
- package/docs/QUICKSTART.ko.md +178 -0
- package/docs/QUICKSTART.md +179 -0
- package/docs/RELEASE-CHECKLIST.md +292 -0
- package/docs/ROADMAP.md +19495 -0
- package/docs/SESSION-LOG.md +940 -0
- package/docs/TOKEN-SYNC.md +237 -0
- package/docs/USING.ko.md +206 -0
- package/docs/USING.md +218 -0
- package/docs/WEBSITE-IMPROVEMENT.ko.md +75 -0
- package/docs/WEBSITE-IMPROVEMENT.md +89 -0
- package/docs/announcements/README.md +56 -0
- package/docs/announcements/dev-to-korea.md +206 -0
- package/docs/announcements/hashnode-post.ko.md +232 -0
- package/docs/announcements/okky-post.ko.md +158 -0
- package/docs/announcements/press-kit.md +101 -0
- package/docs/announcements/reddit-r-korea.md +196 -0
- package/docs/announcements/show-hn.md +114 -0
- package/docs/announcements/twitter-thread.md +255 -0
- package/docs/external-status.md +34 -0
- package/docs/integrations/aider-walkthrough.ko.md +275 -0
- package/docs/integrations/aider-walkthrough.md +274 -0
- package/docs/integrations/codex-walkthrough.ko.md +297 -0
- package/docs/integrations/codex-walkthrough.md +297 -0
- package/docs/integrations/cursor-walkthrough.ko.md +281 -0
- package/docs/integrations/cursor-walkthrough.md +284 -0
- package/docs/integrations/design-ai-mcp-server.md +169 -0
- package/docs/integrations/figma-mcp.md +149 -0
- package/docs/integrations/github-mcp.md +178 -0
- package/docs/integrations/linear-mcp.md +215 -0
- package/docs/integrations/notion-mcp.md +174 -0
- package/docs/integrations/sdk-walkthrough.ko.md +375 -0
- package/docs/integrations/sdk-walkthrough.md +375 -0
- package/docs/integrations/slack-mcp.md +208 -0
- package/docs/integrations/vscode-walkthrough.ko.md +202 -0
- package/docs/integrations/vscode-walkthrough.md +205 -0
- package/docs/requirements.txt +16 -0
- package/docs/site-overrides/extra.css +83 -0
- package/docs/site-overrides/favicon.svg +4 -0
- package/docs/site-overrides/logo.svg +10 -0
- package/docs/site-overrides/main.html +18 -0
- package/docs/website-console/app.js +2540 -0
- package/docs/website-console/index.html +24 -0
- package/docs/website-console/styles.css +975 -0
- package/examples/README.md +252 -0
- package/examples/cases/dogfood-v4-korean-hr-onboarding.md +356 -0
- package/examples/component-accordion-actions.md +153 -0
- package/examples/component-accordion-details.md +147 -0
- package/examples/component-accordion-summary.md +180 -0
- package/examples/component-accordion.md +229 -0
- package/examples/component-account-card.md +284 -0
- package/examples/component-address-input.md +260 -0
- package/examples/component-affix.md +190 -0
- package/examples/component-alert-dialog.md +210 -0
- package/examples/component-alert-title.md +77 -0
- package/examples/component-alert.md +192 -0
- package/examples/component-amount-input.md +278 -0
- package/examples/component-anchor.md +198 -0
- package/examples/component-app-bar.md +249 -0
- package/examples/component-aspect-ratio.md +156 -0
- package/examples/component-auto-complete.md +199 -0
- package/examples/component-avatar-group.md +170 -0
- package/examples/component-avatar.md +191 -0
- package/examples/component-back-top.md +123 -0
- package/examples/component-backdrop.md +148 -0
- package/examples/component-badge.md +181 -0
- package/examples/component-banner.md +237 -0
- package/examples/component-biometric-gate.md +281 -0
- package/examples/component-blockquote.md +153 -0
- package/examples/component-border-beam.md +207 -0
- package/examples/component-bottom-navigation.md +226 -0
- package/examples/component-box.md +112 -0
- package/examples/component-breadcrumb.md +222 -0
- package/examples/component-button-base.md +190 -0
- package/examples/component-button-group.md +117 -0
- package/examples/component-button.md +213 -0
- package/examples/component-calendar.md +280 -0
- package/examples/component-callout.md +131 -0
- package/examples/component-card-actions.md +101 -0
- package/examples/component-card-content.md +90 -0
- package/examples/component-card-header.md +122 -0
- package/examples/component-card-media.md +79 -0
- package/examples/component-card.md +233 -0
- package/examples/component-carousel.md +266 -0
- package/examples/component-cascader.md +135 -0
- package/examples/component-category-picker.md +271 -0
- package/examples/component-chart.md +237 -0
- package/examples/component-chat-interface.md +399 -0
- package/examples/component-checkbox.md +149 -0
- package/examples/component-click-away-listener.md +87 -0
- package/examples/component-code.md +213 -0
- package/examples/component-collapsible.md +219 -0
- package/examples/component-color-picker.md +110 -0
- package/examples/component-combobox.md +267 -0
- package/examples/component-command.md +299 -0
- package/examples/component-config-provider.md +190 -0
- package/examples/component-context-menu.md +179 -0
- package/examples/component-css-baseline.md +148 -0
- package/examples/component-date-picker.md +249 -0
- package/examples/component-descriptions.md +242 -0
- package/examples/component-dialog-actions.md +111 -0
- package/examples/component-dialog-content-text.md +76 -0
- package/examples/component-dialog-content.md +105 -0
- package/examples/component-dialog-title.md +104 -0
- package/examples/component-dialog.md +176 -0
- package/examples/component-divider.md +182 -0
- package/examples/component-doc-page.md +217 -0
- package/examples/component-drawer.md +257 -0
- package/examples/component-dropdown.md +220 -0
- package/examples/component-email-layout.md +253 -0
- package/examples/component-empty-state.md +269 -0
- package/examples/component-empty.md +172 -0
- package/examples/component-fade.md +87 -0
- package/examples/component-feature-grid.md +201 -0
- package/examples/component-field.md +266 -0
- package/examples/component-filled-input.md +114 -0
- package/examples/component-flex.md +117 -0
- package/examples/component-float-button.md +214 -0
- package/examples/component-form-control-label.md +134 -0
- package/examples/component-form-control.md +113 -0
- package/examples/component-form-controls.md +251 -0
- package/examples/component-form-group.md +86 -0
- package/examples/component-form-helper-text.md +95 -0
- package/examples/component-form-label.md +98 -0
- package/examples/component-form.md +291 -0
- package/examples/component-game-hud.md +362 -0
- package/examples/component-game-menu.md +327 -0
- package/examples/component-grid.md +140 -0
- package/examples/component-grow.md +79 -0
- package/examples/component-hero-block.md +252 -0
- package/examples/component-hover-card.md +211 -0
- package/examples/component-icon-button.md +142 -0
- package/examples/component-icon.md +102 -0
- package/examples/component-illustration.md +280 -0
- package/examples/component-image-list.md +107 -0
- package/examples/component-image.md +282 -0
- package/examples/component-input-adornment.md +101 -0
- package/examples/component-input-base.md +134 -0
- package/examples/component-input-number.md +141 -0
- package/examples/component-input-otp.md +271 -0
- package/examples/component-input.md +213 -0
- package/examples/component-item.md +243 -0
- package/examples/component-kbd.md +197 -0
- package/examples/component-krw-amount.md +219 -0
- package/examples/component-label.md +118 -0
- package/examples/component-layout.md +217 -0
- package/examples/component-link.md +223 -0
- package/examples/component-list-item-avatar.md +72 -0
- package/examples/component-list-item-button.md +139 -0
- package/examples/component-list-item-icon.md +82 -0
- package/examples/component-list-item-text.md +98 -0
- package/examples/component-list-item.md +116 -0
- package/examples/component-list-subheader.md +70 -0
- package/examples/component-list.md +198 -0
- package/examples/component-loading-button.md +125 -0
- package/examples/component-loading-sequence.md +254 -0
- package/examples/component-lottie-player.md +279 -0
- package/examples/component-masonry.md +191 -0
- package/examples/component-mentions.md +189 -0
- package/examples/component-menu-item.md +102 -0
- package/examples/component-menu-list.md +98 -0
- package/examples/component-menu.md +139 -0
- package/examples/component-menubar.md +259 -0
- package/examples/component-message.md +162 -0
- package/examples/component-mobile-stepper.md +155 -0
- package/examples/component-modal.md +220 -0
- package/examples/component-navigation-menu.md +295 -0
- package/examples/component-notification.md +166 -0
- package/examples/component-otp-countdown.md +245 -0
- package/examples/component-outlined-input.md +145 -0
- package/examples/component-page-transition.md +281 -0
- package/examples/component-pagination.md +226 -0
- package/examples/component-paper.md +199 -0
- package/examples/component-pass-auth.md +265 -0
- package/examples/component-payment-brand-button.md +253 -0
- package/examples/component-payment-method-selector.md +272 -0
- package/examples/component-payment-receipt.md +277 -0
- package/examples/component-popconfirm.md +144 -0
- package/examples/component-popover.md +239 -0
- package/examples/component-popper.md +129 -0
- package/examples/component-pricing-cards.md +247 -0
- package/examples/component-progress.md +195 -0
- package/examples/component-qr-code.md +201 -0
- package/examples/component-radio.md +167 -0
- package/examples/component-rate.md +202 -0
- package/examples/component-resizable.md +163 -0
- package/examples/component-result.md +270 -0
- package/examples/component-scroll-area.md +199 -0
- package/examples/component-scroll-reveal.md +320 -0
- package/examples/component-segmented.md +178 -0
- package/examples/component-select.md +258 -0
- package/examples/component-separator.md +177 -0
- package/examples/component-sheet.md +277 -0
- package/examples/component-sidebar.md +257 -0
- package/examples/component-skeleton.md +178 -0
- package/examples/component-slide.md +89 -0
- package/examples/component-slider.md +208 -0
- package/examples/component-snackbar-content.md +92 -0
- package/examples/component-snackbar.md +121 -0
- package/examples/component-sonner.md +165 -0
- package/examples/component-space.md +125 -0
- package/examples/component-spatial-locomotion.md +373 -0
- package/examples/component-spatial-panel.md +330 -0
- package/examples/component-speed-dial-action.md +78 -0
- package/examples/component-speed-dial.md +177 -0
- package/examples/component-spin.md +173 -0
- package/examples/component-spinner.md +204 -0
- package/examples/component-splitter.md +210 -0
- package/examples/component-stack.md +130 -0
- package/examples/component-statistic.md +282 -0
- package/examples/component-step-button.md +157 -0
- package/examples/component-step-connector.md +157 -0
- package/examples/component-step-content.md +121 -0
- package/examples/component-step-icon.md +115 -0
- package/examples/component-step-label.md +101 -0
- package/examples/component-step.md +84 -0
- package/examples/component-steps.md +264 -0
- package/examples/component-stock-chart.md +251 -0
- package/examples/component-swipeable-drawer.md +149 -0
- package/examples/component-switch.md +99 -0
- package/examples/component-tab-scroll-button.md +180 -0
- package/examples/component-tab.md +120 -0
- package/examples/component-table-body.md +82 -0
- package/examples/component-table-cell.md +118 -0
- package/examples/component-table-container.md +75 -0
- package/examples/component-table-footer.md +72 -0
- package/examples/component-table-head.md +78 -0
- package/examples/component-table-pagination.md +137 -0
- package/examples/component-table-row.md +113 -0
- package/examples/component-table-sort-label.md +109 -0
- package/examples/component-table.md +202 -0
- package/examples/component-tabs.md +184 -0
- package/examples/component-tag-badge.md +309 -0
- package/examples/component-tag.md +102 -0
- package/examples/component-testimonial-carousel.md +218 -0
- package/examples/component-textarea-autosize.md +114 -0
- package/examples/component-textarea.md +173 -0
- package/examples/component-time-picker.md +205 -0
- package/examples/component-timeline.md +170 -0
- package/examples/component-toast.md +224 -0
- package/examples/component-toggle-button.md +129 -0
- package/examples/component-toggle.md +220 -0
- package/examples/component-toolbar.md +104 -0
- package/examples/component-tooltip.md +178 -0
- package/examples/component-tour.md +176 -0
- package/examples/component-transaction-list-item.md +243 -0
- package/examples/component-transfer.md +156 -0
- package/examples/component-tree-select.md +202 -0
- package/examples/component-tree.md +297 -0
- package/examples/component-typography.md +215 -0
- package/examples/component-upload.md +295 -0
- package/examples/component-video-hero.md +409 -0
- package/examples/component-video-player.md +340 -0
- package/examples/component-voice-input.md +408 -0
- package/examples/component-watermark.md +217 -0
- package/examples/component-zoom.md +92 -0
- package/examples/doc-explanation-example.md +196 -0
- package/examples/doc-how-to-example.md +205 -0
- package/examples/doc-tutorial-example.md +162 -0
- package/examples/dogfood-korean-fintech-system.md +433 -0
- package/examples/email-transactional-example.md +259 -0
- package/examples/palette-saas-violet.md +235 -0
- package/examples/print-business-card-spec.md +205 -0
- package/examples/print-packaging-spec.md +285 -0
- package/examples/report-example.md +228 -0
- package/examples/slide-deck-example.md +237 -0
- package/examples/website-improvement-report.md +128 -0
- package/examples/website-improvement-workspace.json +126 -0
- package/install.sh +189 -0
- package/knowledge/COVERAGE.md +740 -0
- package/knowledge/PRINCIPLES.md +108 -0
- package/knowledge/a11y/contrast.md +70 -0
- package/knowledge/a11y/keyboard-and-focus.md +108 -0
- package/knowledge/colors/color-theory.md +90 -0
- package/knowledge/colors/mui-palette-structure.md +105 -0
- package/knowledge/colors/palettes-by-product-type.md +876 -0
- package/knowledge/components/INDEX.md +231 -0
- package/knowledge/components/index.json +1470 -0
- package/knowledge/components/shadcn-registry.md +159 -0
- package/knowledge/conversational/ai-chat-interfaces.md +323 -0
- package/knowledge/conversational/chatbot-design.md +312 -0
- package/knowledge/conversational/conversational-ui-fundamentals.md +299 -0
- package/knowledge/conversational/korean-voice-conventions.md +281 -0
- package/knowledge/conversational/voice-ui-patterns.md +297 -0
- package/knowledge/design-tokens/ant-design.md +124 -0
- package/knowledge/design-tokens/material-3.md +235 -0
- package/knowledge/design-tokens/polaris-and-carbon.md +231 -0
- package/knowledge/design-tokens/tailwind-v4.md +284 -0
- package/knowledge/game-ui/game-accessibility.md +317 -0
- package/knowledge/game-ui/game-ui-fundamentals.md +281 -0
- package/knowledge/game-ui/hud-design.md +324 -0
- package/knowledge/game-ui/korean-gaming-conventions.md +312 -0
- package/knowledge/game-ui/menu-systems.md +388 -0
- package/knowledge/i18n/korean-app-store-visual.md +223 -0
- package/knowledge/i18n/korean-document-style.md +301 -0
- package/knowledge/i18n/korean-payments.md +211 -0
- package/knowledge/i18n/korean-product-conventions.md +96 -0
- package/knowledge/i18n/korean-publishing.md +139 -0
- package/knowledge/i18n/korean-typography.md +123 -0
- package/knowledge/icons/curated-sets.md +225 -0
- package/knowledge/illustration/hero-illustrations.md +234 -0
- package/knowledge/illustration/illustration-systems.md +221 -0
- package/knowledge/illustration/mascot-design.md +208 -0
- package/knowledge/illustration/spot-illustrations.md +246 -0
- package/knowledge/illustration/svg-optimization.md +308 -0
- package/knowledge/layout/spacing-and-grid.md +119 -0
- package/knowledge/motion/app-loading-sequences.md +277 -0
- package/knowledge/motion/choreography-depth.md +297 -0
- package/knowledge/motion/marketing-motion.md +223 -0
- package/knowledge/motion/micro-interactions.md +266 -0
- package/knowledge/motion/motion-tools.md +281 -0
- package/knowledge/motion/principles.md +126 -0
- package/knowledge/patterns/auth-flow-design.md +316 -0
- package/knowledge/patterns/b2b-onboarding-flows.md +182 -0
- package/knowledge/patterns/brand-identity.md +238 -0
- package/knowledge/patterns/brand-references.md +97 -0
- package/knowledge/patterns/chart-color-encoding.md +269 -0
- package/knowledge/patterns/chart-types.md +344 -0
- package/knowledge/patterns/dashboard-composition.md +299 -0
- package/knowledge/patterns/design-system-qa.md +356 -0
- package/knowledge/patterns/document-typography.md +248 -0
- package/knowledge/patterns/email-design.md +338 -0
- package/knowledge/patterns/empty-states.md +263 -0
- package/knowledge/patterns/error-states.md +318 -0
- package/knowledge/patterns/form-design.md +237 -0
- package/knowledge/patterns/information-architecture.md +341 -0
- package/knowledge/patterns/landing-hero-design.md +283 -0
- package/knowledge/patterns/landing-page-patterns.md +681 -0
- package/knowledge/patterns/list-and-feed.md +371 -0
- package/knowledge/patterns/mobile-navigation.md +278 -0
- package/knowledge/patterns/money-and-amount.md +301 -0
- package/knowledge/patterns/onboarding.md +300 -0
- package/knowledge/patterns/pricing-page-design.md +261 -0
- package/knowledge/patterns/realtime-data.md +280 -0
- package/knowledge/patterns/report-design.md +330 -0
- package/knowledge/patterns/search-ux.md +373 -0
- package/knowledge/patterns/settings-page.md +325 -0
- package/knowledge/patterns/slide-deck-design.md +316 -0
- package/knowledge/patterns/styles-catalog.md +2599 -0
- package/knowledge/patterns/technical-writing.md +306 -0
- package/knowledge/patterns/ui-reasoning.md +1853 -0
- package/knowledge/patterns/ux-guidelines.md +1454 -0
- package/knowledge/platforms/react-native.md +395 -0
- package/knowledge/print/brochures-and-flyers.md +276 -0
- package/knowledge/print/korean-print-conventions.md +284 -0
- package/knowledge/print/packaging.md +321 -0
- package/knowledge/print/print-fundamentals.md +238 -0
- package/knowledge/print/signage-and-posters.md +235 -0
- package/knowledge/print/stationery.md +262 -0
- package/knowledge/spatial/ar-patterns.md +253 -0
- package/knowledge/spatial/comfort-and-accessibility.md +245 -0
- package/knowledge/spatial/spatial-design-fundamentals.md +346 -0
- package/knowledge/spatial/spatial-ui-elements.md +343 -0
- package/knowledge/spatial/vr-patterns.md +302 -0
- package/knowledge/typography/font-pairings.md +332 -0
- package/knowledge/typography/mui-type-scale.md +57 -0
- package/knowledge/typography/type-scale-fundamentals.md +105 -0
- package/knowledge/video/in-product-video.md +277 -0
- package/knowledge/video/korean-video-conventions.md +247 -0
- package/knowledge/video/marketing-video.md +258 -0
- package/knowledge/video/social-and-short-form.md +257 -0
- package/knowledge/video/video-fundamentals.md +296 -0
- package/package.json +106 -0
- package/skills/README.md +39 -0
- package/skills/color-palette/PLAYBOOK.md +175 -0
- package/skills/color-palette/SKILL.md +6 -0
- package/skills/color-palette/TEMPLATE.md +103 -0
- package/skills/component-spec-writer/PLAYBOOK.md +169 -0
- package/skills/component-spec-writer/SKILL.md +6 -0
- package/skills/component-spec-writer/TEMPLATE.md +115 -0
- package/skills/conversational-ui-designer/PLAYBOOK.md +231 -0
- package/skills/conversational-ui-designer/SKILL.md +6 -0
- package/skills/design-broadcast/PLAYBOOK.md +146 -0
- package/skills/design-broadcast/SKILL.md +6 -0
- package/skills/design-critique/PLAYBOOK.md +137 -0
- package/skills/design-critique/SKILL.md +6 -0
- package/skills/design-pr-review/PLAYBOOK.md +171 -0
- package/skills/design-pr-review/SKILL.md +6 -0
- package/skills/design-system-builder/PLAYBOOK.md +218 -0
- package/skills/design-system-builder/SKILL.md +6 -0
- package/skills/design-system-qa/PLAYBOOK.md +163 -0
- package/skills/design-system-qa/SKILL.md +6 -0
- package/skills/document-author/PLAYBOOK.md +167 -0
- package/skills/document-author/SKILL.md +6 -0
- package/skills/figma-token-sync/PLAYBOOK.md +149 -0
- package/skills/figma-token-sync/SKILL.md +6 -0
- package/skills/game-ui-designer/PLAYBOOK.md +209 -0
- package/skills/game-ui-designer/SKILL.md +6 -0
- package/skills/handoff-spec/PLAYBOOK.md +170 -0
- package/skills/handoff-spec/SKILL.md +6 -0
- package/skills/illustration-designer/PLAYBOOK.md +166 -0
- package/skills/illustration-designer/SKILL.md +6 -0
- package/skills/motion-designer/PLAYBOOK.md +223 -0
- package/skills/motion-designer/SKILL.md +6 -0
- package/skills/print-designer/PLAYBOOK.md +209 -0
- package/skills/print-designer/SKILL.md +6 -0
- package/skills/slide-deck-author/PLAYBOOK.md +198 -0
- package/skills/slide-deck-author/SKILL.md +6 -0
- package/skills/spatial-designer/PLAYBOOK.md +238 -0
- package/skills/spatial-designer/SKILL.md +6 -0
- package/skills/ux-audit/PLAYBOOK.md +142 -0
- package/skills/ux-audit/SKILL.md +6 -0
- package/skills/video-designer/PLAYBOOK.md +240 -0
- package/skills/video-designer/SKILL.md +6 -0
- package/skills/website-improvement/PLAYBOOK.md +118 -0
- package/skills/website-improvement/SKILL.md +6 -0
- package/skills/website-improvement/TEMPLATE.md +103 -0
- package/tools/audit/changelog-generate.py +176 -0
- package/tools/audit/check-coverage.py +483 -0
- package/tools/audit/doctor_assertions.py +256 -0
- package/tools/audit/example-qa.py +108 -0
- package/tools/audit/frontmatter-check.py +199 -0
- package/tools/audit/integration-check.py +95 -0
- package/tools/audit/korean-copy-check.py +161 -0
- package/tools/audit/link-check.py +146 -0
- package/tools/audit/local-ci.py +558 -0
- package/tools/audit/package-contents.py +723 -0
- package/tools/audit/package-smoke.py +22443 -0
- package/tools/audit/raw-hex-check.py +252 -0
- package/tools/audit/registry-smoke.py +8188 -0
- package/tools/audit/release-metadata.py +9832 -0
- package/tools/audit/run-all.py +351 -0
- package/tools/audit/smoke_assertions.py +12742 -0
- package/tools/audit/stability-review.py +332 -0
- package/tools/audit/stale-check.py +156 -0
- package/tools/migrations/add-version-frontmatter.py +132 -0
- package/tools/migrations/bump-last-updated.py +131 -0
- package/tools/migrations/promote-stability.py +172 -0
- package/tools/preview/README.md +58 -0
- package/tools/preview/render-tokens.py +454 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
<!-- hand-written -->
|
|
2
|
+
---
|
|
3
|
+
title: Video fundamentals (codecs, resolution, framerate, bitrate, captions)
|
|
4
|
+
applies_to: [video, production, encoding, accessibility]
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
last_updated: 2026-05
|
|
7
|
+
stability: stable
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Video fundamentals
|
|
11
|
+
|
|
12
|
+
Designing for video means thinking about more than visual composition. Every video has technical specs (codec, resolution, framerate, bitrate, audio) that determine quality, file size, compatibility, and accessibility.
|
|
13
|
+
|
|
14
|
+
This file is the foundation for [`marketing-video.md`](marketing-video.md), [`social-and-short-form.md`](social-and-short-form.md), [`in-product-video.md`](in-product-video.md), and [`korean-video-conventions.md`](korean-video-conventions.md).
|
|
15
|
+
|
|
16
|
+
## Resolution
|
|
17
|
+
|
|
18
|
+
| Name | Pixels | Aspect | Use |
|
|
19
|
+
| --- | --- | --- | --- |
|
|
20
|
+
| **SD** | 720 × 480 | 4:3 | Legacy; rare today |
|
|
21
|
+
| **HD / 720p** | 1280 × 720 | 16:9 | Mid-quality web |
|
|
22
|
+
| **Full HD / 1080p** | 1920 × 1080 | 16:9 | Most common; YouTube standard |
|
|
23
|
+
| **2K** | 2048 × 1080 | 17:9 | Cinema |
|
|
24
|
+
| **4K UHD** | 3840 × 2160 | 16:9 | Premium delivery; 4× of 1080p |
|
|
25
|
+
| **8K UHD** | 7680 × 4320 | 16:9 | Future; rare delivery |
|
|
26
|
+
| **Vertical 1080** | 1080 × 1920 | 9:16 | Reels, Shorts, TikTok |
|
|
27
|
+
| **Square 1080** | 1080 × 1080 | 1:1 | Instagram feed |
|
|
28
|
+
|
|
29
|
+
Default delivery: **1080p (1920×1080)** for landscape, **1080×1920** for vertical. Shoot at 4K when possible (gives reframe headroom in post).
|
|
30
|
+
|
|
31
|
+
## Framerate (fps)
|
|
32
|
+
|
|
33
|
+
| fps | Use |
|
|
34
|
+
| --- | --- |
|
|
35
|
+
| **24** | Cinematic / film aesthetic |
|
|
36
|
+
| **25** | PAL broadcast (KR uses NTSC, but online is fps-agnostic) |
|
|
37
|
+
| **30 (29.97)** | NTSC broadcast; default for many online platforms |
|
|
38
|
+
| **48 / 50** | High-frame "soap opera" effect |
|
|
39
|
+
| **60** | Smooth motion, sports, gaming |
|
|
40
|
+
| **120+** | Slow-motion source (slowed in post) |
|
|
41
|
+
|
|
42
|
+
Default: **30fps** for product / marketing. **60fps** for product demos with motion (UI scrolling, gaming, fast action). **24fps** for cinematic / brand storytelling.
|
|
43
|
+
|
|
44
|
+
Don't mix framerates within a single video — looks weird at cuts.
|
|
45
|
+
|
|
46
|
+
## Codec and container
|
|
47
|
+
|
|
48
|
+
| Container | Codec | Use |
|
|
49
|
+
| --- | --- | --- |
|
|
50
|
+
| **MP4** | H.264 (AVC) | Universal compatibility; default delivery |
|
|
51
|
+
| **MP4** | H.265 (HEVC) | 50% smaller files at same quality; 2024+ widely supported |
|
|
52
|
+
| **WebM** | VP9 | YouTube uses; smaller than H.264 |
|
|
53
|
+
| **WebM** | AV1 | Newest; smallest files; nascent support |
|
|
54
|
+
| **MOV** | ProRes | Editing master format; huge files |
|
|
55
|
+
| **MKV** | Various | Personal libraries; not for delivery |
|
|
56
|
+
|
|
57
|
+
For web delivery in 2024+: **MP4 / H.264** for compatibility, **MP4 / H.265** or **WebM / AV1** for smaller file size. Provide both; let the browser pick.
|
|
58
|
+
|
|
59
|
+
## Bitrate
|
|
60
|
+
|
|
61
|
+
Bitrate = data per second. Higher = better quality + larger files.
|
|
62
|
+
|
|
63
|
+
| Resolution | fps | Bitrate (Mbps) for streaming |
|
|
64
|
+
| --- | --- | --- |
|
|
65
|
+
| 720p | 30 | 2.5-5 |
|
|
66
|
+
| 1080p | 30 | 5-10 |
|
|
67
|
+
| 1080p | 60 | 8-12 |
|
|
68
|
+
| 4K | 30 | 15-25 |
|
|
69
|
+
| 4K | 60 | 25-50 |
|
|
70
|
+
|
|
71
|
+
For landing page autoplay video: **target 1-3 Mbps** (small file size, optimized for mobile data). Compress aggressively; the eye forgives more than designers expect.
|
|
72
|
+
|
|
73
|
+
For YouTube delivery: YouTube re-encodes anyway, so upload at higher bitrate (10-50 Mbps for 1080p source) and let the platform optimize.
|
|
74
|
+
|
|
75
|
+
## Audio
|
|
76
|
+
|
|
77
|
+
| Spec | Default |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| Codec | AAC |
|
|
80
|
+
| Sample rate | 48 kHz |
|
|
81
|
+
| Channels | Stereo (2 ch) |
|
|
82
|
+
| Bitrate | 128-256 kbps |
|
|
83
|
+
|
|
84
|
+
For voice-only / product demos: 96-128 kbps mono is enough.
|
|
85
|
+
For music / cinematic: 192-256 kbps stereo.
|
|
86
|
+
|
|
87
|
+
### Loudness
|
|
88
|
+
|
|
89
|
+
Online platforms normalize loudness:
|
|
90
|
+
- **YouTube**: -14 LUFS integrated.
|
|
91
|
+
- **Instagram / TikTok**: -14 LUFS approx.
|
|
92
|
+
- **Cinema**: -23 to -27 LUFS.
|
|
93
|
+
- **Broadcast (KR)**: -23 LUFS (방송통신위원회 standard).
|
|
94
|
+
|
|
95
|
+
Mix to **-14 LUFS** for online delivery. Going louder = platforms turn it down. Going much quieter = users can't hear, abandon video.
|
|
96
|
+
|
|
97
|
+
### Audio matters more than designers think
|
|
98
|
+
|
|
99
|
+
Bad audio = users abandon faster than bad video. A pristine 4K shot with hissy audio reads as amateur. A blurry phone-shot with crisp audio reads as authentic.
|
|
100
|
+
|
|
101
|
+
Invest in:
|
|
102
|
+
- A real microphone (lavalier, shotgun, USB condenser).
|
|
103
|
+
- Quiet recording environment.
|
|
104
|
+
- Audio leveling in post.
|
|
105
|
+
|
|
106
|
+
## Color space
|
|
107
|
+
|
|
108
|
+
| Color space | Use |
|
|
109
|
+
| --- | --- |
|
|
110
|
+
| **sRGB / Rec. 709** | Standard web / HD; default |
|
|
111
|
+
| **DCI-P3** | Wider gamut; modern displays; iPhone standard |
|
|
112
|
+
| **Rec. 2020** | 4K / HDR; future |
|
|
113
|
+
| **HDR (HDR10, Dolby Vision)** | Premium content with bright highlights |
|
|
114
|
+
|
|
115
|
+
Default delivery: **Rec. 709 (sRGB equivalent)**. HDR for premium / cinematic only — most users don't have HDR displays.
|
|
116
|
+
|
|
117
|
+
For Korean video: most platforms still SDR. HDR is "nice to have" but not standard.
|
|
118
|
+
|
|
119
|
+
## Aspect ratios
|
|
120
|
+
|
|
121
|
+
| Ratio | Use |
|
|
122
|
+
| --- | --- |
|
|
123
|
+
| **16:9 (1.78)** | YouTube, TV, landscape default |
|
|
124
|
+
| **9:16 (0.56)** | Vertical (TikTok, Reels, Shorts, Stories) |
|
|
125
|
+
| **1:1 (1.0)** | Instagram feed, square crops |
|
|
126
|
+
| **4:5 (0.8)** | Instagram feed (taller, more screen) |
|
|
127
|
+
| **2.35:1 / 2.39:1** | Cinema widescreen (anamorphic) |
|
|
128
|
+
| **2:1 (2.0)** | Modern shows (Stranger Things etc.) |
|
|
129
|
+
|
|
130
|
+
Plan ratio at shoot time. Cropping 16:9 to 9:16 wastes ~70% of frame and rarely works. Shoot 4K 16:9 if you need both 16:9 + 1:1 outputs (1:1 crops from center).
|
|
131
|
+
|
|
132
|
+
## File size estimation
|
|
133
|
+
|
|
134
|
+
Rough formula: **resolution × fps × bitrate × duration**.
|
|
135
|
+
|
|
136
|
+
| Output | 30 sec file size |
|
|
137
|
+
| --- | --- |
|
|
138
|
+
| 1080p / 30fps / 5 Mbps | ~19 MB |
|
|
139
|
+
| 1080p / 30fps / 2 Mbps (web optimized) | ~7.5 MB |
|
|
140
|
+
| 4K / 30fps / 25 Mbps | ~94 MB |
|
|
141
|
+
| Vertical 1080 / 30fps / 3 Mbps | ~11 MB |
|
|
142
|
+
|
|
143
|
+
For autoplay marketing video: **target < 5MB for 5-15 second loops**. Above that, mobile users on cellular abandon.
|
|
144
|
+
|
|
145
|
+
## Captions and subtitles
|
|
146
|
+
|
|
147
|
+
### Why captions matter
|
|
148
|
+
|
|
149
|
+
- **Accessibility**: deaf / hard-of-hearing users.
|
|
150
|
+
- **Sound-off viewing**: 80%+ of social video viewed muted.
|
|
151
|
+
- **Non-native speakers**: Korean → English markets, etc.
|
|
152
|
+
- **SEO**: caption text indexed by search engines.
|
|
153
|
+
- **Watch-time**: captioned videos retain viewers longer.
|
|
154
|
+
|
|
155
|
+
### Format
|
|
156
|
+
|
|
157
|
+
| Format | Use |
|
|
158
|
+
| --- | --- |
|
|
159
|
+
| **SRT** (.srt) | Universal; simplest |
|
|
160
|
+
| **WebVTT** (.vtt) | Web video standard; supports styling |
|
|
161
|
+
| **TTML** | Broadcast / cinema |
|
|
162
|
+
| **Burned-in (open captions)** | Always-visible; can't disable |
|
|
163
|
+
|
|
164
|
+
For web video: **WebVTT** sidecar files; let the platform / `<track>` element load them.
|
|
165
|
+
|
|
166
|
+
For social video where captions need to be always-visible: burn them in at editing time (1-2 second visibility per phrase, styled to match brand).
|
|
167
|
+
|
|
168
|
+
### Caption styling
|
|
169
|
+
|
|
170
|
+
- **Position**: bottom center; avoid bottom 5% (cut off on some screens) — use bottom 10-15%.
|
|
171
|
+
- **Background**: semi-opaque dark band behind text.
|
|
172
|
+
- **Font**: sans-serif, condensed (more text fits per line).
|
|
173
|
+
- **Size**: 4-6% of video height (1080p video = 40-60px).
|
|
174
|
+
- **Line length**: ≤ 32 characters per line; ≤ 2 lines visible at once.
|
|
175
|
+
- **Duration**: 1-7 seconds per caption; align with speech.
|
|
176
|
+
|
|
177
|
+
### Korean captions
|
|
178
|
+
|
|
179
|
+
- **Hangul reads larger** at the same point size — slightly smaller font OK (3.5-5% of video height).
|
|
180
|
+
- **Line breaks**: break at natural phrase boundaries, not character count.
|
|
181
|
+
- **자막 vs 폐쇄자막** — 자막 is open / always visible; 폐쇄자막 is closed / toggleable.
|
|
182
|
+
|
|
183
|
+
### Auto-captioning
|
|
184
|
+
|
|
185
|
+
Tools:
|
|
186
|
+
- **YouTube** auto-captions: decent for English; OK for Korean; always review.
|
|
187
|
+
- **Whisper (OpenAI)** open-source; excellent quality including Korean.
|
|
188
|
+
- **Otter.ai / Rev / Descript**: paid services with auto + human review.
|
|
189
|
+
- **Capcut, Canva Video**: built-in for short-form / social.
|
|
190
|
+
|
|
191
|
+
Workflow: auto-generate → human review → export SRT / VTT → embed.
|
|
192
|
+
|
|
193
|
+
## Loop video for marketing
|
|
194
|
+
|
|
195
|
+
For autoplay landing-page hero loops:
|
|
196
|
+
|
|
197
|
+
| Spec | Target |
|
|
198
|
+
| --- | --- |
|
|
199
|
+
| Duration | 5-15 seconds, seamlessly looping |
|
|
200
|
+
| Resolution | 1080p source, often delivered at 720p |
|
|
201
|
+
| Bitrate | 1-3 Mbps |
|
|
202
|
+
| Audio | None (silent — autoplay browsers mute anyway) |
|
|
203
|
+
| Format | MP4 (H.264) + WebM (VP9) for fallback |
|
|
204
|
+
| Poster | Static frame for slow connections + reduced-motion |
|
|
205
|
+
|
|
206
|
+
Optimization:
|
|
207
|
+
- Use `ffmpeg -movflags +faststart` so video starts streaming before fully loaded.
|
|
208
|
+
- Compress aggressively — landing-page video doesn't need 4K.
|
|
209
|
+
- Provide `<video poster="...">` so something shows during load.
|
|
210
|
+
|
|
211
|
+
## Production format vs delivery format
|
|
212
|
+
|
|
213
|
+
Two stages:
|
|
214
|
+
|
|
215
|
+
### Production (master)
|
|
216
|
+
|
|
217
|
+
- 4K source if possible (gives crop / reframe headroom).
|
|
218
|
+
- ProRes 422 or H.264 high-bitrate (50+ Mbps) for editing.
|
|
219
|
+
- Lossless audio.
|
|
220
|
+
- Color graded but not yet compressed.
|
|
221
|
+
|
|
222
|
+
### Delivery
|
|
223
|
+
|
|
224
|
+
- Compressed to platform's spec.
|
|
225
|
+
- 1080p typically; 4K for premium.
|
|
226
|
+
- Compressed audio (AAC).
|
|
227
|
+
|
|
228
|
+
Don't deliver the master file (huge) and don't archive the delivery file (lossy). Keep both.
|
|
229
|
+
|
|
230
|
+
## Performance for web video
|
|
231
|
+
|
|
232
|
+
For HTML5 video:
|
|
233
|
+
|
|
234
|
+
```html
|
|
235
|
+
<video
|
|
236
|
+
autoplay
|
|
237
|
+
muted
|
|
238
|
+
loop
|
|
239
|
+
playsinline
|
|
240
|
+
poster="hero-poster.jpg"
|
|
241
|
+
preload="auto"
|
|
242
|
+
>
|
|
243
|
+
<source src="hero.webm" type="video/webm" />
|
|
244
|
+
<source src="hero.mp4" type="video/mp4" />
|
|
245
|
+
</video>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
- `muted` is required for autoplay (browsers block audio on autoplay).
|
|
249
|
+
- `playsinline` for iOS (otherwise full-screen).
|
|
250
|
+
- `poster` for first paint / fallback.
|
|
251
|
+
- Multiple sources for browser-pick.
|
|
252
|
+
- `preload="auto"` for above-the-fold; `preload="metadata"` below.
|
|
253
|
+
|
|
254
|
+
For lazy-loaded below-the-fold video: use IntersectionObserver to delay `load()`.
|
|
255
|
+
|
|
256
|
+
For HLS streaming (longer videos, adaptive bitrate): use a player like Video.js, hls.js, or Shaka Player.
|
|
257
|
+
|
|
258
|
+
## Accessibility
|
|
259
|
+
|
|
260
|
+
- **Captions / subtitles** for any spoken content.
|
|
261
|
+
- **Audio descriptions** for any visual content critical to understanding (separate audio track describing what's on screen).
|
|
262
|
+
- **Transcripts** posted near the video (full text alternative).
|
|
263
|
+
- **Don't auto-play with sound** — disorienting.
|
|
264
|
+
- **Allow pause** on autoplay loops (control or click-to-pause).
|
|
265
|
+
- **Respect `prefers-reduced-motion`** — show poster / static image instead of looping video.
|
|
266
|
+
|
|
267
|
+
```css
|
|
268
|
+
@media (prefers-reduced-motion: reduce) {
|
|
269
|
+
video.hero-loop {
|
|
270
|
+
display: none;
|
|
271
|
+
}
|
|
272
|
+
video.hero-loop ~ .poster-fallback {
|
|
273
|
+
display: block;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## Don't
|
|
279
|
+
|
|
280
|
+
- Don't ship 4K hero loops for marketing — bandwidth waste on mobile.
|
|
281
|
+
- Don't auto-play with sound. Browsers block it; users hate it; accessibility issue.
|
|
282
|
+
- Don't skip captions. 80% of social video watched muted.
|
|
283
|
+
- Don't deliver MOV / ProRes for web — files are huge.
|
|
284
|
+
- Don't shoot vertical at the last minute by cropping landscape — composition suffers.
|
|
285
|
+
- Don't mix framerates within a video.
|
|
286
|
+
- Don't ignore audio. Bad audio kills retention faster than bad video.
|
|
287
|
+
- Don't ship video without a poster image — users see blank space during load.
|
|
288
|
+
|
|
289
|
+
## Cross-reference
|
|
290
|
+
|
|
291
|
+
- [`knowledge/video/marketing-video.md`](marketing-video.md) — landing-page / hero / brand video
|
|
292
|
+
- [`knowledge/video/social-and-short-form.md`](social-and-short-form.md) — TikTok / Reels / Shorts
|
|
293
|
+
- [`knowledge/video/in-product-video.md`](in-product-video.md) — onboarding / help / explainer
|
|
294
|
+
- [`knowledge/video/korean-video-conventions.md`](korean-video-conventions.md) — KR-specific
|
|
295
|
+
- [`knowledge/motion/motion-tools.md`](../motion/motion-tools.md) — Lottie alternative for shorter motion
|
|
296
|
+
- [`knowledge/a11y/contrast.md`](../a11y/contrast.md) — caption contrast rules
|
package/package.json
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@design-ai/cli",
|
|
3
|
+
"version": "4.55.0",
|
|
4
|
+
"description": "Senior product designer for any AI coding agent. Installs design-ai (20 skills, 17 commands, 4 agents) into Claude Code globally. Korean market depth plus website improvement control tower.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"design-ai": "cli/bin/design-ai.mjs",
|
|
7
|
+
"design-ai-mcp": "cli/bin/design-ai-mcp.mjs"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=18"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"test": "node --test cli/lib/*.test.mjs",
|
|
15
|
+
"audit": "python3 -B tools/audit/run-all.py",
|
|
16
|
+
"audit:strict": "python3 -B tools/audit/run-all.py --strict",
|
|
17
|
+
"audit:runner:self-test": "python3 -B tools/audit/run-all.py --self-test",
|
|
18
|
+
"coverage:self-test": "python3 -B tools/audit/check-coverage.py --self-test",
|
|
19
|
+
"doctor:assertions:self-test": "python3 -B tools/audit/doctor_assertions.py --self-test",
|
|
20
|
+
"smoke:assertions:self-test": "python3 -B tools/audit/smoke_assertions.py --self-test",
|
|
21
|
+
"package:check": "python3 -B tools/audit/package-contents.py --self-test && python3 -B tools/audit/package-contents.py",
|
|
22
|
+
"package:smoke:self-test": "python3 -B tools/audit/package-smoke.py --self-test",
|
|
23
|
+
"package:smoke": "python3 -B tools/audit/package-smoke.py --pack",
|
|
24
|
+
"registry:smoke": "python3 -B tools/audit/registry-smoke.py",
|
|
25
|
+
"registry:smoke:self-test": "python3 -B tools/audit/registry-smoke.py --self-test",
|
|
26
|
+
"release:metadata": "python3 -B tools/audit/release-metadata.py",
|
|
27
|
+
"release:metadata:self-test": "python3 -B tools/audit/release-metadata.py --self-test",
|
|
28
|
+
"ci:local:self-test": "python3 -B tools/audit/local-ci.py --self-test",
|
|
29
|
+
"tokens:ant-design:self-test": "python3 -B tools/extractors/ant_design_tokens.py --self-test",
|
|
30
|
+
"release:self-test": "npm run audit:runner:self-test && npm run coverage:self-test && npm run doctor:assertions:self-test && npm run smoke:assertions:self-test && npm run package:smoke:self-test && npm run registry:smoke:self-test && npm run release:metadata:self-test && npm run ci:local:self-test && npm run tokens:ant-design:self-test",
|
|
31
|
+
"release:check": "npm test && npm run audit:strict && git diff --check && npm run package:check && npm run release:metadata && npm run release:self-test && npm run package:smoke",
|
|
32
|
+
"ci:local": "python3 -B tools/audit/local-ci.py",
|
|
33
|
+
"preview": "python3 -B tools/preview/render-tokens.py"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"design",
|
|
37
|
+
"design-system",
|
|
38
|
+
"website",
|
|
39
|
+
"seo",
|
|
40
|
+
"performance",
|
|
41
|
+
"ui",
|
|
42
|
+
"ux",
|
|
43
|
+
"design-tokens",
|
|
44
|
+
"claude-code",
|
|
45
|
+
"claude-code-plugin",
|
|
46
|
+
"ai-agent",
|
|
47
|
+
"mcp",
|
|
48
|
+
"model-context-protocol",
|
|
49
|
+
"korean",
|
|
50
|
+
"motion",
|
|
51
|
+
"illustration",
|
|
52
|
+
"print",
|
|
53
|
+
"video",
|
|
54
|
+
"game-ui",
|
|
55
|
+
"conversational",
|
|
56
|
+
"spatial",
|
|
57
|
+
"vr",
|
|
58
|
+
"ar"
|
|
59
|
+
],
|
|
60
|
+
"author": "Sungjin Park <sungjin9288@gmail.com>",
|
|
61
|
+
"license": "MIT",
|
|
62
|
+
"repository": {
|
|
63
|
+
"type": "git",
|
|
64
|
+
"url": "git+https://github.com/sungjin9288/design-ai.git"
|
|
65
|
+
},
|
|
66
|
+
"homepage": "https://github.com/sungjin9288/design-ai#readme",
|
|
67
|
+
"bugs": {
|
|
68
|
+
"url": "https://github.com/sungjin9288/design-ai/issues"
|
|
69
|
+
},
|
|
70
|
+
"files": [
|
|
71
|
+
"cli/",
|
|
72
|
+
"install.sh",
|
|
73
|
+
"AGENTS.md",
|
|
74
|
+
"AGENTS.ko.md",
|
|
75
|
+
"CLAUDE.md",
|
|
76
|
+
"CHANGELOG.md",
|
|
77
|
+
"LICENSE",
|
|
78
|
+
"README.md",
|
|
79
|
+
"README.ko.md",
|
|
80
|
+
".claude-plugin/",
|
|
81
|
+
"knowledge/",
|
|
82
|
+
"examples/",
|
|
83
|
+
"skills/",
|
|
84
|
+
"agents/",
|
|
85
|
+
"commands/",
|
|
86
|
+
"docs/",
|
|
87
|
+
"!docs/case-study.md",
|
|
88
|
+
"!docs/evidence-checklist.md",
|
|
89
|
+
"!docs/evidence-gallery.md",
|
|
90
|
+
"!docs/implementation-evidence.md",
|
|
91
|
+
"!docs/interview-story.md",
|
|
92
|
+
"!docs/project-card.md",
|
|
93
|
+
"!docs/project-roadmap.md",
|
|
94
|
+
"!docs/readme-improvement.md",
|
|
95
|
+
"!docs/resume-bullets.md",
|
|
96
|
+
"tools/audit/",
|
|
97
|
+
"tools/migrations/",
|
|
98
|
+
"tools/preview/",
|
|
99
|
+
"!**/__pycache__/**",
|
|
100
|
+
"!**/*.pyc",
|
|
101
|
+
"!cli/**/*.test.mjs",
|
|
102
|
+
"!cli/**/*.test.js",
|
|
103
|
+
"!cli/**/*.spec.mjs",
|
|
104
|
+
"!cli/**/*.spec.js"
|
|
105
|
+
]
|
|
106
|
+
}
|
package/skills/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Skills
|
|
2
|
+
|
|
3
|
+
Task-focused playbooks. Each skill is a directory containing:
|
|
4
|
+
|
|
5
|
+
- `SKILL.md` — Claude Code-compatible manifest (frontmatter + body). Auto-loaded if dropped under `~/.claude/skills/`.
|
|
6
|
+
- `PLAYBOOK.md` — Plain-markdown version for Codex CLI / any agent. Same content as `SKILL.md`.
|
|
7
|
+
- `TEMPLATE.md` — Optional output template.
|
|
8
|
+
- `examples/` — Optional worked examples.
|
|
9
|
+
|
|
10
|
+
| Skill | When to use |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| [design-system-builder](design-system-builder/PLAYBOOK.md) | Bootstrap a complete design system from a brand brief or single brand color. |
|
|
13
|
+
| [component-spec-writer](component-spec-writer/PLAYBOOK.md) | Produce a developer-ready spec sheet for a single component. |
|
|
14
|
+
| [color-palette](color-palette/PLAYBOOK.md) | Generate a full palette (ramps + semantic aliases + dark mode) from inputs. |
|
|
15
|
+
| [ux-audit](ux-audit/PLAYBOOK.md) | Audit a screen, flow, or page against UX best practices and a11y. |
|
|
16
|
+
| [design-critique](design-critique/PLAYBOOK.md) | Senior-designer feedback on a design proposal. |
|
|
17
|
+
| [handoff-spec](handoff-spec/PLAYBOOK.md) | Produce a developer handoff document from a finalized design. |
|
|
18
|
+
| [design-system-qa](design-system-qa/PLAYBOOK.md) | Audit a design system across 5 testing layers (types / tokens / contract / a11y / visual) and recommend CI integration. |
|
|
19
|
+
| [design-pr-review](design-pr-review/PLAYBOOK.md) | Review a GitHub PR for design system compliance. Uses GitHub MCP when connected. |
|
|
20
|
+
| [website-improvement](website-improvement/PLAYBOOK.md) | Plan a website improvement control tower with Site Profile, audit pipeline, MCP readiness, refactor tasks, prompts, and handoff report. |
|
|
21
|
+
| [figma-token-sync](figma-token-sync/PLAYBOOK.md) | Sync tokens between Figma and code. Uses Figma MCP. |
|
|
22
|
+
| [design-broadcast](design-broadcast/PLAYBOOK.md) | Post artifacts to Slack / Notion. Uses Slack + Notion MCPs. |
|
|
23
|
+
| [document-author](document-author/PLAYBOOK.md) | Write technical / product documentation. Picks the right Diátaxis type, applies template, follows technical-writing voice rules. Korean-aware. |
|
|
24
|
+
| [slide-deck-author](slide-deck-author/PLAYBOOK.md) | Outline a slide deck (talk / pitch / reading). Message-led titles, brand-applied, Korean-aware. |
|
|
25
|
+
| [motion-designer](motion-designer/PLAYBOOK.md) | Spec motion for a screen / component / page. Picks tool (CSS / Framer Motion / GSAP / Lottie / Rive), durations, easings, choreography. Reduced-motion-safe by default. |
|
|
26
|
+
| [illustration-designer](illustration-designer/PLAYBOOK.md) | Design or spec an illustration system (or single illustration). Style, voice, color, format (SVG / Lottie / PNG), accessibility, SVG optimization. Korean-market-aware. |
|
|
27
|
+
| [print-designer](print-designer/PLAYBOOK.md) | Spec a print piece — business card, brochure, poster, packaging, stationery. CMYK + Pantone, bleed, finish, regulatory content; Korean print conventions. |
|
|
28
|
+
| [video-designer](video-designer/PLAYBOOK.md) | Spec video for marketing, social, or in-product use. Length, format, aspect, codec, captions, voiceover; Korean ad disclosure + KFDA compliance. |
|
|
29
|
+
| [game-ui-designer](game-ui-designer/PLAYBOOK.md) | Spec game UI — HUD, menus, inventory, store — across genres + platforms. Korean gaming conventions (확률 표시, 본인인증, PC bang) + accessibility. |
|
|
30
|
+
| [conversational-ui-designer](conversational-ui-designer/PLAYBOOK.md) | Spec a conversational UI — voice assistant, chatbot, AI chat (LLM), or live agent. Modality, persona (해요체 / 합쇼체), intents, flows, Korean conventions (Bixby / Clova / KakaoTalk channel). |
|
|
31
|
+
| [spatial-designer](spatial-designer/PLAYBOOK.md) | Spec spatial / AR / VR / MR experiences. Platform (Vision Pro / Quest / HoloLens / mobile AR / WebXR), anchoring, locomotion (teleport / smooth / snap turn), comfort, accessibility, Korean Galaxy XR. |
|
|
32
|
+
|
|
33
|
+
## Invoking a skill
|
|
34
|
+
|
|
35
|
+
**Claude Code**: skills are auto-discovered. Reference by name: "Use the `color-palette` skill to..."
|
|
36
|
+
|
|
37
|
+
**Codex CLI** (or any other agent): paste the contents of `PLAYBOOK.md` into your prompt, or have the agent `cat` it.
|
|
38
|
+
|
|
39
|
+
**Self-hosted prompt**: include the playbook in your system prompt. Each playbook is self-contained.
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# color-palette — playbook
|
|
2
|
+
|
|
3
|
+
Generate a complete, accessible color palette from a single seed (brand color, mood word, or product category).
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- "Build me a color palette for a fintech app" → product category input.
|
|
8
|
+
- "I have brand red `#E63946`, build the system" → seed color input.
|
|
9
|
+
- "Generate a calm, premium palette" → mood input.
|
|
10
|
+
|
|
11
|
+
## Inputs (ask if missing)
|
|
12
|
+
|
|
13
|
+
1. **Seed** — one of:
|
|
14
|
+
- A hex (brand primary).
|
|
15
|
+
- A product category (e.g., `e-commerce`, `health-tech`, `developer-tools`).
|
|
16
|
+
- A mood (e.g., `playful`, `editorial`, `brutalist`).
|
|
17
|
+
2. **Light + dark, or light only?** — default both.
|
|
18
|
+
3. **Target framework** — `tailwind v4`, `shadcn-ui`, `mui`, `antd`, `css variables`. Default: tailwind v4.
|
|
19
|
+
4. **Korean / CJK content?** — affects neutral choice (slight warm bias often reads cleaner with Hangul).
|
|
20
|
+
|
|
21
|
+
## Steps
|
|
22
|
+
|
|
23
|
+
### 1. If seed is a category or mood, find a reference
|
|
24
|
+
|
|
25
|
+
Open [`knowledge/colors/palettes-by-product-type.md`](../../knowledge/colors/palettes-by-product-type.md). Match by **Product type** column. Pull the row's tokens as a starting point. Do **not** copy verbatim — adapt.
|
|
26
|
+
|
|
27
|
+
If mood-based, open [`knowledge/patterns/styles-catalog.md`](../../knowledge/patterns/styles-catalog.md) and pull the matching style's `Primary Colors` and `Secondary Colors`.
|
|
28
|
+
|
|
29
|
+
#### Mood → hue mapping (when no reference matches)
|
|
30
|
+
|
|
31
|
+
When neither a hex nor a category is given — only mood words like "trustworthy", "energetic", "calm" — translate to a starting hue + chroma + lightness range. These are starting points; adjust based on differentiation needs (every fintech being blue is the trap).
|
|
32
|
+
|
|
33
|
+
| Mood | Hue family (OKLCH H) | Chroma | Lightness anchor (step 600) |
|
|
34
|
+
| --- | --- | --- | --- |
|
|
35
|
+
| Trustworthy / financial | Blue 230–250°, teal 170–195° | 0.18–0.24 | L ~ 50% |
|
|
36
|
+
| Energetic / playful | Red-orange 20–60°, magenta 0–30°, yellow 70–100° | 0.20–0.28 (high) | L ~ 55–65% |
|
|
37
|
+
| Calm / wellness | Green 130–160°, soft blue 200–230°, sage | 0.10–0.16 (muted) | L ~ 50–60% |
|
|
38
|
+
| Premium / luxury | Near-monochrome — purple 290–320° low chroma, charcoal | 0.05–0.12 | L ~ 35–50% (darker anchor) |
|
|
39
|
+
| Editorial / refined | Burgundy 0–20°, sage 130–160°, deep blue 230–260° | 0.12–0.18 | L ~ 40–50% |
|
|
40
|
+
| Youthful / approachable | Coral 10–30°, mint 160–180°, lavender 280–300° | 0.16–0.22 | L ~ 60–70% (lighter) |
|
|
41
|
+
| Tech / futuristic | Electric blue 240–260°, cyan 195–215°, magenta 290–320° | 0.20–0.28 | L ~ 55–65% |
|
|
42
|
+
| Natural / organic | Earth green 100–140°, brown 30–60°, ochre 70–90° | 0.10–0.16 | L ~ 45–55% |
|
|
43
|
+
| Brutalist / bold | Pure primaries 0°/240°/60°, plus near-black + white | 0.25+ (max) | L ~ 50% |
|
|
44
|
+
| Minimal / Swiss | Near-neutral, single accent | < 0.05 | L ~ 30% (dark accent on white) |
|
|
45
|
+
|
|
46
|
+
Combining moods: bias by primary mood, then adjust toward secondary. "Trustworthy + Youthful" → start at trustworthy blue/teal, shift L up to ~60%, slightly raise C.
|
|
47
|
+
|
|
48
|
+
#### Differentiation check
|
|
49
|
+
|
|
50
|
+
Before committing to the mood-derived anchor, check the local market's dominant brands in the same category:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Korean fintech competitors:
|
|
54
|
+
- Toss: blue #3182F6
|
|
55
|
+
- KakaoBank: yellow + accent #FFEB00
|
|
56
|
+
- Naver Pay: green
|
|
57
|
+
- Shinhan: blue
|
|
58
|
+
- KB Star: blue
|
|
59
|
+
|
|
60
|
+
→ Avoid: another blue at L=50%, H=230°. Differentiate with teal,
|
|
61
|
+
warmer accent, or shift hue 30°+ from competitors.
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Cite [`knowledge/patterns/brand-references.md`](../../knowledge/patterns/brand-references.md) for visual peer comparison if available.
|
|
65
|
+
|
|
66
|
+
#### Korean considerations
|
|
67
|
+
|
|
68
|
+
For Korean-primary apps:
|
|
69
|
+
- Slight warm bias on neutrals (slate H ~ 240–260° preferred over cool steel-gray) — reads cleaner with Hangul.
|
|
70
|
+
- For stock/trading apps: account for Korean color convention (red=up, blue=down) — see [`knowledge/patterns/money-and-amount.md`](../../knowledge/patterns/money-and-amount.md).
|
|
71
|
+
- For consumer/B2C: avoid pure yellow primary (Kakao-coded) and pure green (Naver-coded) unless intentional brand alignment.
|
|
72
|
+
|
|
73
|
+
### 2. Convert seed to OKLCH
|
|
74
|
+
|
|
75
|
+
Stay in OKLCH for the entire generation. Only convert to HEX/RGB at output. See [`knowledge/colors/color-theory.md`](../../knowledge/colors/color-theory.md) for why.
|
|
76
|
+
|
|
77
|
+
### 3. Build the primary ramp
|
|
78
|
+
|
|
79
|
+
11 stops: `50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950`.
|
|
80
|
+
|
|
81
|
+
- `L` (lightness) starts at ~98% (step 50), decreases by ~8% per step, ending at ~12% (step 950).
|
|
82
|
+
- `C` (chroma) peaks at step 500–600 (where the brand sits) and falls toward both ends.
|
|
83
|
+
- `H` (hue) **stays constant**.
|
|
84
|
+
|
|
85
|
+
Validate: step 600 must clear **4.5:1 against white** for body text. If not, the seed is too light — raise the seed's chroma or shift the ramp anchor up by one step.
|
|
86
|
+
|
|
87
|
+
### 4. Pick semantic anchors from the ramp
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
--color-primary-default: <step that hits 4.5:1 on white, usually 600>
|
|
91
|
+
--color-primary-hover: <one step darker, 700>
|
|
92
|
+
--color-primary-active: <two steps darker, 800>
|
|
93
|
+
--color-primary-subtle: <step 50 or 100, for backgrounds>
|
|
94
|
+
--color-on-primary: <white if primary-default L < 60%, else step 950>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 5. Build accent and neutrals
|
|
98
|
+
|
|
99
|
+
- **Accent**: rotate hue by 60–120° in OKLCH from primary, hold L/C constant. Build a parallel 11-step ramp.
|
|
100
|
+
- **Neutrals**: build a gray ramp with **slight chroma matching primary's hue** (C ≈ 0.01–0.02). Pure C=0 reads cold.
|
|
101
|
+
- **Semantic non-brand**: green-600 (success), amber-500 (warning), red-600 (error), blue-600 or primary (info). Build full ramps for each.
|
|
102
|
+
|
|
103
|
+
### 6. Validate WCAG
|
|
104
|
+
|
|
105
|
+
Build a contrast matrix:
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
on white on neutral-50 on neutral-900
|
|
109
|
+
primary-600 X.X X.X X.X
|
|
110
|
+
text-primary X.X ✓ ✓
|
|
111
|
+
text-secondary X.X ✓ ✓
|
|
112
|
+
border 3.0+ 3.0+ 3.0+
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Every cell that hosts UI must hit:
|
|
116
|
+
- 4.5:1 if it's text on a background.
|
|
117
|
+
- 3:1 if it's a border, icon, or large text.
|
|
118
|
+
|
|
119
|
+
Cite [`knowledge/a11y/contrast.md`](../../knowledge/a11y/contrast.md) when explaining failures.
|
|
120
|
+
|
|
121
|
+
### 7. Build dark mode
|
|
122
|
+
|
|
123
|
+
Don't invert. Recompute:
|
|
124
|
+
|
|
125
|
+
- New `background-default`: OKLCH(0.18 0.005 H_neutral) — near-black with the neutral hue.
|
|
126
|
+
- New `background-elevated`: +0.02 L from default.
|
|
127
|
+
- Increase chroma on accents by 10–20% — low-light eye is less saturated.
|
|
128
|
+
- `primary-default` for dark mode = a step closer to step 400 from the original ramp (lighter so it reads against the dark BG).
|
|
129
|
+
- Re-run the contrast matrix for dark mode.
|
|
130
|
+
|
|
131
|
+
### 8. Output
|
|
132
|
+
|
|
133
|
+
Use the [TEMPLATE.md](TEMPLATE.md) format. Always emit:
|
|
134
|
+
|
|
135
|
+
1. **Reasoning paragraph** — why this palette fits the brief.
|
|
136
|
+
2. **Token table** — all named tokens with hex values.
|
|
137
|
+
3. **Code blocks** — one per requested framework (CSS vars + Tailwind config + JSON).
|
|
138
|
+
4. **Contrast matrix** — pass/fail for every UI-relevant pair.
|
|
139
|
+
5. **Use guidance** — when to use primary vs accent, what NOT to do.
|
|
140
|
+
6. **Dark mode** (if requested) — same shape, separate section.
|
|
141
|
+
|
|
142
|
+
## Source files this skill reads
|
|
143
|
+
|
|
144
|
+
- [`knowledge/colors/color-theory.md`](../../knowledge/colors/color-theory.md)
|
|
145
|
+
- [`knowledge/colors/palettes-by-product-type.md`](../../knowledge/colors/palettes-by-product-type.md)
|
|
146
|
+
- [`knowledge/colors/mui-palette-structure.md`](../../knowledge/colors/mui-palette-structure.md)
|
|
147
|
+
- [`knowledge/a11y/contrast.md`](../../knowledge/a11y/contrast.md)
|
|
148
|
+
- [`knowledge/design-tokens/ant-design.md`](../../knowledge/design-tokens/ant-design.md)
|
|
149
|
+
- [`knowledge/patterns/styles-catalog.md`](../../knowledge/patterns/styles-catalog.md) — only when mood-based input
|
|
150
|
+
- [`knowledge/patterns/brand-references.md`](../../knowledge/patterns/brand-references.md) — for differentiation against peers
|
|
151
|
+
- [`knowledge/patterns/money-and-amount.md`](../../knowledge/patterns/money-and-amount.md) — when palette is for fintech / money-aware UI
|
|
152
|
+
|
|
153
|
+
## Verification phase (run before declaring done)
|
|
154
|
+
|
|
155
|
+
Self-check the output against this checklist. If any answer is "no" or "unsure", revise.
|
|
156
|
+
|
|
157
|
+
- [ ] Did I cite at least one knowledge file for each major claim category (palette construction, contrast, dark mode)?
|
|
158
|
+
- [ ] Does every UI-relevant text-on-bg pair have an explicit contrast ratio in the matrix?
|
|
159
|
+
- [ ] Does the matrix flag ✓ for AA where required and identify failures (rather than silently omit)?
|
|
160
|
+
- [ ] If mood-based: did I document **why** I picked this hue family (which mood mapping)?
|
|
161
|
+
- [ ] If category-based: did I cite the source row from `palettes-by-product-type.md`?
|
|
162
|
+
- [ ] Is the differentiation check articulated (which competitors I'm avoiding)?
|
|
163
|
+
- [ ] Is dark mode recomputed (separate values) or just stated to be inverted? (Should be recomputed.)
|
|
164
|
+
- [ ] Is the focus-ring color verified at 3:1 against BOTH page bg AND the primary button bg?
|
|
165
|
+
- [ ] Are money-positive / money-negative tokens included if the palette is for fintech?
|
|
166
|
+
- [ ] Are the code blocks for the target framework actually paste-ready (no placeholder values)?
|
|
167
|
+
|
|
168
|
+
## Done when
|
|
169
|
+
|
|
170
|
+
- Every token has a name, a hex, and a role.
|
|
171
|
+
- Every UI-relevant pair has a contrast number.
|
|
172
|
+
- Code blocks for at least one target framework are paste-ready.
|
|
173
|
+
- A "use guidance" section tells the user when to reach for primary vs accent vs neutral.
|
|
174
|
+
- Dark mode is recomputed (if requested), not inverted.
|
|
175
|
+
- The verification phase checklist passes.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: color-palette
|
|
3
|
+
description: Generate a complete, accessible color palette with ramps, semantic aliases, dark mode, and WCAG-validated contrast from a seed (brand color, product category, or mood).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
See [PLAYBOOK.md](PLAYBOOK.md) — same content. The playbook is the source of truth. This file exists so Claude Code's skill loader recognizes the directory.
|