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.
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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/figma-analyze/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How figma-analyze Compares
| Feature / Agent | figma-analyze | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/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
Use MCP Figma for design system integration, asset export, and design-to-code workflows.
figma-use
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
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
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
Automate Figma tasks via Rube MCP (Composio): files, components, design tokens, comments, exports. Always search tools first for current schemas.
ai-file-analyzer
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
[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
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
分析Excel/CSV字段结构,AI自动生成中英文映射,验证翻译质量,输出统计报告。用于电子表格分析、数据字典创建、字段映射场景。
analyze-us-bank-credit-deposit-decoupling
分析銀行貸款與存款之間的「信貸創造脫鉤」現象,追蹤存款的絕對收縮與回升軌跡,用以辨識聯準會緊縮政策在銀行體系內部的真實傳導效果。
analyze-silver-miner-metal-ratio
以「銀礦股價格 ÷ 白銀價格」的相對比率衡量礦業股板塊相對於金屬本體的估值區間(偏貴/偏便宜),並用歷史分位數與類比區間推導「底部/頂部」訊號與情境推演。
analyze-jgb-insurer-superlong-flow
從日本保險公司對超長期(10年以上)JGB 的淨買賣時間序列,自動產出「本月是否創紀錄淨賣出、連續淨賣出月數、期間累積淨賣出」等結論。