| name | design-compare |
| description | Compare Figma designs against implementation screenshots, identifying layout, typography, color, and sizing discrepancies. Generates a structured visual review table and an interactive HTML comparison page with swipe and side-by-side modes. Use when the user asks to compare design with preview, compare Figma with screenshot, check design implementation, or provides a Figma URL alongside a screenshot. |
Design Compare
Compare Figma design screenshots against local preview screenshots, producing a structured visual review and an interactive HTML comparison page. Supports multiple screens in a single report.
Setup
$SKILL_DIR refers to the directory containing this SKILL.md file. Resolve it based on where the skill is installed (e.g. .claude/skills/design-compare, .agents/skills/design-compare, etc.).
Prerequisites
The export script requires a FIGMA_ACCESS_TOKEN env var. Store it in .env at the repo root:
FIGMA_ACCESS_TOKEN=figd_...
The script auto-loads .env from the repo root. Get a token from https://www.figma.com/developers/api#access-tokens
Important: Ensure .env is listed in .gitignore to avoid committing tokens.
Workflow
Step 1: Obtain Images for Each Screen
Repeat for each screen being compared. Use a slug (e.g. empty-state, list-view) to name files.
Derive the report folder from the project or context name, e.g. design-compare-reports/LayoutCheckExample/. Within this folder, store images in per-view subfolders named after the source file (without extension), e.g. ContentView/, SliderView/. The report folder holds a single shared config.js and report.html.
Figma design image:
Preview image:
Step 2: Visual Comparison
Read/view both images (Figma inline screenshot + preview file) and analyze them. Evaluate:
- Layout - positioning, alignment, spacing between elements
- Typography - font sizes, weights, line heights, text content
- Colors - backgrounds, text colors, tint colors, opacity
- Components - buttons, toolbars, icons, navigation elements
- Sizing - element dimensions, padding, margins
Step 3: Output Comparison Summary
Produce a single markdown table ordered by visual importance:
| Status | Aspect | Detail |
|---|
| ✅ | Layout alignment | Matches design |
| ❌ | Background color | Expected #1A1A1A, got #FFFFFF |
Use ✅ for matches, ❌ for mismatches. Keep each row concise (one line). For mismatches, include what differs and how to fix it.
Step 4: Generate HTML Comparison Page
All shared artifacts (config.js, report.html) are stored in design-compare-reports/<ReportName>/. Images live in per-view subfolders (<ViewName>/).
-
Generate config.js with screen metadata. Image paths use the <ViewName>/ prefix. Write the following JavaScript to design-compare-reports/<ReportName>/config.js:
const reportConfig = {
generatedAt: "TIMESTAMP",
screens: [
{
name: "SCREEN_NAME",
figma: "VIEW_NAME/SLUG_figma.png",
preview: "VIEW_NAME/SLUG_preview.png",
figmaUrl: "FIGMA_URL"
}
]
};
Replace placeholders: TIMESTAMP → current date/time, SCREEN_NAME → human-readable name, VIEW_NAME → source file name (without extension), SLUG → file slug, FIGMA_URL → full Figma URL.
For multiple screens, add entries to the screens array.
-
Copy the HTML template:
cp "$SKILL_DIR/assets/compare.html" "design-compare-reports/<ReportName>/report.html"
-
Open the file with open design-compare-reports/<ReportName>/report.html.
The HTML page provides swipe (default) and side-by-side comparison modes, screen tabs for multi-screen reports, and direct Figma links.