--- name: design-token-transformer description: 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. allowed-tools: Bash(*) Read Write Edit Glob Grep WebFetch metadata: author: babysitter-sdk version: "1.0.0" category: design-systems backlog-id: SK-UX-003 --- # design-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: ```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" } } } ``` ### 2. CSS/SCSS Transformation 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 ); ``` ### 3. JavaScript/TypeScript Transformation 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, }; ``` ### 4. iOS Swift Transformation 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 } } ``` ### 5. Android Transformation Generate Android resource files: ```xml #2196F3 #802196F3 #9C27B0 4dp 8dp 16dp 24dp 32dp 16sp 20sp ``` ### 6. Token Documentation Generation 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) | ``` ## MCP Server Integration This skill can leverage the following MCP servers: | Server | Description | Installation | |--------|-------------|--------------| | Superdesign MCP Server | Design orchestrator with token support | [GitHub](https://glama.ai/mcp/servers/@jonthebeef/superdesign-mcp-claude-code) | ## Best Practices 1. **Use semantic naming** - Name tokens by purpose, not value (e.g., `color-primary` not `color-blue`) 2. **Establish a hierarchy** - Use base/component/semantic token levels 3. **Document everything** - Include descriptions and usage examples 4. **Version tokens** - Track changes and migrations 5. **Validate references** - Ensure all token aliases resolve correctly 6. **Test transformations** - Verify output on target platforms ## Process Integration This skill integrates with the following processes: - `component-library.js` - Design token consumption - `design-system.js` - Token management and versioning - `responsive-design.js` - Responsive token scaling ## Output Format When 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": [] } } ``` ## 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