--- name: figma-tools description: Fetch and parse Figma design files for AI-assisted implementation. Extract layout, styles, components, and assets from Figma URLs. --- # Figma Tools Direct Figma API tools for fetching design data. Parse Figma files into simplified, AI-friendly structures. ## Setup ```bash cd {baseDir}/figma-tools pnpm install ``` Set your Figma access token: ```bash export FIGMA_API_KEY="your-token-here" ``` Get a token from [Figma Settings → Personal Access Tokens](https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens). ## Commands ### Get File or Node ```bash # Get entire file {figmaDir}/figma-tools get https://www.figma.com/file/ABC123/My-Design # Get specific frame/node {figmaDir}/figma-tools get "https://www.figma.com/file/ABC123/My-Design?node-id=123%3A456" # Control depth (reduce token count) {figmaDir}/figma-tools get https://www.figma.com/file/ABC123/My-Design --depth 2 # Output raw Figma API response {figmaDir}/figma-tools get https://www.figma.com/file/ABC123/My-Design --raw > raw.json # Output as YAML {figmaDir}/figma-tools get https://www.figma.com/file/ABC123/My-Design --yaml ``` ### Download Assets ```bash # Download all images from a file {figmaDir}/figma-tools download https://www.figma.com/file/ABC123/My-Design ./assets # Download PNGs at 2x scale {figmaDir}/figma-tools download https://www.figma.com/file/ABC123/My-Design ./assets --scale 2 # Download SVGs {figmaDir}/figma-tools download https://www.figma.com/file/ABC123/My-Design ./icons --format svg ``` ### Parse Local Files ```bash # Simplify a raw Figma JSON file {figmaDir}/figma-tools parse ./raw-figma-response.json # Output to file {figmaDir}/figma-tools parse ./raw.json --yaml > design.yaml ``` ## When to Use - **Implementing designs**: Fetch layout, colors, typography, spacing directly from Figma - **Extracting assets**: Download PNGs/SVGs referenced in designs - **Design-to-code**: Get structured data about components and styles - **Auditing designs**: Programmatically analyze design systems ## URL Formats Supported ``` https://www.figma.com/file/{fileKey}/{title} https://www.figma.com/file/{fileKey}/{title}?node-id={nodeId} https://www.figma.com/design/{fileKey}/{title} ``` ## Output Format The simplified output transforms verbose Figma API responses into clean structures: ```typescript { name: "My Design", lastModified: "2024-01-15T10:30:00Z", thumbnailUrl: "...", nodes: [{ id: "123:456", name: "Button Primary", type: "FRAME", text: "Click me", textStyle: "style_001", fills: "fill_001", strokes: "stroke_001", effects: "effect_001", layout: "layout_001", borderRadius: "8px", opacity: 0.9, children: [...] }], components: { "component-123": { name: "Button", description: "..." } }, globalVars: { styles: { "style_001": { fontFamily: "Inter", fontSize: 16, ... }, "fill_001": [{ type: "SOLID", hex: "#FF5733" }], "layout_001": { mode: "row", gap: "8px", justifyContent: "center" } } } } ``` ## Efficiency Guide ### Use --depth to Limit Data Figma files can be huge. Use `--depth` to fetch only what you need: ```bash {figmaDir}/figma-tools get --depth 1 {figmaDir}/figma-tools get --depth 2 ``` ### Get Specific Nodes ```bash {figmaDir}/figma-tools get "https://www.figma.com/file/ABC/My?node-id=123%3A456" ``` ### Batch Asset Downloads ```bash {figmaDir}/figma-tools download ./assets --scale 2 ```