@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,235 @@
|
|
|
1
|
+
# Palette: B2B SaaS — violet primary
|
|
2
|
+
|
|
3
|
+
> Seed: `#7C3AED` (violet-600) · Mood: modern, trustworthy, mildly creative · Target: Tailwind v4 + shadcn-ui CSS vars
|
|
4
|
+
> Generated by: `skills/color-palette` skill
|
|
5
|
+
|
|
6
|
+
## Why this palette
|
|
7
|
+
|
|
8
|
+
A B2B SaaS analytics product needs to read as **competent** (cool blue-violet hue), **modern** (contemporary chroma) and **calm** (low-chroma neutrals). Violet over blue differentiates from the default-Tailwind-blue trap that 60% of SaaS sites are stuck in, while staying in the "trustworthy cool" family.
|
|
9
|
+
|
|
10
|
+
Tradeoff: violet at chroma 0.28 is slightly punchier than the safest indigo. Acceptable for a product that wants brand recognition; if "boring/safe" is the goal, swap to `indigo-600` (`#4F46E5`).
|
|
11
|
+
|
|
12
|
+
## Tokens
|
|
13
|
+
|
|
14
|
+
### Brand ramps (OKLCH-derived)
|
|
15
|
+
|
|
16
|
+
| Step | Primary (violet) | Accent (amber) | Neutral (cool gray) |
|
|
17
|
+
| --- | --- | --- | --- |
|
|
18
|
+
| 50 | `#F5F3FF` | `#FFFBEB` | `#F8FAFC` |
|
|
19
|
+
| 100 | `#EDE9FE` | `#FEF3C7` | `#F1F5F9` |
|
|
20
|
+
| 200 | `#DDD6FE` | `#FDE68A` | `#E2E8F0` |
|
|
21
|
+
| 300 | `#C4B5FD` | `#FCD34D` | `#CBD5E1` |
|
|
22
|
+
| 400 | `#A78BFA` | `#FBBF24` | `#94A3B8` |
|
|
23
|
+
| 500 | `#8B5CF6` | `#F59E0B` | `#64748B` |
|
|
24
|
+
| 600 | **`#7C3AED`** | `#D97706` | `#475569` |
|
|
25
|
+
| 700 | `#6D28D9` | `#B45309` | `#334155` |
|
|
26
|
+
| 800 | `#5B21B6` | `#92400E` | `#1E293B` |
|
|
27
|
+
| 900 | `#4C1D95` | `#78350F` | `#0F172A` |
|
|
28
|
+
| 950 | `#2E1065` | `#451A03` | `#020617` |
|
|
29
|
+
|
|
30
|
+
(Sourced from Tailwind v4 OKLCH-derived ramps — `violet`, `amber`, `slate`. Each step is computed in OKLCH for perceptually uniform lightness.)
|
|
31
|
+
|
|
32
|
+
### Semantic aliases — light mode
|
|
33
|
+
|
|
34
|
+
| Token | Value | Notes |
|
|
35
|
+
| --- | --- | --- |
|
|
36
|
+
| `--color-primary-default` | `#7C3AED` | violet-600 — 5.27:1 on white ✓ |
|
|
37
|
+
| `--color-primary-hover` | `#6D28D9` | violet-700 |
|
|
38
|
+
| `--color-primary-active` | `#5B21B6` | violet-800 |
|
|
39
|
+
| `--color-primary-subtle-bg` | `#F5F3FF` | violet-50 — for hover backgrounds, badges |
|
|
40
|
+
| `--color-on-primary` | `#FFFFFF` | white text on primary |
|
|
41
|
+
| `--color-bg-default` | `#FFFFFF` | |
|
|
42
|
+
| `--color-bg-elevated` | `#F8FAFC` | slate-50 — cards, popovers |
|
|
43
|
+
| `--color-bg-subtle` | `#F1F5F9` | slate-100 — section backgrounds |
|
|
44
|
+
| `--color-text-primary` | `#0F172A` | slate-900 — 18.7:1 on white |
|
|
45
|
+
| `--color-text-secondary` | `#475569` | slate-600 — 7.4:1 |
|
|
46
|
+
| `--color-text-tertiary` | `#64748B` | slate-500 — 4.9:1 (passes AA body) |
|
|
47
|
+
| `--color-text-disabled` | `#94A3B8` | slate-400 — 2.7:1 (intentional, with `aria-disabled`) |
|
|
48
|
+
| `--color-border-default` | `#E2E8F0` | slate-200 |
|
|
49
|
+
| `--color-border-strong` | `#CBD5E1` | slate-300 |
|
|
50
|
+
| `--color-focus-ring` | `#A78BFA` | violet-400 — clears 3:1 on white AND on violet-600 |
|
|
51
|
+
| `--color-success` | `#16A34A` | green-600 — 4.5:1 on white |
|
|
52
|
+
| `--color-success-subtle-bg` | `#F0FDF4` | green-50 |
|
|
53
|
+
| `--color-warning` | `#D97706` | amber-600 — 4.7:1 on white |
|
|
54
|
+
| `--color-warning-subtle-bg` | `#FFFBEB` | amber-50 |
|
|
55
|
+
| `--color-error` | `#DC2626` | red-600 — 4.8:1 on white |
|
|
56
|
+
| `--color-error-subtle-bg` | `#FEF2F2` | red-50 |
|
|
57
|
+
| `--color-info` | `#7C3AED` | matches primary |
|
|
58
|
+
|
|
59
|
+
### Semantic aliases — dark mode
|
|
60
|
+
|
|
61
|
+
Recomputed, not inverted. Increased chroma on accents (low-light eye is less saturated). Background uses near-black with cool tint.
|
|
62
|
+
|
|
63
|
+
| Token | Value | Notes |
|
|
64
|
+
| --- | --- | --- |
|
|
65
|
+
| `--color-primary-default` | `#A78BFA` | violet-400 — reads against dark bg |
|
|
66
|
+
| `--color-primary-hover` | `#C4B5FD` | violet-300 |
|
|
67
|
+
| `--color-primary-active` | `#DDD6FE` | violet-200 |
|
|
68
|
+
| `--color-primary-subtle-bg` | `#2E1065` | violet-950 |
|
|
69
|
+
| `--color-on-primary` | `#1E1B4B` | very dark violet |
|
|
70
|
+
| `--color-bg-default` | `#020617` | slate-950 |
|
|
71
|
+
| `--color-bg-elevated` | `#0F172A` | slate-900 — for cards |
|
|
72
|
+
| `--color-bg-subtle` | `#1E293B` | slate-800 |
|
|
73
|
+
| `--color-text-primary` | `#F8FAFC` | slate-50 — 17.4:1 on bg-default |
|
|
74
|
+
| `--color-text-secondary` | `#CBD5E1` | slate-300 — 11.6:1 |
|
|
75
|
+
| `--color-text-tertiary` | `#94A3B8` | slate-400 — 6.5:1 |
|
|
76
|
+
| `--color-text-disabled` | `#64748B` | slate-500 — 3.4:1 |
|
|
77
|
+
| `--color-border-default` | `#334155` | slate-700 |
|
|
78
|
+
| `--color-border-strong` | `#475569` | slate-600 |
|
|
79
|
+
| `--color-focus-ring` | `#A78BFA` | violet-400 |
|
|
80
|
+
| `--color-success` | `#4ADE80` | green-400 |
|
|
81
|
+
| `--color-warning` | `#FBBF24` | amber-400 |
|
|
82
|
+
| `--color-error` | `#F87171` | red-400 |
|
|
83
|
+
| `--color-info` | `#A78BFA` | violet-400 |
|
|
84
|
+
|
|
85
|
+
## Contrast matrix (light)
|
|
86
|
+
|
|
87
|
+
| Pair | Ratio | AA body | AA UI | AAA |
|
|
88
|
+
| --- | --- | --- | --- | --- |
|
|
89
|
+
| text-primary on bg-default | 18.7:1 | ✓ | — | ✓ |
|
|
90
|
+
| text-secondary on bg-default | 7.4:1 | ✓ | — | ✓ |
|
|
91
|
+
| text-tertiary on bg-default | 4.9:1 | ✓ | — | — |
|
|
92
|
+
| primary-default on bg-default | 5.27:1 | ✓ | — | — |
|
|
93
|
+
| on-primary on primary-default | 8.0:1 | ✓ | — | ✓ |
|
|
94
|
+
| border-default on bg-default | 1.6:1 | — | (decorative) | — |
|
|
95
|
+
| border-strong on bg-default | 2.0:1 | — | (decorative) | — |
|
|
96
|
+
| focus-ring on bg-default | 3.4:1 | — | ✓ | — |
|
|
97
|
+
| focus-ring on primary-default | 3.1:1 | — | ✓ | — |
|
|
98
|
+
| success on bg-default | 4.5:1 | ✓ | — | — |
|
|
99
|
+
| warning on bg-default | 4.7:1 | ✓ | — | — |
|
|
100
|
+
| error on bg-default | 4.8:1 | ✓ | — | — |
|
|
101
|
+
|
|
102
|
+
## Contrast matrix (dark)
|
|
103
|
+
|
|
104
|
+
| Pair | Ratio | AA body | AA UI |
|
|
105
|
+
| --- | --- | --- | --- |
|
|
106
|
+
| text-primary on bg-default | 17.4:1 | ✓ | — |
|
|
107
|
+
| text-secondary on bg-default | 11.6:1 | ✓ | — |
|
|
108
|
+
| text-tertiary on bg-default | 6.5:1 | ✓ | — |
|
|
109
|
+
| primary-default on bg-default | 6.7:1 | ✓ | — |
|
|
110
|
+
| on-primary on primary-default | 8.6:1 | ✓ | — |
|
|
111
|
+
| border-default on bg-default | 4.0:1 | — | ✓ |
|
|
112
|
+
| focus-ring on bg-default | 8.7:1 | — | ✓ |
|
|
113
|
+
|
|
114
|
+
## Output: Tailwind v4
|
|
115
|
+
|
|
116
|
+
```css
|
|
117
|
+
@import "tailwindcss";
|
|
118
|
+
|
|
119
|
+
@theme {
|
|
120
|
+
/* Brand */
|
|
121
|
+
--color-primary-50: oklch(0.969 0.016 293.756);
|
|
122
|
+
--color-primary-100: oklch(0.943 0.029 294.588);
|
|
123
|
+
--color-primary-200: oklch(0.894 0.057 293.283);
|
|
124
|
+
--color-primary-300: oklch(0.811 0.111 293.571);
|
|
125
|
+
--color-primary-400: oklch(0.702 0.183 293.541);
|
|
126
|
+
--color-primary-500: oklch(0.606 0.250 292.717);
|
|
127
|
+
--color-primary-600: oklch(0.541 0.281 293.009);
|
|
128
|
+
--color-primary-700: oklch(0.491 0.270 292.581);
|
|
129
|
+
--color-primary-800: oklch(0.432 0.232 292.759);
|
|
130
|
+
--color-primary-900: oklch(0.381 0.176 293.745);
|
|
131
|
+
--color-primary-950: oklch(0.283 0.141 291.089);
|
|
132
|
+
|
|
133
|
+
/* Accent */
|
|
134
|
+
--color-accent-50: oklch(0.987 0.022 95.277);
|
|
135
|
+
--color-accent-500: oklch(0.769 0.188 70.080);
|
|
136
|
+
--color-accent-600: oklch(0.666 0.179 58.318);
|
|
137
|
+
|
|
138
|
+
/* Neutrals */
|
|
139
|
+
--color-neutral-50: oklch(0.984 0.003 247.858);
|
|
140
|
+
--color-neutral-200: oklch(0.929 0.013 255.508);
|
|
141
|
+
--color-neutral-500: oklch(0.554 0.046 257.417);
|
|
142
|
+
--color-neutral-900: oklch(0.208 0.042 265.755);
|
|
143
|
+
--color-neutral-950: oklch(0.129 0.042 264.695);
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Output: shadcn-ui CSS vars
|
|
148
|
+
|
|
149
|
+
```css
|
|
150
|
+
:root {
|
|
151
|
+
--background: 0 0% 100%;
|
|
152
|
+
--foreground: 222 47% 11%;
|
|
153
|
+
--card: 210 40% 98%;
|
|
154
|
+
--card-foreground: 222 47% 11%;
|
|
155
|
+
--popover: 0 0% 100%;
|
|
156
|
+
--popover-foreground: 222 47% 11%;
|
|
157
|
+
--primary: 263 70% 50%;
|
|
158
|
+
--primary-foreground: 0 0% 100%;
|
|
159
|
+
--secondary: 210 40% 96%;
|
|
160
|
+
--secondary-foreground: 222 47% 11%;
|
|
161
|
+
--muted: 210 40% 96%;
|
|
162
|
+
--muted-foreground: 215 16% 47%;
|
|
163
|
+
--accent: 32 95% 44%;
|
|
164
|
+
--accent-foreground: 0 0% 100%;
|
|
165
|
+
--destructive: 0 72% 51%;
|
|
166
|
+
--destructive-foreground: 0 0% 100%;
|
|
167
|
+
--border: 214 32% 91%;
|
|
168
|
+
--input: 214 32% 91%;
|
|
169
|
+
--ring: 258 90% 66%;
|
|
170
|
+
--radius: 0.5rem;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.dark {
|
|
174
|
+
--background: 222 47% 4%;
|
|
175
|
+
--foreground: 210 40% 98%;
|
|
176
|
+
--card: 222 47% 11%;
|
|
177
|
+
--card-foreground: 210 40% 98%;
|
|
178
|
+
--primary: 258 90% 76%;
|
|
179
|
+
--primary-foreground: 247 67% 20%;
|
|
180
|
+
--muted: 217 33% 17%;
|
|
181
|
+
--muted-foreground: 215 20% 65%;
|
|
182
|
+
--accent: 38 92% 50%;
|
|
183
|
+
--destructive: 0 84% 70%;
|
|
184
|
+
--border: 217 33% 22%;
|
|
185
|
+
--ring: 258 90% 76%;
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Output: Style Dictionary (JSON)
|
|
190
|
+
|
|
191
|
+
```json
|
|
192
|
+
{
|
|
193
|
+
"color": {
|
|
194
|
+
"brand": {
|
|
195
|
+
"primary": {
|
|
196
|
+
"50": { "value": "#F5F3FF", "type": "color" },
|
|
197
|
+
"500": { "value": "#8B5CF6", "type": "color" },
|
|
198
|
+
"600": { "value": "#7C3AED", "type": "color" },
|
|
199
|
+
"700": { "value": "#6D28D9", "type": "color" }
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
"semantic": {
|
|
203
|
+
"primary": { "value": "{color.brand.primary.600}", "type": "color" },
|
|
204
|
+
"primary-hover": { "value": "{color.brand.primary.700}", "type": "color" },
|
|
205
|
+
"text-primary": { "value": "#0F172A", "type": "color" },
|
|
206
|
+
"bg-default": { "value": "#FFFFFF", "type": "color" }
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Use guidance
|
|
213
|
+
|
|
214
|
+
- Reach for **primary** for: primary CTAs, links in body, active nav, brand emphasis. **One** primary CTA per surface.
|
|
215
|
+
- Reach for **accent (amber)** for: warning states, "new feature" callouts, secondary CTAs that should attract attention without competing with primary. Avoid using as a third brand color.
|
|
216
|
+
- Reach for **neutrals** for: every non-brand surface. Cards, borders, body text, dividers. The system should feel ~80% neutral.
|
|
217
|
+
- **Do not**: use `accent-600` and `primary-600` as adjacent buttons — they fight. If both are needed, make one ghost (transparent bg + colored text).
|
|
218
|
+
- **Do not**: use `text-disabled` for live content. Disabled means "not interactable now"; if it's readable info, use `text-tertiary`.
|
|
219
|
+
|
|
220
|
+
## Responsive usage
|
|
221
|
+
|
|
222
|
+
- Mobile surfaces use `--color-bg-default` plus one primary action; avoid stacking primary and accent CTAs inside the same 360px viewport.
|
|
223
|
+
- Desktop dashboards may use `--color-bg-elevated` cards on `--color-bg-subtle`, but chart/category color usage still caps at the same palette rules.
|
|
224
|
+
- Breakpoint changes must not change semantic token meaning: `--color-primary-default` stays the primary action color on mobile, tablet, and desktop.
|
|
225
|
+
|
|
226
|
+
## Figma variable sync
|
|
227
|
+
|
|
228
|
+
Figma variables mirror the semantic token layer, not the raw Tailwind ramp. Use `color.primary.default`, `color.text.primary`, and `color.bg.default` as the source of truth, then export/import through the token sync workflow so code and Figma stay aligned.
|
|
229
|
+
|
|
230
|
+
## Cited sources
|
|
231
|
+
|
|
232
|
+
- [knowledge/colors/color-theory.md](../knowledge/colors/color-theory.md) — OKLCH rationale, ramp construction
|
|
233
|
+
- [knowledge/colors/palettes-by-product-type.md](../knowledge/colors/palettes-by-product-type.md) — SaaS row used as reference shape
|
|
234
|
+
- [knowledge/a11y/contrast.md](../knowledge/a11y/contrast.md) — WCAG ratios
|
|
235
|
+
- Tailwind v4 OKLCH ramps (verified upstream)
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
<!-- hand-written -->
|
|
2
|
+
# Print spec: business card (Korean 명함, premium tier)
|
|
3
|
+
|
|
4
|
+
> Worked example: spec for a Korean fintech startup's business card. Covers dimensions, paper, finish, color, typography, file delivery. Pairs with [`knowledge/print/stationery.md`](../knowledge/print/stationery.md) and [`knowledge/print/korean-print-conventions.md`](../knowledge/print/korean-print-conventions.md).
|
|
5
|
+
|
|
6
|
+
## Brief
|
|
7
|
+
|
|
8
|
+
- **Brand**: Aera (가상의 한국 핀테크 스타트업)
|
|
9
|
+
- **Audience**: Korean B2B (banks, partners), occasional international
|
|
10
|
+
- **Tier**: Premium (founder + senior staff cards)
|
|
11
|
+
- **Quantity**: 200 per person, 5 people
|
|
12
|
+
- **Budget**: 200,000 KRW total budget for 1000 cards
|
|
13
|
+
|
|
14
|
+
## Specs
|
|
15
|
+
|
|
16
|
+
| Spec | Value |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| **Size** | 90mm × 50mm (Korean 명함 standard) |
|
|
19
|
+
| **Bleed** | 3mm all sides → working size 96mm × 56mm |
|
|
20
|
+
| **Safe area** | 5mm inside trim → 80mm × 40mm |
|
|
21
|
+
| **Sides** | Double-sided (앞면 한국어, 뒷면 영어) |
|
|
22
|
+
| **Color mode** | CMYK + 1 spot Pantone (brand color) |
|
|
23
|
+
| **Paper** | 350gsm uncoated white card |
|
|
24
|
+
| **Finish** | Soft-touch lamination (front + back) |
|
|
25
|
+
| **Special** | Spot UV on logo (front only) |
|
|
26
|
+
| **File format** | PDF/X-1a, fonts outlined, 3mm bleed, crop marks |
|
|
27
|
+
|
|
28
|
+
### Color tokens used
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
--brand-primary: PANTONE 2728 C (CMYK 100/72/0/0 fallback)
|
|
32
|
+
--brand-text: 100% K (pure black)
|
|
33
|
+
--brand-meta: 80% K (dark gray for secondary)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
No other colors. Brand discipline.
|
|
37
|
+
|
|
38
|
+
### Typography
|
|
39
|
+
|
|
40
|
+
| Element | Font | Size | Weight | Color |
|
|
41
|
+
| --- | --- | --- | --- | --- |
|
|
42
|
+
| 이름 (KR) | Pretendard | 11pt | 700 (Bold) | 100K |
|
|
43
|
+
| Name (EN) | Pretendard | 10pt | 700 | 100K |
|
|
44
|
+
| 직책 (KR) | Pretendard | 8.5pt | 500 | 80K |
|
|
45
|
+
| Title (EN) | Pretendard | 8pt | 500 | 80K |
|
|
46
|
+
| 회사 / Company | Pretendard | 8.5pt | 600 | Brand-primary |
|
|
47
|
+
| Contact info | Pretendard | 7.5pt | 400 | 80K |
|
|
48
|
+
|
|
49
|
+
Pretendard handles both Korean + English at the same size — no font-pair complexity.
|
|
50
|
+
|
|
51
|
+
## Layout
|
|
52
|
+
|
|
53
|
+
### Front (Korean primary)
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
┌─────────────────────────────────────┐
|
|
57
|
+
│ │
|
|
58
|
+
│ ▣ AERA │ ← logo, top-left, 14mm wide
|
|
59
|
+
│ │ spot UV applied here only
|
|
60
|
+
│ │
|
|
61
|
+
│ │
|
|
62
|
+
│ 김철수 │ ← 11pt 700
|
|
63
|
+
│ 대표 / CEO │ ← 8.5pt 500
|
|
64
|
+
│ │
|
|
65
|
+
│ ───── │ ← 0.5pt rule, brand-primary
|
|
66
|
+
│ │
|
|
67
|
+
│ Aera Inc. │ ← 8.5pt 600
|
|
68
|
+
│ 010-1234-5678 │ ← 7.5pt
|
|
69
|
+
│ cheolsu@aera.kr │
|
|
70
|
+
│ 서울시 강남구 테헤란로 ... │
|
|
71
|
+
│ │
|
|
72
|
+
└─────────────────────────────────────┘
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Back (English mirror)
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
┌─────────────────────────────────────┐
|
|
79
|
+
│ │
|
|
80
|
+
│ ▣ AERA │
|
|
81
|
+
│ │
|
|
82
|
+
│ │
|
|
83
|
+
│ │
|
|
84
|
+
│ Cheolsu Kim │
|
|
85
|
+
│ CEO │
|
|
86
|
+
│ │
|
|
87
|
+
│ ───── │
|
|
88
|
+
│ │
|
|
89
|
+
│ Aera Inc. │
|
|
90
|
+
│ +82 10 1234 5678 │
|
|
91
|
+
│ cheolsu@aera.kr │
|
|
92
|
+
│ Tehran-ro, Gangnam, Seoul │
|
|
93
|
+
│ │
|
|
94
|
+
└─────────────────────────────────────┘
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Back follows same grid; symmetric, brand-feeling consistent.
|
|
98
|
+
|
|
99
|
+
## Production rationale
|
|
100
|
+
|
|
101
|
+
| Decision | Why |
|
|
102
|
+
| --- | --- |
|
|
103
|
+
| 90×50 (KR size) | Primary audience is Korean; KR wallets fit this size cleanly |
|
|
104
|
+
| 350gsm uncoated | Premium tactile feel without going luxury |
|
|
105
|
+
| Soft-touch lamination | Velvety, premium-modern feel; protects against finger oils |
|
|
106
|
+
| Spot UV on logo only | Tactile contrast (matte field + glossy logo); subtle premium signal |
|
|
107
|
+
| Pantone + CMYK | Pantone for brand-color consistency across runs; CMYK for everything else |
|
|
108
|
+
| Pretendard | Open-source, free commercial use, handles KR+EN, modern feel |
|
|
109
|
+
| Same font for KR and EN | Visual cohesion; avoids font-pairing complexity |
|
|
110
|
+
| Bilingual (KR front, EN back) | Primary audience KR; international fallback EN; not crammed onto one side |
|
|
111
|
+
|
|
112
|
+
## Cost estimate
|
|
113
|
+
|
|
114
|
+
| Item | KRW |
|
|
115
|
+
| --- | --- |
|
|
116
|
+
| 1000 cards, 350gsm uncoated, soft-touch + spot UV | 150,000-180,000 |
|
|
117
|
+
| Press proof (1 card, color check) | 10,000-20,000 |
|
|
118
|
+
| Total | 160,000-200,000 |
|
|
119
|
+
|
|
120
|
+
Within budget.
|
|
121
|
+
|
|
122
|
+
## Delivery
|
|
123
|
+
|
|
124
|
+
1. **Final PDF/X-1a** with:
|
|
125
|
+
- 3mm bleed
|
|
126
|
+
- Crop marks
|
|
127
|
+
- Bleed marks
|
|
128
|
+
- Fonts outlined
|
|
129
|
+
- All images embedded
|
|
130
|
+
- CMYK + Pantone 2728 C as spot
|
|
131
|
+
- ICC profile: Japan Color 2001 Coated
|
|
132
|
+
2. **Source AI file** (Adobe Illustrator native) for printer's reference
|
|
133
|
+
3. **Spec sheet** (this document) included with delivery
|
|
134
|
+
4. **Press proof approval** required before bulk run
|
|
135
|
+
|
|
136
|
+
## Pre-press checklist
|
|
137
|
+
|
|
138
|
+
- [ ] Color mode: CMYK + 1 spot Pantone defined
|
|
139
|
+
- [ ] All RGB removed from artwork
|
|
140
|
+
- [ ] Pantone 2728 C defined as spot color (not converted to CMYK silently)
|
|
141
|
+
- [ ] All fonts outlined
|
|
142
|
+
- [ ] All images 300+ DPI at print size
|
|
143
|
+
- [ ] All images embedded (no linked external files)
|
|
144
|
+
- [ ] Bleed: 3mm all sides
|
|
145
|
+
- [ ] Crop marks + bleed marks visible in export
|
|
146
|
+
- [ ] Safe area: critical content stays 5mm inside trim
|
|
147
|
+
- [ ] Total ink coverage: ≤ 280%
|
|
148
|
+
- [ ] Black: pure 100K for body text (not rich black)
|
|
149
|
+
- [ ] PDF/X-1a export with embedded ICC
|
|
150
|
+
- [ ] Spell check: KR + EN
|
|
151
|
+
- [ ] Layout check at 100% size and 200% zoom
|
|
152
|
+
- [ ] Test print on 350gsm paper (home printer or quick-print) for layout sanity check
|
|
153
|
+
|
|
154
|
+
## Press proof approval
|
|
155
|
+
|
|
156
|
+
Before approving the press proof:
|
|
157
|
+
|
|
158
|
+
- [ ] Color matches brand spec (Pantone 2728 C visually correct)
|
|
159
|
+
- [ ] Type is crisp; no fuzzy edges
|
|
160
|
+
- [ ] Spot UV is correctly positioned (only on logo)
|
|
161
|
+
- [ ] Soft-touch finish feels right
|
|
162
|
+
- [ ] Trim is precise; no white edges from cut tolerance
|
|
163
|
+
- [ ] Both sides align (symmetric layout)
|
|
164
|
+
- [ ] No printing artifacts (banding, ink spread)
|
|
165
|
+
|
|
166
|
+
Sign-off in writing only after all of the above.
|
|
167
|
+
|
|
168
|
+
## Accessibility note for digital proofing
|
|
169
|
+
|
|
170
|
+
The printed card itself has no keyboard focus behavior, but the approval workflow still does. The PDF proof review page must keep the approve / request changes controls keyboard reachable, show a visible 2px focus ring with at least 3:1 contrast, and preserve logical tab order from front preview → back preview → approval actions.
|
|
171
|
+
|
|
172
|
+
Digital proof preview should be responsive across mobile and desktop review contexts, because founders often approve proofs from phones while printers inspect them on desktop. Screen reader labels must identify "front side", "back side", and "request changes" actions so non-visual approval is not blocked.
|
|
173
|
+
|
|
174
|
+
## What can go wrong
|
|
175
|
+
|
|
176
|
+
- **Pantone mismatch** — spot color prints duller than expected. Solution: press proof before bulk; brand QC sign-off.
|
|
177
|
+
- **Soft-touch wears unevenly** — cheap soft-touch films flake. Solution: specify quality lamination film grade.
|
|
178
|
+
- **Spot UV registration off** — UV varnish slightly offset from logo edge. Solution: tight specification of UV registration tolerance.
|
|
179
|
+
- **Cut crops content** — content too close to safe area. Solution: keep critical content 5mm inside trim minimum.
|
|
180
|
+
|
|
181
|
+
## Reorder considerations
|
|
182
|
+
|
|
183
|
+
This spec is good for 12-18 months. Reorder triggers:
|
|
184
|
+
- Personnel changes (anyone leaves, gets promoted, role changes).
|
|
185
|
+
- Address change.
|
|
186
|
+
- Brand color update.
|
|
187
|
+
- Logo update.
|
|
188
|
+
|
|
189
|
+
Reorders should match the original spec exactly. Don't make small "improvements" on each reorder — fragments the brand.
|
|
190
|
+
|
|
191
|
+
## Don't
|
|
192
|
+
|
|
193
|
+
- Don't switch to international 85×55mm size to "save cost" — the savings are minimal and KR audiences notice.
|
|
194
|
+
- Don't add personal social handles (Twitter, Instagram) on B2B cards. Phone + email is enough.
|
|
195
|
+
- Don't use 9pt or smaller for Korean primary copy — Hangul becomes hard to read at small sizes.
|
|
196
|
+
- Don't print without press proof for premium tier — color shifts can be visible.
|
|
197
|
+
- Don't use rich black (60/40/40/100) for body text — registration shifts cause colored edges. Pure 100K only.
|
|
198
|
+
|
|
199
|
+
## Cross-reference
|
|
200
|
+
|
|
201
|
+
- [`knowledge/print/print-fundamentals.md`](../knowledge/print/print-fundamentals.md) — CMYK, bleed, DPI
|
|
202
|
+
- [`knowledge/print/stationery.md`](../knowledge/print/stationery.md) — full stationery system
|
|
203
|
+
- [`knowledge/print/korean-print-conventions.md`](../knowledge/print/korean-print-conventions.md) — KR specifics
|
|
204
|
+
- [`knowledge/typography/font-pairings.md`](../knowledge/typography/font-pairings.md) — Pretendard pairings
|
|
205
|
+
- [`knowledge/patterns/brand-identity.md`](../knowledge/patterns/brand-identity.md) — brand foundation
|