Skill: BMAD Figma Design Analyzer
Overview
This skill guides the analysis of Figma designs, extracting visual, spatial, structural, and behavioral properties into structured, deterministic, and traceable Markdown specifications.
The Figma design is the primary visual source of truth. The core imperative is to extract facts before interpreting, maintain strict traceability, and never invent or assume missing properties.
Operating Directives & Execution Guidelines
- Facts First: Extract observed parameters directly from the Figma canvas before attempting interpretation or technical recommendations.
- Strict Categorization: Every documented property must be explicitly labeled:
Extracted: Observed directly from Figma properties/variables/styles.
Derived: Calculated logically from Figma data (e.g., container width minus padding).
Recommended: Technical or framework suggestions made by the agent.
Unknown: Unspecified or unobservable properties (render strictly as Not specified).
- No Fabrication: Never invent missing colors, spacing, font sizes, hover/focus states, component variants, responsive breakpoints, or API logic.
- Traceability: Preserve Figma Node IDs, Frame references, Component Set references, and Variant details for all extracted elements where available.
- Conflict Protocol: Document visual inconsistencies or conflicts between project standards and Figma directly rather than silently normalizing or overwriting them.
Phase-by-Phase Execution Methodology
┌────────────────────────────────────────────────────────┐
│ Phase 1: Context & File Structure Discovery │
└──────────────────────────┬─────────────────────────────┘
│
┌──────────────────────────▼─────────────────────────────┐
│ Phase 2: Screen Inventory & Id Assignment (SCR-xxx) │
└──────────────────────────┬─────────────────────────────┘
│
┌──────────────────────────▼─────────────────────────────┐
│ Phase 3: Global Tokens & System Extraction │
└──────────────────────────┬─────────────────────────────┘
│
┌──────────────────────────▼─────────────────────────────┐
│ Phase 4: Screen-by-Screen & Component Decomposition │
└──────────────────────────┬─────────────────────────────┘
│
┌──────────────────────────▼─────────────────────────────┐
│ Phase 5: Responsive, State & Interaction Analysis │
└──────────────────────────┬─────────────────────────────┘
│
┌──────────────────────────▼─────────────────────────────┐
│ Phase 6: Conflict & Ambiguity Logging │
└──────────────────────────┬─────────────────────────────┘
│
┌──────────────────────────▼─────────────────────────────┐
│ Phase 7: Validation & Completeness Scoring │
└────────────────────────────────────────────────────────┘
Phase 1: Context & File Discovery
- Determine the scope (File, Page, Frame, Component Set, MCP Context).
- Extract overall file metadata, variables, color/text styles, and frame structures.
Phase 2: Screen Inventory Creation
- Identify every user-facing frame.
- Assign a stable Screen ID (
SCR-001, SCR-002, etc.).
- Record viewports, canvas dimensions, and primary roles.
Phase 3: Global System Extraction
Extract system-wide properties:
- Colors: Hex/RGBA codes, design token names, usage roles.
- Typography: Font family, font size, font weight, line height, letter spacing.
- Spacing Scale: Padding, margins, auto layout gaps.
- Borders & Radii: Stroke widths, individual corner radii, stroke styles.
- Shadows/Effects: Offset (X, Y), blur radius, spread, opacity.
Phase 4: Detailed Component Analysis
Document reusable components with ID CMP-001, CMP-002, etc.:
- Inspect component sets, variants, and component instances.
- Map internal structural hierarchy (Component Anatomy).
- Extract variant dimensions, layout models (Flex/Grid/Auto Layout), and constraints.
Phase 5: Responsive & Interaction Behavior
- Map differences across Desktop, Tablet, and Mobile viewports.
- Document visibility shifts (show/hide states per viewport).
- Extract prototype connections (trigger actions, transition types, overlays, state changes).
Phase 6: Inconsistencies & Ambiguities
- Inconsistencies: Log mismatched measurements for identical UI elements as
INC-xxx.
- Open Questions: Log missing behavior/states as
OQ-xxx.
- Assumptions: Explicitly tag any necessary logical deductions as
ASSUM-xxx with confidence levels (High, Medium, Low).
Standard Output Output Schemas
Produce outputs adhering to the templates below.
1. Master Design Specification (figma-design-spec.md)
# Figma Design Specification
## Document Information
- **Project**: <Project Name>
- **Figma Source**: <URL Frame Reference or>
- **Generated By**: BMAD Figma Design Analyzer
- **Version**: 1.0
- **Generated Date**: <YYYY-MM-DD>
- **Design Scope**: <Scope Description>
## Source of Truth
The Figma design is the primary visual source of truth. Properties that cannot be determined are explicitly marked as `Not specified`.
---
## Executive Summary & Application Structure
<High-level and layout overview product summary>
---
## Screen Inventory
| ID | Screen Name | Figma Frame | Viewport | Target Resolution | Purpose |
|---|---|---|---|---|---|
| SCR-001 | Dashboard | Dashboard_Desktop | Desktop | 1440x1024 | Main Overview |
---
## Global Design Tokens
### Color Tokens
| Token | Hex / Value | Figma Variable / Style | Extracted Purpose |
|---|---|---|---|
| `color-primary` | `#2563EB` | `Colors/Primary` | Primary action buttons, active navigation |
### Typography Scale
| Style Name | Font Family | Size | Weight | Line Height | Letter Spacing |
|---|---|---|---|---|---|
| Heading / H1 | Inter | 32px | 700 | 40px | -0.02em |
### Spacing Scale
| Token | Pixel Value | Identified Pattern / Usage |
|---|---|---|
| `spacing-4` | 16px | Default card internal padding, button spacing |
---
## Screen Specifications
### SCR-001 — Dashboard
#### Overview
- **Figma Frame**: `Dashboard_Desktop`
- **Figma Node ID**: `123:456`
- **Viewport**: Desktop (1440px x 1024px)
- **Background Color**: `#F8F9FB`
#### Layout Hierarchy & Structure
```text
Application Shell
├── Header (CMP-002)
├── Navigation Sidebar (CMP-003)
└── Main Content Container (Auto-Layout: Vertical, Gap: 32px, Padding: 24px)
├── Summary Section (Grid: 4 Columns, Gap: 24px)
└── Activity Section
Component Specifications
CMP-001 — Primary Button
Overview
- Category: Action / Form Element
- Figma Component Set:
Button
- Node ID:
234:567
Visual Anatomy
Button Container
├── Left Icon Slot (Optional, 20x20px)
├── Label (Typography: Button Text, Weight: 600)
└── Right Icon Slot (Optional, 20x20px)
Metrics & Spacing
- Height: 44px
- Horizontal Padding: 20px
- Border Radius: 8px
- Auto Layout: Horizontal, Alignment: Center, Gap: 8px
Variants & States
| Variant Name |
State |
Background |
Border |
Text Color |
Source Reference |
| Primary |
Default |
#2563EB |
None |
#FFFFFF |
Node 234:568 |
| Primary |
Hover |
#1D4ED8 |
None |
#FFFFFF |
Node 234:569 |
| Primary |
Disabled |
#E2E8F0 |
None |
#94A3B8 |
Node 234:570 |
| Primary |
Focus |
Not specified |
Not specified |
Not specified |
Not specified |
Responsive Specifications
| Element / Container |
Desktop (>=1280px) |
Tablet (768px - 1279px) |
Mobile (<768px) |
| Navigation |
Expanded Sidebar |
Collapsed Icons |
Bottom Bar / Drawer |
| Main Card Grid |
4 Columns |
2 Columns |
1 Column |
Asset & Icon Inventory
Visual Assets
| Asset ID |
Type |
Node ID |
Original Dimensions |
Usage |
Recommended Action |
| AST-001 |
Vector SVG |
101:202 |
24x24px |
Search Icon |
Export SVG / Map to Lucide Icon Search |
Discrepancies, Questions & Assumptions
Design Inconsistencies (INC)
- INC-001: Card components on SCR-001 use
12px radius, while SCR-003 cards use 8px radius.
Assumptions (ASSUM)
- ASSUM-001: Desktop sidebar collapses to overlay on tablet views based on mobile frame Auto Layout constraints. Confidence: High.
Open Questions (OQ)
- OQ-001: Interactive focus state for primary input fields is not specified in Figma design assets.
---
## Quality & Completeness Validation Checklist
Every generated specification must execute this validation checklist prior to output completion:
- [ ] **Structural Traceability**: Are all analyzed screens, frames, and components mapped with their respective Figma identifiers/Node IDs where available?
- [ ] **Fact Integrity**: Are unobserved behaviors or missing visual styles explicitly documented as `Not specified` rather than filled in using guesswork?
- [ ] **Categorization Compliance**: Are values strictly split across Extracted, Derived, Recommended, and Unknown?
- [ ] **Component Boundary Integrity**: Are complex elements decomposed into internal layout hierarchies and variants?
- [ ] **Completeness Summary Calculation**: Has a non-fabricated analysis summary been computed?
### Output Validation Block Template
```markdown
# Analysis Validation Summary
## Coverage Stats
- **Screens Analyzed**: X / X
- **Components Identified**: X / X
- **Assets Cataloged**: X / X
- **Viewport Layouts Evaluated**: X / X
## Extraction Confidence Profile
- **High Confidence (Directly Extracted)**: XX%
- **Medium Confidence (Derived Patterns)**: XX%
- **Low Confidence (Inferred / Marked Unspecified)**: XX%
## Unresolved Items
- Open Questions: X logged (`OQ-xxx`)
- Design Inconsistencies: X logged (`INC-xxx`)
1---2name: bmad-figma-design-analyzer3description: Inspects Figma designs, extracts structured visual/interaction specifications, and outputs implementation-ready Markdown files for BMAD UX Agents.4---56# Skill: BMAD Figma Design Analyzer78## Overview9This skill guides the analysis of Figma designs, extracting visual, spatial, structural, and behavioral properties into structured, deterministic, and traceable Markdown specifications.1011The Figma design is the **primary visual source of truth**. The core imperative is to **extract facts before interpreting**, maintain strict traceability, and **never invent or assume missing properties**.1213---1415## Operating Directives & Execution Guidelines16171. **Facts First**: Extract observed parameters directly from the Figma canvas before attempting interpretation or technical recommendations.182. **Strict Categorization**: Every documented property must be explicitly labeled:19 - `Extracted`: Observed directly from Figma properties/variables/styles.20 - `Derived`: Calculated logically from Figma data (e.g., container width minus padding).21 - `Recommended`: Technical or framework suggestions made by the agent.22 - `Unknown`: Unspecified or unobservable properties (render strictly as `Not specified`).233. **No Fabrication**: Never invent missing colors, spacing, font sizes, hover/focus states, component variants, responsive breakpoints, or API logic.244. **Traceability**: Preserve Figma Node IDs, Frame references, Component Set references, and Variant details for all extracted elements where available.255. **Conflict Protocol**: Document visual inconsistencies or conflicts between project standards and Figma directly rather than silently normalizing or overwriting them.2627---2829## Phase-by-Phase Execution Methodology3031```32┌────────────────────────────────────────────────────────┐33│ Phase 1: Context & File Structure Discovery │34└──────────────────────────┬─────────────────────────────┘35 │36┌──────────────────────────▼─────────────────────────────┐37│ Phase 2: Screen Inventory & Id Assignment (SCR-xxx) │38└──────────────────────────┬─────────────────────────────┘39 │40┌──────────────────────────▼─────────────────────────────┐41│ Phase 3: Global Tokens & System Extraction │42└──────────────────────────┬─────────────────────────────┘43 │44┌──────────────────────────▼─────────────────────────────┐45│ Phase 4: Screen-by-Screen & Component Decomposition │46└──────────────────────────┬─────────────────────────────┘47 │48┌──────────────────────────▼─────────────────────────────┐49│ Phase 5: Responsive, State & Interaction Analysis │50└──────────────────────────┬─────────────────────────────┘51 │52┌──────────────────────────▼─────────────────────────────┐53│ Phase 6: Conflict & Ambiguity Logging │54└──────────────────────────┬─────────────────────────────┘55 │56┌──────────────────────────▼─────────────────────────────┐57│ Phase 7: Validation & Completeness Scoring │58└────────────────────────────────────────────────────────┘59```6061### Phase 1: Context & File Discovery62- Determine the scope (File, Page, Frame, Component Set, MCP Context).63- Extract overall file metadata, variables, color/text styles, and frame structures.6465### Phase 2: Screen Inventory Creation66- Identify every user-facing frame.67- Assign a stable Screen ID (`SCR-001`, `SCR-002`, etc.).68- Record viewports, canvas dimensions, and primary roles.6970### Phase 3: Global System Extraction71Extract system-wide properties:72- **Colors**: Hex/RGBA codes, design token names, usage roles.73- **Typography**: Font family, font size, font weight, line height, letter spacing.74- **Spacing Scale**: Padding, margins, auto layout gaps.75- **Borders & Radii**: Stroke widths, individual corner radii, stroke styles.76- **Shadows/Effects**: Offset (X, Y), blur radius, spread, opacity.7778### Phase 4: Detailed Component Analysis79Document reusable components with ID `CMP-001`, `CMP-002`, etc.:80- Inspect component sets, variants, and component instances.81- Map internal structural hierarchy (Component Anatomy).82- Extract variant dimensions, layout models (Flex/Grid/Auto Layout), and constraints.8384### Phase 5: Responsive & Interaction Behavior85- Map differences across Desktop, Tablet, and Mobile viewports.86- Document visibility shifts (show/hide states per viewport).87- Extract prototype connections (trigger actions, transition types, overlays, state changes).8889### Phase 6: Inconsistencies & Ambiguities90- **Inconsistencies**: Log mismatched measurements for identical UI elements as `INC-xxx`.91- **Open Questions**: Log missing behavior/states as `OQ-xxx`.92- **Assumptions**: Explicitly tag any necessary logical deductions as `ASSUM-xxx` with confidence levels (`High`, `Medium`, `Low`).9394---9596## Standard Output Output Schemas9798Produce outputs adhering to the templates below.99100### 1. Master Design Specification (`figma-design-spec.md`)101102```markdown103# Figma Design Specification104105## Document Information106- **Project**: <Project Name>107- **Figma Source**: <URL Frame Reference or>108- **Generated By**: BMAD Figma Design Analyzer109- **Version**: 1.0110- **Generated Date**: <YYYY-MM-DD>111- **Design Scope**: <Scope Description>112113## Source of Truth114The Figma design is the primary visual source of truth. Properties that cannot be determined are explicitly marked as `Not specified`.115116---117118## Executive Summary & Application Structure119<High-level and layout overview product summary>120121---122123## Screen Inventory124125| ID | Screen Name | Figma Frame | Viewport | Target Resolution | Purpose |126|---|---|---|---|---|---|127| SCR-001 | Dashboard | Dashboard_Desktop | Desktop | 1440x1024 | Main Overview |128129---130131## Global Design Tokens132133### Color Tokens134| Token | Hex / Value | Figma Variable / Style | Extracted Purpose |135|---|---|---|---|136| `color-primary` | `#2563EB` | `Colors/Primary` | Primary action buttons, active navigation |137138### Typography Scale139| Style Name | Font Family | Size | Weight | Line Height | Letter Spacing |140|---|---|---|---|---|---|141| Heading / H1 | Inter | 32px | 700 | 40px | -0.02em |142143### Spacing Scale144| Token | Pixel Value | Identified Pattern / Usage |145|---|---|---|146| `spacing-4` | 16px | Default card internal padding, button spacing |147148---149150## Screen Specifications151152### SCR-001 — Dashboard153154#### Overview155- **Figma Frame**: `Dashboard_Desktop`156- **Figma Node ID**: `123:456`157- **Viewport**: Desktop (1440px x 1024px)158- **Background Color**: `#F8F9FB`159160#### Layout Hierarchy & Structure161```text162Application Shell163├── Header (CMP-002)164├── Navigation Sidebar (CMP-003)165└── Main Content Container (Auto-Layout: Vertical, Gap: 32px, Padding: 24px)166 ├── Summary Section (Grid: 4 Columns, Gap: 24px)167 └── Activity Section168```169170---171172## Component Specifications173174### CMP-001 — Primary Button175176#### Overview177- **Category**: Action / Form Element178- **Figma Component Set**: `Button`179- **Node ID**: `234:567`180181#### Visual Anatomy182```text183Button Container184├── Left Icon Slot (Optional, 20x20px)185├── Label (Typography: Button Text, Weight: 600)186└── Right Icon Slot (Optional, 20x20px)187```188189#### Metrics & Spacing190- **Height**: 44px191- **Horizontal Padding**: 20px192- **Border Radius**: 8px193- **Auto Layout**: Horizontal, Alignment: Center, Gap: 8px194195#### Variants & States196197| Variant Name | State | Background | Border | Text Color | Source Reference |198|---|---|---|---|---|---|199| Primary | Default | `#2563EB` | None | `#FFFFFF` | Node `234:568` |200| Primary | Hover | `#1D4ED8` | None | `#FFFFFF` | Node `234:569` |201| Primary | Disabled | `#E2E8F0` | None | `#94A3B8` | Node `234:570` |202| Primary | Focus | Not specified | Not specified | Not specified | Not specified |203204---205206## Responsive Specifications207208| Element / Container | Desktop (>=1280px) | Tablet (768px - 1279px) | Mobile (<768px) |209|---|---|---|---|210| Navigation | Expanded Sidebar | Collapsed Icons | Bottom Bar / Drawer |211| Main Card Grid | 4 Columns | 2 Columns | 1 Column |212213---214215## Asset & Icon Inventory216217### Visual Assets218| Asset ID | Type | Node ID | Original Dimensions | Usage | Recommended Action |219|---|---|---|---|---|---|220| AST-001 | Vector SVG | `101:202` | 24x24px | Search Icon | Export SVG / Map to Lucide Icon `Search` |221222---223224## Discrepancies, Questions & Assumptions225226### Design Inconsistencies (`INC`)227- **INC-001**: Card components on SCR-001 use `12px` radius, while SCR-003 cards use `8px` radius.228229### Assumptions (`ASSUM`)230- **ASSUM-001**: Desktop sidebar collapses to overlay on tablet views based on mobile frame Auto Layout constraints. Confidence: High.231232### Open Questions (`OQ`)233- **OQ-001**: Interactive focus state for primary input fields is not specified in Figma design assets.234```235236---237238## Quality & Completeness Validation Checklist239240Every generated specification must execute this validation checklist prior to output completion:241242- [ ] **Structural Traceability**: Are all analyzed screens, frames, and components mapped with their respective Figma identifiers/Node IDs where available?243- [ ] **Fact Integrity**: Are unobserved behaviors or missing visual styles explicitly documented as `Not specified` rather than filled in using guesswork?244- [ ] **Categorization Compliance**: Are values strictly split across Extracted, Derived, Recommended, and Unknown?245- [ ] **Component Boundary Integrity**: Are complex elements decomposed into internal layout hierarchies and variants?246- [ ] **Completeness Summary Calculation**: Has a non-fabricated analysis summary been computed?247248### Output Validation Block Template249250```markdown251# Analysis Validation Summary252253## Coverage Stats254- **Screens Analyzed**: X / X255- **Components Identified**: X / X256- **Assets Cataloged**: X / X257- **Viewport Layouts Evaluated**: X / X258259## Extraction Confidence Profile260- **High Confidence (Directly Extracted)**: XX%261- **Medium Confidence (Derived Patterns)**: XX%262- **Low Confidence (Inferred / Marked Unspecified)**: XX%263264## Unresolved Items265- Open Questions: X logged (`OQ-xxx`)266- Design Inconsistencies: X logged (`INC-xxx`)267```