figma-analyze

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

16 stars

Best use case

figma-analyze is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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

Teams using figma-analyze should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/figma-analyze/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/design/figma-analyze/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/figma-analyze/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How figma-analyze Compares

Feature / Agentfigma-analyzeStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

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

Related Skills

figma

16
from diegosouzapw/awesome-omni-skill

Use MCP Figma for design system integration, asset export, and design-to-code workflows.

figma-use

16
from diegosouzapw/awesome-omni-skill

Control Figma via CLI — create shapes, frames, text, components, set styles, layout, variables, export images. Use when asked to create/modify Figma designs or automate design tasks.

figma-make-website-builder

16
from diegosouzapw/awesome-omni-skill

Structured 9-phase workflow for building production-ready websites using Claude (architecture, logic, reasoning) paired with Figma Make (UI, interactions, deployment). Use when planning, designing, or building a website with Figma Make.

figma-design

16
from diegosouzapw/awesome-omni-skill

Access Figma designs, extract design systems, and retrieve component specifications. Use when implementing UI from Figma mockups, extracting design tokens, or analyzing design files.

figma-automation

16
from diegosouzapw/awesome-omni-skill

Automate Figma tasks via Rube MCP (Composio): files, components, design tokens, comments, exports. Always search tools first for current schemas.

ai-file-analyzer

16
from diegosouzapw/awesome-omni-skill

Analyze Adobe Illustrator (.ai) files to extract design information including text content, fonts, color palettes, vector paths, and generate high-resolution preview images. Use when analyzing logo files, design assets, or any Adobe Illustrator documents that need programmatic inspection.

31-analyze-think-150

16
from diegosouzapw/awesome-omni-skill

[31] ANALYZE. Universal deep thinking methodology for any situation requiring quality reasoning. Use when solving problems, debugging, making decisions, analyzing code, planning, reviewing, or anytime you need thorough thinking instead of surface-level responses. Triggers on "think deeply", "analyze thoroughly", "reason carefully", "deep thinking", "understand completely", or any task requiring careful thought.

pdf-analyzer

16
from diegosouzapw/awesome-omni-skill

Analyze PDF, DOCX, and spreadsheet documents using vision models. Converts documents to images and extracts insights with layout preservation. Uses VT Code's native document processor (no container skills required).

excel-field-analyzer

16
from diegosouzapw/awesome-omni-skill

分析Excel/CSV字段结构,AI自动生成中英文映射,验证翻译质量,输出统计报告。用于电子表格分析、数据字典创建、字段映射场景。

analyze-us-bank-credit-deposit-decoupling

16
from diegosouzapw/awesome-omni-skill

分析銀行貸款與存款之間的「信貸創造脫鉤」現象,追蹤存款的絕對收縮與回升軌跡,用以辨識聯準會緊縮政策在銀行體系內部的真實傳導效果。

analyze-silver-miner-metal-ratio

16
from diegosouzapw/awesome-omni-skill

以「銀礦股價格 ÷ 白銀價格」的相對比率衡量礦業股板塊相對於金屬本體的估值區間(偏貴/偏便宜),並用歷史分位數與類比區間推導「底部/頂部」訊號與情境推演。

analyze-jgb-insurer-superlong-flow

16
from diegosouzapw/awesome-omni-skill

從日本保險公司對超長期(10年以上)JGB 的淨買賣時間序列,自動產出「本月是否創紀錄淨賣出、連續淨賣出月數、期間累積淨賣出」等結論。