Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Transform design tokens across multiple formats and platforms. Parse W3C design token format, transform to CSS/SCSS/JS/iOS/Android, handle token aliases and references, and generate documentation.
.claude/skills/a5c-ai-design-token-transformer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 35% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 106% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 10% | 0% |
You are design-token-transformer - a specialized skill for transforming design tokens across multiple formats and platforms, enabling consistent design system implementation.
This skill enables AI-powered design token transformation including:
Support for multiple input formats:
json// W3C Design Token Community Group Format { "color": { "primary": { "$value": "#2196F3", "$type": "color", "$description": "Primary brand color" }, "primary-light": { "$value": "{color.primary}", "$type": "color", "alpha": 0.5 } }, "spacing": { "sm": { "$value": "8px", "$type": "dimension" }, "md": { "$value": "{spacing.sm} * 2", "$type": "dimension" } } }
Generate CSS custom properties and SCSS variables:
css/* CSS Custom Properties */ :root { /* Colors */ --color-primary: #2196F3; --color-primary-light: rgba(33, 150, 243, 0.5); --color-secondary: #9C27B0; /* Typography */ --font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; --font-size-base: 16px; --font-size-lg: 1.25rem; --font-weight-bold: 700; --line-height-base: 1.5; /* Spacing */ --spacing-xs: 4px; --spacing-sm: 8px; --spacing-md: 16px; --spacing-lg: 24px; --spacing-xl: 32px; /* Shadows */ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); } /* Dark theme override */ [data-theme="dark"] { --color-primary: #64B5F6; --color-background: #121212; --color-surface: #1E1E1E; }
scss// SCSS Variables $color-primary: #2196F3; $color-primary-light: rgba(33, 150, 243, 0.5); $color-secondary: #9C27B0; $font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; $font-size-base: 16px; $font-size-lg: 1.25rem; $spacing-xs: 4px; $spacing-sm: 8px; $spacing-md: 16px; // SCSS Maps for iteration $colors: ( 'primary': $color-primary, 'primary-light': $color-primary-light, 'secondary': $color-secondary ); $spacing: ( 'xs': $spacing-xs, 'sm': $spacing-sm, 'md': $spacing-md );
Generate typed token modules:
typescript// tokens.ts export const colors = { primary: '#2196F3', primaryLight: 'rgba(33, 150, 243, 0.5)', secondary: '#9C27B0', } as const; export const typography = { fontFamilyBase: "'Inter', -apple-system, BlinkMacSystemFont, sans-serif", fontSizeBase: '16px', fontSizeLg: '1.25rem', fontWeightBold: 700, lineHeightBase: 1.5, } as const; export const spacing = { xs: '4px', sm: '8px', md: '16px', lg: '24px', xl: '32px', } as const; // Type exports export type ColorToken = keyof typeof colors; export type SpacingToken = keyof typeof spacing; // Theme interface export interface Theme { colors: typeof colors; typography: typeof typography; spacing: typeof spacing; } export const theme: Theme = { colors, typography, spacing, };
Generate Swift constants and extensions:
swift// DesignTokens.swift import UIKit public enum DesignTokens { public enum Colors { public static let primary = UIColor(hex: "#2196F3") public static let primaryLight = UIColor(hex: "#2196F3").withAlphaComponent(0.5) public static let secondary = UIColor(hex: "#9C27B0") } public enum Typography { public static let fontFamilyBase = "Inter" public static let fontSizeBase: CGFloat = 16 public static let fontSizeLg: CGFloat = 20 public static let fontWeightBold: UIFont.Weight = .bold } public enum Spacing { public static let xs: CGFloat = 4 public static let sm: CGFloat = 8 public static let md: CGFloat = 16 public static let lg: CGFloat = 24 public static let xl: CGFloat = 32 } } // UIColor extension for hex support extension UIColor { convenience init(hex: String) { // Implementation } }
Generate Android resource files:
xml<!-- colors.xml --> <?xml version="1.0" encoding="utf-8"?> <resources> <color name="color_primary">#2196F3</color> <color name="color_primary_light">#802196F3</color> <color name="color_secondary">#9C27B0</color> </resources> <!-- dimens.xml --> <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="spacing_xs">4dp</dimen> <dimen name="spacing_sm">8dp</dimen> <dimen name="spacing_md">16dp</dimen> <dimen name="spacing_lg">24dp</dimen> <dimen name="spacing_xl">32dp</dimen> <dimen name="font_size_base">16sp</dimen> <dimen name="font_size_lg">20sp</dimen> </resources>
Generate comprehensive token documentation:
markdown# Design Tokens Documentation ## Colors | Token | Value | Description | |-------|-------|-------------| | `color-primary` | #2196F3 | Primary brand color | | `color-primary-light` | rgba(33, 150, 243, 0.5) | Light variant of primary | | `color-secondary` | #9C27B0 | Secondary brand color | ## Typography | Token | Value | Usage | |-------|-------|-------| | `font-family-base` | Inter | Primary font family | | `font-size-base` | 16px | Body text size | | `font-size-lg` | 1.25rem | Large text size | ## Spacing Scale | Token | Value | Usage | |-------|-------|-------| | `spacing-xs` | 4px | Tight spacing | | `spacing-sm` | 8px | Small spacing | | `spacing-md` | 16px | Medium spacing (default) |
This skill can leverage the following MCP servers:
| Server | Description | Installation | |--------|-------------|--------------| | Superdesign MCP Server | Design orchestrator with token support | GitHub |
color-primary not color-blue)This skill integrates with the following processes:
component-library.js - Design token consumptiondesign-system.js - Token management and versioningresponsive-design.js - Responsive token scalingWhen executing operations, provide structured output:
json{ "operation": "transform", "inputFormat": "w3c-dtcg", "outputFormats": ["css", "scss", "ts"], "status": "success", "tokenCount": 45, "artifacts": [ "tokens.css", "tokens.scss", "tokens.ts" ], "warnings": [], "validationResults": { "aliasesResolved": true, "circularReferences": false, "missingValues": [] } }
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | pass→pass | 27,270 | 21,526 | -21% | 1 | 1 | 0% | 4,903 | 6,631 | +35% | 0 | 0 | — |
case-07 | pass→pass | 20,763 | 21,734 | +5% | 1 | 1 | 0% | 3,175 | 6,533 | +106% | 0 | 0 | — |
case-01 | fail→pass | 22,850 | 17,424 | -24% | 1 | 1 | 0% | 4,023 | 5,474 | +36% | 0 | 0 | — |
case-02 | fail→fail | 38,097 | 27,250 | -28% | 1 | 1 | 0% | 7,564 | 7,653 | +1% | 0 | 0 | — |
case-03 | pass→pass | 28,631 | 18,711 | -35% | 1 | 1 | 0% | 4,930 | 5,419 | +10% | 0 | 0 | — |
case-04 | pass→pass | 15,896 | 17,753 | +12% | 1 | 1 | 0% | 2,052 | 5,121 | +150% | 0 | 0 | — |
case-05 | pass→pass | 16,215 | 16,110 | -1% | 1 | 1 | 0% | 2,203 | 5,059 | +130% | 0 | 0 | — |
case-08 | pass→pass | 10,138 | 10,848 | +7% | 1 | 1 | 0% | 888 | 3,787 | +326% | 0 | 0 | — |
case-09 | pass→pass | 17,510 | 26,954 | +54% | 1 | 1 | 0% | 2,339 | 7,202 | +208% | 0 | 0 | — |
case-10 | pass→pass | 15,426 | 11,351 | -26% | 1 | 1 | 0% | 1,702 | 3,594 | +111% | 0 | 0 | — |
case-11 | pass→pass | 18,529 | 32,961 | +78% | 1 | 1 | 0% | 2,343 | 5,261 | +125% | 0 | 0 | — |
case-12 | pass→pass | 11,343 | 11,900 | +5% | 1 | 1 | 0% | 1,025 | 3,900 | +280% | 0 | 0 | — |
case-13 | pass→pass | 20,361 | 22,314 | +10% | 1 | 1 | 0% | 2,853 | 5,748 | +101% | 0 | 0 | — |
case-14 | pass→pass | 18,488 | 13,268 | -28% | 1 | 1 | 0% | 2,065 | 4,086 | +98% | 0 | 0 | — |
case-15 | fail→pass | 34,162 | 19,912 | -42% | 1 | 1 | 0% | 6,866 | 6,075 | -12% | 0 | 0 | — |
case-16 | pass→pass | 15,913 | 18,815 | +18% | 1 | 1 | 0% | 2,700 | 5,135 | +90% | 0 | 0 | — |
case-22 | pass→pass | 22,887 | 16,115 | -30% | 1 | 1 | 0% | 3,531 | 6,199 | +76% | 0 | 0 | — |
case-17 | pass→pass | 15,205 | 8,340 | -45% | 1 | 1 | 0% | 1,918 | 4,016 | +109% | 0 | 0 | — |
case-18 | pass→pass | 15,571 | 10,372 | -33% | 1 | 1 | 0% | 2,201 | 4,374 | +99% | 0 | 0 | — |
case-19 | pass→pass | 17,408 | 10,155 | -42% | 1 | 1 | 0% | 2,303 | 4,591 | +99% | 0 | 0 | — |
case-20 | fail→fail | 16,824 | 26,027 | +55% | 1 | 1 | 0% | 3,345 | 6,873 | +105% | 0 | 0 | — |
case-21 | pass→pass | 11,578 | 9,637 | -17% | 1 | 1 | 0% | 1,976 | 4,250 | +115% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.