agentsclimarketplace

In-house flow

Build the design, then go and look

An agent implementing a design generates pixels and reasons in text. It will tell you the header is blue and centred while it renders red and left. Four items that make it read exact values, wait for the page to settle, actually look, and then keep looking after you have gone.

The failure this is for

The agent writes the component. It reads its own source back, confirms the class names say what it intended, and reports that the header is blue with the logo centred. The header renders red and left-aligned, because a parent rule won and nothing in this loop ever displayed a pixel.

This is not carelessness. The agent is generating a visual artifact while reasoning entirely in text, and the only feedback available to it is the text it just wrote. Of course it agrees with itself.

The failureWhat it looks likeWhat answers it
Measuring the design by eye12px read as "about 14", a shade offthe design as data
Screenshotting too earlycompares against a loading skeletonwait for the network to settle
Reasoning about pixels in prose"I have implemented the blue header"an actual render
The match rotsa refactor removes a label, silentlyan assertion that re-runs

The pair that looks redundant

Chrome DevTools and Playwright are the two items anybody would suspect of being the same item twice. They are not, and the distinction is worth having because it generalises past this stack.

Chrome DevTools is for looking. It drives a live browser inside the build loop and hands back a picture, a DOM, and a console, right now, interactively. Playwright's own README brags about needing no vision model, which sounds like a weakness in a stack about pixels and is exactly the point: an assertion over an accessibility tree is deterministic, cheap, and can be written to a file. One proves the match happened. The other stops it from silently un-happening.

The second one is the one people leave out. Everybody remembers to look at the screenshot once. Almost nobody turns that look into something the next refactor has to get past.

There is no visual diff tool here, on purpose

The obvious fifth item is a pixel-diff: something to compare the render against the design and return a similarity score. Its absence is the sort of thing a catalog papers over, so here is the actual reason.

Nothing first-party exists for it. Searching this catalog for pixelmatch, odiff, resemble, percy, backstop and visual regression returns single-digit-star personal forks and enormous skill-dump repositories that bundle thousands of unrelated files. Recommending one of those would be inventing rigour.

The better reason is that the job does not need a tool. The model already has vision. Putting the render next to the design and asking is the entire mechanism, and a similarity score would mostly launder that judgment into a number that looks more objective than it is. What the stack has to guarantee is that the agent looks at all, which is what the other four items are for.

Where the design lives

This reads the design through a community server rather than Figma's own Dev Mode MCP, and that is a deliberate trade rather than an oversight.

Figma's official server does something this one cannot: Code Connect, which maps the design's components onto the ones already in your codebase, so generated code reuses your button instead of inventing a second one. That is genuinely better output. It also assumes you have already done the Code Connect mapping, and it puts the richer tools behind a beta endpoint limited to an approved client list.

The item here needs a personal access token and nothing else. If your team has Code Connect set up, use theirs; the rest of this stack is unchanged either way.

Set it all up

4 of 4, in order

Every step that has a commandconstructed and published lines, mixed
claude mcp add figma-context -- npx -y figma-developer-mcp
npx -y skills add anthropics/skills --skill webapp-testing
claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp
claude mcp add playwright -- npx -y @playwright/mcp

Some of these are the commands their projects publish and some are assembled from repository paths. Each one is labelled where it appears below. Nobody here has run them as a set.

How it goes

Their working order, our numbers

  1. Read the design as data before building anything. Exact hex, exact spacing, the real type scale, and the actual icon files rather than the agent's redrawing of them. An agent working from a flattened screenshot is measuring by eye, and 12px padding read as "about 14" is a drift that lands in every property nobody thinks to check.

    Figma Context MCPMCP server

    GLips/Figma-Context-MCP/io.github.GLips/Figma-Context-MCP15,559 repoMIT

    InstallClaude Code
    claude mcp add figma-context -- npx -y figma-developer-mcp

    Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

  2. Then learn when a screenshot is worth taking. This is the reconnaissance pattern: navigate, wait for the network to go quiet, and only then capture. Unglamorous, and it is the step whose absence produces the two worst outcomes below, a false mismatch against a loading skeleton and a false match against a half-painted page.

    Webapp testingSkill

    anthropics/skills/skills/webapp-testing164,354 repono licenseno license

    Install
    npx -y skills add anthropics/skills --skill webapp-testing

    Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

  3. Then look at it. A real Chrome, driven over the DevTools protocol, handing back the rendered screenshot, the DOM, the console and the network. This is the pivot of the whole flow: every other step produces a claim about the render, and this one produces the render.

    Chrome DevTools MCPMCP server

    ChromeDevTools/chrome-devtools-mcp/io.github.ChromeDevTools/chrome-devtools-mcp48,306 repoApache-2.0

    InstallClaude Code
    claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp

    Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

  4. Then stop it un-happening. Deliberately the opposite philosophy to the step above, and its README says so: accessibility tree rather than pixels, no vision model needed. That is what makes an assertion you can save and re-run. The step above proves the match today; this one is why it still holds after a refactor nobody connected to the design.

    Playwright mcpMCP server

    microsoft/playwright-mcp/io.github.microsoft/playwright-mcp35,714 repoApache-2.0

    InstallClaude Code
    claude mcp add playwright -- npx -y @playwright/mcp

    Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

More of these

Stacks are written by hand and there are not many. The catalog underneath is large, and its default ordering puts whatever has been picked at the front.

Every stackThe catalog