cd /news/developer-tools/even-with-the-figma-mcp-ai-eyeballs-… Β· home β€Ί topics β€Ί developer-tools β€Ί article
[ARTICLE Β· art-96372] src=dev.to β†— pub= topic=developer-tools verified=true sentiment=Β· neutral

Even With The Figma MCP, AI Eyeballs Your Design and Ships Pixel-Wrong UI

A developer has created a reusable Claude Code skill, 'implementing-figma-designs', that transforms Figma-to-code conversion from a screenshot-based eyeballing loop into a staged extract-then-prove protocol. The skill ensures every hardcoded value traces to a Figma node and verifies the implementation in a real browser by comparing computed CSS styles to node values, eliminating pixel-wrong UI caused by LLM guesses.

read2 min views2 publishedAug 14, 2026

Every hardcoded value now traces to a Figma node, and "looks right" is no longer accepted as proof.

We packaged the fix as a reusable Claude Code skill, implementing-figma-designs

. It turned Figma-to-code from a "build it, then eyeball it against the PNG for three correction rounds" loop into a staged extract-then-prove protocol.

An LLM handed a Figma frame will happily invent a 1px solid #91A3B3

border, size a 24px icon at 28px, and guess the icon→text gap — because a faint border and an off-by-4px value both look correct in a screenshot, so a screenshot-based "does it match?" check passes while the running DOM is wrong.

get_variable_defs

/ get_metadata

/ get_design_context

) per node, or be explicitly flagged as off-system. No value is read off the PNG.orient β†’ classify nodes β†’ confirm component mappings β†’ triangulate code+tokens+geometry β†’ implement

.get_design_context

emits as #EE0F51

gets reconciled back to the project's design token; anything with no token is raised to the designer, not silently hardcoded.<img>

getComputedStyle

against the Figma node value. The screenshot tells you sx

override that loses to .MuiOutlinedInput-notchedOutline

and silently keeps the wrong border while nothing errors).

- <Icon size={28} />                 // guessed; node is actually 24
- border: '1px solid #91A3B3'        // invented; frame has no border
- // verification: screenshot looks close β†’ PASS  (DOM still wrong)

+ // get_metadata(node) -> width/height = 24  β†’ <Icon size={24} />
+ // get_variable_defs(node) -> no border token β†’ frame has NO border β†’ omit
+ // Stage 6, in a real browser:
+ getComputedStyle($icon).width         // "24px"  βœ” matches node
+ getComputedStyle($toolbar).borderWidth // "0px"  βœ” matches frame
+ // PASS only when computed CSS == node value, per element
Figma frame URL
   β”‚
   β–Ό
[0] resolve to a concrete node ──► [1] orient (PNG = structure only)
   β”‚                                     β”‚
   β–Ό                                     β–Ό
[2] classify nodes ──► [3] confirm component mappings (human gate)
   β”‚
   β–Ό
[4] triangulate: get_design_context + get_variable_defs + get_metadata
   β”‚        └─ raw hex/px  β†’  project token  (or flag off-system)
   β–Ό
[5] implement from tokens + geometry + real components
   β”‚
   β–Ό
[6] VERIFY in a real browser: getComputedStyle(el) == node value ?
        PASS only per-element, with evidence β€” not "the PNG looks right"

planning-dev-task

hands off a Figma-linked PRD, and its verification leg (checking-figma-fidelity

) plugs into our test-plan runner as a visual T-<n>

.Want to try it?! Ping me and I'll send the skill over

── more in #developer-tools 4 stories Β· sorted by recency
── more on @figma 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/even-with-the-figma-…] indexed:0 read:2min 2026-08-14 Β· β€”