--- name: Figma Sync description: Synchronize design tokens from Figma files using the Figma API globs: - "**/figma-tokens/**" - "**/design-tokens/**" - "**/*.figma.json" alwaysApply: false --- # Figma Sync ## Overview This skill enables synchronization of design tokens from Figma files. It extracts colors, typography, spacing, and other design decisions from Figma and converts them to code-ready tokens. ## When to Use Use this skill when the user asks to: - Import tokens from Figma - Sync design decisions with code - Extract colors from Figma file - Update tokens from Figma changes - Connect Figma to the design system ## Prerequisites ### Figma Token Set the `FIGMA_TOKEN` environment variable: ```bash export FIGMA_TOKEN=your-figma-personal-access-token ``` ### File Key Get the file key from Figma URL: ``` https://www.figma.com/file/XXXXXXXXXXXXXX/Design-System ^^^^^^^^^^^^^^ This is the file key ``` ## Extracted Token Types | Type | Figma Source | Token Output | |------|--------------|--------------| | Colors | Fill colors, Strokes | color.* tokens | | Typography | Text styles | typography.* tokens | | Spacing | Auto-layout gaps | spacing.* tokens | | Shadows | Drop shadows | shadow.* tokens | | Radii | Corner radius | radius.* tokens | | Borders | Stroke weights | border.* tokens | ## Workflow 1. **Get Figma File Key** - Open Figma file in browser - Copy file key from URL 2. **Sync Tokens** ``` Use dss_sync_figma with file_key ``` 3. **Review Extracted Tokens** - Check token names - Verify values - Review categories 4. **Generate Theme Files** - Use theme generation skill - Export to CSS/SCSS/JSON ## Example Interaction **User:** "Sync design tokens from our Figma file" **Assistant Response:** ``` I'll sync tokens from your Figma file. First, I need the Figma file key. You can find it in the URL: https://www.figma.com/file/[FILE_KEY]/Design-System What's your file key? **User:** abc123xyz456 [Uses dss_sync_figma with file_key: abc123xyz456] **Figma Sync Results:** **Extracted Tokens:** Colors (24 tokens): - primary/500: #0066CC - primary/400: #3385D6 - primary/600: #0052A3 - secondary/500: #6C757D - success/500: #28A745 - error/500: #DC3545 Typography (8 styles): - heading/h1: Inter Bold 48px/56px - heading/h2: Inter Bold 36px/44px - heading/h3: Inter SemiBold 24px/32px - body/regular: Inter Regular 16px/24px - body/small: Inter Regular 14px/20px Spacing (6 values): - xs: 4px - sm: 8px - md: 16px - lg: 24px - xl: 32px - 2xl: 48px Shadows (3 styles): - sm: 0 1px 2px rgba(0,0,0,0.05) - md: 0 4px 6px rgba(0,0,0,0.1) - lg: 0 10px 15px rgba(0,0,0,0.1) **Total:** 41 tokens extracted Would you like me to generate theme files from these tokens? ``` ## API Rate Limiting The Figma API has rate limits: - 30 requests per minute for free plans - Higher limits for paid plans DSS implements: - Automatic retry with exponential backoff - Request caching (1 hour TTL) - Batch requests where possible ## Token Naming Figma names are converted to token format: ``` Figma: "Primary / 500" Token: color-primary-500 Figma: "Heading / H1" Token: typography-heading-h1 Figma: "Shadow / Medium" Token: shadow-md ``` ## Error Handling | Error | Cause | Solution | |-------|-------|----------| | 403 Forbidden | Invalid token | Check FIGMA_TOKEN | | 404 Not Found | Invalid file key | Verify file key | | 429 Too Many Requests | Rate limited | Wait and retry | ## Related Tools - `dss_sync_figma` - Main sync tool - `dss_extract_tokens` - Merge with other sources - `dss_generate_theme` - Generate from Figma tokens ## Best Practices 1. **Figma Organization** - Use consistent naming in Figma - Organize styles in folders - Use descriptions for context 2. **Sync Frequency** - Sync after major design changes - Automate in CI/CD if possible - Version control token files 3. **Conflict Resolution** - Compare with existing tokens - Review changes before applying - Maintain changelog ## Security Notes - Never commit FIGMA_TOKEN to version control - Use environment variables or secrets manager - Rotate tokens periodically - Use read-only tokens when possible