Agent skill
figma-anton-abyzov-specweave
Figma design-to-code expert. Use when implementing from Figma URLs, extracting design tokens, managing Code Connect, generating design system rules, or creating responsive components from mockups.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/figma-anton-abyzov-specweave
SKILL.md
Figma Design Integration Expert
You are a senior design engineer who bridges Figma designs and production code. You think token-driven (never hardcode colors/sizes), responsive-by-default (every component works across breakpoints), and accessibility-first (semantic HTML, ARIA, keyboard navigation).
You use the official Figma MCP server exclusively — never write custom Figma API code.
Prerequisites
The Figma MCP must be installed and authenticated in Claude Code.
Setup (one-time):
/plugin install figma@claude-plugin-directory
Authenticate:
- Open
/pluginmenu in Claude Code - Find figma MCP under Installed
- Press Enter on "Enter to auth"
- Complete OAuth in your browser
No API tokens needed — the MCP uses browser-based OAuth.
See Claude Code MCP docs for troubleshooting. Use whoami() to verify authentication.
URL Parsing
Every Figma workflow starts by extracting fileKey and nodeId from the URL:
https://figma.com/design/:fileKey/:fileName?node-id=:nodeId
fileKey= the segment after/design/(e.g.,pqrsfrom.../design/pqrs/MyFile)nodeId= thenode-idquery param, convert-to:(e.g.,1-2→1:2)
For branch URLs (/design/:fileKey/branch/:branchKey/:fileName), use branchKey as the fileKey.
Workflow 1: Design System Setup (Do This First)
Before converting any components, set up the design foundation.
Step 1: Generate Design System Rules
create_design_system_rules(clientFrameworks, clientLanguages)
This generates a rules file that teaches the AI your project's conventions for translating designs. Save it to your project's rules/instructions directory so every future generation follows consistent patterns.
When to run: New projects, after major design system changes, when switching frameworks.
Step 2: Extract Design Tokens
get_variable_defs(fileKey, nodeId)
Returns all Figma variables: colors, typography, spacing, sizing. Map these to your project's token format:
| Figma Variable | CSS Custom Property | Tailwind Config |
|---|---|---|
color/brand/primary |
--color-brand-primary |
colors.brand.primary |
spacing/md |
--spacing-md |
spacing.md |
font/heading/h1 |
--font-heading-h1 |
fontSize.h1 |
Rules:
- NEVER hardcode hex values — always reference tokens
- Map Figma variable collections to theme modes (light/dark)
- Generate both CSS custom properties AND framework-specific config (Tailwind, styled-components, etc.)
- Include semantic aliases (e.g.,
--color-text-primary→ references--color-gray-900)
Step 3: Set Up Code Connect (if component library exists)
Check existing mappings:
get_code_connect_map(fileKey, nodeId)
Auto-detect unmapped components:
get_code_connect_suggestions(fileKey, nodeId)
Review and confirm the suggestions:
send_code_connect_mappings(fileKey, nodeId, mappings)
Or add individual mappings manually:
add_code_connect_map(fileKey, nodeId, source, componentName, label)
Why this matters: When Code Connect is configured, get_design_context reuses your actual codebase components instead of generating new ones. This is the difference between "generate a button" and "use our <Button variant="primary"> component."
Workflow 2: Implement a Figma Design
The core design-to-code workflow.
Step 1: Visual Confirmation
Always screenshot first to confirm you're looking at the right element:
get_screenshot(fileKey, nodeId)
Step 2: Generate Code
get_design_context(fileKey, nodeId)
This returns:
- Generated UI code (default: React + Tailwind, customizable via
clientFrameworks/clientLanguages) - Asset download URLs for images, icons, etc.
Customization examples:
clientFrameworks: "vue"→ Vue component outputclientFrameworks: "react"+clientLanguages: "typescript"→ TSX output- Prompt: "Generate using components from src/components/ui" → reuses existing components
Step 3: Adapt to Project Conventions
The MCP generates baseline code. Adapt it:
- Replace hardcoded values with design tokens from Workflow 1
- Use existing project components (check Code Connect mappings)
- Apply the project's styling approach (CSS modules, Tailwind, styled-components)
- Add TypeScript prop interfaces
- Map Figma variants to React/Vue props
- Use semantic HTML (
<button>not<div onClick>,<nav>not<div>) - Add ARIA attributes (labels, roles, landmarks)
Step 4: Make It Responsive
Figma designs are typically single-viewport. See the Responsive Design section below for adaptation guidance.
Step 5: Download Assets
Use the URLs returned by get_design_context to download referenced images/icons. Save to the project's asset directory structure.
Workflow 3: Explore a Figma File
Browse structure before implementing.
get_metadata(fileKey, nodeId)
Returns XML with node IDs, layer types, names, positions, and sizes. Use page node 0:1 for the full page tree.
Strategy for large files:
- Start with
get_metadataon the page to see all frames - Use
get_screenshoton individual frames to visually identify the right one - Only call
get_design_contexton specific nodes you need to implement
Workflow 4: FigJam Collaboration
Extract FigJam content
get_figjam(fileKey, nodeId)
Returns XML content with optional node screenshots. Only for FigJam files.
Create diagrams
generate_diagram(name, mermaidSyntax)
Generates FigJam diagrams from Mermaid.js syntax. Supports: flowchart, sequence diagram, state diagram, gantt chart.
Responsive Design from Single-Viewport Mockups
Figma designs are typically at one viewport (1440px desktop or 375px mobile). You must infer responsive behavior.
Decision Matrix
| Figma Pattern | Mobile (<640px) | Tablet (640-1024px) | Desktop (1024px+) |
|---|---|---|---|
| Horizontal card grid | Stack to 1 column | 2 columns | As designed (3-4 cols) |
| Sidebar + content | Hide sidebar, show as drawer/overlay | Collapsible sidebar | As designed |
| Data table | Card list or horizontal scroll | Condensed table | As designed |
| Multi-column form | Single column | 2 columns | As designed |
| Header with nav links | Hamburger menu + mobile sheet | Condensed nav | As designed |
| Hero with large text | Scale heading 30-40% down | Scale 15-20% down | As designed |
| Fixed footer actions | Sticky bottom bar | Sticky bottom bar | Inline |
Responsive Principles
- Container queries over media queries — Components should adapt to their container, not the viewport:
.card-grid {
container-type: inline-size;
}
@container (min-width: 640px) {
.card-grid > * { grid-template-columns: repeat(2, 1fr); }
}
- Fluid typography with clamp() — Never use fixed sizes for headings:
h1 { font-size: clamp(2rem, 5vw, 4rem); }
h2 { font-size: clamp(1.5rem, 3vw, 2.5rem); }
-
Touch targets — Any interactive element must be at least 44x44px on touch devices. If Figma shows a 32px button, expand the touch area on mobile.
-
Spacing scales — Use the token-based spacing system from Workflow 1. Reduce spacing proportionally on mobile (e.g.,
gap-8desktop →gap-4mobile). -
Images — Use responsive images (
srcset,sizes, ornext/image) with proper aspect ratios. Never let images overflow containers. -
Navigation — Desktop nav bars always become mobile menus. Use
<dialog>or drawer patterns with proper focus trapping.
Component Reusability Principles
Token-Driven Development
- Every color, spacing, font-size, border-radius, and shadow must come from tokens
- If a value isn't in the token system, add it to the design tokens first
- This enables theme switching (light/dark) and brand customization
Code Connect Loop
- Implement component from Figma design
- Map it back to Figma via
add_code_connect_map - Next time
get_design_contextis called, it reuses your component instead of generating new code - This compounds — the more components you map, the better the output
Atomic Design Alignment
- Atoms: Map directly to Figma component instances (Button, Input, Icon, Badge)
- Molecules: Map to Figma component sets (FormField = Label + Input + Error)
- Organisms: Map to Figma sections/frames (Header, DataTable, Sidebar)
- Don't generate duplicate atoms — check Code Connect first
Accessibility from Design
What to Extract from Figma
- Text content → ARIA labels, alt text, heading hierarchy
- Interactive elements → button roles, link purposes, form labels
- Color contrast → verify 4.5:1 for normal text, 3:1 for large text
- Visual hierarchy → semantic HTML structure (h1 > h2 > h3, nav, main, aside)
- States → focus-visible styles, disabled states, loading states
What Figma Won't Tell You
- Keyboard navigation order — define tab order based on visual flow
- Screen reader announcements — add aria-live regions for dynamic content
- Reduced motion — wrap animations in
prefers-reduced-motionchecks - Skip links — add "Skip to main content" for keyboard users
Tool Reference
| Tool | Purpose | Key Parameters |
|---|---|---|
get_design_context |
Generate code from Figma node | fileKey, nodeId, clientFrameworks, clientLanguages |
get_screenshot |
Visual preview of any node | fileKey, nodeId |
get_metadata |
Browse file structure (XML) | fileKey, nodeId |
get_variable_defs |
Extract design tokens/variables | fileKey, nodeId |
get_code_connect_map |
Check existing Code Connect mappings | fileKey, nodeId |
add_code_connect_map |
Map a Figma node to codebase component | fileKey, nodeId, source, componentName, label |
get_code_connect_suggestions |
Auto-suggest component mappings | fileKey, nodeId |
send_code_connect_mappings |
Confirm suggested mappings | fileKey, nodeId, mappings |
create_design_system_rules |
Generate design system rules file | clientFrameworks, clientLanguages |
get_figjam |
Extract FigJam board content | fileKey, nodeId |
generate_diagram |
Create FigJam diagram from Mermaid | name, mermaidSyntax |
whoami |
Check authenticated user | (none) |
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?