Skip to content
Back to skills

Figma Analyze

ASecurity

Analyze Figma designs for code implementation readiness and design-code parity. Use when working with Figma URLs, analyzing component designs, or checking token consistency.

  • 57 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 17, 2026
documentationgonodegit

Works with

  • mcp

Security analysis

A100/100

Scanned October 17, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill figma-analyze --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Figma Analyze?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Figma Analyze
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-figma-analyze/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-figma-analyze)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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-456` → `123: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

```markdown
## 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)

```markdown
## 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

```markdown
## 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     |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.