Complete guide to MatchKit design system skills. Installation, components, themes, tokens, and the self-expanding architecture.
MatchKit is an AI-powered design system skill generator. It works with Cursor, VS Code, Claude Code, and Windsurf — any MCP-compatible editor. It generates a complete, production-ready component library pre-configured to your brand aesthetic — 27 components, 6 layouts, design tokens, and a self-expanding rulebook.
Install a skill, prompt your AI editor, and get interfaces that look like they were built by a professional design team. No component gaps. No visual drift across sessions.
.claude/skills/ in your projectEvery MatchKit skill uses a three-layer architecture designed for AI consumption:
Four curated aesthetics, each positioned at different coordinates on MatchKit's 11-axis style system. All share the same 27 components and APIs — only the visual treatment differs.
.claude/skills/ directoryStarter templates include a pre-wired Next.js app shell with sidebar, topbar, and all design tokens configured.
Once installed, just prompt your AI editor naturally. The skill activates automatically.
| Prompt | What you get |
|---|---|
| "Build an analytics dashboard" | KPI cards, charts, activity table, sidebar nav |
| "Build a user management page" | Data table with filters, list-detail view, status badges |
| "Build a settings page" | Multi-section form, toggles, danger zone |
| "Build a billing page" | Plan cards, invoice table, usage metrics |
| "Build a login page" | Centered auth card, social login, dark mode toggle |
MatchKit API keys authenticate the CLI and CI/CD pipelines. They're scoped to your account — one key works for all your projects. API keys are available for paid users only.
Create and manage API keys from your dashboard → API Keys. Keys remain active until you revoke them.
The MatchKit CLI lets you sync your design system from the command line. Perfect for pulling updates, adding components, and integrating with CI/CD.
| Command | Description |
|---|---|
| matchkit login | Authenticate with your API key (opens browser) |
| matchkit init | Link a project to your MatchKit configuration |
| matchkit pull | Download latest resolved design system |
| matchkit add <component> | Install one component + dependencies |
| matchkit list | Show all 27 components with installed/available status |
| matchkit status | Show config ID, theme, version, sync status |
| matchkit diff | Show what changed since last pull |
Your design system files are installed to .claude/skills/[theme]-ui/. The CLI stores config in .matchkit/config.json and your API key in ~/.matchkit/credentials.
For automated deployments, set the MATCHKIT_API_KEY environment variable instead of using matchkit login:
One key for all projects. API keys are scoped to your MatchKit account, not individual projects. You can use the same key across multiple repos and CI/CD pipelines.
Security best practices: Store keys in environment variables or secret managers. Never commit them to git. Rotate keys periodically. Use separate keys for development and CI/CD.
Every skill includes 27 production-ready components. All are copy-paste ready .tsx files with full TypeScript types.
| Component | Description |
|---|---|
| Button | Primary, secondary, danger, ghost variants with loading state |
| Input | Text input with label, error, helper text, and icons |
| Select | Dropdown select built on Radix UI with search |
| Checkbox | Checkbox with label, indeterminate state |
| Switch | Toggle switch built on Radix UI |
| Status Badge | Colored badge for status indicators (success, warning, error, info) |
| Tabs | Tab group with panel content switching |
| Avatar | User avatar with fallback initials and status dot |
| Tooltip | Hover tooltip built on Radix UI |
| Progress Bar | Determinate and indeterminate progress indicator |
| Theme Toggle | Light/dark mode toggle with system preference detection |
| Component | Description |
|---|---|
| Data Table | Sortable, filterable, paginated table with row selection |
| Stat Card | KPI card with value, label, change indicator, and optional chart |
| Filter Bar | Search input + filter dropdowns + active filter chips |
| Form Layouts | Single-column, two-column, and danger zone form patterns |
| Command Palette | Cmd+K search overlay with keyboard navigation |
| Component | Description |
|---|---|
| Modal Dialog | Overlay dialog built on Radix UI with close, confirm, cancel |
| Toast Notification | Non-blocking notification via Sonner with variants |
| Dropdown Menu | Context/action menu with keyboard nav and submenus |
| Page Header | Page title with breadcrumbs, description, and action buttons |
| Empty State | Placeholder for empty lists with icon, message, and CTA |
| Loading State | Skeleton loader and spinner for async content |
| Breadcrumbs | Navigation breadcrumb trail with separator |
| Component | Description |
|---|---|
| Sidebar Nav | Collapsible sidebar with grouped links, badges, and user profile |
| Top Bar | Fixed header with search, notifications, and user menu |
| Component | Description |
|---|---|
| Area Chart | Filled area chart via Recharts with tooltip and legend |
| Bar Chart | Vertical/horizontal bar chart via Recharts |
| Donut Chart | Donut/pie chart via Recharts with center label |
Six reference layout implementations that combine components into complete page structures.
| Layout | Description |
|---|---|
| App Shell | Sidebar + topbar + main content area. The foundation for all pages. |
| Dashboard | KPI stat cards, charts, and activity table in a responsive grid. |
| List-Detail | Two-panel layout: list on left, detail view on right. |
| Settings | Multi-section form with danger zone at the bottom. |
| Data Management | Full-page data table with filter bar, pagination, and bulk actions. |
| Auth | Centered card layout for login, register, and password reset. |
Design tokens are the source of truth for all visual values. They're stored as JSON files in the tokens/ directory and compiled into CSS custom properties in globals.css.
| Token file | What it defines |
|---|---|
| colors.json | Semantic colors for backgrounds, text, accents, borders, status, and charts (light + dark) |
| typography.json | Font families, size scale (h1-h6, body, small, label, code), weights |
| borders.json | Border width and style for cards, inputs, tables, sidebar, dividers |
| shadows.json | Box-shadow values for cards, dropdowns, modals, buttons, tooltips |
| spacing.json | Spacing scale for padding, gaps, line-height, row-height |
| motion.json | Transition durations (fast, base, slow) and easing curves |
Tokens are generated from your profile's axis coordinates through MatchKit's resolution engine:
Components never reference axis positions directly. They consume tokens. This means you can safely edit token values without breaking any component.
Each theme ships with 4 pre-designed color palettes. All include light and dark mode variants. Tell Claude which palette to use, or let it default.
| Palette | Vibe | Best for |
|---|---|---|
| clarity-indigo | Confident, trustworthy | Fintech, enterprise SaaS, CRM |
| clarity-slate | Minimal, engineering-grade | Dev tools, project management |
| clarity-mono | Technical, dark-first | Infrastructure, monitoring, CI/CD |
| clarity-warm | Approachable, collaborative | HR tech, knowledge bases, internal tools |
| Palette | Vibe | Best for |
|---|---|---|
| soft-teal | Calm, modern | AI tools, chat apps, productivity |
| soft-sage | Natural, grounded | Creative platforms, wellness, green tech |
| soft-lavender | Gentle, expressive | Consumer SaaS, social, content tools |
| soft-clay | Warm, earthy | Community platforms, education |
The skill library grows with your project. When your AI editor needs a component that doesn't exist in the registry, it creates one following the SKILL.md design rules, writes the file, and registers it. Future sessions reuse it.
registry.json in the skill directory to find curated components.clarity-catalog.json in the project (if it exists) to find project-specific components.tsx files from the skill into the project, or read them as reference when buildingResult: Every component in your app — whether from the curated library or generated during development — follows the same design rules. No drift across sessions.
MatchKit decomposes visual identity into 11 independent axes. Each axis has 3-6 positions. A theme is simply a coordinate point in this multi-dimensional style space.
| Axis | Positions | What it controls |
|---|---|---|
| radius | none, sm, md, lg, xl, full | Corner rounding on all elements |
| border-weight | none, hairline, thin, medium | Border thickness and presence |
| shadow-style | none, subtle, soft, hard-offset | Depth and elevation |
| color-temp | cool, neutral, warm | Neutral tone hue |
| color-saturation | muted, medium, vibrant | Accent color intensity |
| font-personality | geometric, humanist, rounded | Font family character |
| font-weight-bias | light, regular, medium, bold | Heading/emphasis weight |
| spacing-density | compact, default, spacious | Padding, gaps, breathing room |
| motion-speed | snappy, default, smooth | Transition speed |
| button-style | filled, outline, ghost, soft-fill | Button visual treatment |
| element-separation | border, shadow, bg-color, spacing | How elements are separated |
The configurator at matchkit.io/configure exposes 5 of these axes (radius, button-style, element-separation, density, shadow-depth). All 11 are tunable in the generated tokens.
Axes are orthogonal — changing one does not require changes to another. Profiles capture curated combinations that have been tested together.
Your download includes ready-to-go MCP configs for Cursor and VS Code. Unzip into your project root and your editor connects to the design system automatically. The MCP server runs 100% offline.
Click to install the MatchKit MCP server in your editor — no configuration needed.
Claude Code reads .claude/skills/ natively. No MCP server needed — your skill works the moment you unzip it.
The MCP server exposes 8 tools that any connected editor can call:
| Tool | Description |
|---|---|
| list_skills | List all installed skills |
| get_skill_section | Read a section from SKILL.md by topic |
| list_components | List all components, layouts, and patterns |
| get_component | Read a component’s source code |
| get_layout | Read a layout’s source code |
| get_pattern | Read a pattern’s content |
| get_tokens | Read design token JSON files |
| search_components | Search by name, description, or tag |
The MCP server automatically discovers installed skills by scanning these locations (in priority order):
MATCHKIT_SKILLS_DIR environment variable (if set).claude/skills/ in your project rootskills/ in your project root (for development)A valid skill directory must contain both registry.json and SKILL.md to be discovered.
| Package | Version | Why |
|---|---|---|
| Next.js | ^15.2.0 | App Router, React Server Components |
| React | ^19.0.0 | Component rendering |
| Tailwind CSS | v4 | Utility classes + CSS custom properties |
| Package | Purpose |
|---|---|
| @radix-ui/react-* | Accessible primitives (Select, Dialog, Popover, Tooltip, Switch) |
| lucide-react | Icon library used in all components |
| class-variance-authority | Component variant management (CVA) |
| clsx + tailwind-merge | Conditional class merging |
| recharts | Charts (Area, Bar, Donut) |
| sonner | Toast notifications |
Yes. Unzip at your project root — files land in .claude/skills/. Your AI editor will discover them automatically on the next session.
Absolutely. All components are plain .tsx files with Tailwind classes. Edit them directly — they're yours. Token values in tokens/*.json can also be adjusted.
The skill is self-expanding. The AI reads the SKILL.md rulebook, creates a new component following the design rules, writes the file, and registers it. Future sessions reuse it.
Yes. MatchKit skills use Tailwind CSS v4's native CSS custom properties for theming. Tailwind v3 is not supported.
Not yet. MatchKit currently generates React/Next.js components only. Framework support for Vue and Svelte is on the roadmap.
Yes. Your download includes MCP config files for Cursor and VS Code — just unzip and they connect automatically. For Windsurf, copy one config block. See the MCP Server section above.
Re-download from matchkit.io/configure with the same configuration. Subscribers get access to all future updates.
Yes. Every palette includes both light and dark mode tokens. Dark mode is class-based — add the 'dark' class to your HTML element.
Yes. Components are fully typed, accessible (WCAG AA), responsive, and use established patterns from Radix UI and Recharts.