mcpField
D
design-compare

design-compare

github.com/artemnovichkovDesign & UI4259 installsUpdated 2w ago
Repository

About design-compare

Design Compare is a skill for reviewing Figma designs against local preview screenshots and generating a structured visual report. It also creates an interactive HTML comparison page, including for multiple screens.

Key features

  1. 01Compares Figma and preview screenshots
  2. 02Reviews layout, typography, colors, components, and sizing
  3. 03Produces a prioritized markdown table
  4. 04Generates an interactive HTML comparison page
  5. 05Supports multiple screens in one report

Use cases

  1. 01Reviewing a screen against its Figma design
  2. 02Finding visual differences across several screens
  3. 03Sharing a swipe or side-by-side comparison report

MCP support

The workflow can use the Figma MCP tool to retrieve a design screenshot and Xcode MCP to render a fresh preview. The skill then compares the images and generates a report.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/artemnovichkov/skills --skill design-compare

After installing, type/design-comparein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

README.md
.claude-plugin/
plugin.json
assets/
compare.html
scripts/
export-figma-node.sh

Details

From the project README

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 fileKey and nodeId from the Figma URL.
  • Call mcp__figma__get_screenshot with 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:
    mkdir -p "design-compare-reports/<ReportName>/<ViewName>"
    bash "$SKILL_DIR/scripts/export-figma-node.sh" "<fileKey>" "<nodeId>" "design-compare-reports/<ReportName>/<ViewName>/<slug>_figma.png"
    
    The script validates that fileKey is alphanumeric (with hyphens/underscores) and nodeId matches digit-colon/hyphen patterns. Invalid inputs are rejected. The script exports at 3x scale with use_absolute_bounds=true to 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__RenderPreview to render a fresh preview and use the returned previewSnapshotPath.
  • 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:

  1. Layout - positioning, alignment, spacing between elements
  2. Typography - font sizes, weights, line heights, text content
  3. Colors - backgrounds, text colors, tint colors, opacity
  4. Components - buttons, toolbars, icons, navigation elements
  5. Sizing - element dimensions, padding, margins
Step 3: Output Comparison Summary

Produce a single markdown table ordered by visual importance:

StatusAspectDetail
✅Layout alignmentMatches design
❌Background colorExpected #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>/).

  1. Generate config.js with screen metadata. Image paths use the <ViewName>/ prefix. Write the following JavaScript to design-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 screens array.

  2. Copy the HTML template:

    cp "$SKILL_DIR/assets/compare.html" "design-compare-reports/<ReportName>/report.html"
    
  3. 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.

Comments

Markdown supported