@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,180 @@
|
|
|
1
|
+
# Dogfood findings — 1차 검증
|
|
2
|
+
|
|
3
|
+
Self-critique of the design-ai system after running an end-to-end realistic scenario: bootstrap a Korean fintech mobile app design system.
|
|
4
|
+
|
|
5
|
+
**Output produced**: [examples/dogfood-korean-fintech-system.md](../examples/dogfood-korean-fintech-system.md)
|
|
6
|
+
|
|
7
|
+
This document captures what worked, what gaps emerged, and what to prioritize next.
|
|
8
|
+
|
|
9
|
+
## What worked well
|
|
10
|
+
|
|
11
|
+
### 1. Token cascade was clean
|
|
12
|
+
|
|
13
|
+
The path from `palettes-by-product-type.md` (curated reference) → palette generation → semantic aliases → contrast matrix → light/dark → Style Dictionary output was traceable and deterministic. Every value in the output had a citation back to a knowledge source.
|
|
14
|
+
|
|
15
|
+
### 2. Korean i18n knowledge was load-bearing
|
|
16
|
+
|
|
17
|
+
Without `knowledge/i18n/korean-typography.md`, the type scale would default to Latin numbers. Pretendard recommendation, line-height bump, weight-600-for-emphasis — all came directly from the knowledge file and shaped the actual deliverable. Writing this knowledge upfront was correct.
|
|
18
|
+
|
|
19
|
+
### 3. Motion + a11y citations made the doc credible
|
|
20
|
+
|
|
21
|
+
The contrast matrix, focus-ring color choice, and motion duration tokens all cite specific knowledge files. A skeptical engineer can audit each claim. This is the difference between "a document the AI wrote" and "a document grounded in reasoning".
|
|
22
|
+
|
|
23
|
+
### 4. The "don't" sections forced explicit tradeoffs
|
|
24
|
+
|
|
25
|
+
`Don't use --color-primary-default for amount text` — that rule emerged from thinking about money-color semantics. Without the spec template's "Don't" section pushing me to articulate it, the rule would be implicit and lost to future maintainers.
|
|
26
|
+
|
|
27
|
+
### 5. Reference shape from worked examples paid off
|
|
28
|
+
|
|
29
|
+
Having `examples/component-button.md`, `palette-saas-violet.md` set the bar for output quality. The dogfood deliverable would have been thinner without those reference shapes.
|
|
30
|
+
|
|
31
|
+
## What's missing
|
|
32
|
+
|
|
33
|
+
### 1. No agent or skill for "money-aware" components
|
|
34
|
+
|
|
35
|
+
Fintech needs `AmountInput`, `AmountDisplay`, `TransactionListItem` — patterns that don't exist in any of the upstream design systems (Ant, MUI, shadcn don't have a "money input"). I had to **invent** these in the dogfood doc with no scaffolding.
|
|
36
|
+
|
|
37
|
+
**Action**: add `knowledge/patterns/money-and-amount.md` covering:
|
|
38
|
+
- Currency display rules (separator, suffix, ₩ vs 원)
|
|
39
|
+
- Amount input ergonomics (auto-format, paste handling, zero-leading)
|
|
40
|
+
- Color semantics for positive/negative/neutral
|
|
41
|
+
- Tabular numerals + alignment
|
|
42
|
+
- Rounding (KRW always integer)
|
|
43
|
+
- Negative display (parentheses vs minus)
|
|
44
|
+
|
|
45
|
+
### 2. No skill for React Native / mobile-first variants
|
|
46
|
+
|
|
47
|
+
The dogfood scenario chose React Native + NativeWind. `component-spec-writer` and `color-palette` skills assume web. They produced the right tokens but the spec wording leaked web concepts (`@media (hover: hover)`, `cursor: pointer`) that don't apply.
|
|
48
|
+
|
|
49
|
+
**Action**:
|
|
50
|
+
- Add a `knowledge/platforms/react-native.md` file capturing RN-specific differences (StyleSheet, Pressable vs button, no hover, safe-area-inset translation, NativeWind quirks).
|
|
51
|
+
- Update skill playbooks to ask "platform: web | RN | both" upfront.
|
|
52
|
+
|
|
53
|
+
### 3. No bottom-tab-bar / mobile navigation pattern
|
|
54
|
+
|
|
55
|
+
The fintech app needs a bottom tab bar — Korean consumer convention. Cite-able pattern doesn't exist in `knowledge/`. I winged it.
|
|
56
|
+
|
|
57
|
+
**Action**: add `knowledge/patterns/mobile-navigation.md`:
|
|
58
|
+
- Bottom tab bar (rules, max tabs, icon+label)
|
|
59
|
+
- Top app bar (titles, actions, back behavior)
|
|
60
|
+
- Nested navigation (stack vs tab)
|
|
61
|
+
- Modal screen pattern (full-screen sheet)
|
|
62
|
+
- Search behavior on mobile
|
|
63
|
+
|
|
64
|
+
### 4. No skill for "translate brand brief to color seed"
|
|
65
|
+
|
|
66
|
+
The scenario said "trustworthy + approachable + youthful" and I had to manually translate that to teal-600. There's no documented decision rule for going from mood-words to a hex.
|
|
67
|
+
|
|
68
|
+
**Action**: extend `skills/color-palette/PLAYBOOK.md` with a "mood → hue mapping" section:
|
|
69
|
+
- Trustworthy: blue family (215–245°), teal family (170–195°)
|
|
70
|
+
- Approachable: warmer hues (5–60°), softer chroma
|
|
71
|
+
- Youthful: higher chroma, brighter lightness anchor
|
|
72
|
+
- Premium: muted, dark anchors, near-monochrome
|
|
73
|
+
- Energetic: complementary or split-complementary, high chroma
|
|
74
|
+
- Calm: analogous, muted
|
|
75
|
+
- ...
|
|
76
|
+
|
|
77
|
+
This is craft knowledge that should be encoded.
|
|
78
|
+
|
|
79
|
+
### 5. No template for "starter component list"
|
|
80
|
+
|
|
81
|
+
The dogfood doc has a starter component list. No template or playbook tells me what should go on it. I went by gut.
|
|
82
|
+
|
|
83
|
+
**Action**: add to `skills/design-system-builder/PLAYBOOK.md`:
|
|
84
|
+
- Default starter set by product category (consumer mobile, B2B SaaS, e-commerce, content, etc.)
|
|
85
|
+
- "Always-needed" core (Button, Input, Modal, Toast, Card)
|
|
86
|
+
- Category-specific extensions
|
|
87
|
+
|
|
88
|
+
### 6. Hand-off section was thin
|
|
89
|
+
|
|
90
|
+
The "what eng needs to do" section is 9 bullets. A real handoff document would specify package versions, exact file paths, CI integration, testing approach, design-review cadence.
|
|
91
|
+
|
|
92
|
+
**Action**: enrich `skills/handoff-spec/PLAYBOOK.md` with a "system bootstrap handoff" sub-template (different from "feature handoff").
|
|
93
|
+
|
|
94
|
+
### 7. No guidance on choosing between Toss/KakaoPay/etc.
|
|
95
|
+
|
|
96
|
+
The dogfood says "wire up Toss Payments / KakaoPay" but doesn't say **how to choose** between them, or document the integration patterns. Korean payment selection is a real decision with real tradeoffs.
|
|
97
|
+
|
|
98
|
+
**Action**: add `knowledge/i18n/korean-payments.md` (split from `korean-product-conventions.md` which is getting long):
|
|
99
|
+
- When to use which (cards/wallets/account transfer/carrier billing)
|
|
100
|
+
- Vendor comparison (Toss Payments vs INICIS vs NHN KCP)
|
|
101
|
+
- Integration patterns + UX expectations
|
|
102
|
+
- Cost structure (transaction fees by payment type)
|
|
103
|
+
- Compliance overlap (PG license, ESCROW for high-value)
|
|
104
|
+
|
|
105
|
+
### 8. No pattern for "data table" or "list with row actions"
|
|
106
|
+
|
|
107
|
+
A 가계부 needs a transaction list. Component-level (`TransactionListItem`) is fine, but the **list pattern** — pull-to-refresh, infinite scroll, swipe actions, empty state, sort/filter — is its own beast and isn't in `knowledge/patterns/`.
|
|
108
|
+
|
|
109
|
+
**Action**: add `knowledge/patterns/list-and-feed.md`:
|
|
110
|
+
- Pull-to-refresh, infinite scroll
|
|
111
|
+
- Swipe actions (iOS-native, Android variant)
|
|
112
|
+
- Empty / loading / error states
|
|
113
|
+
- Section headers (sticky, grouping rules)
|
|
114
|
+
- Skeleton vs spinner choice
|
|
115
|
+
|
|
116
|
+
### 9. Extractor pipeline doesn't catch new content
|
|
117
|
+
|
|
118
|
+
When upstream Ant Design adds a new token or shadcn adds a new component, the extractor catches it on next run. But if I add a new knowledge file (like the proposals above), there's no automation — it's all manual.
|
|
119
|
+
|
|
120
|
+
**Action**: a `tools/audit/check-coverage.py` that:
|
|
121
|
+
- Lists every component in `knowledge/components/INDEX.md`.
|
|
122
|
+
- Cross-references against `examples/` to see which have written specs.
|
|
123
|
+
- Flags coverage gaps in the README (`12 / 199 components have worked specs`).
|
|
124
|
+
|
|
125
|
+
### 10. The skill files don't enforce the AGENTS.md lookup-first rule
|
|
126
|
+
|
|
127
|
+
The agent SHOULD read `knowledge/colors/color-theory.md` before generating a palette. The playbook says so. But there's no programmatic enforcement — an LLM could skip it and fabricate values. For high-stakes use, want a verification step.
|
|
128
|
+
|
|
129
|
+
**Action**: add a "verification phase" to each skill — a self-check the agent does at end:
|
|
130
|
+
- "Did I cite at least one knowledge file per claim category?"
|
|
131
|
+
- "Did I include a contrast matrix for any color-related output?"
|
|
132
|
+
- "Did I reference at least 2 of the 3 upstream libraries for component spec?"
|
|
133
|
+
|
|
134
|
+
## What I'd ship for v1
|
|
135
|
+
|
|
136
|
+
If I had to declare design-ai "v1.0" right now, the system covers:
|
|
137
|
+
|
|
138
|
+
✓ Color palettes with WCAG-validated outputs
|
|
139
|
+
✓ Component specs for the 5 most-used components
|
|
140
|
+
✓ Foundation knowledge (a11y, typography, spacing, motion)
|
|
141
|
+
✓ Korean market specifics
|
|
142
|
+
✓ Worked examples as quality bar
|
|
143
|
+
✓ Multi-agent compatibility (Codex / Claude / Cursor / Aider)
|
|
144
|
+
✓ Figma + token sync workflows
|
|
145
|
+
|
|
146
|
+
Gaps acceptable for v1 (track in roadmap):
|
|
147
|
+
- React Native / mobile-first skill variants
|
|
148
|
+
- Money-aware patterns (fintech-specific)
|
|
149
|
+
- Mobile navigation patterns
|
|
150
|
+
- More component specs (Form, Table, Tabs, DatePicker, etc.)
|
|
151
|
+
- Verification phase per skill
|
|
152
|
+
- Coverage audit tooling
|
|
153
|
+
|
|
154
|
+
The system is **usable today** for the scenario it was designed for. The dogfood produced a deliverable that a real engineer could implement against. The gaps are real but they're additive — they don't break the existing flows.
|
|
155
|
+
|
|
156
|
+
## Roadmap delta
|
|
157
|
+
|
|
158
|
+
Move these from "future" to "Phase 2" in [docs/ROADMAP.md](ROADMAP.md):
|
|
159
|
+
|
|
160
|
+
1. **`knowledge/patterns/money-and-amount.md`** — fintech-essential
|
|
161
|
+
2. **`knowledge/patterns/mobile-navigation.md`** — consumer-mobile-essential
|
|
162
|
+
3. **`knowledge/patterns/list-and-feed.md`** — covers a missing UI pattern
|
|
163
|
+
4. **`knowledge/platforms/react-native.md`** — closes a platform gap
|
|
164
|
+
5. **`knowledge/i18n/korean-payments.md`** — splits the over-long conventions doc
|
|
165
|
+
6. **More component specs**: Form (full pattern), Table, Tabs (incl. bottom-tab-bar), DatePicker, Select, Pagination
|
|
166
|
+
7. **Skill: mood → hex mapping** as section in `color-palette` playbook
|
|
167
|
+
8. **`tools/audit/check-coverage.py`** — automated coverage report
|
|
168
|
+
|
|
169
|
+
Move to Phase 3:
|
|
170
|
+
- Verification phase per skill
|
|
171
|
+
- HTML preview generator (render token sets visually)
|
|
172
|
+
- Optional embedding index
|
|
173
|
+
|
|
174
|
+
## Closing assessment
|
|
175
|
+
|
|
176
|
+
**1차 완성: 합격.** The system does what it set out to do — turn a single LLM agent into a senior product designer for a session, producing artifacts grounded in real upstream design system knowledge. Codex and Claude both can pick up the repo and produce expert work.
|
|
177
|
+
|
|
178
|
+
The gaps surfaced here are **proof that the system is honest** — when I tried to use it for real, it was clear what was load-bearing (Korean i18n, contrast matrix, ramp construction rules) and what was missing (mobile patterns, fintech specifics). A system that produced no gaps would mean the dogfood scenario was too easy.
|
|
179
|
+
|
|
180
|
+
Phase 2 work is well-defined. Ship v1.0 (this commit), then iterate.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Dogfood findings — v4.6 verification
|
|
2
|
+
|
|
3
|
+
Self-critique of design-ai v4.6 after running an end-to-end realistic scenario: bootstrap a Korean B2B SaaS HR onboarding flow.
|
|
4
|
+
|
|
5
|
+
**Output produced**: [`examples/cases/dogfood-v4-korean-hr-onboarding.md`](../examples/cases/dogfood-v4-korean-hr-onboarding.md).
|
|
6
|
+
|
|
7
|
+
This document captures what worked since v3, what gaps emerged, and the fixes shipped in this dogfood pass.
|
|
8
|
+
|
|
9
|
+
## What worked well
|
|
10
|
+
|
|
11
|
+
### 1. v4.5 family-completed specs paid off
|
|
12
|
+
|
|
13
|
+
Three families I exercised end-to-end in the deliverable:
|
|
14
|
+
- **Form family** — `FormControl` / `FormLabel` / `FormHelperText` cited directly. The `aria-invalid` + `aria-describedby` contract was right there in the spec; I didn't have to derive it.
|
|
15
|
+
- **Dialog family** — `DialogTitle.id` ↔ `Dialog.aria-labelledby`, `DialogContentText.id` ↔ `Dialog.aria-describedby`. The contract is explicit in three separate specs that cross-reference each other. v3 made me research this.
|
|
16
|
+
- **List family** — `ListItem` with `secondaryAction` vs `ListItemButton` for clickable rows. The boundary is documented; I didn't conflate them as I did in v3 dogfood.
|
|
17
|
+
|
|
18
|
+
The polish-effort difference was visible: when a primitive's spec answered my question without me thinking, I composed faster.
|
|
19
|
+
|
|
20
|
+
### 2. v4.4 TS-AST extractor produced honest scaffolds
|
|
21
|
+
|
|
22
|
+
When I needed `Select` props I checked `examples/component-select.md`; for `LoadingButton` I checked nothing existed (gap, see below). The 21 v4.5 drafts with the DRAFT banner + accurate API table were *useful as references* even unpolished — the API table answers "what props exist" and that's the question I actually asked.
|
|
23
|
+
|
|
24
|
+
The DRAFT banner was honest: I didn't quote anatomy / tokens from drafts, only the API.
|
|
25
|
+
|
|
26
|
+
### 3. Korean knowledge held up across contexts
|
|
27
|
+
|
|
28
|
+
`korean-typography.md` line-height bump (10%) applied without thinking. `korean-conversational-conventions.md` 해요체 vs 합쇼체 gave me the register decision (B2B onboarding → 해요체).
|
|
29
|
+
|
|
30
|
+
The KR-specific knowledge files compose naturally — I didn't have to glue them.
|
|
31
|
+
|
|
32
|
+
### 4. /stability-review dogfooded itself
|
|
33
|
+
|
|
34
|
+
Running `python3 tools/audit/stability-review.py --today 2026-12` in the middle of the dogfood was a real test of v4.6. It executed correctly, surfaced one false positive (see fix #2 below), and the report format was actionable.
|
|
35
|
+
|
|
36
|
+
### 5. Single audit runner saved time
|
|
37
|
+
|
|
38
|
+
`npm run audit` (one command, 6 audits, 0.8s) ran during dogfood without context-switch. v3.x's six-separate-commands cost mental overhead.
|
|
39
|
+
|
|
40
|
+
## What's missing / what broke
|
|
41
|
+
|
|
42
|
+
### 1. `LoadingButton` has no spec
|
|
43
|
+
|
|
44
|
+
Used in two places in the deliverable (form submit, dialog confirm) — but no `examples/component-loading-button.md` exists. The `mui-x/x-loading-button` is canonical; should be in v4.x coverage.
|
|
45
|
+
|
|
46
|
+
**Action shipped**: Generate via v2 extractor.
|
|
47
|
+
|
|
48
|
+
### 2. `knowledge/COVERAGE.md` flagged by stability-review as false positive
|
|
49
|
+
|
|
50
|
+
The generated index file lacks `stability:` because it's auto-regenerated. The stability tool flagged it correctly per its rules, but adopters will reasonably skip it. Either:
|
|
51
|
+
- Skip generated artifacts in `stability-review.py`, OR
|
|
52
|
+
- Have the coverage generator emit `stability: stable` (the file IS as-fresh-as-last-regen).
|
|
53
|
+
|
|
54
|
+
**Action shipped**: Skip generated artifacts (path-based: `knowledge/COVERAGE.md`).
|
|
55
|
+
|
|
56
|
+
### 3. No knowledge file specifically for "B2B onboarding form patterns"
|
|
57
|
+
|
|
58
|
+
There's `knowledge/patterns/form-design.md` (general), `knowledge/patterns/onboarding.md` (general). Neither covers B2B-specific decisions like:
|
|
59
|
+
- Auto-save on blur (vs explicit save button).
|
|
60
|
+
- Multi-step pacing (3-5 steps vs 7+).
|
|
61
|
+
- Sensitive data fields (주민등록번호, 통장 사본) — required disclosures.
|
|
62
|
+
- Bilingual hire flows (KR primary + EN toggle).
|
|
63
|
+
|
|
64
|
+
**Action shipped**: Add `knowledge/patterns/b2b-onboarding-flows.md` capturing the decisions surfaced in this dogfood.
|
|
65
|
+
|
|
66
|
+
### 4. `LoadingButton` use-case not in skills
|
|
67
|
+
|
|
68
|
+
`design-system-builder` skill doesn't invoke a "loading state pattern" sub-skill. When I needed an async-aware button I had to know it from MUI knowledge. A skill or knowledge file for "Async control patterns" would help.
|
|
69
|
+
|
|
70
|
+
**Action**: Add to roadmap (low priority; the inline knowledge in `component-button.md` covers the common case).
|
|
71
|
+
|
|
72
|
+
### 5. No "Korean B2B SaaS" entry in `palettes-by-product-type.md`
|
|
73
|
+
|
|
74
|
+
I had to derive the muted-teal seed myself (matching trust + sensitive data). A row in the curated palette table for "Korean B2B SaaS — sensitive data" with example seeds would scaffold this.
|
|
75
|
+
|
|
76
|
+
**Action shipped**: Add row to `knowledge/colors/palettes-by-product-type.md`.
|
|
77
|
+
|
|
78
|
+
### 6. v4.5 drafts mention "polished" specs in cross-refs but those don't always exist yet
|
|
79
|
+
|
|
80
|
+
E.g., `component-form-helper-text.md` (DRAFT) cross-refs `component-form-control.md` (polished — exists ✓) but several other drafts cross-ref polished sub-component specs that haven't been polished yet. Cross-ref consistency check might surface these.
|
|
81
|
+
|
|
82
|
+
**Action**: Future audit (Phase 39+); not blocking.
|
|
83
|
+
|
|
84
|
+
### 7. The v4.5 polished specs assume `OutlinedInput` exists; check that
|
|
85
|
+
|
|
86
|
+
Form spec uses `<OutlinedInput>`. Verified: `examples/component-outlined-input.md` exists (v4.5 draft). Cross-ref pattern works but the draft banner makes the user uncertain whether the API table can be trusted. The TS-AST extractor's accuracy claim should be repeated in each draft's banner.
|
|
87
|
+
|
|
88
|
+
**Action shipped**: Update v2 spec template banner to explicitly state "API table is AST-extracted and accurate; narrative sections are placeholders".
|
|
89
|
+
|
|
90
|
+
## What's missing — declined to fix this pass
|
|
91
|
+
|
|
92
|
+
These surfaced but are out-of-scope for v4.7:
|
|
93
|
+
|
|
94
|
+
- **Korean B2B layout density patterns** — KR B2B apps tend to be denser than Western counterparts. A `knowledge/patterns/korean-density-conventions.md` would help. Defer to v4.8+.
|
|
95
|
+
- **A "spec-component-from-mui-x" extractor** — MUI X (DataGrid, DatePicker, etc.) lives in a different package. Current v2 extractor doesn't search there. Roadmap.
|
|
96
|
+
- **Step-progress component family** — used in onboarding but already partially covered. Polish backlog.
|
|
97
|
+
|
|
98
|
+
## Time comparison
|
|
99
|
+
|
|
100
|
+
| Phase | v3 dogfood (fintech) | v4 dogfood (HR) |
|
|
101
|
+
| --- | --- | --- |
|
|
102
|
+
| Brief → palette + tokens | ~12 min | ~6 min (palette skill polished + Korean conventions baked in) |
|
|
103
|
+
| First component spec | ~15 min (had to invent FormControl composition) | ~5 min (cited 5 family-completed specs) |
|
|
104
|
+
| Confirmation dialog | ~10 min | ~3 min |
|
|
105
|
+
| UX audit | ~8 min | ~5 min |
|
|
106
|
+
| Findings doc | ~10 min | (this doc) |
|
|
107
|
+
| Stability review | (didn't exist) | <1 min |
|
|
108
|
+
|
|
109
|
+
v4 ~3-5x faster on Form/Dialog/List heavy work because the spec corpus answered the questions instead of me re-deriving them.
|
|
110
|
+
|
|
111
|
+
## What I shipped this dogfood
|
|
112
|
+
|
|
113
|
+
Fixes applied during the v4.7 commit:
|
|
114
|
+
|
|
115
|
+
1. ✅ Generated `examples/component-loading-button.md` via v2 extractor.
|
|
116
|
+
2. ✅ `tools/audit/stability-review.py` skips generated artifacts (path-based skip-list).
|
|
117
|
+
3. ✅ Added `knowledge/patterns/b2b-onboarding-flows.md`.
|
|
118
|
+
4. ✅ Added "Korean B2B SaaS — sensitive data" row in `knowledge/colors/palettes-by-product-type.md`.
|
|
119
|
+
5. ✅ Updated v2 spec template banner with explicit accuracy claim.
|
|
120
|
+
|
|
121
|
+
## What this validates
|
|
122
|
+
|
|
123
|
+
- v4.0 graduation was correct. The 8 stable surfaces I exercised (skills / commands / knowledge / examples / CLI / agents / docs / audits) all held up.
|
|
124
|
+
- v4.5 family completion was the right call. The 8 polished specs returned 3-5x productivity on form/dialog/list work.
|
|
125
|
+
- v4.6 stability automation works. One real false positive surfaced and got fixed.
|
|
126
|
+
|
|
127
|
+
## What this does NOT validate
|
|
128
|
+
|
|
129
|
+
- VS Code extension under real load (didn't use it during this dogfood — adopter would).
|
|
130
|
+
- npm install path on a fresh machine (would need a clean clone test).
|
|
131
|
+
- Multi-language doc site rendering (mkdocs build was last verified at v3.12 release).
|
|
132
|
+
|
|
133
|
+
These belong in a separate **install / e2e test**.
|
|
134
|
+
|
|
135
|
+
## Cross-reference
|
|
136
|
+
|
|
137
|
+
- [`docs/DOGFOOD-FINDINGS.md`](DOGFOOD-FINDINGS.md) — v1 dogfood (Korean fintech, ~v1.0)
|
|
138
|
+
- [`examples/cases/dogfood-v4-korean-hr-onboarding.md`](../examples/cases/dogfood-v4-korean-hr-onboarding.md) — the deliverable from this run
|
|
139
|
+
- [`docs/SESSION-LOG.md`](SESSION-LOG.md) — v2 → v4 narrative
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Dogfood findings — mkdocs site build (Phase 42)
|
|
2
|
+
|
|
3
|
+
End-to-end verification of the doc site build. Last verified at v3.12 release. Re-verified at v4.7 with significant content additions (Korean docs, MIGRATION-v4, dogfood findings).
|
|
4
|
+
|
|
5
|
+
**Scope**: install mkdocs deps → run `tools/build-docs.sh` to populate `site-src/` → run `mkdocs build --clean` → verify HTML output → check Korean pages.
|
|
6
|
+
|
|
7
|
+
## What worked
|
|
8
|
+
|
|
9
|
+
### 1. Build succeeds end-to-end
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
INFO - Documentation built in 15.84 seconds
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Zero errors. 782 HTML files generated. Both English and Korean trees built.
|
|
16
|
+
|
|
17
|
+
### 2. Korean i18n routing works
|
|
18
|
+
|
|
19
|
+
`docs_structure: suffix` correctly maps `*.ko.md` files to `/ko/...` paths:
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
site/ko/docs/USING/index.html ← from docs/USING.ko.md
|
|
23
|
+
site/ko/docs/CONTRIBUTING/index.html ← from docs/CONTRIBUTING.ko.md
|
|
24
|
+
site/ko/docs/ARCHITECTURE/index.html ← from docs/ARCHITECTURE.ko.md
|
|
25
|
+
site/ko/docs/QUICKSTART/index.html
|
|
26
|
+
site/ko/docs/DISTRIBUTION/index.html
|
|
27
|
+
site/ko/AGENTS/index.html
|
|
28
|
+
site/ko/CHANGELOG/index.html
|
|
29
|
+
... + 5 integration walkthroughs (codex/cursor/aider/sdk/vscode).ko.md
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The v4.1 Korean adopter docs all rendered. The v4.7 dogfood findings docs (this one + Phase 39/40/41) also rendered to both languages.
|
|
33
|
+
|
|
34
|
+
### 3. Symlink-farm pattern still works
|
|
35
|
+
|
|
36
|
+
`tools/build-docs.sh` populates `site-src/` with symlinks to `knowledge/`, `examples/`, `skills/`, `commands/`, `agents/`, `docs/`, `index.md`, `CHANGELOG.md`, `AGENTS.md`, `CLAUDE.md`. mkdocs reads from `site-src/`. Build is idempotent — re-running is safe.
|
|
37
|
+
|
|
38
|
+
### 4. mkdocs-material 9.7+ + pymdown-extensions 10.21+ resolve cleanly
|
|
39
|
+
|
|
40
|
+
The version pins from `docs/requirements.txt` worked end-to-end. The pygments/pymdown interaction bug noted in v3.x is gone.
|
|
41
|
+
|
|
42
|
+
### 5. Build time acceptable
|
|
43
|
+
|
|
44
|
+
15.84 seconds for 782 pages including syntax-highlighted code blocks across 90 knowledge files + 190 examples + integration walkthroughs (EN+KO). Within the < 20s target documented in `docs/RELEASE-CHECKLIST.md`.
|
|
45
|
+
|
|
46
|
+
## Bugs surfaced — and fixed
|
|
47
|
+
|
|
48
|
+
### 1. `link-check.py` had a false-negative regex bug
|
|
49
|
+
|
|
50
|
+
**Found by**: mkdocs build emitted 10 warnings about broken paths in `examples/cases/dogfood-v4-korean-hr-onboarding.md`. The link-check audit had passed all of these.
|
|
51
|
+
|
|
52
|
+
**Root cause**: `link-check.py` strips inline backtick code spans from each line *before* matching link patterns. The regex required ≥ 1 char of link text. When a markdown link with backtick-wrapped text had its backtick contents stripped, it became an empty-text link, and the `+` quantifier failed to match. So *every link with backtick-wrapped text was silently skipped*.
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
Before strip: [`knowledge/typography/foo.md`](knowledge/typography/foo.md)
|
|
56
|
+
After strip: [](knowledge/typography/foo.md)
|
|
57
|
+
Old regex: \[([^\]]+)\]\(...\) ← empty text → no match → unchecked
|
|
58
|
+
New regex: \[([^\]]*)\]\(...\) ← matches empty text → validates target
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Impact**: an entire class of broken links (the most common style in this corpus — citing files via backtick-wrapped paths) was never validated.
|
|
62
|
+
|
|
63
|
+
**Fix**: changed the regex from `+` to `*`. Now empty-text links match and validate.
|
|
64
|
+
|
|
65
|
+
**After fix**: 11 real broken links surfaced and got fixed:
|
|
66
|
+
- `docs/USING.ko.md`: 2 wrong relative paths (`../QUICKSTART.ko.md` should have been `QUICKSTART.ko.md` — both files are in `docs/`).
|
|
67
|
+
- `examples/cases/dogfood-v4-korean-hr-onboarding.md`: 5 paths to non-existent knowledge files (cited `knowledge/typography/korean-typography.md`, but the actual file is at `knowledge/i18n/korean-typography.md`).
|
|
68
|
+
- 4 dialog/flex specs referenced `component-dialog.md` and `component-stack.md` which didn't exist.
|
|
69
|
+
|
|
70
|
+
### 2. Missing primitive component specs
|
|
71
|
+
|
|
72
|
+
**Found by**: link-check (after fix) flagging `component-dialog.md` and `component-stack.md` as targets of multiple references.
|
|
73
|
+
|
|
74
|
+
**Symptom**: 4 v4.5 dialog sub-component specs cross-referenced the parent `component-dialog.md`, but it had never been written. Same for `component-flex.md` → `component-stack.md`.
|
|
75
|
+
|
|
76
|
+
**Severity**: HIGH — these are flagship MUI primitives. v4.5 family completion claimed Dialog was "complete" but the parent spec was missing.
|
|
77
|
+
|
|
78
|
+
**Fix**: generated both via v2 extractor.
|
|
79
|
+
- `examples/component-dialog.md` (2 sources, 15 props — Ant + MUI)
|
|
80
|
+
- `examples/component-stack.md` (1 source, 1 prop — MUI)
|
|
81
|
+
|
|
82
|
+
These are DRAFT-banner specs but the API tables are accurate and the cross-references resolve.
|
|
83
|
+
|
|
84
|
+
### 3. `navigation.instant` incompatible with mkdocs-static-i18n
|
|
85
|
+
|
|
86
|
+
**Found by**: mkdocs build emitted `WARNING - mkdocs_static_i18n: mkdocs-material language switcher contextual link is not compatible with theme.features = navigation.instant`.
|
|
87
|
+
|
|
88
|
+
**Symptom**: with `navigation.instant` enabled, clicking the EN ↔ KO language switcher would fail to navigate to the contextual mirror page (e.g., from `/docs/USING/` the KO toggle should go to `/ko/docs/USING/` — but instant-loading bypassed this).
|
|
89
|
+
|
|
90
|
+
**Fix**: commented out `- navigation.instant` in `mkdocs.yml` `theme.features` with an inline note. SPA-style instant navigation traded for working language switcher — right call for a bilingual site.
|
|
91
|
+
|
|
92
|
+
### 4. Wrong knowledge file paths in dogfood deliverable
|
|
93
|
+
|
|
94
|
+
**Found by**: link-check (after fix).
|
|
95
|
+
|
|
96
|
+
**Symptom**: my v4.7 dogfood deliverable cited fictional knowledge file paths (`knowledge/typography/korean-typography.md`, `knowledge/typography/pretendard-and-fallbacks.md`, `knowledge/conversational/korean-conversational-conventions.md`, `knowledge/colors/semantic-aliases.md`). The corpus actually has those concepts but at different paths.
|
|
97
|
+
|
|
98
|
+
**Fix**: corrected each to actual paths:
|
|
99
|
+
- `knowledge/typography/korean-typography.md` → `knowledge/i18n/korean-typography.md`
|
|
100
|
+
- `knowledge/typography/pretendard-and-fallbacks.md` → removed (Pretendard info lives in i18n/korean-typography.md)
|
|
101
|
+
- `knowledge/conversational/korean-conversational-conventions.md` → `knowledge/conversational/korean-voice-conventions.md`
|
|
102
|
+
- `knowledge/colors/semantic-aliases.md` → `knowledge/colors/color-theory.md`
|
|
103
|
+
|
|
104
|
+
This matters because the dogfood deliverable is itself an example for adopters — citing fake paths would mislead them.
|
|
105
|
+
|
|
106
|
+
### 5. Generated Ant Design swatches looked like hash links
|
|
107
|
+
|
|
108
|
+
**Found by**: mkdocs build log review after adding the local CI parity gate.
|
|
109
|
+
|
|
110
|
+
**Symptom**: `knowledge/design-tokens/ant-design.md` rendered preset swatches as ``. MkDocs treated those values as internal anchor links and reported false link messages for colors like `#1677FF`.
|
|
111
|
+
|
|
112
|
+
**Fix**: changed `tools/extractors/ant_design_tokens.py` to emit decorative inline HTML swatches with `aria-hidden="true"`, regenerated the token reference, and added `tools/extractors/ant_design_tokens.py --self-test` to prevent the hash-image pattern from returning.
|
|
113
|
+
|
|
114
|
+
### 6. Directory links obscured real docs warnings
|
|
115
|
+
|
|
116
|
+
**Found by**: local MkDocs warning categorization during push-readiness hardening.
|
|
117
|
+
|
|
118
|
+
**Symptom**: root README badges, language toggles, skill catalog entries, MCP docs, and a few worked examples linked to directories such as `skills/`, `examples/`, or `skills/component-spec-writer/`. The repo-local link audit accepted some of these, but MkDocs could not resolve them to tracked site pages cleanly.
|
|
119
|
+
|
|
120
|
+
**Fix**: changed navigation-style links to concrete markdown files or public docs URLs, corrected `examples/` relative paths into `knowledge/`, `commands/`, and `docs/`, and rendered tool-only references outside the site tree as code paths.
|
|
121
|
+
|
|
122
|
+
### 7. Non-refs warnings still hid the remaining policy question
|
|
123
|
+
|
|
124
|
+
**Found by**: final local MkDocs warning review after directory-link cleanup.
|
|
125
|
+
|
|
126
|
+
**Symptom**: After navigation links were fixed, a small set of non-`refs/` warnings still came from command/tooling docs and `.ko.md` announcement drafts. These were not content bugs, but they obscured the fact that the only substantial remaining warning class is intentional upstream `refs/` source linking.
|
|
127
|
+
|
|
128
|
+
**Fix**: converted repo-tool references to code paths and moved Korean launch draft/contributor references to GitHub URLs where they are meant to point at files rather than site pages.
|
|
129
|
+
|
|
130
|
+
### 8. Warning policy needed to be executable, not only documented
|
|
131
|
+
|
|
132
|
+
**Found by**: reviewing Phase 60's narrowed warning stream before push-readiness.
|
|
133
|
+
|
|
134
|
+
**Symptom**: The local build had 0 non-`refs/` warnings, but `npm run ci:local` still treated any successful MkDocs process as good enough. That meant a future directory-style link, unresolved Korean page link, or launch draft link could reappear and pass local parity.
|
|
135
|
+
|
|
136
|
+
**Fix**: `tools/audit/local-ci.py` now captures `mkdocs build --clean` output, allows only warning lines that reference `refs/`, and fails on any non-`refs/` warning. Its self-test covers refs-only output and mixed output.
|
|
137
|
+
|
|
138
|
+
### 9. Successful local parity logs were too noisy
|
|
139
|
+
|
|
140
|
+
**Found by**: running the new warning-policy path through `npm run ci:local -- --skip-release-check --skip-vscode`.
|
|
141
|
+
|
|
142
|
+
**Symptom**: The policy worked, but successful runs still echoed the full MkDocs output, including hundreds of accepted `refs/` warning lines. That made the local parity log harder to scan even though the final policy result was clean.
|
|
143
|
+
|
|
144
|
+
**Fix**: `tools/audit/local-ci.py` now captures successful MkDocs output quietly and prints the compact warning-policy summary instead. Failed subprocesses still echo captured output for diagnostics.
|
|
145
|
+
|
|
146
|
+
### 10. Docs deployment still had a separate build path
|
|
147
|
+
|
|
148
|
+
**Found by**: comparing `npm run ci:local` with `.github/workflows/docs.yml` before Real-CI verification.
|
|
149
|
+
|
|
150
|
+
**Symptom**: Local CI enforced the non-`refs/` warning policy, but the GitHub Pages workflow still called `mkdocs build --clean` directly. A warning regression could therefore fail locally but still deploy if someone bypassed the local gate.
|
|
151
|
+
|
|
152
|
+
**Fix**: added `tools/audit/local-ci.py --docs-only` and switched `.github/workflows/docs.yml` to use it. The workflow path filter now includes the shared docs build helper files.
|
|
153
|
+
|
|
154
|
+
### 11. Workflow alignment needed a drift check
|
|
155
|
+
|
|
156
|
+
**Found by**: reviewing how Phase 63 would be kept correct after future docs workflow edits.
|
|
157
|
+
|
|
158
|
+
**Symptom**: The docs workflow had been aligned with local CI, but nothing would fail if a later edit reintroduced direct `mkdocs build --clean` or removed the helper paths from the workflow trigger.
|
|
159
|
+
|
|
160
|
+
**Fix**: `tools/audit/local-ci.py` now checks `.github/workflows/docs.yml` for the shared `--docs-only` command and required path filters. The check runs in local CI, docs-only mode, and local CI self-test.
|
|
161
|
+
|
|
162
|
+
### 12. Drift check should inspect workflow fields
|
|
163
|
+
|
|
164
|
+
**Found by**: reviewing the Phase 64 implementation before the branch is pushed.
|
|
165
|
+
|
|
166
|
+
**Symptom**: The first drift check searched the entire workflow text for exact snippets. It worked, but the check was tied to indentation-specific strings and could be confused by unrelated text.
|
|
167
|
+
|
|
168
|
+
**Fix**: `tools/audit/local-ci.py` now extracts one-line `run:` commands and `paths:` entries first, then applies the policy to those parsed lists.
|
|
169
|
+
|
|
170
|
+
### 13. Korean top-level site inputs were not workflow triggers
|
|
171
|
+
|
|
172
|
+
**Found by**: comparing `tools/build-docs.sh` symlink inputs with `.github/workflows/docs.yml` path filters.
|
|
173
|
+
|
|
174
|
+
**Symptom**: `README.ko.md` and `AGENTS.ko.md` are symlinked into `site-src/`, but changes to those files did not trigger the GitHub Pages docs workflow by themselves.
|
|
175
|
+
|
|
176
|
+
**Fix**: added both Korean top-level files to the docs workflow path filter and expanded the local CI drift check so top-level site inputs remain required workflow paths.
|
|
177
|
+
|
|
178
|
+
### 14. Corpus directory triggers should be part of the invariant too
|
|
179
|
+
|
|
180
|
+
**Found by**: reviewing the workflow path-filter drift check after adding top-level site inputs.
|
|
181
|
+
|
|
182
|
+
**Symptom**: The actual workflow already watched `knowledge/**`, `examples/**`, `skills/**`, `agents/**`, `commands/**`, and `docs/**`, but local CI did not treat those corpus directory globs as required policy entries.
|
|
183
|
+
|
|
184
|
+
**Fix**: expanded `tools/audit/local-ci.py` required docs workflow paths to include the main corpus directory globs.
|
|
185
|
+
|
|
186
|
+
### 15. Refs-only warnings needed a count baseline too
|
|
187
|
+
|
|
188
|
+
**Found by**: reviewing the remaining policy gap after the docs workflow path invariants were complete.
|
|
189
|
+
|
|
190
|
+
**Symptom**: Local CI rejected non-`refs/` warnings, but any new `refs/` warning still passed as acceptable. That meant the known 632-warning stream could grow quietly even though every added warning makes Real-CI logs harder to compare.
|
|
191
|
+
|
|
192
|
+
**Fix**: added a 632-warning refs baseline cap to `tools/audit/local-ci.py` and covered both the passing baseline and over-baseline failure in the local CI self-test.
|
|
193
|
+
|
|
194
|
+
## Known acceptable warnings (not fixed)
|
|
195
|
+
|
|
196
|
+
- **280 warnings: `brand-references.md` → `refs/`** — `refs/` is gitignored upstream sources. The links are intentional (point to upstream brand examples for context). Acceptable.
|
|
197
|
+
- **112 warnings: `components/INDEX.md` → various** — index file references files outside site scope; acceptable.
|
|
198
|
+
|
|
199
|
+
Total remaining MkDocs `WARNING` lines in the latest local build: 632. Non-`refs/` warnings are 0, root `index.md` / `index.ko.md` warnings are 0, skill directory link INFO messages are 0, and the Ant Design color-anchor class remains 0. Remaining warnings are upstream `refs/` source links intentionally kept as repo references, and local CI now caps that accepted stream at 632 warnings. `npm run ci:local` enforces this non-`refs/` warning policy and refs baseline on success; the GitHub Pages docs workflow uses the same docs-only policy path, watches corpus directories and Korean top-level site inputs, and local CI checks that the workflow stays aligned by inspecting workflow commands and path entries.
|
|
200
|
+
|
|
201
|
+
## Performance
|
|
202
|
+
|
|
203
|
+
| Step | Time |
|
|
204
|
+
| --- | --- |
|
|
205
|
+
| `pip install -r docs/requirements.txt` (cold) | ~30 s |
|
|
206
|
+
| `./tools/build-docs.sh` (symlink farm) | <1 s |
|
|
207
|
+
| `mkdocs build --clean` | 15.84 s |
|
|
208
|
+
| Output: 782 HTML pages, 2 languages, full nav | |
|
|
209
|
+
|
|
210
|
+
## What this validates
|
|
211
|
+
|
|
212
|
+
- mkdocs build pipeline works end-to-end at v4.7.
|
|
213
|
+
- All v4.x docs (MIGRATION-v4, USING.ko, CONTRIBUTING.ko, ARCHITECTURE.ko, dogfood findings, announcements) render.
|
|
214
|
+
- Korean i18n routing produces `/ko/...` paths correctly.
|
|
215
|
+
- Build time within RELEASE-CHECKLIST budget (< 20s).
|
|
216
|
+
- mkdocs-material 9.7+ + pymdown 10.21+ stable.
|
|
217
|
+
|
|
218
|
+
## What this does NOT validate
|
|
219
|
+
|
|
220
|
+
- GitHub Pages deployment (would need actual push to gh-pages branch).
|
|
221
|
+
- Custom domain DNS + HTTPS.
|
|
222
|
+
- Search index population (mkdocs-material's built-in search; tested locally but not at scale).
|
|
223
|
+
- Mobile rendering of Korean Hangul typography.
|
|
224
|
+
- Cross-link rendering (anchor jumps work in built HTML, not just resolved at build).
|
|
225
|
+
|
|
226
|
+
These belong in a deployment-time test (Phase 43+ if launch becomes imminent).
|
|
227
|
+
|
|
228
|
+
## Cross-reference
|
|
229
|
+
|
|
230
|
+
- [`docs/DOGFOOD-V4-FINDINGS.md`](DOGFOOD-V4-FINDINGS.md) — Phase 39 (corpus content)
|
|
231
|
+
- [`docs/DOGFOOD-V4-VSCODE-FINDINGS.md`](DOGFOOD-V4-VSCODE-FINDINGS.md) — Phase 40 (VS Code extension)
|
|
232
|
+
- [`docs/DOGFOOD-V4-NPM-FINDINGS.md`](DOGFOOD-V4-NPM-FINDINGS.md) — Phase 41 (npm distribution)
|
|
233
|
+
- [`docs/RELEASE-CHECKLIST.md`](RELEASE-CHECKLIST.md) — "Doc site build" step 7 of pre-release ritual
|