git clone --depth 1 https://github.com/marcusgoll/Spec-Flow /tmp/design-tokens && cp -r /tmp/design-tokens/.claude/skills/design-tokens ~/.claude/skills/design-tokensSKILL.md
# Design Tokens - Comprehensive Reference
**Version**: 2.0.0
**Purpose**: Generate and maintain design system tokens across all project surfaces (UI, emails, PDFs, CLI, charts, docs)
---
## Overview
This skill provides comprehensive guidance for initializing and maintaining design tokens in `design/systems/tokens.json` and `tokens.css`. Supports both brownfield (scan existing code) and greenfield (generate new palette) modes.
**Coverage**:
- UI components (React/Vue/Svelte)
- MJML/HTML emails
- PDF styling (WeasyPrint, Puppeteer)
- CLI colors (chalk/colorette)
- Data visualization (d3, Chart.js, Recharts)
- Documentation assets (MD/MDX)
---
## What Changed in v2
**Non-UI surface coverage**:
- MJML/HTML emails (inline CSS)
- PDF styling (WeasyPrint, Puppeteer CSS)
- CLI colors (chalk/colorette)
- Data visualization palettes (d3, Chart.js, Recharts)
- Documentation assets (MD/MDX)
**Brownfield scan improvements**:
- Source-agnostic: JSX/TSX, CSS/SCSS, CSS-in-JS, MD/MDX, MJML, Python/JS PDF styles
- Scans 10+ file types
- Detects arbitrary Tailwind values (`bg-[#xxx]`)
**Contrast enforcement**:
- Auto-nudges OKLCH lightness until WCAG 2.1 passes (≥4.5:1)
- Uses colorjs.io for perceptually accurate contrast calculation
**Tailwind v4 alignment**:
- Theme variables as CSS variables (not hardcoded palette)
- Validates tokens.css import in globals.css
**Color-blind-safe palettes**:
- Okabe-Ito categorical palette for charts
- 8 colors scientifically validated for color-blind users
---
## Mental Model
**Flow**: `detect mode → scan/generate → consolidate → validate wiring → contrast fixups → emit artifacts → report debt`
**Brownfield**: Scan existing code for patterns across UI, emails, PDFs, CLI, charts, docs. Consolidate duplicates and propose migrations.
**Greenfield**: Ask minimal questions, generate OKLCH palette with contrast validation.
---
## Prerequisites
**Dependencies**:
```json
{
"devDependencies": {
"colorjs.io": "^0.5.0",
"picocolors": "^1.0.0",
"fs-extra": "^11.2.0"
}
}
```
**Install**:
```bash
pnpm add -D colorjs.io picocolors fs-extra
```
---
## Brownfield Scan (Multi-Surface)
**Scanned locations**:
| Surface | Paths | File Types | Patterns Detected |
|---------|-------|------------|-------------------|
| **UI** | `app/**`, `src/**`, `components/**` | `.tsx`, `.jsx`, `.css`, `.scss` | Hex colors, Tailwind classes, CSS-in-JS |
| **Emails** | `emails/**`, `templates/email/**` | `.mjml`, `.html` | Inline CSS, hex colors |
| **PDFs** | `server/pdf/**`, `reports/**` | `.css`, `.py` (WeasyPrint) | PDF-specific CSS, hex in templates |
| **CLI** | `scripts/**`, `bin/**` | `.js`, `.mjs`, `.ts` | chalk/colorette color names |
| **Charts** | `components/**`, `lib/**` | `.tsx`, `.js` | d3/Chart.js/Recharts palettes |
| **Docs** | `docs/**`, `*.md`, `*.mdx` | `.md`, `.mdx` | Fenced CSS blocks |
**Scan output**:
```
design/systems/
├── detected-tokens.json # All detected colors with usage counts
├── token-analysis-report.md # Consolidation opportunities
├── violations-colors.txt # Hex colors found (file:line:color)
└── violations-arbitrary.txt # Tailwind arbitrary values (file:line:value)
```
**Example violations-colors.txt**:
```
#3b82f6 47 (most used - primary candidate)
#3b81f6 3 (duplicate - consolidate)
#10b981 28 (success candidate)
#ef4444 15 (error candidate)
```
---
## Token Consolidation
**Consolidation rules**:
- Colors → 12 semantic + 7 neutral shades
- Type scale → 8 sizes (xs, sm, base, lg, xl, 2xl, 3xl, 4xl)
- Spacing → 8px grid (~13 values: 0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80, 96px)
**Semantic mapping**:
```javascript
{
brand: { primary, secondary, accent },
semantic: { success, error, warning, info },
neutral: { 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950 }
}
```
**Minimal user questions** (greenfield only):
1. **Primary brand color**: Blue (#3b82f6), Purple (#8b5cf6), Green (#10b981), Custom
2. **Visual style**: Minimal (Stripe, Linear), Bold (Figma, Notion), Technical (Vercel, GitHub)
3. **Primary font**: Inter (geometric sans), Geist (humanist sans), System fonts
**Consolidation output**:
```
Before: 47 colors → After: 12 tokens (74% reduction)
Before: 14 font sizes → After: 8 sizes (43% reduction)
Before: 23 spacing values → After: 13 values (43% reduction)
Duplicates removed:
- #3b82f7, #3b81f6 → primary (#3b82f6)
- 15px, 17px → base (16px), lg (18px)
```
---
## Token Structure
**Complete token structure** (`design/systems/tokens.json`):
```json
{
"meta": {
"colorSpace": "oklch",
"fallbackSpace": "srgb",
"version": "2.0.0",
"generated": "2025-11-12T10:30:00Z"
},
"colors": {
"brand": {
"primary": {
"oklch": "oklch(59.69% 0.156 261.45)",
"fallback": "#3b82f6",
"description": "Primary brand color"
},
"secondary": {
"oklch": "oklch(58.23% 0.167 271.45)",
"fallback": "#6366f1"
},
"accent": {
"oklch": "oklch(67.89% 0.152 164.57)",
"fallback": "#10b981"
}
},
"semantic": {
"success": {
"bg": {"oklch": "oklch(95% 0.02 145)", "fallback": "#D1FAE5"},
"fg": {"oklch": "oklch(25% 0.12 145)", "fallback": "#047857"},
"border": {"oklch": "oklch(85% 0.05 145)", "fallback": "#A7F3D0"},
"icon": {"oklch": "oklch(35% 0.13 145)", "fallback": "#059669"}
},
"error": {
"bg": {"oklch": "oklch(95% 0.02 27)", "fallback": "#FEE2E2"},
"fg": {"oklch": "oklch(30% 0.18 27)", "fallback": "#991B1B"},
"border": {"oklch": "oklch(85% 0.08 27)", "fallback": "#FECACA"},
"icon": {"oklch": "oklch(40% 0.20 27)", "fallback": "#DC2626"}
},
"warning": {
"bg": {"oklch": "oklch(95% 0.02 90)", "fallback": "#FEF3C7"},
"fg": {"oklch": "oklch(35% 0.15 90)", "fallback": "#92400E"},
"border": {"oklch": "oklch(85% 0.08 90)", "fallback": "#FDE68A"},
"icon": {"oklch": "oExecute multiple sprints in parallel based on dependency graph from sprint-plan.md
Build and validate locally for projects without remote deployment (prototypes, experiments, local-only dev)
Execute multi-sprint epic workflow from interactive scoping through deployment with parallel sprint execution and self-improvement
Execute feature development workflow from specification through production deployment with automated quality gates
Analyze workflow state and provide context-aware guidance with visual progress indicators and recommended next steps
Initialize project documentation, preferences, or design tokens
Implement small bug fixes and features (<100 LOC) without full workflow. Use for single-file changes, bug fixes, refactors, and minor enhancements that can be completed in under 30 minutes.
Enter deep craftsman mode - question everything, plan like Da Vinci, craft insanely great solutions, then materialize to roadmap