Figma Design Analyzer

VerifiedSafe

Analyzes Figma designs against code conventions for implementation readiness. Checks design-code parity, semantic token usage, and property naming consistency. Use when reviewing a Figma component before coding.

Sby Skills Guide Bot
DevelopmentIntermediate
1306/2/2026
Claude CodeCursorWindsurf
#figma#design-code-parity#token-validation#nexus

Recommended for

Our review

Analyzes an existing Figma component against Nexus design system conventions, focusing on design-code parity, token usage, and AI readability.

Strengths

  • Validates design-code parity systematically
  • Checks token consistency against the Nexus token system
  • Identifies property and layer naming convention issues
  • Provides actionable fixes for each issue detected

Limitations

  • Requires configured MCP Figma and GitHub tools
  • Depends on Nexus design system and its established conventions
  • May not catch all runtime states (e.g., animations, complex interactions)
When to use it

When translating Figma components to code to ensure alignment with design tokens and naming conventions.

When not to use it

When the design system is not yet defined or when exploring high-level concepts without detailed design tokens.

Security analysis

Safe
Quality score90/100

The skill uses only read-only tools (Read, Grep, Glob, WebFetch, Figma read operations, and GitHub file reads). No execution of code, no network writes, no destructive commands. It is a design analysis skill, not a code-execution skill.

No concerns found

Examples

Analyze Figma Button component
Analyze the Figma button component at https://figma.com/design/abc123/MyDesign?node-id=123-456 for code readiness.
Check token consistency in Figma card
Run figma-analyze on the Card component from file key xyz789, node 789-012, to verify token usage.
Validate property naming for a Figma input field
Use figma-analyze on the Input component at https://figma.com/design/def456/App?node-id=345-678 to check if property names match code conventions.

name: figma-analyze description: Analyze Figma designs for code implementation readiness and design-code parity. Use when working with Figma URLs, analyzing component designs, or checking token consistency. allowed-tools:

  • Read
  • Grep
  • Glob
  • WebFetch
  • mcp__figma__get_design_context
  • mcp__figma__get_variable_defs
  • mcp__figma__get_screenshot
  • mcp__figma__get_metadata
  • mcp__figma__get_code_connect_map
  • mcp__github__get_file_contents user-invocable: true

Figma Analyze

Purpose

Analyze an existing Figma component against Nexus conventions. Validates design-code parity, token usage, and AI readability. Outputs a focused issues list with fixes.

Input

| Format | Example | Detection | | -------------------- | ------------------------------------------------------------- | ----------- | | Figma URL | https://figma.com/design/:fileKey/:fileName?node-id=123-456 | URL pattern | | Component name + URL | Button https://figma.com/... | Name + URL |

Extract from URL:

  • fileKey — from path segment after /design/
  • nodeId — from node-id param, convert 123-456123:456

Data Sources

Figma (via MCP)

mcp__figma__get_design_context(fileKey, nodeId)  → Props, structure, generated code
mcp__figma__get_variable_defs(fileKey, nodeId)   → Tokens/variables used
mcp__figma__get_metadata(fileKey, nodeId)        → Frame names, hierarchy
mcp__figma__get_screenshot(fileKey, nodeId)      → Visual reference (optional)

Nexus Token System

Read: packages/tailwind/nexus.css           → Semantic tokens (source of truth)
Read: .claude/rules/shadcn-divergences.md   → shadcn → Nexus mapping rules

shadcn Reference (if applicable)

WebFetch: https://ui.shadcn.com/r/styles/default/{component}.json

Workflow

Phase 1: Gather All Context

In parallel:

  1. Figma Design — Call MCP tools to get:

    • Component properties (names, types, values)
    • Variables/tokens used
    • Frame names and layer hierarchy
  2. Nexus Tokens — Read:

    • packages/tailwind/nexus.css — actual semantic tokens available
    • .claude/rules/shadcn-divergences.md — divergence rules
  3. shadcn Reference (if base component identified):

    • Fetch from registry to compare props/variants

Phase 2: Run All Checks

Analyze Figma against Nexus conventions. Check each category and only note issues.

Check Categories

| Category | What to Check | | ---------------------- | -------------------------------------------------------------------- | | Property Names | Match code props exactly (variant not Style, size not Scale) | | Property Values | Lowercase (sm, md not Small, Medium) | | Boolean Props | Use has*/is* prefix (hasLeadingIcon not showIcon) | | Layer Names | Standard names (Label, LeadingIcon, TrailingIcon, Spinner) | | Token Usage | Semantic Nexus tokens, no hardcoded values or primitives | | Token Naming | Follows Nexus patterns (see divergence checks below) | | States | Component includes hover, focus, active, disabled states as needed | | Description | Component has AI-readable description | | Compound Structure | Frame names match code exports (PascalCase, no spaces) |

Divergence-Specific Checks

Cross-reference Figma variables against shadcn-divergences.md:

| Figma Uses | Should Be | Rule | | ----------------------- | ----------------------------- | ----------------------------- | | destructive/* | error/* | Nexus uses error naming | | accent/* | background-hover or muted | Accent removed in Nexus | | card/* | container/* | Renamed in Nexus | | primary (no suffix) | primary-background | Explicit -background suffix | | hover:*/90 or opacity | *-background-hover | Semantic hover tokens | | border-input | border-default | Renamed in Nexus |

Token Existence Check

For each Figma variable, verify it exists in nexus.css:

Figma: color/primary-background → Check: --color-primary-background exists? ✓
Figma: color/accent-hover → Check: --color-accent-hover exists? ✗ (use background-hover)

Phase 3: Generate Report

Output a focused report with issues grouped by severity.


Output Format

## Figma Analysis: {ComponentName}

**Base:** {shadcn component or "Custom"}
**Type:** {Simple | Compound}
**Verdict:** {Ready | Needs Updates | Blocked}

---

### Issues

#### Blocking (Must Fix)

{If none: "None"}

1. **{Issue Title}**
   - Location: `{property/layer/token name}`
   - Current: `{what Figma has}`
   - Expected: `{what it should be}`
   - Why: {brief reason}

#### Should Fix

{If none: "None"}

1. **{Issue Title}**
   - Location: `{property/layer/token name}`
   - Current: `{what Figma has}`
   - Expected: `{what it should be}`

---

### Token Mapping

{Only show if there are token issues or divergences}

| Figma Variable  | Nexus Equivalent | Status |
| --------------- | ---------------- | ------ | --- | --- |
| `{figma token}` | `{nexus token}`  | {✅    | ❌  | ⚠️} |

---

### Custom Additions

{Only show if component has props/variants beyond shadcn base}

| Addition | Type                | Convention | Notes |
| -------- | ------------------- | ---------- | ----- | ------------ |
| `{name}` | {Prop/Variant/Slot} | {✅        | ❌}   | {brief note} |

---

### Checklist

- [{x| }] Property names match code
- [{x| }] Property values lowercase
- [{x| }] Layer names standard
- [{x| }] Tokens exist in Nexus
- [{x| }] No divergence violations
- [{x| }] States defined (hover, focus, active, disabled)
- [{x| }] Has component description

Severity Guidelines

Blocking

Issues that break code generation or cause runtime errors:

  • Property name doesn't match code prop (case-sensitive)
  • Token doesn't exist in Nexus (will fail compilation)
  • Compound frame name doesn't match export
  • Required prop missing

Should Fix

Issues that degrade quality but don't break builds:

  • Non-standard layer names (affects AI readability)
  • Missing description
  • Using deprecated token names (still works but inconsistent)

Examples

Clean Report (No Issues)

## Figma Analysis: Button

**Base:** shadcn/button
**Type:** Simple
**Verdict:** Ready

---

### Issues

#### Blocking (Must Fix)

None

#### Should Fix

None

---

### Checklist

- [x] Property names match code
- [x] Property values lowercase
- [x] Layer names standard
- [x] Tokens exist in Nexus
- [x] No divergence violations
- [x] States defined (hover, focus, active, disabled)
- [x] Has component description

Report with Issues

## Figma Analysis: Button

**Base:** shadcn/button
**Type:** Simple
**Verdict:** Needs Updates

---

### Issues

#### Blocking (Must Fix)

1. **Invalid token reference**
   - Location: `color/destructive-background`
   - Current: `destructive-background`
   - Expected: `error-background`
   - Why: Nexus uses `error` naming, `destructive` tokens don't exist

2. **Property name mismatch**
   - Location: Property `Size`
   - Current: `Size` (PascalCase)
   - Expected: `size` (lowercase)
   - Why: Code prop is `size`, case-sensitive matching required

#### Should Fix

1. **Non-standard layer name**
   - Location: Layer `Button Text`
   - Current: `Button Text`
   - Expected: `Label`

2. **Missing component description**
   - Location: Component description field
   - Current: (empty)
   - Expected: Description following format: "{What} — {Use case}. Variants: {list}."

---

### Token Mapping

| Figma Variable                 | Nexus Equivalent             | Status    |
| ------------------------------ | ---------------------------- | --------- |
| `color/destructive-background` | `--color-error-background`   | ❌ Rename |
| `color/destructive-foreground` | `--color-error-foreground`   | ❌ Rename |
| `color/accent-hover`           | `--color-background-hover`   | ❌ Rename |
| `color/primary-background`     | `--color-primary-background` | ✅        |

---

### Checklist

- [ ] Property names match code
- [x] Property values lowercase
- [ ] Layer names standard
- [ ] Tokens exist in Nexus
- [ ] No divergence violations
- [ ] Has component description

Error Handling

| Error | Action | | -------------------------------- | --------------------------------------------- | | Figma MCP fails | Ask user to verify connection and permissions | | Component not in shadcn registry | Treat as custom, check conventions only | | No variables used | Flag as blocking — must use Figma variables | | Can't identify base component | Ask user to specify |


Key References

| Reference | Purpose | | ------------------------------------- | ------------------------------------ | | packages/tailwind/nexus.css | Source of truth for available tokens | | .claude/rules/shadcn-divergences.md | shadcn → Nexus mapping rules | | .claude/rules/figma.md | Figma-code parity conventions | | .claude/rules/components.md | Component structure requirements |

Related skills