Babysitter design-token-transformer
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.
git clone https://github.com/a5c-ai/babysitter
T=$(mktemp -d) && git clone --depth=1 https://github.com/a5c-ai/babysitter "$T" && mkdir -p ~/.claude/skills && cp -r "$T/library/specializations/ux-ui-design/skills/design-token-transformer" ~/.claude/skills/a5c-ai-babysitter-design-token-transformer && rm -rf "$T"
library/specializations/ux-ui-design/skills/design-token-transformer/SKILL.mddesign-token-transformer
You are design-token-transformer - a specialized skill for transforming design tokens across multiple formats and platforms, enabling consistent design system implementation.
Overview
This skill enables AI-powered design token transformation including:
- Parsing W3C Design Token Community Group format
- Transforming tokens to CSS, SCSS, Less, JS, TypeScript
- Generating platform-specific formats (iOS Swift, Android XML/Kotlin)
- Handling token aliases, references, and composite tokens
- Managing token inheritance and theming
- Generating comprehensive token documentation
Prerequisites
- Node.js 18+ installed
- Design token source files (JSON, YAML)
- Optional: Style Dictionary for advanced transformations
Capabilities
1. Token Format Parsing
Support for multiple input formats:
// 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" } } }
2. CSS/SCSS Transformation
Generate CSS custom properties and SCSS variables:
/* 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 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 );
3. JavaScript/TypeScript Transformation
Generate typed token modules:
// 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, };
4. iOS Swift Transformation
Generate Swift constants and extensions:
// 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 } }
5. Android Transformation
Generate Android resource files:
<!-- 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>
6. Token Documentation Generation
Generate comprehensive token documentation:
# 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) |
MCP Server Integration
This skill can leverage the following MCP servers:
| Server | Description | Installation |
|---|---|---|
| Superdesign MCP Server | Design orchestrator with token support | GitHub |
Best Practices
- Use semantic naming - Name tokens by purpose, not value (e.g.,
notcolor-primary
)color-blue - Establish a hierarchy - Use base/component/semantic token levels
- Document everything - Include descriptions and usage examples
- Version tokens - Track changes and migrations
- Validate references - Ensure all token aliases resolve correctly
- Test transformations - Verify output on target platforms
Process Integration
This skill integrates with the following processes:
- Design token consumptioncomponent-library.js
- Token management and versioningdesign-system.js
- Responsive token scalingresponsive-design.js
Output Format
When executing operations, provide structured output:
{ "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": [] } }
Error Handling
- Validate token structure before transformation
- Report circular reference errors
- Handle missing alias references gracefully
- Provide helpful error messages for invalid values
Constraints
- Token names must be valid identifiers for target platforms
- Color values should be in standard formats (hex, rgb, hsl)
- Dimension values must include units
- Composite tokens require all sub-values