Install any skill in seconds. Free to start, no credit card required.
Get Started Free →awdr74100/figma-build
Build a Figma design from code or a description — the reverse of figma-codegen. Reuses the connected file's existing design system (components, variables, styles) instead of drawing primitives with hardcoded values. Triggers whenever the user wants something created or updated IN Figma from code or a spec — e.g. 'build this in Figma', 'create a Figma design for this', 'push this component/screen to Figma', 'turn this React/Vue into a Figma design', 'recreate this UI in Figma', 'make a Figma vers
Passed 10 of 20 test cases with the skill, and 4 of 20 without it.
and 6 more in the full report
9 fixed4 passed either way11 still failing1 broke
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
A newer attempt on gemini-3.8-flash on 10/21/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 9 test cases the skill fixed. Same model, same prompt, with and without the skill.
I have two open Figma tabs, both named 'Design System (Copy)'. I want to generate an avatar component in tab 2. Should I pass `use_file({ fileName: 'Design System (Copy)' })` to target tab 2?
| Checked | Without skill | With skill |
|---|---|---|
| Selects the target file using the sessionId parameter in use_file. | Missed | Passed |
The instructions your model reads when the skill loads.
Turn code or a description into a Figma design that looks like it belongs in the file: reuse the
components, variables, and styles that already exist, and only build what's genuinely missing. This
is the mirror image of figma-codegen — same "reuse beats regenerate / reference tokens not
literals" philosophy, pointed at the canvas instead of the codebase. This file is the router; deep
detail lives in references/ — load a reference when its step is in play.
You operate on the connected Figma file (the plugin's current session). There is no fetch-by-URL;
the user must have the target file open. Confirm a plugin is connected (ping) before building.
figma-codegen.Every tool result says so when it applies, so you do not have to check up front: with two or more
files connected and none claimed, results carry a MORE THAN ONE FIGMA FILE IS OPEN block naming
them. It matters because calls otherwise follow whichever file the user last touched, which changes
when they switch tabs — so a task can read one file and write to another and report success.
When you see it, claim the file before doing anything else: list_files names every connected file,
use_file({ fileName }) claims one for this session (use_file({ sessionId }) when two open files
share a name — Figma allows that, and x (Copy) is how it happens). Every later call then reaches
that file whatever is in front, including while its tab sits in the background. If the user has not
said which file, ask — do not guess from the names.
The write-side mirror of codegen's grounding, and the most important habit: an off-looking build almost always comes from invented values or assumed conventions. So understand this user's actual environment first, then build into it — never apply a generic template. There's no single "right" stack; there's their stack. Look at both ends before creating anything:
get_variable_defs → the file's variables (colour / spacing / radius / typography) with
names + values + hex. These are the tokens you bind to.test cases passed, vs 4 / 20 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.