figma-design-extract
Extract exact design values from a Figma node into a build-ready spec table, instead of eyeballing a screenshot. Use when the…
Prove a running app matches its design spec by measuring rendered values, not eyeballing a screenshot. Use when the user says "verify the design", "is this pixel-perfect", "check against Figma", "does the app match the design", or "design QA this screen". Runs a bounded
Claude Code
$ npx -y skills add jeltehomminga/figma-design-skills --skill design-fidelity-verify --agent claude-code
Codex
$ npx skills add jeltehomminga/figma-design-skills --skill design-fidelity-verify -a codex -y
Cursor
$ npx skills add jeltehomminga/figma-design-skills --skill design-fidelity-verify -a cursor -y
Gemini CLI
$ npx skills add jeltehomminga/figma-design-skills --skill design-fidelity-verify -a gemini-cli -y
GitHub Copilot
$ npx skills add jeltehomminga/figma-design-skills --skill design-fidelity-verify -a github-copilot -y
OpenCode
$ npx skills add jeltehomminga/figma-design-skills --skill design-fidelity-verify -a opencode -y
Windsurf
$ npx skills add jeltehomminga/figma-design-skills --skill design-fidelity-verify -a windsurf -y
name: design-fidelity-verify description: Prove a running app matches its design spec by measuring rendered values, not eyeballing a screenshot. Use when the user says "verify the design", "is this pixel-perfect", "check against Figma", "does the app match the design", or "design QA this screen". Runs a bounded vision+numeric loop over web or mobile, classifying every spec row rather than reporting a bare pixel delta. Consumes the figma-design-extract spec table. license: MIT compatibility: Requires a browser MCP (web) or a device MCP (mobile) that can evaluate JavaScript in the running app.
"Looks done" is not a check. This skill runs a **measured feedback loop**: render → capture → read the *actually rendered* values off the live app → compare each against the design spec → fix → re-verify, bounded. The numeric pass is the whole point — it catches what the eye and a screenshot cannot. The bar is **spec fidelity** — every value resolves to its intended token, within tolerance — not literal "pixel-perfect" (a phrase that means little across devices); measure tokens and deltas, don't chase byte-identical pixels.
This skill **consumes the design-spec table produced by [`figma-design-extract`](../figma-design-extract/SKILL.md)** — rows of `element | property | exact value | repo token | source component`. If you don't have one yet, run that skill first. The spec is your pass/fail checklist; without it you're back to eyeballing.
1. **Blurry capture.** The default device/headless screenshot is often low-res and hides truncation, wrong colors, and small spacing drift. Always capture full-resolution. 2. **No feedback loop.** Building once and declaring victory is not verification. Render → measure → compare → fix → re-measure, with a hard cap so it terminates.
Trigger phrases: "verify the design", "is this pixel-perfect", "check against Figma", "does the app match the design", "design QA this screen", or immediately after building a screen with `figma-design-extract`.
---
The loop below is **identical for web and mobile**. Only two steps differ — how you capture full-res, and how you read rendered values. **Read the one reference file for your platform before the numeric pass (B5)**; ignore the other.
| Platform | Capture + measure mechanics | Reference to load | |----------|-----------------------------|-------------------| | **Web** | `getComputedStyle` + `getBoundingClientRect` via a browser/Playwright/Chrome MCP; capture at devicePixelRatio ≥ 2 | [`references/verify-web.md`](references/verify-web.md) | | **Mobile** | The resolved style off the rendered React fiber, read over the Metro/CDP eval channel; capture at `scale: 1.0` | [`references/verify-mobile.md`](references/verify-mobile.md) |
Both platforms then classify each row using [`references/drift-classification.md`](references/drift-classification.md).
Runnable readers ship with this skill — [`scripts/`](scripts/). Don't re-derive them per run.
> **Tool-agnostic:** Argent, metro-mcp, agent-device, Playwright, Chrome MCP — any of them works. The reference files name specific tools as *examples*; what matters is that you read the rendered value, not that you use a particular MCP. The one hard requirement is a channel that can **evaluate JavaScript in the running app**.
---
**In practice most verify time goes to infrastructure gates, not the design diff** — often the large majority of it. Discovering a gate *after* a 15–20 minute native build is the dominant failure mode. Clear all five before you build or rebuild anything:
Build/run the app and navigate to the screen. **Record the navigation as a replayable flow** so every re-verify is identical — no interaction variance between iterations. (See your platform reference for the recording mechanism.)
Capture the screen at full resolution (web: dpr ≥ 2; mobile: `scale: 1.0`). Low-res capture is failure mode #1 — do not skip the resolution bump.
Get the element tree with names + coordinates, so when something is off you can jump straight from the on-screen position to the `file:line` that renders it instead of hunting.
Place the app capture beside the Figma reference (`get_screenshot` from the extract step). Enumerate discrepancies **by category** so nothing is hand-waved:
`la
Two composable, tool-agnostic skills for design-to-code fidelity — get the real design out of Figma, then prove the running app actually matches it.
Extract exact design values from a Figma node into a build-ready spec table, instead of eyeballing a screenshot. Use when the…
Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…
Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…
DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…