Convert Figma design tokens into structured design.md for AI-assisted coding with Cursor, Claude Code, and Copilot
Scanned 9/8/2026
Install to Claude Code
npx -y skills add Aradotso/design-skills --skill figma-design-system-to-design-md --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Figma Design System To Design Md?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aradotso-figma-design-system-to-design-md)More formats (shields.io, HTML) on the badges page.
---
name: figma-design-system-to-design-md
description: Convert Figma design tokens into structured design.md for AI-assisted coding with Cursor, Claude Code, and Copilot
triggers:
- convert my design tokens to design.md
- generate design system documentation from Figma
- create design.md from tokens
- document my design system automatically
- extract design tokens to markdown
- sync Figma design system to docs
- build design.md from CSS variables
- parse design tokens for AI coding
---
# figma-design-system-to-design-md
> Skill by [ara.so](https://ara.so) — Design Skills collection.
A Claude Code skill plugin that automatically converts Figma design tokens into a structured `design.md` file. It extracts CSS variables, Tailwind config, theme files, and optionally pulls data from Figma MCP to create comprehensive design system documentation that AI coding tools can understand.
## What It Does
**The Problem**: Design systems live in Figma and code, but documentation is outdated or nonexistent. Developers guess at color roles, spacing scales, and typography.
**The Solution**: One command generates a complete `design.md` that stays in sync with your actual token files.
The tool:
- Detects token sources automatically (CSS variables, Tailwind config, theme files)
- Parses and classifies tokens into categories (colors, typography, spacing, etc.)
- Optionally enriches data via Figma MCP
- Generates structured design.md with semantic roles
- Works framework-agnostic (React, Vue, Svelte, etc.)
## Installation
### As Claude Code Plugin
```bash
# Via marketplace
claude plugin install figma-design-system-to-design-md
# Via GitHub
claude /plugin install https://github.com/albertzhangz10/figma-design-system-to-design-md
```
### Local Development
```bash
git clone https://github.com/albertzhangz10/figma-design-system-to-design-md.git
cd figma-design-system-to-design-md
claude --plugin-dir /path/to/figma-design-system-to-design-md
```
### Web Version (No Installation)
For non-technical users: [https://figmadesignmd.com/](https://figmadesignmd.com/)
Just paste a Figma URL and get your design.md.
## Key Commands
```bash
# Generate design.md in project root
/figma-design-system-to-design-md
# Custom output path
/figma-design-system-to-design-md ./docs/design.md
# Specify token file directory
/figma-design-system-to-design-md --tokens-dir ./src/styles
```
## Token Source Detection
The skill automatically searches for these patterns:
**CSS Tokens**:
- `**/tokens.css`
- `**/variables.css`
- `**/theme.css`
- `**/globals.css`
**JSON/JS Tokens**:
- `**/tokens.json`
- `**/tokens.ts`
- `**/tokens.js`
- `**/theme.ts`
**Framework Config**:
- `tailwind.config.js`
- `tailwind.config.ts`
- `uno.config.ts`
## What Gets Generated
| Section | Source | Auto-Generated |
|---------|--------|:--------------:|
| Colors (base + semantic roles) | Token files | ✅ |
| Typography (families, scale, weights) | Token files | ✅ |
| Spacing (scale with values) | Token files | ✅ |
| Border Radius | Token files | ✅ |
| Border Width | Token files | ✅ |
| Elevation (shadows) | Tailwind / Figma MCP | ✅ |
| Responsive (breakpoints) | Config files | ✅ |
| Components (variants, states) | Figma MCP | 🔶 Optional |
| Overview (design intent) | Manual | ✍️ |
| Do's and Don'ts | Manual | ✍️ |
## Configuration
### Enabling Figma MCP (Optional)
For enhanced component extraction and effect styles:
1. Open Figma desktop app (latest version)
2. Menu → **Preferences** → Enable **Dev Mode MCP Server**
3. Restart Claude Code
4. Open your design system file in Figma
### Project Requirements
- **Required**: Token files in your project (any format)
- **Optional**: Figma MCP Server for component data
- **Recommended**: Claude Code latest version
## Code Examples
### Example 1: CSS Variables Token File
Input (`src/styles/tokens.css`):
```css
:root {
/* Colors - Base */
--color-blue-50: #eff6ff;
--color-blue-500: #3b82f6;
--color-blue-900: #1e3a8a;
/* Colors - Semantic */
--color-text-primary: var(--color-blue-900);
--color-surface-primary: #ffffff;
--color-border-default: #e5e7eb;
/* Typography */
--font-sans: 'Inter', system-ui, sans-serif;
--font-size-sm: 0.875rem;
--font-size-base: 1rem;
--font-size-lg: 1.125rem;
/* Spacing */
--spacing-1: 0.25rem;
--spacing-2: 0.5rem;
--spacing-4: 1rem;
--spacing-8: 2rem;
/* Border Radius */
--radius-sm: 0.125rem;
--radius-md: 0.375rem;
--radius-lg: 0.5rem;
}
```
Generated `design.md` (excerpt):
```markdown
## Colors
### Base Palette
- `--color-blue-50`: #eff6ff (Light accent)
- `--color-blue-500`: #3b82f6 (Primary brand)
- `--color-blue-900`: #1e3a8a (Dark text)
### Semantic Roles
- **Text Primary**: `--color-text-primary` → var(--color-blue-900)
- **Surface Primary**: `--color-surface-primary` → #ffffff
- **Border Default**: `--color-border-default` → #e5e7eb
## Typography
### Font Families
- Sans: `'Inter', system-ui, sans-serif` (`--font-sans`)
### Size Scale
- Small: 0.875rem (`--font-size-sm`)
- Base: 1rem (`--font-size-base`)
- Large: 1.125rem (`--font-size-lg`)
## Spacing Scale
- 1: 0.25rem (4px) — `--spacing-1`
- 2: 0.5rem (8px) — `--spacing-2`
- 4: 1rem (16px) — `--spacing-4`
- 8: 2rem (32px) — `--spacing-8`
```
### Example 2: Tailwind Config
Input (`tailwind.config.ts`):
```typescript
import type { Config } from 'tailwindcss'
export default {
theme: {
extend: {
colors: {
primary: {
50: '#eff6ff',
500: '#3b82f6',
900: '#1e3a8a',
},
semantic: {
text: '#1e3a8a',
surface: '#ffffff',
border: '#e5e7eb',
},
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
},
spacing: {
'1': '0.25rem',
'2': '0.5rem',
'4': '1rem',
'8': '2rem',
},
borderRadius: {
'sm': '0.125rem',
'md': '0.375rem',
'lg': '0.5rem',
},
},
},
} satisfies Config
```
### Example 3: TypeScript Theme Object
Input (`src/theme/tokens.ts`):
```typescript
export const tokens = {
colors: {
base: {
blue50: '#eff6ff',
blue500: '#3b82f6',
blue900: '#1e3a8a',
},
semantic: {
textPrimary: '#1e3a8a',
surfacePrimary: '#ffffff',
borderDefault: '#e5e7eb',
},
},
typography: {
fontFamily: {
sans: "'Inter', system-ui, sans-serif",
},
fontSize: {
sm: '0.875rem',
base: '1rem',
lg: '1.125rem',
},
},
spacing: {
1: '0.25rem',
2: '0.5rem',
4: '1rem',
8: '2rem',
},
borderRadius: {
sm: '0.125rem',
md: '0.375rem',
lg: '0.5rem',
},
} as const;
export type Tokens = typeof tokens;
```
## Common Patterns
### Pattern 1: Multi-Source Token Detection
The skill automatically merges tokens from multiple sources:
```
project/
├── src/
│ ├── styles/
│ │ ├── tokens.css ← CSS variables
│ │ └── globals.css ← Additional variables
│ └── theme/
│ └── config.ts ← TypeScript tokens
└── tailwind.config.js ← Tailwind tokens
```
All sources are parsed and consolidated into one `design.md`.
### Pattern 2: Framework-Specific Usage
**React with CSS Modules**:
```tsx
import styles from './Button.module.css';
export function Button({ children }: { children: React.ReactNode }) {
return <button className={styles.button}>{children}</button>;
}
// Button.module.css
.button {
color: var(--color-text-primary);
padding: var(--spacing-2) var(--spacing-4);
border-radius: var(--radius-md);
}
```
**Vue with Tailwind**:
```vue
<template>
<button class="bg-primary-500 text-white px-4 py-2 rounded-md">
{{ label }}
</button>
</template>
<script setup lang="ts">
defineProps<{ label: string }>();
</script>
```
**Svelte with CSS Variables**:
```svelte
<script lang="ts">
export let variant: 'primary' | 'secondary' = 'primary';
</script>
<button class="btn {variant}">
<slot />
</button>
<style>
.btn {
padding: var(--spacing-2) var(--spacing-4);
border-radius: var(--radius-md);
}
.primary {
background: var(--color-blue-500);
color: white;
}
</style>
```
### Pattern 3: Semantic Color Roles
The skill automatically classifies color tokens into semantic roles:
```css
/* Detected as "text" role */
--color-text-primary
--color-text-secondary
--text-default
/* Detected as "surface" role */
--color-surface-primary
--color-bg-default
--background-primary
/* Detected as "border" role */
--color-border-default
--border-subtle
--divider-color
/* Detected as "icon" role */
--color-icon-default
--icon-primary
```
### Pattern 4: Responsive Breakpoints
Automatically extracts breakpoint config:
```javascript
// tailwind.config.js
module.exports = {
theme: {
screens: {
sm: '640px',
md: '768px',
lg: '1024px',
xl: '1280px',
},
},
};
```
Generated in `design.md`:
```markdown
## Responsive
### Breakpoints
- Mobile: < 640px
- Tablet: 640px (`sm`)
- Desktop: 1024px (`lg`)
- Wide: 1280px (`xl`)
### Approach
Mobile-first with `min-width` breakpoints
```
## Troubleshooting
### Issue: No tokens detected
**Symptom**: Plugin says "No token files found"
**Solutions**:
1. Verify token files exist in common paths
2. Use explicit path: `/figma-design-system-to-design-md --tokens-dir ./src/styles`
3. Check file patterns match (e.g., rename `variables.css` to `tokens.css`)
### Issue: CSS variables not parsed correctly
**Symptom**: Colors or spacing values are missing/incorrect
**Solutions**:
1. Ensure CSS variables use standard format:
```css
/* ✅ Good */
--color-blue-500: #3b82f6;
--spacing-4: 1rem;
/* ❌ Bad (calc not supported yet) */
--spacing-4: calc(0.25rem * 4);
```
2. Use clear semantic naming:
```css
/* ✅ Detected as semantic role */
--color-text-primary: #000;
/* ❌ Not detected as semantic */
--black: #000;
```
### Issue: Figma MCP not working
**Symptom**: Component data not appearing in design.md
**Solutions**:
1. Verify Figma desktop app is latest version
2. Enable MCP Server: **Preferences → Dev Mode → Enable MCP Server**
3. Restart Claude Code after enabling MCP
4. Open the correct Figma design file
5. Check Figma file has components (not just frames)
### Issue: Tailwind config not detected
**Symptom**: Tailwind tokens missing from design.md
**Solutions**:
1. Ensure config is in project root or `config/` directory
2. Check file extension (`.js`, `.ts`, `.mjs` all supported)
3. Verify config exports `theme.extend`:
```typescript
// ✅ Good
export default {
theme: {
extend: { colors: {...} }
}
}
// ❌ Bad (missing extend)
export default {
colors: {...}
}
```
### Issue: Generated design.md is incomplete
**Symptom**: Some sections are missing
**Solutions**:
1. Some sections require manual input (Overview, Do's and Don'ts)
2. Component data requires Figma MCP (optional)
3. Elevation/shadows may need Tailwind config or MCP
4. Run with `--verbose` to see what was detected:
```bash
/figma-design-system-to-design-md --verbose
```
## Best Practices
### Token Naming Conventions
Use clear, semantic names for better detection:
```css
/* ✅ Recommended */
--color-text-primary
--color-surface-primary
--color-border-default
--spacing-4
--font-size-base
--radius-md
/* ❌ Avoid */
--blue
--padding
--size
--round
```
### Project Structure
Organize tokens for easy detection:
```
project/
├── src/
│ └── styles/
│ ├── tokens.css ← Main tokens
│ ├── theme-light.css ← Light theme
│ └── theme-dark.css ← Dark theme
├── tailwind.config.ts ← Framework config
└── design.md ← Generated docs
```
### Keep Tokens DRY
Use variables that reference other variables:
```css
:root {
/* Base palette */
--color-blue-500: #3b82f6;
/* Semantic roles */
--color-text-link: var(--color-blue-500);
--color-border-focus: var(--color-blue-500);
}
```
The skill will resolve references and document the relationships.
## Environment Variables
If using Figma MCP with authentication:
```bash
# .env
FIGMA_ACCESS_TOKEN=figd_your_token_here
```
Reference in code:
```typescript
const figmaToken = process.env.FIGMA_ACCESS_TOKEN;
```
**Never commit real tokens** — use `.env.local` and add to `.gitignore`.
## Advanced Usage
### Custom Token Parsers
If your tokens use a non-standard format, you can specify a custom parser pattern:
```bash
/figma-design-system-to-design-md --parser-config ./parser-config.json
```
`parser-config.json`:
```json
{
"colorPattern": "COLOR_([A-Z_]+): '(#[0-9a-f]{6})'",
"spacingPattern": "SPACE_([A-Z_]+): '([0-9.]+(?:rem|px))'",
"typographyPattern": "FONT_([A-Z_]+): '([^']+)'"
}
```
### Continuous Integration
Generate design.md automatically on token changes:
```yaml
# .github/workflows/design-md.yml
name: Update design.md
on:
push:
paths:
- 'src/styles/**'
- 'tailwind.config.*'
jobs:
update-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: anthropics/setup-claude@v1
- run: claude /figma-design-system-to-design-md
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: 'chore: update design.md'
file_pattern: 'design.md'
```
---
**Resources**:
- [Web Version](https://figmadesignmd.com/)
- [GitHub Repository](https://github.com/albertzhangz10/figma-design-system-to-design-md)
- [Google Stitch design.md Spec](https://stitch.withgoogle.com/docs/design-md/overview)
- [MIT License](https://github.com/albertzhangz10/figma-design-system-to-design-md/blob/main/LICENSE)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!