Design compare
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.From its SKILL.md
npx -y skills add artemnovichkov/skills --skill design-compareAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
5.1 KB, as published. Nobody here has run it
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:
- Extract
fileKeyandnodeIdfrom the Figma URL. - Call
mcp__figma__get_screenshotwith the extracted parameters. The screenshot is returned inline for visual comparison in Step 2. - To save it as a file for the HTML page, run the export script:
The script validates thatmkdir -p "design-compare-reports/<ReportName>/<ViewName>" bash "$SKILL_DIR/scripts/export-figma-node.sh" "<fileKey>" "<nodeId>" "design-compare-reports/<ReportName>/<ViewName>/<slug>_figma.png"fileKeyis alphanumeric (with hyphens/underscores) andnodeIdmatches digit-colon/hyphen patterns. Invalid inputs are rejected. The script exports at 3x scale withuse_absolute_bounds=trueto match device pixel density and clip to exact frame bounds. - If the script fails (no token), ask the user to provide a Figma screenshot file.
Preview image:
- If using Xcode MCP, call
mcp__xcode__RenderPreviewto render a fresh preview and use the returnedpreviewSnapshotPath. - Otherwise accept a preview image path from the user.
- Copy to the report folder:
cp "<preview_path>" "design-compare-reports/<ReportName>/<ViewName>/<slug>_preview.png"
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.jswith screen metadata. Image paths use the<ViewName>/prefix. Write the following JavaScript todesign-compare-reports/<ReportName>/config.js:// config.js — generated by design-compare skill const reportConfig = { generatedAt: "TIMESTAMP", // replace with current date/time screens: [ { name: "SCREEN_NAME", // replace with human-readable name figma: "VIEW_NAME/SLUG_figma.png", preview: "VIEW_NAME/SLUG_preview.png", figmaUrl: "FIGMA_URL" // replace with full Figma URL for the node } ] };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
screensarray. -
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.