Skip to content
Back to skills

Design Token Extractor

ASecurity

Extracts design tokens from images and generates CSS custom properties, atomic utility classes (Tailwind-style), and platform-specific formats following W3C standards and modern CSS best practices.

  • 666 stars
  • 0 votes
  • 1 copy
  • 5 views
  • Added February 8, 2026
developmentpythongoswiftkotlinbashapidocumentation

Works with

  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill design-token-extractor --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Design Token Extractor?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Design Token Extractor
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-design-token-extractor/badge)](https://www.skillsdirectory.com/skills/majiayu000-design-token-extractor)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: design-token-extractor
description: Extracts design tokens from images and generates CSS custom properties, atomic utility classes (Tailwind-style), and platform-specific formats following W3C standards and modern CSS best practices.
version: 0.2.0
license: Complete terms in LICENSE.txt
---

## Overview

This skill automates the extraction of design tokens from images and mockups, converting them into standards-compliant formats including W3C DTCG JSON, CSS custom properties, SCSS variables, and comprehensive atomic utility classes (Tailwind-style). It generates modern, accessible design systems with cascade layers, container queries, responsive variants, and state management.

**New in v0.2.0:** Comprehensive atomic utility class generation with Tailwind-style naming, including color, spacing (with logical properties), typography, and layout utilities, plus full support for container query variants, state variants (hover/focus/active), and dark mode.

## When to Use This Skill

Invoke this skill when you need to:

- Extract design tokens from UI mockups, screenshots, or design files
- Convert visual design elements into CSS custom properties or SCSS variables
- **Generate atomic utility classes (Tailwind-style) from design tokens**
- **Create utility-first design systems with comprehensive responsive and state variants**
- Generate W3C DTCG-compliant token JSON from design artifacts
- Create cross-platform design tokens (web, iOS, Android)
- Validate existing tokens against W3C specifications
- Implement design systems with modern CSS features (cascade layers, container queries, logical properties)

## Workflow

### 1. Image Analysis and Token Identification

**Action:** When the user provides an image or design mockup, analyze and identify token categories.

**Token Categories:**

- Colors (primary, secondary, neutral palettes with semantic roles)
- Typography (font families, sizes, weights, line-heights using scale ratios)
- Spacing (mathematical progression scales: 0.25rem, 0.5rem, 1rem, 1.5rem, 2rem)
- Dimensions (border radius, shadows, dimensional properties)
- Motion (animation durations and easing functions if present)

### 2. Token Extraction

**Action:** Extract tokens following W3C Design Tokens Community Group standards.

**Extraction Process:**

- Use semantic, hierarchical naming with kebab-case
- Apply mathematical progressions for scales (1.25x, 1.5x, 2x)
- Structure using cascade layers (`@layer reset`, `tokens`, `components`, `utilities`)
- Ensure WCAG 2.2 compliance (4.5:1 contrast for normal text, 3:1 for large text)

### 3. Format Selection

**Prompt for Output Format:**

Ask the user which format to generate (if not specified):

- **W3C JSON** - Design Tokens Community Group specification format
- **CSS** - CSS custom properties with cascade layers
- **CSS (Full)** - CSS with cascade layers + generated atomic utilities
- **Utilities** - Standalone atomic utility classes (Tailwind-style)
- **SCSS** - SCSS variables and mixins
- **iOS** - Swift/UIKit format
- **Android** - Kotlin/XML resources

**New Utility Formats:**

- `utilities` - Comprehensive Tailwind-style atomic utilities (standalone file)
- `css-layers-full` - Complete design system with tokens AND generated utilities

Both utility formats include:
- Color utilities (text, bg, border, fill, stroke)
- Spacing utilities with logical properties (padding, margin, gap)
- Typography utilities (font family, size, weight, line-height)
- Layout utilities (border-radius, shadows, dimensions)
- Container query variants (sm, md, lg, xl breakpoints)
- State variants (hover, focus, active)
- Dark mode variants
- Accessibility variants (reduced-motion, forced-colors)

### 4. Output Generation

**Action:** Generate output using appropriate templates with variable substitution.

**Default Output Location:** `src/styles/` (unless the user specifies a different path)

**Templates Available:**

- `templates/w3c-tokens.template.json` - W3C DTCG format
- `templates/css-variables.template.css` - CSS custom properties
- `templates/css-layers.template.css` - Cascade layers implementation
- `templates/documentation.template.md` - Token documentation

**Variable Substitution:**

- `{{TOKEN_NAME}}` - Token identifier
- `{{TOKEN_VALUE}}` - Token value
- `{{TOKEN_TYPE}}` - Token type (color, dimension, etc.)
- `{{TOKEN_DESCRIPTION}}` - Token description
- `{{COLOR_PRIMARY_500}}`, `{{SPACING_MD}}`, etc. - Specific token values

### 5. Validation

**Action:** Validate generated tokens against W3C DTCG specification.

**Execute Validation Script:**

```bash
python scripts/validate_tokens.py --input tokens.json [--strict]
```

**Validation Checks:**

- Required properties (`$value`, `$type`) present
- Valid token types (color, dimension, fontFamily, etc.)
- Proper alias token references
- Accessibility compliance (contrast ratios, motion preferences)

**Error Handling:**

- Report specific validation errors
- Suggest corrections
- Re-validate after fixes

### 6. Load References (As Needed)

**Action:** Load reference documentation only when detailed specifications are needed.

**When to Load:**

- User asks about W3C token format or validation errors → load `references/w3c-dtcg-spec.md`
- User needs CSS best practices or modern features → load `references/css-standards.md`
- User asks about accessibility or WCAG compliance → load `references/accessibility-guidelines.md`

## Token Extraction Guidelines

### Extract Design Elements

Follow W3C token categories:

- **Colors**: Primary, secondary, neutral palettes with semantic roles
- **Typography**: Font families, sizes, weights, line-heights using scale ratios (1.25x, 1.5x)
- **Spacing**: Mathematical progression scales (0.25rem, 0.5rem, 1rem, 1.5rem, 2rem)
- **Dimensions**: Border radius, shadows, and other dimensional properties
- **Motion**: Animation durations and easing functions if present

### Token Organization

Structure using cascade layers (`@layer reset`, `tokens`, `components`, `utilities`).
For detailed CSS standards, load `references/css-standards.md`.

### Responsive Tokens

- Use container query units (cqi, cqb) for intrinsic sizing
- Create fluid typography: `clamp(1rem, 2.5cqi, 1.5rem)`
- Define breakpoint-agnostic spacing scales

### Accessibility Requirements

Ensure WCAG 2.2 compliance:

- 4.5:1 contrast for normal text, 3:1 for large text
- Focus indicators meet 3:1 contrast against adjacent colors
- Motion tokens respect `prefers-reduced-motion`

For details, load `references/accessibility-guidelines.md`.

## Using Bundled Resources

### Scripts

Execute Python scripts for deterministic tasks. **All output defaults to `src/styles/` unless otherwise specified.**

**extract_tokens.py** - Extract tokens from image analysis

```bash
# Default output to src/styles/tokens.json
python scripts/extract_tokens.py --input-image <path> --output src/styles/tokens.json
```

**transform_tokens.py** - Transform between formats (JSON → CSS/SCSS/iOS/Android/Utilities)

```bash
# Generate CSS custom properties (default to src/styles/)
python scripts/transform_tokens.py --input tokens.json --format css --output src/styles/tokens.css

# Generate standalone atomic utilities (default to src/styles/)
python scripts/transform_tokens.py --input tokens.json --format utilities --output src/styles/utilities.css

# Generate complete design system (tokens + utilities, default to src/styles/)
python scripts/transform_tokens.py --input tokens.json --format css-layers-full --output src/styles/design-system.css
```

**generate_utilities.py** - Generate atomic utility classes from tokens

```bash
# Generate utilities with default configuration (default to src/styles/)
python scripts/generate_utilities.py --input tokens.json --output src/styles/utilities.css

# Generate utilities with custom configuration
python scripts/generate_utilities.py --input tokens.json --output src/styles/utilities.css --config config.json
```

**validate_tokens.py** - Validate against W3C DTCG specification

```bash
python scripts/validate_tokens.py --input tokens.json [--strict]
```

### Templates

Generate consistent output using templates with `{{VARIABLE}}` substitution:

- `templates/w3c-tokens.template.json` - W3C DTCG format
- `templates/css-variables.template.css` - CSS custom properties
- `templates/css-layers.template.css` - Cascade layers implementation
- `templates/documentation.template.md` - Token documentation

Common variables: `{{TOKEN_NAME}}`, `{{TOKEN_VALUE}}`, `{{TOKEN_TYPE}}`, `{{TOKEN_DESCRIPTION}}`, `{{COLOR_PRIMARY_500}}`, `{{SPACING_MD}}`, etc.

### References

Load reference files when detailed information is needed:

- `references/w3c-dtcg-spec.md` - W3C Design Tokens specification (~1k words)
  - Search for: `$value`, `$type`, `composite tokens`, `alias tokens`
- `references/css-standards.md` - Modern CSS features (~1.3k words)
  - Search for: `@layer`, `@container`, `logical properties`, `cascade layers`
- `references/accessibility-guidelines.md` - WCAG 2.2 compliance (~1.3k words)
  - Search for: `contrast ratio`, `focus indicators`, `prefers-reduced-motion`

**When to load references:**

- User asks about W3C token format or validation errors → load `w3c-dtcg-spec.md`
- User needs CSS best practices or modern features → load `css-standards.md`
- User asks about accessibility or WCAG compliance → load `accessibility-guidelines.md`

## Atomic Utility Class Generation

### Overview

The skill generates comprehensive Tailwind-style atomic utility classes from extracted design tokens. These utilities enable rapid prototyping and utility-first development with full support for responsive variants, state management, and accessibility.

### Generated Utility Categories

#### Color Utilities

**Text Colors:**
```css
.text-primary-500 { color: var(--color-primary-500); }
.text-neutral-900 { color: var(--color-neutral-900); }
```

**Background Colors:**
```css
.bg-surface-elevated { background-color: var(--color-surface-elevated); }
.bg-primary-500 { background-color: var(--color-primary-500); }
```

**Border Colors:**
```css
.border-accent-600 { border-color: var(--color-accent-600); }
```

**SVG Colors:**
```css
.fill-primary-500 { fill: var(--color-primary-500); }
.stroke-neutral-900 { stroke: var(--color-neutral-900); }
```

#### Spacing Utilities (Logical Properties)

**Padding:**
```css
.p-md { padding: var(--spacing-scale-md); }
.px-lg { padding-inline: var(--spacing-scale-lg); }  /* horizontal */
.py-sm { padding-block: var(--spacing-scale-sm); }   /* vertical */
.pt-xs { padding-block-start: var(--spacing-scale-xs); }  /* top */
```

**Margin:**
```css
.m-md { margin: var(--spacing-scale-md); }
.mx-auto { margin-inline: auto; }  /* center horizontally */
.my-lg { margin-block: var(--spacing-scale-lg); }
```

**Gap (for Grid/Flexbox):**
```css
.gap-md { gap: var(--spacing-scale-md); }
.gap-x-sm { column-gap: var(--spacing-scale-sm); }
.gap-y-lg { row-gap: var(--spacing-scale-lg); }
```

#### Typography Utilities

**Font Family:**
```css
.font-display { font-family: var(--font-family-display); }
.font-body { font-family: var(--font-family-body); }
```

**Font Size:**
```css
.text-xl { font-size: var(--font-size-xl); }
.text-base { font-size: var(--font-size-base); }
```

**Font Weight:**
```css
.font-bold { font-weight: var(--font-weight-bold); }
.font-medium { font-weight: var(--font-weight-medium); }
```

**Line Height:**
```css
.leading-tight { line-height: var(--line-height-tight); }
.leading-relaxed { line-height: var(--line-height-relaxed); }
```

#### Layout Utilities

**Border Radius:**
```css
.rounded-md { border-radius: var(--border-radius-md); }
.rounded-full { border-radius: var(--border-radius-full); }
```

**Shadows:**
```css
.shadow-md { box-shadow: var(--shadow-md); }
.shadow-elevated { box-shadow: var(--shadow-elevated); }
```

### Utility Variants

#### Container Query Variants

Apply utilities at specific container sizes (responsive design):

```html
<div class="text-base md:text-lg lg:text-xl">
  Text that grows with container size
</div>

<div class="p-sm md:p-md lg:p-lg">
  Padding that increases at larger container sizes
</div>
```

**Breakpoints:**
- `sm:` - 640px
- `md:` - 768px
- `lg:` - 1024px
- `xl:` - 1280px

#### State Variants

**Hover:**
```html
<button class="bg-primary-500 hover:bg-primary-600">
  Button with hover state
</button>

<a class="text-neutral-700 hover:text-primary-500">
  Link with hover color
</a>
```

**Focus:**
```html
<input class="outline-neutral-300 focus:outline-primary-500">

<button class="focus:bg-primary-700">
  Button with focus state
</button>
```

**Active:**
```html
<button class="bg-primary-500 active:bg-primary-700">
  Button with active/pressed state
</button>
```

#### Dark Mode Variants

```html
<div class="bg-white dark:bg-neutral-900
            text-neutral-900 dark:text-neutral-100">
  Content that adapts to dark mode
</div>

<p class="text-neutral-700 dark:text-neutral-300">
  Body text with dark mode support
</p>
```

### Usage Examples

#### Utility-First Card Component

```html
<article class="bg-white dark:bg-neutral-800
                p-lg rounded-lg shadow-md
                border border-neutral-200 dark:border-neutral-700">
  <h2 class="font-display text-2xl font-bold
             text-neutral-900 dark:text-white
             mb-md">
    Card Title
  </h2>
  <p class="text-base leading-relaxed
            text-neutral-700 dark:text-neutral-300
            mb-lg">
    Card content with proper spacing and typography.
  </p>
  <button class="px-lg py-md
                 bg-primary-600 hover:bg-primary-700 active:scale-95
                 text-white rounded-sm font-semibold
                 focus:outline-accent-500">
    Action Button
  </button>
</article>
```

#### Responsive Grid Layout

```html
<div class="grid gap-md md:gap-lg
            grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
  <div class="p-md bg-neutral-50 dark:bg-neutral-800 rounded-md">
    Grid Item 1
  </div>
  <div class="p-md bg-neutral-50 dark:bg-neutral-800 rounded-md">
    Grid Item 2
  </div>
  <div class="p-md bg-neutral-50 dark:bg-neutral-800 rounded-md">
    Grid Item 3
  </div>
</div>
```

### Configuration Options

Customize utility generation with a config JSON file:

```json
{
  "categories": ["colors", "spacing", "typography", "layout"],
  "variants": ["container", "state", "dark-mode"],
  "prefix": ""
}
```

**Configuration Properties:**
- `categories` - Which utility types to generate (array)
- `variants` - Which variants to include (array)
- `prefix` - Optional prefix for all utilities (string, e.g., "tw-")

**Example with custom configuration:**
```bash
python scripts/generate_utilities.py \
  --input tokens.json \
  --output utilities.css \
  --config custom-config.json
```

### Accessibility Features

All generated utilities include automatic accessibility support:

- **Reduced Motion**: Respects `prefers-reduced-motion` preference
- **Forced Colors**: Adapts to high contrast mode
- **Dark Mode**: Supports `prefers-color-scheme: dark`
- **Logical Properties**: Better i18n support (RTL languages)
- **Focus Indicators**: WCAG-compliant focus states

### Modern CSS Features

Generated utilities leverage modern CSS:

- **Cascade Layers**: Organized with `@layer utilities.colors`, etc.
- **Container Queries**: Responsive variants based on container size
- **Logical Properties**: `padding-inline`, `margin-block` for better i18n
- **CSS Custom Properties**: All values reference design tokens

### Browser Support

**Target Browsers:**
- Chrome/Edge: 88+ (container queries)
- Firefox: 110+
- Safari: 16+

**Progressive Enhancement:**
- Base utilities work in all browsers with custom property support
- Container query variants gracefully degrade on older browsers

## Decision Tree

```text
User provides image/mockup
    ↓
Extract tokens (colors, typography, spacing, dimensions, motion)
    ↓
Format specified?
    ├─ No  → Ask: W3C JSON, CSS, CSS (Full), Utilities, SCSS, iOS, Android?
    └─ Yes → Continue
        ↓
Utility generation requested?
    ├─ Yes → Generate utilities (standalone or with tokens)
    │         ├─ Format: utilities → Standalone atomic utilities
    │         └─ Format: css-layers-full → Tokens + utilities
    └─ No  → Standard token transformation
        ↓
Select template and generate output to src/styles/ (or user-specified path)
    ↓
Validate with validate_tokens.py (if JSON format)
    ↓
Validation passes?
    ├─ Yes → Deliver output with documentation
    └─ No  → Fix errors, re-validate
```

## Naming Conventions

Use semantic, hierarchical naming with kebab-case:

- **Colors**: `--color-{role}-{variant}` → `--color-primary-500`, `--color-text-primary`
- **Typography**: `--font-{property}-{size}` → `--font-size-lg`, `--font-weight-bold`
- **Spacing**: `--spacing-{scale}-{size}` → `--spacing-scale-md`, `--spacing-fluid-sm`
- **Dimensions**: `--{element}-{property}` → `--border-radius-sm`, `--shadow-md`

## Best Practices

1. **Semantic naming** - Use role-based names (primary/secondary) over descriptive (blue/red)
2. **Scale consistency** - Use mathematical progressions (1.25x, 1.5x, 2x)
3. **Cross-platform** - Ensure tokens work across web, mobile, and design tools
4. **Accessibility first** - Validate contrast ratios and motion preferences
5. **Modern CSS** - Leverage cascade layers, container queries, logical properties
6. **W3C compliance** - Follow Design Tokens Community Group specification

Generate modern, standards-compliant tokens that balance cutting-edge CSS features with cross-platform compatibility and accessibility.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.