@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,285 @@
|
|
|
1
|
+
<!-- hand-written -->
|
|
2
|
+
# Print spec: folding carton (Korean cosmetics, mid-tier)
|
|
3
|
+
|
|
4
|
+
> Worked example: spec for a Korean skincare brand's primary product carton. Covers dieline, regulatory content, color, finish, sustainability, and Korean labeling. Pairs with [`knowledge/print/packaging.md`](../knowledge/print/packaging.md) and [`knowledge/print/korean-print-conventions.md`](../knowledge/print/korean-print-conventions.md).
|
|
5
|
+
|
|
6
|
+
## Brief
|
|
7
|
+
|
|
8
|
+
- **Product**: 50ml moisturizer in glass jar, secondary carton
|
|
9
|
+
- **Brand**: Reun (가상의 한국 화장품 브랜드)
|
|
10
|
+
- **Tier**: Mid-premium (clean beauty, eco-aware audience)
|
|
11
|
+
- **Channel**: Korean online (Olive Young, Coupang) + retail (boutique stores)
|
|
12
|
+
- **Audience**: KR primary; some EN secondary copy for export potential
|
|
13
|
+
- **Volume**: 10,000 cartons initial run
|
|
14
|
+
- **Sustainability**: FSC-certified board, soy ink
|
|
15
|
+
|
|
16
|
+
## Specs
|
|
17
|
+
|
|
18
|
+
| Spec | Value |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| **Style** | Tuck-end folding carton (TT — top-tuck-bottom-tuck) |
|
|
21
|
+
| **Size** | 70mm × 70mm × 80mm (W×D×H) |
|
|
22
|
+
| **Material** | 350gsm SBS (solid bleached sulfate), FSC-certified |
|
|
23
|
+
| **Inside coat** | None (uncoated interior) |
|
|
24
|
+
| **Color** | CMYK + 1 spot Pantone (brand color) |
|
|
25
|
+
| **Finish** | Matte aqueous coating |
|
|
26
|
+
| **Special** | Spot UV on logo (front panel only); deboss on brand wordmark |
|
|
27
|
+
| **Inks** | Soy-based |
|
|
28
|
+
| **File** | PDF/X-1a, fonts outlined, dieline on separate non-printing layer |
|
|
29
|
+
|
|
30
|
+
### Color tokens
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
--brand-primary: PANTONE 5807 C (sage green)
|
|
34
|
+
--brand-text: 90% K
|
|
35
|
+
--brand-meta: 60% K (regulatory text)
|
|
36
|
+
--accent: PANTONE warm gray 5 C (very subtle accent line)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Dieline
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Top tuck
|
|
43
|
+
┌──────────────────────┐
|
|
44
|
+
│ │
|
|
45
|
+
│ TOP PANEL │
|
|
46
|
+
│ 70 × 70mm │
|
|
47
|
+
│ │
|
|
48
|
+
├───────────┬──────────┤
|
|
49
|
+
─ ─ ─ ─ │ │ │ ─ ─ ─ ─
|
|
50
|
+
│ │ │
|
|
51
|
+
Side │ FRONT │ RIGHT │ Side
|
|
52
|
+
panel │ 70 × 80 │ 70 × 80 │ panel
|
|
53
|
+
70×80 │ │ │ 70×80
|
|
54
|
+
│ PANEL │ PANEL │
|
|
55
|
+
─ ─ ─ ─ │ │ │ ─ ─ ─ ─
|
|
56
|
+
├───────────┴──────────┤
|
|
57
|
+
│ │
|
|
58
|
+
│ BOTTOM PANEL │
|
|
59
|
+
│ 70 × 70mm │
|
|
60
|
+
│ │
|
|
61
|
+
└──────────────────────┘
|
|
62
|
+
Bottom tuck
|
|
63
|
+
|
|
64
|
+
Lay flat with glue tab on outside-right; folds in.
|
|
65
|
+
Dotted lines = creases. Solid = cuts.
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Total flat dimensions including bleed: ~330mm × 240mm.
|
|
69
|
+
|
|
70
|
+
## Panel content
|
|
71
|
+
|
|
72
|
+
### Front panel — brand-defining
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
┌─────────────────────────────┐
|
|
76
|
+
│ │
|
|
77
|
+
│ ▣ REUN │ ← logo, deboss + spot UV
|
|
78
|
+
│ │ (top center, 30mm)
|
|
79
|
+
│ │
|
|
80
|
+
│ │
|
|
81
|
+
│ Calming Moisturizer │ ← product name, 11pt
|
|
82
|
+
│ 카밍 모이스처라이저 │ ← 10pt KR
|
|
83
|
+
│ │
|
|
84
|
+
│ │
|
|
85
|
+
│ 50ml │ ← net contents, 9pt 600
|
|
86
|
+
│ │
|
|
87
|
+
└─────────────────────────────┘
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Right panel (and Left, symmetric) — story
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
┌─────────────────────────────┐
|
|
94
|
+
│ │
|
|
95
|
+
│ 센텔라와 약쑥이 진정시키는 │ ← KR copy, 8.5pt
|
|
96
|
+
│ 데일리 수분 크림. │
|
|
97
|
+
│ │
|
|
98
|
+
│ Centella + mugwort calm │ ← EN secondary, 8pt
|
|
99
|
+
│ irritated skin. │
|
|
100
|
+
│ │
|
|
101
|
+
│ • 7가지 식물 추출물 │ ← bullet feature list
|
|
102
|
+
│ • 무향료, 무알코올 │
|
|
103
|
+
│ • 비건 인증 │
|
|
104
|
+
│ │
|
|
105
|
+
└─────────────────────────────┘
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Back panel — regulatory + ingredient
|
|
109
|
+
|
|
110
|
+
KFDA-compliant cosmetics labeling:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
┌─────────────────────────────┐
|
|
114
|
+
│ 화장품의 명칭 │ ← 6.5pt headers
|
|
115
|
+
│ Calming Moisturizer │
|
|
116
|
+
│ │
|
|
117
|
+
│ 내용량 50ml │
|
|
118
|
+
│ │
|
|
119
|
+
│ 제조판매업자 │
|
|
120
|
+
│ (주)르운, 서울시 강남구 ... │
|
|
121
|
+
│ 화장품 제조업 신고 제2024-...호 │
|
|
122
|
+
│ │
|
|
123
|
+
│ 사용기한: 박스 측면 표기 │
|
|
124
|
+
│ (개봉 후 12개월) │
|
|
125
|
+
│ │
|
|
126
|
+
│ 전성분 │
|
|
127
|
+
│ 정제수, 글리세린, 센텔라아시아티카 │ ← 6pt; all listed
|
|
128
|
+
│ 추출물, 인삼뿌리추출물, │
|
|
129
|
+
│ 베타글루칸, 히알루론산, ... │
|
|
130
|
+
│ │
|
|
131
|
+
│ 사용 시 주의사항 │
|
|
132
|
+
│ 1. 화장품을 사용하여 다음과 │ ← KFDA-mandated text
|
|
133
|
+
│ 같은 이상이 있는 경우에는 ... │
|
|
134
|
+
│ │
|
|
135
|
+
│ 소비자 상담실 080-1234-5678 │
|
|
136
|
+
│ │
|
|
137
|
+
│ 원산지: 한국 │
|
|
138
|
+
│ │
|
|
139
|
+
│ ┌─┐ ┌─┐ 분리배출 표시: │ ← recycling marks
|
|
140
|
+
│ │종│ │플│ 종이/플라스틱 │ mandatory
|
|
141
|
+
│ └─┘ └─┘ │
|
|
142
|
+
│ │
|
|
143
|
+
│ [barcode 1.5cm × 3cm] │
|
|
144
|
+
└─────────────────────────────┘
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Top panel — utility
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
┌─────────────────────────────┐
|
|
151
|
+
│ │
|
|
152
|
+
│ ▣ REUN │ ← small logo
|
|
153
|
+
│ Calming Moisturizer │
|
|
154
|
+
│ │
|
|
155
|
+
└─────────────────────────────┘
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Bottom panel
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
┌─────────────────────────────┐
|
|
162
|
+
│ │
|
|
163
|
+
│ 제조번호 / Lot: │ ← will be ink-jet printed
|
|
164
|
+
│ 사용기한 / Best by: │ by manufacturer at fill
|
|
165
|
+
│ │
|
|
166
|
+
│ Made in Korea │
|
|
167
|
+
│ │
|
|
168
|
+
└─────────────────────────────┘
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Regulatory checklist (Korean cosmetics)
|
|
172
|
+
|
|
173
|
+
- [x] **화장품의 명칭** (product name in Korean)
|
|
174
|
+
- [x] **내용량** (net contents) prominent
|
|
175
|
+
- [x] **제조판매업자** (manufacturer/distributor name + address)
|
|
176
|
+
- [x] **화장품 제조업 신고번호** (manufacturing license)
|
|
177
|
+
- [x] **사용기한 / 개봉 후 사용기간** (use-by or PAO)
|
|
178
|
+
- [x] **전성분** (full ingredients in INCI Korean naming)
|
|
179
|
+
- [x] **사용 시 주의사항** (KFDA-mandated standard text)
|
|
180
|
+
- [x] **소비자 상담실** (customer service phone)
|
|
181
|
+
- [x] **원산지** (country of origin)
|
|
182
|
+
- [x] **분리배출 표시** (recycling marks for paper + any plastic component)
|
|
183
|
+
- [x] **바코드** (barcode for retail)
|
|
184
|
+
|
|
185
|
+
## Sustainability + ESG callouts
|
|
186
|
+
|
|
187
|
+
Visible on packaging:
|
|
188
|
+
- **FSC certification mark** (small, on bottom panel or near recycling marks).
|
|
189
|
+
- **"100% recycled paperboard"** if applicable; for this case using FSC virgin fiber.
|
|
190
|
+
- **"Soy-based ink"** mentioned on product website + occasionally on packaging back.
|
|
191
|
+
- **No plastic window** — full opaque carton.
|
|
192
|
+
|
|
193
|
+
## Production rationale
|
|
194
|
+
|
|
195
|
+
| Decision | Why |
|
|
196
|
+
| --- | --- |
|
|
197
|
+
| Tuck-end folding carton | Standard, cost-effective for cosmetics |
|
|
198
|
+
| 350gsm SBS, FSC-certified | Premium feel + eco-aware audience |
|
|
199
|
+
| Matte aqueous coating | Soft, premium look without plastic-feel of UV varnish |
|
|
200
|
+
| Spot UV on logo only | Tactile signal; subtle |
|
|
201
|
+
| Deboss wordmark | Premium tactile detail |
|
|
202
|
+
| Soy ink | Aligns with eco brand voice |
|
|
203
|
+
| Pantone 5807 C (sage) | Brand consistency across runs; CMYK fallback for less critical surfaces |
|
|
204
|
+
| KR primary, EN secondary | Domestic primary audience; export-ready secondary |
|
|
205
|
+
|
|
206
|
+
## Cost estimate
|
|
207
|
+
|
|
208
|
+
| Item | Per unit (KRW) |
|
|
209
|
+
| --- | --- |
|
|
210
|
+
| 350gsm SBS, CMYK + 1 spot, matte aqueous, spot UV, deboss | 280-350 KRW |
|
|
211
|
+
| 10,000 unit run | 2,800,000-3,500,000 KRW |
|
|
212
|
+
| Dieline + setup (one-time) | 200,000-400,000 KRW |
|
|
213
|
+
| Press proof | 50,000 KRW |
|
|
214
|
+
| **Total initial run** | ~3,000,000-3,900,000 KRW |
|
|
215
|
+
|
|
216
|
+
For high-volume reorders (50,000+), per-unit drops to ~180-220 KRW.
|
|
217
|
+
|
|
218
|
+
## File delivery
|
|
219
|
+
|
|
220
|
+
1. **PDF/X-1a** with:
|
|
221
|
+
- Dieline on separate non-printing layer (named `dieline`)
|
|
222
|
+
- All artwork on print layers
|
|
223
|
+
- 3mm bleed
|
|
224
|
+
- Crop marks + dieline output marks
|
|
225
|
+
- Fonts outlined
|
|
226
|
+
- All images 300 DPI at final size, embedded
|
|
227
|
+
- CMYK color + Pantone 5807 C as spot
|
|
228
|
+
- ICC: Japan Color 2001 Coated
|
|
229
|
+
2. **Source files**: AI master + INDD if used; layered PSD for any photographic elements
|
|
230
|
+
3. **Spec sheet** (this document)
|
|
231
|
+
4. **Press proof** required before bulk run
|
|
232
|
+
|
|
233
|
+
## Pre-press checklist
|
|
234
|
+
|
|
235
|
+
- [ ] Dieline on separate layer, set non-printing
|
|
236
|
+
- [ ] Color mode: CMYK + Pantone 5807 C as spot
|
|
237
|
+
- [ ] Pantone color defined as spot (not silently converted)
|
|
238
|
+
- [ ] All fonts outlined
|
|
239
|
+
- [ ] All images embedded, 300+ DPI
|
|
240
|
+
- [ ] Bleed: 3mm all sides
|
|
241
|
+
- [ ] No critical content within 5mm of cut/fold lines
|
|
242
|
+
- [ ] All regulatory content present (checklist above)
|
|
243
|
+
- [ ] Recycling marks at minimum 8mm × 8mm
|
|
244
|
+
- [ ] Barcode scannable (test with phone)
|
|
245
|
+
- [ ] Total ink coverage: ≤ 280%
|
|
246
|
+
- [ ] Black: 100K for body, no rich black for small text
|
|
247
|
+
- [ ] Korean copy proofread by native speaker
|
|
248
|
+
- [ ] Korean regulatory text matches KFDA template exactly
|
|
249
|
+
- [ ] Spell check KR + EN
|
|
250
|
+
|
|
251
|
+
## Press proof approval
|
|
252
|
+
|
|
253
|
+
- [ ] Color matches Pantone 5807 C (visually + by colorimeter if available)
|
|
254
|
+
- [ ] Spot UV positioned correctly (only on logo)
|
|
255
|
+
- [ ] Deboss depth feels premium (not too shallow)
|
|
256
|
+
- [ ] Matte coating uniform (no streaks)
|
|
257
|
+
- [ ] Trim and crease lines clean
|
|
258
|
+
- [ ] Box folds correctly without breaking print
|
|
259
|
+
- [ ] Inside (uncoated) doesn't show through to outside
|
|
260
|
+
- [ ] Recycling marks legible
|
|
261
|
+
|
|
262
|
+
## Common things that go wrong
|
|
263
|
+
|
|
264
|
+
- **Sage green prints muddy** — Pantone match critical; press proof + sign-off mandatory.
|
|
265
|
+
- **Crease lines crack the print** — too-thick coating + sharp creases. Solution: ask printer to use scoring rule that pre-conditions paper.
|
|
266
|
+
- **Deboss feels weak** — depth too shallow. Specify minimum impression depth.
|
|
267
|
+
- **Regulatory text 6pt is too small to read at retail** — push to 7pt minimum where possible while staying within total panel content limits.
|
|
268
|
+
- **Korean ingredient list mistranslated** — INCI naming has standard Korean translations; use KFDA-approved table.
|
|
269
|
+
|
|
270
|
+
## Don't
|
|
271
|
+
|
|
272
|
+
- Don't skip the dieline. Designing without one means wrong fold positions.
|
|
273
|
+
- Don't put critical content within 5mm of cut or crease lines.
|
|
274
|
+
- Don't use rich black for ingredient text — registration shifts cause unreadable fringes.
|
|
275
|
+
- Don't approve a digital proof for color-critical packaging. Press proof is mandatory.
|
|
276
|
+
- Don't shrink regulatory text below KFDA minimum (typically 6pt for ingredients on small packages).
|
|
277
|
+
- Don't skip recycling marks. KFDA / Ministry of Environment can require recall.
|
|
278
|
+
|
|
279
|
+
## Cross-reference
|
|
280
|
+
|
|
281
|
+
- [`knowledge/print/print-fundamentals.md`](../knowledge/print/print-fundamentals.md) — CMYK, bleed, DPI
|
|
282
|
+
- [`knowledge/print/packaging.md`](../knowledge/print/packaging.md) — packaging fundamentals
|
|
283
|
+
- [`knowledge/print/korean-print-conventions.md`](../knowledge/print/korean-print-conventions.md) — KR regulatory
|
|
284
|
+
- [`knowledge/patterns/brand-identity.md`](../knowledge/patterns/brand-identity.md) — brand foundation
|
|
285
|
+
- [`knowledge/i18n/korean-document-style.md`](../knowledge/i18n/korean-document-style.md) — Korean voice
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Worked example: design audit report
|
|
2
|
+
|
|
3
|
+
> Generated by `skills/ux-audit` (or `skills/design-system-qa`). Demonstrates the canonical audit report format — TL;DR pyramid, severity-aggregated findings, citations.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# UX Audit: 신규 가입 흐름
|
|
9
|
+
|
|
10
|
+
> 검토일: 2026.05.08
|
|
11
|
+
> 검토자: design-ai (skills/ux-audit)
|
|
12
|
+
> 사용자 목표: 첫 화면에서 30초 안에 가입 완료
|
|
13
|
+
> 플랫폼: 모바일 웹 (iOS Safari + Android Chrome)
|
|
14
|
+
> 검토 기준: WCAG 2.1 AA + design-ai PRINCIPLES.md
|
|
15
|
+
|
|
16
|
+
## TL;DR
|
|
17
|
+
|
|
18
|
+
신규 가입 흐름에 12개 문제가 있습니다 (Critical 3 / High 4 / Medium 3 / Low 2). 가입 성공률이 32% 떨어지는 주된 원인은 (1) 비밀번호 필드가 IME 영향 받음, (2) 이메일 검증 후에도 form이 reset됨, (3) 마케팅 동의가 default-checked로 들어가 있어 한국 e-commerce 법 위반입니다.
|
|
19
|
+
|
|
20
|
+
**최우선 권장사항**: 마케팅 동의 default-checked 즉시 해제. 법적 리스크 + 사용자 신뢰 양쪽 회복.
|
|
21
|
+
|
|
22
|
+
## 핵심 발견
|
|
23
|
+
|
|
24
|
+
1. **마케팅 동의 default-checked로 체크됨** 🔴 — 정보통신망법 위반 가능
|
|
25
|
+
2. **비밀번호 입력 시 IME 활성화** 🔴 — 한글 자모가 비밀번호로 인식되어 검증 실패
|
|
26
|
+
3. **이메일 인증 후 form reset** 🔴 — 사용자가 입력한 값을 잃음 (이탈 발생)
|
|
27
|
+
4. **휴대폰 번호 검증 regex가 미국 형식** 🟠 — 한국 010-####-#### 거부
|
|
28
|
+
5. ~~기타 8건~~ (아래 상세)
|
|
29
|
+
|
|
30
|
+
## 권장사항
|
|
31
|
+
|
|
32
|
+
| 권장사항 | 담당 | 마감 |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| 마케팅 동의 unchecked로 변경 | 프론트엔드 팀 | **즉시** |
|
|
35
|
+
| 비밀번호 필드 IME 비활성화 | 프론트엔드 팀 | 이번 sprint |
|
|
36
|
+
| 이메일 인증 후 form state 보존 | 풀스택 | 이번 sprint |
|
|
37
|
+
| 휴대폰 regex 한국 형식으로 변경 | 프론트엔드 팀 | 이번 sprint |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 상세
|
|
42
|
+
|
|
43
|
+
### Critical (3건 — 출시 전 반드시 수정)
|
|
44
|
+
|
|
45
|
+
#### 1. 마케팅 동의 default-checked
|
|
46
|
+
**위치**: `src/screens/Signup.tsx:147`
|
|
47
|
+
|
|
48
|
+
**문제**: 마케팅 정보 수신 동의 체크박스가 페이지 로드 시 체크 상태로 표시됩니다.
|
|
49
|
+
|
|
50
|
+
**왜 문제인가**:
|
|
51
|
+
- 한국 정보통신망법 제50조의2: 마케팅 동의는 사용자가 명시적으로 opt-in해야 하며, default-checked는 명백한 위반.
|
|
52
|
+
- 사용자 신뢰 손상.
|
|
53
|
+
- 신고 시 과태료 (최대 3,000만원).
|
|
54
|
+
|
|
55
|
+
**해결**:
|
|
56
|
+
```diff
|
|
57
|
+
- <Checkbox defaultChecked label="마케팅 정보 수신 동의" />
|
|
58
|
+
+ <Checkbox label="마케팅 정보 수신 동의" />
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
또한 약관 동의(필수)와 분리해 별도 checkbox로 두어야 함.
|
|
62
|
+
|
|
63
|
+
**참고**:
|
|
64
|
+
- [`knowledge/i18n/korean-product-conventions.md`](../knowledge/i18n/korean-product-conventions.md) — 마케팅 동의 분리 규칙
|
|
65
|
+
- [`knowledge/i18n/korean-publishing.md`](../knowledge/i18n/korean-publishing.md) — 약관/동의 패턴
|
|
66
|
+
- [정보통신망법 제50조의2](https://www.law.go.kr/...)
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
#### 2. 비밀번호 필드 IME 활성화
|
|
71
|
+
**위치**: `src/screens/Signup.tsx:198`
|
|
72
|
+
|
|
73
|
+
**문제**: 비밀번호 입력 필드에 IME(한글 입력)이 활성화되어, 사용자가 영문 비밀번호 입력 시 한글 자모가 섞여 검증 실패.
|
|
74
|
+
|
|
75
|
+
**재현**:
|
|
76
|
+
1. 사용자가 비밀번호 `Hello123` 입력 의도
|
|
77
|
+
2. 한글 키보드 켜진 상태에서 `H`를 누르면 `ㅗ` 또는 `ㅎ` 입력됨
|
|
78
|
+
3. 사용자는 `Hello123`을 보고 있다고 생각하지만 서버는 `ㅗㅔㅣㅣㅗ123` 받음
|
|
79
|
+
4. 검증 실패 → 사용자 이탈
|
|
80
|
+
|
|
81
|
+
**왜 문제인가**:
|
|
82
|
+
- 사용자에게 보이지 않는 silent failure
|
|
83
|
+
- "분명 맞게 입력했는데 왜 안 되지?" → 이탈
|
|
84
|
+
|
|
85
|
+
**해결**:
|
|
86
|
+
```diff
|
|
87
|
+
- <input type="password" />
|
|
88
|
+
+ <input type="password" inputMode="text" lang="en" autoCapitalize="off" />
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
iOS Safari에서는 `lang="en"` 속성이 IME를 영문 모드로 전환합니다.
|
|
92
|
+
|
|
93
|
+
**참고**:
|
|
94
|
+
- [`knowledge/i18n/korean-typography.md`](../knowledge/i18n/korean-typography.md) — IME composition handling
|
|
95
|
+
- [`examples/component-input.md`](component-input.md) — Input spec
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
#### 3. 이메일 인증 후 form state reset
|
|
100
|
+
**위치**: `src/screens/Signup.tsx:312` (state management)
|
|
101
|
+
|
|
102
|
+
**문제**: 이메일 인증 코드 입력 단계에서 페이지 navigate 되면, 이전 form 입력값(이름, 휴대폰, 비밀번호)이 모두 초기화됩니다.
|
|
103
|
+
|
|
104
|
+
**재현**:
|
|
105
|
+
1. 사용자가 1페이지에 모든 정보 입력 완료
|
|
106
|
+
2. 이메일 코드 받기 위해 2페이지 navigate
|
|
107
|
+
3. 코드 입력 후 1페이지로 돌아오면 모두 빈 칸
|
|
108
|
+
|
|
109
|
+
**왜 문제인가**:
|
|
110
|
+
- 입력 다시 처음부터 — 정확한 이탈 트리거
|
|
111
|
+
- A/B 테스트 결과 (신규 가입 다단계의 default 이탈률) ~28% (n=4,521)
|
|
112
|
+
|
|
113
|
+
**해결**:
|
|
114
|
+
- React Router 사용 시 form state를 URL search params 또는 localStorage에 보관.
|
|
115
|
+
- 이메일 인증을 별도 화면 navigate 하지 말고 modal로 처리.
|
|
116
|
+
|
|
117
|
+
```tsx
|
|
118
|
+
// Option A: URL state
|
|
119
|
+
useSearchParams().set("email-verify", "true")
|
|
120
|
+
|
|
121
|
+
// Option B: in-place modal
|
|
122
|
+
<Modal open={verifyOpen}>...</Modal> // Form state preserved
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**참고**:
|
|
126
|
+
- [`knowledge/patterns/form-design.md`](../knowledge/patterns/form-design.md) — multi-step form 패턴
|
|
127
|
+
- [`examples/component-form.md`](component-form.md) — Form spec
|
|
128
|
+
- [`examples/component-modal.md`](component-modal.md) — modal 사용
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### High (4건 — 이번 sprint 수정)
|
|
133
|
+
|
|
134
|
+
#### 4. 휴대폰 번호 검증 regex가 미국 형식
|
|
135
|
+
**위치**: `src/lib/validators.ts:23`
|
|
136
|
+
|
|
137
|
+
**문제**: 한국 010-####-#### 형식이 거부됩니다.
|
|
138
|
+
|
|
139
|
+
**해결**:
|
|
140
|
+
```ts
|
|
141
|
+
- /^\d{3}-\d{3}-\d{4}$/ // (123) 456-7890 ← US 형식
|
|
142
|
+
+ /^01[0-9]-?\d{3,4}-?\d{4}$/ // KR 010-####-####
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**참고**: [`knowledge/i18n/korean-product-conventions.md`](../knowledge/i18n/korean-product-conventions.md)
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
#### 5. Submit button이 disabled로 시작
|
|
150
|
+
**위치**: `src/screens/Signup.tsx:405`
|
|
151
|
+
|
|
152
|
+
**문제**: 사용자가 모든 필드 채우기 전엔 submit button이 disabled 상태. 사용자가 button 클릭하면 무엇이 잘못됐는지 알려주지 않음.
|
|
153
|
+
|
|
154
|
+
**해결**: button을 항상 enabled로 두고, 클릭 시 invalid field로 focus 이동 + 에러 메시지 표시.
|
|
155
|
+
|
|
156
|
+
cite [`knowledge/patterns/form-design.md`](../knowledge/patterns/form-design.md).
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
#### 6. (이하 4건 생략)
|
|
161
|
+
...
|
|
162
|
+
|
|
163
|
+
### Medium (3건)
|
|
164
|
+
...
|
|
165
|
+
|
|
166
|
+
### Low (2건)
|
|
167
|
+
...
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 잘 작동하는 부분
|
|
172
|
+
|
|
173
|
+
- 헤더의 "회원가입" 타이틀이 명확하고 위치가 좋음 (h1 with proper hierarchy)
|
|
174
|
+
- 약관 링크가 새 탭으로 열려 form state 유지됨
|
|
175
|
+
- 입력 필드의 focus ring이 명확함 (3:1 contrast clear)
|
|
176
|
+
- 한글 입력 — 비밀번호 외 — 모두 정상
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Methodology
|
|
181
|
+
|
|
182
|
+
- **검토 기준**:
|
|
183
|
+
- WCAG 2.1 AA
|
|
184
|
+
- design-ai/PRINCIPLES.md 30 rules
|
|
185
|
+
- 한국 정보통신망법 + e-commerce 법
|
|
186
|
+
- **테스트 환경**:
|
|
187
|
+
- iOS 17.4 Safari (iPhone 14)
|
|
188
|
+
- Android 14 Chrome (Galaxy S24)
|
|
189
|
+
- 데스크톱 Chrome 124
|
|
190
|
+
- **Responsive scope**: mobile 360px / 390px, tablet 768px, and desktop 1440px viewports. Findings must state whether the issue is mobile-only, desktop-only, or cross-breakpoint.
|
|
191
|
+
- **Assistive technology scope**: screen reader pass covers field labels, error announcements, `aria-describedby`, and route-change focus restoration.
|
|
192
|
+
- **Tools**: axe-core, manual review, A/B 테스트 데이터 (Mixpanel)
|
|
193
|
+
- **Sample**: production 데이터 2026-04-01 ~ 2026-05-01, n=4,521 신규 가입 시도
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Appendix
|
|
198
|
+
|
|
199
|
+
- A. 12 발견 사항 전체 목록 (severity / location / cite)
|
|
200
|
+
- B. 각 발견에 대한 스크린샷 / 재현 동영상
|
|
201
|
+
- C. axe-core 자동 스캔 raw 결과
|
|
202
|
+
- D. A/B 테스트 데이터 raw
|
|
203
|
+
|
|
204
|
+
(Appendix omitted in this example — would be 5+ pages of detail.)
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Why this is a good audit report example
|
|
210
|
+
|
|
211
|
+
- **TL;DR가 답을 먼저 제시** — 12 문제, 우선 마케팅 동의부터.
|
|
212
|
+
- **Severity로 정렬** (Critical → High → Medium → Low), file-by-file 아닌 severity-by-severity.
|
|
213
|
+
- **각 발견은 위치 / 문제 / 왜 / 해결 / 참고** 5가지 항목 일관.
|
|
214
|
+
- **법적 issue를 별도 강조** (정보통신망법 위반).
|
|
215
|
+
- **Code diff 제공** — 즉시 적용 가능.
|
|
216
|
+
- **Knowledge file 인용** — 이유 + 참고로.
|
|
217
|
+
- **"잘 작동하는 부분"** — 균형 잡힌 보고서.
|
|
218
|
+
- **Methodology가 마지막** — 신뢰도 검증 가능하지만 본질은 위에 있음.
|
|
219
|
+
- **Don't bury the decision** — avoid putting methodology before TL;DR in audit reports.
|
|
220
|
+
|
|
221
|
+
Cite [`knowledge/patterns/report-design.md`](../knowledge/patterns/report-design.md) for the canonical structure.
|
|
222
|
+
|
|
223
|
+
## Cross-reference
|
|
224
|
+
|
|
225
|
+
- [`skills/ux-audit/PLAYBOOK.md`](../skills/ux-audit/PLAYBOOK.md)
|
|
226
|
+
- [`skills/design-system-qa/PLAYBOOK.md`](../skills/design-system-qa/PLAYBOOK.md)
|
|
227
|
+
- [`knowledge/patterns/report-design.md`](../knowledge/patterns/report-design.md)
|
|
228
|
+
- [`knowledge/i18n/korean-document-style.md`](../knowledge/i18n/korean-document-style.md) — Korean voice for reports
|