mcpField
C
check-design-parity-figma

check-design-parity-figma

github.com/southleftDesign & UI2077 installsUpdated 21w ago
Repository

About check-design-parity-figma

check-design-parity-figma compares rendered code specifications with a Figma node to identify design drift. It is intended for teams validating implementations and returns a weighted score, discrepancies, and suggested fixes.

Key features

  1. 01Compare codeSpec with Figma specs
  2. 02Weighted parity score
  3. 03Severity-ranked discrepancies
  4. 04Suggested fixes for mismatches
  5. 05Compare selected spec sections

Use cases

  1. 01Checking a component against its Figma design
  2. 02Finding spacing or color drift
  3. 03Reviewing typography and accessibility parity
  4. 04Rechecking after code or design updates

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/southleft/skills-for-figma --skill check-design-parity-figma

After installing, type/check-design-parity-figmain Claude Code to confirm it loaded.

Bundled filesreferences/parity-scoring.mdscripts/check-parity.js

Details

From the project README

check-design-parity-figma — design vs code drift checker

Pull a Figma node's real specs and diff them against a codeSpec (what your implementation actually renders). Returns a weighted parity score, per-property discrepancies with severity, and suggested fixes. This is the inverse of code generation: get_design_context turns a design into code; this skill confirms the code didn't drift away from the design.

All design reads go through use_figma, so it works on any Figma plan.

Skill boundaries

  • use_figma rules — load the official figma-use skill first; it is the full Figma Plugin API reference. Essentials these scripts rely on: plain JS with top-level await + return (no IIFE, no figma.closePlugin(); console.log is not returned), inputs inlined as const at the top of each script, colors in 0–1 range, load fonts before any text op, await figma.getNodeByIdAsync(...), and atomic errors (a failed script applies nothing — read the error, fix, retry).
  • Generating code from a design → that's the native get_design_context; this skill validates, not generates.
  • CODE-side a11y to feed codeSpec.accessibility → use scan-code-accessibility-figma (--map-to-codespec emits exactly that object).
  • Design-side WCAG lint → use lint-design-figma.

Workflow

  1. Assemble the codeSpec. Gather the values your component renders into the codeSpec object (references/parity-scoring.md has the full shape). You only need to fill the sections you want compared — visual, spacing, typography, accessibility. Tip: scan-code-accessibility-figma --map-to-codespec builds codeSpec.accessibility automatically.
  2. Read the design specs. Set NODE_ID and paste your codeSpec into scripts/check-parity.js. Run it via use_figma (skillNames: "check-design-parity-figma"). It extracts the node's fills, strokes, corner radius, opacity, padding/gap, and text properties, then diffs them against the codeSpec.
  3. Read the scorecard. summary.parityScore is max(0, 100 − (critical×15 + major×8 + minor×3 + info×1)). discrepancies[] lists each mismatch with category, property, severity, designValue, codeValue, and a suggestion.
  4. Decide which side to fix. Each discrepancy says what design has vs what code has. Update code to match the design, or push the design to match an intentional code change (via manage-variables-figma / figma-use), then re-run to confirm the score rose.

Key rules

  • Colors are 0–1 in Figma; the script converts to hex and normalizes both sides before comparing.
  • Only filled codeSpec sections are compared. Omit a section to skip it — no false positives for data you didn't provide.
  • Numeric tolerance: dimensions compare with a small epsilon (≈2px for width/height, 0.01 for opacity) so sub-pixel rounding doesn't register as drift.
  • Severity drives the score: color/spacing mismatches are major (−8), radius/border-width/opacity are minor (−3). See parity-scoring.md for the full weighting.

Comments

Markdown supported