@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,178 @@
|
|
|
1
|
+
# GitHub MCP integration
|
|
2
|
+
|
|
3
|
+
Use GitHub MCP to bring design-ai into pull request review workflows. Audit PRs for design system compliance, post review comments, create issues for design debt.
|
|
4
|
+
|
|
5
|
+
## Available tools (when GitHub MCP connected)
|
|
6
|
+
|
|
7
|
+
After authenticating via `mcp__plugin_engineering_github__authenticate`:
|
|
8
|
+
|
|
9
|
+
| Tool | What it does |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `get_pull_request` | Read PR metadata, files changed, diff |
|
|
12
|
+
| `list_pull_requests` | List PRs (open / merged / by author) |
|
|
13
|
+
| `create_pr_comment` | Post a review comment |
|
|
14
|
+
| `create_review` | Post a multi-comment review |
|
|
15
|
+
| `create_issue` | New issue |
|
|
16
|
+
| `list_issues` | Read issues |
|
|
17
|
+
| `get_repo_contents` | Read file from a repo |
|
|
18
|
+
| `update_pr` | Update title/description |
|
|
19
|
+
|
|
20
|
+
## Workflow A: PR design review
|
|
21
|
+
|
|
22
|
+
The headline use case. Agent reviews a PR for design system compliance.
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
You: Review PR #123 in our-org/web for design system compliance.
|
|
26
|
+
Agent:
|
|
27
|
+
1. github__get_pull_request(repo="our-org/web", number=123)
|
|
28
|
+
[returns diff, files changed]
|
|
29
|
+
2. For each changed file:
|
|
30
|
+
- Read content via github__get_repo_contents
|
|
31
|
+
- Apply skills/design-system-qa/ checks:
|
|
32
|
+
* Raw hex values (instead of token references)?
|
|
33
|
+
* Missing aria-* attributes on new components?
|
|
34
|
+
* Hardcoded spacing values not on the 4-base scale?
|
|
35
|
+
* Missing prefers-reduced-motion handling?
|
|
36
|
+
3. Compile findings by file with severity.
|
|
37
|
+
4. github__create_review(repo=..., pr=123, body=summary, comments=[
|
|
38
|
+
{path: "src/Button.tsx", line: 23, body: "Use --color-primary-default, not #7C3AED"},
|
|
39
|
+
...
|
|
40
|
+
])
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The agent posts inline review comments. Critical issues block merge.
|
|
44
|
+
|
|
45
|
+
See the new [`skills/design-pr-review/PLAYBOOK.md`](../../skills/design-pr-review/PLAYBOOK.md).
|
|
46
|
+
|
|
47
|
+
## Workflow B: create issues for design debt
|
|
48
|
+
|
|
49
|
+
After running a UX audit / design system audit, file each finding as an issue.
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
You: Run skills/design-system-qa on our-org/web; create issues for criticals.
|
|
53
|
+
Agent:
|
|
54
|
+
1. Pull repo state via github__get_repo_contents (or clone locally).
|
|
55
|
+
2. Apply design-system-qa playbook.
|
|
56
|
+
3. For each Critical finding:
|
|
57
|
+
github__create_issue(
|
|
58
|
+
repo="our-org/web",
|
|
59
|
+
title="[design-debt] Raw hex values in Button.tsx",
|
|
60
|
+
body=<finding details + cited knowledge file>,
|
|
61
|
+
labels=["design-debt", "design-system"]
|
|
62
|
+
)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Pairs well with Linear MCP for teams using Linear instead of GitHub Issues.
|
|
66
|
+
|
|
67
|
+
## Workflow C: track design system PR status
|
|
68
|
+
|
|
69
|
+
Generate a status report of design system-related PRs.
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
You: Show me design system PRs from the last 2 weeks.
|
|
73
|
+
Agent:
|
|
74
|
+
1. github__list_pull_requests(repo=..., state=all, since=2weeks_ago)
|
|
75
|
+
2. Filter by labels (design-system, design-debt)
|
|
76
|
+
3. Categorize: shipped, in review, blocked, abandoned.
|
|
77
|
+
4. Output a markdown summary.
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Workflow D: comment on design system token bumps
|
|
81
|
+
|
|
82
|
+
When a PR bumps the design tokens, design-ai checks for breaking changes.
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
PR opens that modifies tokens/source.json:
|
|
86
|
+
- Changed: --color-primary-default from #1976D2 to #0D9488
|
|
87
|
+
|
|
88
|
+
Agent (via webhook or scheduled):
|
|
89
|
+
1. github__get_pull_request(...)
|
|
90
|
+
2. Detect token diff.
|
|
91
|
+
3. Run impact analysis: how many components consume this token?
|
|
92
|
+
4. github__create_pr_comment(
|
|
93
|
+
body=`Breaking change: --color-primary-default. Affects 47 components.
|
|
94
|
+
Verify Storybook visual tests pass before merging.`
|
|
95
|
+
)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Setup
|
|
99
|
+
|
|
100
|
+
### Authentication
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
# In Claude Code or other agent:
|
|
104
|
+
mcp__plugin_engineering_github__authenticate
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
OAuth flow opens browser; user grants the GitHub App access. Per-workspace one-time.
|
|
108
|
+
|
|
109
|
+
### Required scopes
|
|
110
|
+
|
|
111
|
+
For full design-ai workflow:
|
|
112
|
+
- `repo` (read code, PRs, issues)
|
|
113
|
+
- `pull_requests:write` (post comments, reviews)
|
|
114
|
+
- `issues:write` (create design debt issues)
|
|
115
|
+
|
|
116
|
+
For read-only workflows (just review): `repo:read` is enough.
|
|
117
|
+
|
|
118
|
+
### App config
|
|
119
|
+
|
|
120
|
+
GitHub MCP server can be:
|
|
121
|
+
- Anthropic-provided (managed) — simpler.
|
|
122
|
+
- Self-hosted via `@modelcontextprotocol/server-github` — for security-sensitive orgs.
|
|
123
|
+
|
|
124
|
+
## Common pitfalls
|
|
125
|
+
|
|
126
|
+
| Pitfall | Fix |
|
|
127
|
+
| --- | --- |
|
|
128
|
+
| Auth expires after 1 hour | Re-authenticate. Some MCP servers refresh automatically. |
|
|
129
|
+
| Rate limit (5K req/hour for GitHub API) | Cache PR contents; don't refetch the same PR multiple times. |
|
|
130
|
+
| Large diffs return truncated | Use `get_repo_contents` per-file rather than full diff. |
|
|
131
|
+
| Comments post but aren't visible | Check the user has commenting permission on the repo. |
|
|
132
|
+
| Bot comments spam the PR | Aggregate findings into one review, not per-finding comments. |
|
|
133
|
+
|
|
134
|
+
## Aggregation strategy
|
|
135
|
+
|
|
136
|
+
Don't post 50 inline comments. Instead:
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
[Single Review Comment]
|
|
140
|
+
Body:
|
|
141
|
+
## Design system review: 12 issues
|
|
142
|
+
|
|
143
|
+
### Critical (3)
|
|
144
|
+
- Button.tsx:23 — Raw hex `#7C3AED` should be `--color-primary-default`
|
|
145
|
+
- Card.tsx:45 — Missing `aria-label` on icon-only button
|
|
146
|
+
- ...
|
|
147
|
+
|
|
148
|
+
### High (4)
|
|
149
|
+
- ...
|
|
150
|
+
|
|
151
|
+
### Cited references
|
|
152
|
+
- [knowledge/colors/color-theory.md](https://github.com/your-org/design-ai/...)
|
|
153
|
+
- ...
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Plus 2–3 inline comments on the most-critical specific lines (where context matters).
|
|
157
|
+
|
|
158
|
+
This is humane review — actionable summary at top, deep links to specifics.
|
|
159
|
+
|
|
160
|
+
## Privacy
|
|
161
|
+
|
|
162
|
+
- GitHub MCP has access to whatever the auth user can see.
|
|
163
|
+
- Don't grant org-wide tokens for personal work.
|
|
164
|
+
- Audit installed GitHub Apps quarterly.
|
|
165
|
+
- design-ai never logs the auth token.
|
|
166
|
+
|
|
167
|
+
## When GitHub MCP is unavailable
|
|
168
|
+
|
|
169
|
+
`design-pr-review` skill falls back to:
|
|
170
|
+
- User pastes the diff manually.
|
|
171
|
+
- Agent outputs the review as markdown for the user to copy into the PR.
|
|
172
|
+
|
|
173
|
+
## Cross-reference
|
|
174
|
+
|
|
175
|
+
- [`docs/MCP-INTEGRATION.md`](../MCP-INTEGRATION.md) — overview
|
|
176
|
+
- [`skills/design-pr-review/PLAYBOOK.md`](../../skills/design-pr-review/PLAYBOOK.md) — the MCP-aware skill
|
|
177
|
+
- [`docs/integrations/linear-mcp.md`](linear-mcp.md) — Linear alternative for issue tracking
|
|
178
|
+
- [`knowledge/patterns/design-system-qa.md`](../../knowledge/patterns/design-system-qa.md) — what gets checked
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# Linear MCP integration
|
|
2
|
+
|
|
3
|
+
Use Linear MCP to track design system work, audit findings, and design debt as Linear issues. Pairs with `skills/design-system-qa` and `skills/ux-audit` to convert findings into trackable work.
|
|
4
|
+
|
|
5
|
+
## Available tools (when Linear MCP connected)
|
|
6
|
+
|
|
7
|
+
After authenticating via `mcp__plugin_design_linear__authenticate`:
|
|
8
|
+
|
|
9
|
+
| Tool | What it does |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `list_issues` | Read issues (filtered by team / state / labels) |
|
|
12
|
+
| `get_issue` | Single issue detail |
|
|
13
|
+
| `create_issue` | New issue |
|
|
14
|
+
| `update_issue` | Edit existing |
|
|
15
|
+
| `list_projects` | List Linear projects |
|
|
16
|
+
| `list_teams` | List teams |
|
|
17
|
+
| `add_comment` | Comment on an issue |
|
|
18
|
+
|
|
19
|
+
## Workflow A: convert audit findings to issues
|
|
20
|
+
|
|
21
|
+
After `/design-review` or `skills/design-system-qa`, file each finding as a Linear issue.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
You: Run skills/design-system-qa on this codebase; create Linear issues for criticals.
|
|
25
|
+
Agent:
|
|
26
|
+
1. Apply skills/design-system-qa/PLAYBOOK.md.
|
|
27
|
+
2. linear__list_teams() → find the design or eng team.
|
|
28
|
+
3. For each Critical finding:
|
|
29
|
+
linear__create_issue(
|
|
30
|
+
team="DESIGN",
|
|
31
|
+
title="[design-debt] Raw hex values in Button.tsx",
|
|
32
|
+
description=<finding details + cited knowledge file links>,
|
|
33
|
+
labels=["design-debt", "critical"],
|
|
34
|
+
priority=1, // 1=urgent
|
|
35
|
+
project="Design System"
|
|
36
|
+
)
|
|
37
|
+
4. Output: list of created issue URLs.
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Workflow B: track design system rollout
|
|
41
|
+
|
|
42
|
+
Use Linear's project + cycle structure to track rollout of a new design system version.
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
You: Plan the v2.0 design system rollout in Linear.
|
|
46
|
+
Agent:
|
|
47
|
+
1. linear__create_project(
|
|
48
|
+
name="Design System v2.0",
|
|
49
|
+
description=<scope, goals>
|
|
50
|
+
)
|
|
51
|
+
2. For each component to migrate, create a sub-issue:
|
|
52
|
+
linear__create_issue(
|
|
53
|
+
team="ENG",
|
|
54
|
+
project=<project_id>,
|
|
55
|
+
title="Migrate Button to v2 tokens",
|
|
56
|
+
description=<migration checklist>,
|
|
57
|
+
labels=["design-system-v2"]
|
|
58
|
+
)
|
|
59
|
+
3. Output: project URL + issue list.
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Workflow C: read team's design backlog
|
|
63
|
+
|
|
64
|
+
Before applying `/design-from-brief`, agent can read existing context from Linear.
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
You: What design issues are open right now?
|
|
68
|
+
Agent:
|
|
69
|
+
1. linear__list_issues(
|
|
70
|
+
team="DESIGN",
|
|
71
|
+
state="in_progress",
|
|
72
|
+
labels=["design-system"]
|
|
73
|
+
)
|
|
74
|
+
2. Summarize: <N> open, <breakdown by priority>.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Workflow D: link audit reports to existing issues
|
|
78
|
+
|
|
79
|
+
When the same finding has been filed before, comment on the existing issue rather than duplicating.
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
You: Audit the dashboard; file Linear issues but check for duplicates.
|
|
83
|
+
Agent:
|
|
84
|
+
1. Apply skills/ux-audit/PLAYBOOK.md.
|
|
85
|
+
2. For each finding:
|
|
86
|
+
- linear__list_issues(query=<finding title fragment>)
|
|
87
|
+
- If existing issue found:
|
|
88
|
+
linear__add_comment(issue=<existing>, comment="Audit re-confirms this issue: ...")
|
|
89
|
+
- Else:
|
|
90
|
+
linear__create_issue(...)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Severity → Linear priority mapping
|
|
94
|
+
|
|
95
|
+
design-ai's severity model translates to Linear priorities:
|
|
96
|
+
|
|
97
|
+
| design-ai severity | Linear priority |
|
|
98
|
+
| --- | --- |
|
|
99
|
+
| 🔴 Critical | 1 (Urgent) |
|
|
100
|
+
| 🟠 High | 2 (High) |
|
|
101
|
+
| 🟡 Medium | 3 (Medium) |
|
|
102
|
+
| 🟢 Low | 4 (Low) |
|
|
103
|
+
|
|
104
|
+
## Issue formatting
|
|
105
|
+
|
|
106
|
+
Use Linear's markdown for the description:
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
## Finding
|
|
110
|
+
Raw hex value `#7C3AED` in `src/components/Button/Button.tsx:23` instead of `--color-primary-default` token.
|
|
111
|
+
|
|
112
|
+
## Why
|
|
113
|
+
Hardcoded hex values cause:
|
|
114
|
+
- Inability to theme the app
|
|
115
|
+
- Drift from the design system
|
|
116
|
+
- Manual updates required when tokens change
|
|
117
|
+
|
|
118
|
+
## Cited rule
|
|
119
|
+
[knowledge/PRINCIPLES.md](https://github.com/your-org/design-ai/blob/main/knowledge/PRINCIPLES.md) rule 2:
|
|
120
|
+
> Tokens by role, not by hex.
|
|
121
|
+
|
|
122
|
+
## Recommended fix
|
|
123
|
+
Replace `#7C3AED` with `var(--color-primary-default)` (CSS) or `tokens.color.primary.default` (JS).
|
|
124
|
+
|
|
125
|
+
## Detection rule
|
|
126
|
+
Stylelint with `color-no-hex` rule would catch this on PR.
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Linear's markdown supports:
|
|
130
|
+
- Headings, paragraphs, lists
|
|
131
|
+
- Code blocks (with language)
|
|
132
|
+
- Inline code
|
|
133
|
+
- Links
|
|
134
|
+
- Mentions (`@username`)
|
|
135
|
+
|
|
136
|
+
## Setup
|
|
137
|
+
|
|
138
|
+
### Authentication
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
# In agent:
|
|
142
|
+
mcp__plugin_design_linear__authenticate
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
OAuth → user grants Linear workspace access. Per-workspace once.
|
|
146
|
+
|
|
147
|
+
### Required scopes
|
|
148
|
+
|
|
149
|
+
- `read` (issues, projects, teams)
|
|
150
|
+
- `write` (create / update issues)
|
|
151
|
+
- `admin:project` (only if creating projects)
|
|
152
|
+
|
|
153
|
+
### Team selection
|
|
154
|
+
|
|
155
|
+
design-ai's issues should go to a designated team:
|
|
156
|
+
- Design team (if dedicated): `DESIGN-`.
|
|
157
|
+
- Eng team if design-and-eng-share: `ENG-`.
|
|
158
|
+
- Specific design-system team if exists: `DS-`.
|
|
159
|
+
|
|
160
|
+
Confirm with team lead. Document in `.cursorrules` or project-level config.
|
|
161
|
+
|
|
162
|
+
## Workflow integration with design-system-qa
|
|
163
|
+
|
|
164
|
+
`skills/design-system-qa` outputs a structured findings list. Each finding has:
|
|
165
|
+
- Severity
|
|
166
|
+
- Title
|
|
167
|
+
- Location (file/line)
|
|
168
|
+
- Cited knowledge
|
|
169
|
+
|
|
170
|
+
Map this 1:1 to Linear issues:
|
|
171
|
+
|
|
172
|
+
```python
|
|
173
|
+
# Pseudocode
|
|
174
|
+
for finding in qa_report.findings:
|
|
175
|
+
linear.create_issue({
|
|
176
|
+
team="DESIGN",
|
|
177
|
+
project="Design System",
|
|
178
|
+
title=f"[{finding.severity}] {finding.title}",
|
|
179
|
+
description=format_for_linear(finding),
|
|
180
|
+
priority=severity_to_priority(finding.severity),
|
|
181
|
+
labels=["design-debt", finding.severity],
|
|
182
|
+
})
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
This is the canonical "audit → tracked work" pipeline.
|
|
186
|
+
|
|
187
|
+
## Privacy
|
|
188
|
+
|
|
189
|
+
- Linear auth has full workspace access. Audit installed apps quarterly.
|
|
190
|
+
- Don't include customer data in issue descriptions.
|
|
191
|
+
- For sensitive design (security review findings, leaked-credential issues): post privately, not in Design board.
|
|
192
|
+
|
|
193
|
+
## Common pitfalls
|
|
194
|
+
|
|
195
|
+
| Pitfall | Fix |
|
|
196
|
+
| --- | --- |
|
|
197
|
+
| Issue created in wrong team | Verify team_id before bulk-creating |
|
|
198
|
+
| Duplicates after re-audit | Search-first pattern (Workflow D) |
|
|
199
|
+
| Auth expires | Refresh / re-authenticate |
|
|
200
|
+
| Markdown links don't render | Linear has slightly different markdown — test before bulk-creating |
|
|
201
|
+
| Priority not setting | Linear uses 1=urgent, 4=low; reverse from many systems |
|
|
202
|
+
|
|
203
|
+
## When Linear MCP is unavailable
|
|
204
|
+
|
|
205
|
+
design-system-qa skill falls back to:
|
|
206
|
+
- Outputting the findings list as a markdown report.
|
|
207
|
+
- User pastes into Linear manually OR uses GitHub MCP for GitHub Issues.
|
|
208
|
+
|
|
209
|
+
## Cross-reference
|
|
210
|
+
|
|
211
|
+
- [`docs/MCP-INTEGRATION.md`](../MCP-INTEGRATION.md) — overview
|
|
212
|
+
- [`docs/integrations/github-mcp.md`](github-mcp.md) — GitHub Issues alternative
|
|
213
|
+
- [`skills/design-system-qa/PLAYBOOK.md`](../../skills/design-system-qa/PLAYBOOK.md) — generates findings
|
|
214
|
+
- [`skills/ux-audit/PLAYBOOK.md`](../../skills/ux-audit/PLAYBOOK.md) — generates findings
|
|
215
|
+
- [`knowledge/patterns/design-system-qa.md`](../../knowledge/patterns/design-system-qa.md)
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Notion MCP integration
|
|
2
|
+
|
|
3
|
+
Mirror design-ai's knowledge base to Notion so non-engineering audiences (designers, PMs, executives) can browse without GitHub access. Capture team's design decisions back into the knowledge base.
|
|
4
|
+
|
|
5
|
+
## Available tools (when Notion MCP connected)
|
|
6
|
+
|
|
7
|
+
| Tool | What it does |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `notion-fetch` | Read a Notion page or database |
|
|
10
|
+
| `notion-search` | Find pages by query |
|
|
11
|
+
| `notion-create-pages` | Create new pages |
|
|
12
|
+
| `notion-update-page` | Edit existing |
|
|
13
|
+
| `notion-create-database` | New database (table-of-pages) |
|
|
14
|
+
| `notion-update-data-source` | Modify database schema |
|
|
15
|
+
| `notion-create-comment` | Comment on a page |
|
|
16
|
+
| `notion-get-comments` | Read comments |
|
|
17
|
+
| `notion-get-users` | List workspace users (for permissions) |
|
|
18
|
+
| `notion-get-teams` | List teams |
|
|
19
|
+
|
|
20
|
+
## Workflow A: mirror knowledge base to Notion
|
|
21
|
+
|
|
22
|
+
Designers may not be in the GitHub repo. Sync design-ai's knowledge to a Notion site they can browse.
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
You: Sync the knowledge base to Notion under our Design page.
|
|
26
|
+
Agent:
|
|
27
|
+
1. notion-search(query="Design") → find the parent page.
|
|
28
|
+
2. For each file in knowledge/:
|
|
29
|
+
- Convert markdown → Notion blocks.
|
|
30
|
+
- notion-create-pages(parent={...}, title=..., body=...)
|
|
31
|
+
3. Create an index page linking to all sub-pages.
|
|
32
|
+
4. Output the URL.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Run periodically (weekly) to keep Notion in sync.
|
|
36
|
+
|
|
37
|
+
### Direction-of-truth
|
|
38
|
+
|
|
39
|
+
Knowledge files in this repo are the **source of truth**. Notion is a mirror.
|
|
40
|
+
|
|
41
|
+
If a designer edits Notion content, that's lost on next sync. Capture design decisions as **separate Notion pages** (in a "Design Decisions" database) — those don't get overwritten and feed back into knowledge as needed.
|
|
42
|
+
|
|
43
|
+
## Workflow B: capture design decisions
|
|
44
|
+
|
|
45
|
+
Team meeting → decisions → into Notion → into knowledge base.
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
You: Capture this decision: "We're using teal-600 (#0D9488) as our primary
|
|
49
|
+
because differentiation from Toss/Shinhan blue matters more than safest-blue."
|
|
50
|
+
|
|
51
|
+
Agent:
|
|
52
|
+
1. notion-create-pages(
|
|
53
|
+
database="Design Decisions",
|
|
54
|
+
title="Primary brand: teal not blue (2026-05-08)",
|
|
55
|
+
body="...",
|
|
56
|
+
properties={status: "decided", date: ..., area: "color"}
|
|
57
|
+
)
|
|
58
|
+
2. Optionally suggest updating knowledge/colors/* with the rationale.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Pattern: decisions live in Notion (timestamped log); knowledge files reflect the *outcome*.
|
|
62
|
+
|
|
63
|
+
## Workflow C: read team's brand brief from Notion
|
|
64
|
+
|
|
65
|
+
User has a brand brief in Notion; agent should read it before generating a palette.
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
You: Read our brand brief from Notion and apply /design-from-brief.
|
|
69
|
+
Agent:
|
|
70
|
+
1. notion-search(query="brand brief") → page URL.
|
|
71
|
+
2. notion-fetch(url=...)
|
|
72
|
+
3. Extract structured brief from the page content.
|
|
73
|
+
4. Apply commands/design-from-brief.md.
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Workflow D: design system status report
|
|
77
|
+
|
|
78
|
+
Auto-generate a weekly status report in Notion.
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
You: Post this week's design system update to Notion.
|
|
82
|
+
Agent:
|
|
83
|
+
1. python3 tools/audit/check-coverage.py — get current numbers.
|
|
84
|
+
2. python3 tools/audit/changelog-generate.py — recent changes.
|
|
85
|
+
3. Compose update: components added, coverage %, open audit issues.
|
|
86
|
+
4. notion-update-page(url="<weekly status page URL>", content=...)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Setup
|
|
90
|
+
|
|
91
|
+
### Authentication
|
|
92
|
+
|
|
93
|
+
Notion MCP uses Notion's official integration:
|
|
94
|
+
1. Create an internal integration at notion.so/profile/integrations.
|
|
95
|
+
2. Grant access to the workspace pages design-ai will modify.
|
|
96
|
+
3. Configure the agent's MCP server with the integration token.
|
|
97
|
+
|
|
98
|
+
```jsonc
|
|
99
|
+
// ~/.codex/mcp.json or equivalent
|
|
100
|
+
{
|
|
101
|
+
"mcpServers": {
|
|
102
|
+
"notion": {
|
|
103
|
+
"command": "npx",
|
|
104
|
+
"args": ["@notionhq/mcp-server"],
|
|
105
|
+
"env": {
|
|
106
|
+
"NOTION_TOKEN": "secret_..."
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
For Claude Code: similar; add via `claude mcp add notion ...`.
|
|
114
|
+
|
|
115
|
+
### Permissions
|
|
116
|
+
|
|
117
|
+
Be careful with write access. Recommended:
|
|
118
|
+
- **Read access** to the entire team's design pages.
|
|
119
|
+
- **Write access** only to the design-ai mirror page hierarchy.
|
|
120
|
+
|
|
121
|
+
This way, design-ai can't accidentally clobber unrelated content.
|
|
122
|
+
|
|
123
|
+
## Markdown → Notion blocks conversion
|
|
124
|
+
|
|
125
|
+
Notion's API expects structured blocks, not markdown. Conversion rules:
|
|
126
|
+
|
|
127
|
+
| Markdown | Notion block |
|
|
128
|
+
| --- | --- |
|
|
129
|
+
| `# Heading 1` | `heading_1` |
|
|
130
|
+
| `## Heading 2` | `heading_2` |
|
|
131
|
+
| `### Heading 3` | `heading_3` |
|
|
132
|
+
| `paragraph text` | `paragraph` |
|
|
133
|
+
| `- bullet` | `bulleted_list_item` |
|
|
134
|
+
| `1. numbered` | `numbered_list_item` |
|
|
135
|
+
| `[link](url)` | text with link annotation |
|
|
136
|
+
| `**bold**` | text with bold annotation |
|
|
137
|
+
| `` `code` `` | text with code annotation |
|
|
138
|
+
| ` ```block``` ` | `code` block |
|
|
139
|
+
| `<!-- HTML -->` | render as paragraph or strip |
|
|
140
|
+
| `\| table \|` | `table` (Notion's table API is awkward — many tools render as 2-column lists instead) |
|
|
141
|
+
|
|
142
|
+
Libraries that handle this:
|
|
143
|
+
- `notion-to-md` (Notion → markdown — reverse direction)
|
|
144
|
+
- Custom parser for design-ai's specific markdown patterns
|
|
145
|
+
|
|
146
|
+
For simple knowledge-mirror use case: a basic converter handling headings, paragraphs, lists, and code blocks is ~80% of value.
|
|
147
|
+
|
|
148
|
+
## Common pitfalls
|
|
149
|
+
|
|
150
|
+
| Pitfall | Fix |
|
|
151
|
+
| --- | --- |
|
|
152
|
+
| Notion API rate limit | Cap to 3 req/sec; batch creates |
|
|
153
|
+
| Page not found after create | Notion's API is eventually consistent; wait 200ms before fetching newly-created |
|
|
154
|
+
| Code blocks render as plain text | Set `language` on the code block |
|
|
155
|
+
| Tables don't render | Convert to bullet list or fall back to text |
|
|
156
|
+
| Auth lost | Re-share workspace pages with the integration |
|
|
157
|
+
|
|
158
|
+
## Privacy
|
|
159
|
+
|
|
160
|
+
- The integration token has access to whatever you grant. Audit shared pages periodically.
|
|
161
|
+
- Don't include secrets in the design-ai content that gets mirrored — Notion is shared.
|
|
162
|
+
- Soft delete (archive) Notion pages, don't hard delete — easier rollback.
|
|
163
|
+
|
|
164
|
+
## When Notion MCP is unavailable
|
|
165
|
+
|
|
166
|
+
design-ai's `design-broadcast` skill (covers Slack + Notion) detects missing MCP and falls back to:
|
|
167
|
+
- Outputting markdown the user can paste into Notion manually.
|
|
168
|
+
- Generating a shareable URL via the project's GitHub instead.
|
|
169
|
+
|
|
170
|
+
## Cross-reference
|
|
171
|
+
|
|
172
|
+
- [`docs/MCP-INTEGRATION.md`](../MCP-INTEGRATION.md) — overview
|
|
173
|
+
- [`skills/design-broadcast/PLAYBOOK.md`](../../skills/design-broadcast/PLAYBOOK.md) — uses Notion MCP for sharing
|
|
174
|
+
- [`docs/integrations/slack-mcp.md`](slack-mcp.md) — companion for design review summaries
|