Figma Build
Turn code or descriptions into Figma designs using your existing design system.
Installation
- Make sure Claude is on your device and in your terminal.
Skills load from
~/.claude/skills/when Claude Code starts up β so you need it on your machine first. If you don't have it yet, install it once with the command below, then runclaudein any terminal to verify.One-time setupnpm i -g @anthropic-ai/claude-codeAlready have it? Skip ahead.
- Paste into Claude Code or into your terminal.
This copies the whole skill folder into
~/.claude/skills/figma-build-awdr74100/β the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.Faster alternative (instruction-only skills)
Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates β they won't be downloaded and the skill will fail when it tries to load them.
Quick install (SKILL.md only)Sign up to copy - Restart Claude Code.
Quit and reopen Claude Code (or any other agent that loads from
~/.claude/skills/). New skills are picked up on startup. - Just ask Claude.
Skills auto-activate when your request matches the skill's description β no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the βWhat this skill doesβ section above.
Prefer to read the source first? Open on GitHub.
When Claude uses it
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 version of β¦', 'design a landing page/screen in Figma' β or whenever a coding artifact (a component, page, or spec) appears alongside a request to author in a connected Figma file. Works for full screens, sections, single components, or design-system assets.
What this skill does
figma-build
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.
When to use
- The user wants to create or update something in Figma from code or a description β a screen, view, modal/dialog/drawer/sidebar/panel, a single component, or a design-system asset.
- Not for reading a Figma design into code β that's
figma-codegen.
First, understand the environment, then build (provider-first)
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:
- The Figma file β its existing design system, which you'll reuse and bind to:
get_variable_defsβ the file's variables (colour / spacing / radius / typography) with names + values +hex. These are the tokens you bind to.scan_components/get_local_componentsβ existing components to instance rather than rebuild. Match the source UI pattern (a card, a list row, a nav, a button) to a component.get_stylesβ shared paint / text / effect styles to apply.
- The source you were handed β when it's code, which stack and styling system (Tailwind / Chakra / MUI / CSS modules / vanilla β¦) and whether it has a config / theme / tokens file. That's where its real values live β read them from there, don't assume a default.
Then build, tracing every value to a source in priority order: reuse an existing
component / variable / style; else take the exact value from the source's own code β
provider-first, resolving whatever styling system it uses to real px / hex (CSS literally;
Tailwind / Chakra / UnoCSS / β¦ via their config or scale), never eyeballed; only invent from a
consistent scale when neither exists. Full detail + the value-resolution method in
references/write-rules.md.
Two jobs β both follow the write rules
Every build obeys the same cross-cutting rules β ground values (design system β source code β scale),
reference tokens (colour via bind_variable_to_paint, scalars via bind_variable_to_node, shared
looks via apply_style_to_node), auto-layout for related children (absolute only for top-level
placement), HUG/FILL/FIXED sizing via set_layout_props (so the layout computes sizes β don't
hardcode width/height), and real fonts (a new TEXT node defaults to Inter). β
references/write-rules.md.
- Assemble a screen / component from what exists (the common case): recognise the UI pattern,
create_instancematching components, bind tokens, build incrementally, screenshot-verify each step. βreferences/assemble-screens.md. - Author a new design-system asset (only when grounding found no equivalent): create
variables/collections, paint/text styles, or components + variant sets, then switch back to the
reuse path. β
references/author-design-system.md.
Motion (animation)
When the source carries animation β CSS @keyframes / transition, Framer Motion, GSAP, a Vue/Svelte
transition β author it as Figma Motion (beta) on the frame you built rather than dropping it:
apply_animation_style (presets from get_motion_styles) or apply_manual_keyframe_track per
property, set_timeline_duration for length. A staggered row is one atomic batch of
apply_animation_style ops with increasing config.timelineOffset β not N calls. Motion is
Figma-Design-only and keyframes attach to a top-level frame's layers, so build the frame first.
β references/motion.md.
Verify visually (close the loop)
get_screenshot the built node, fix discrepancies, and re-screenshot β the same render-and-diff
discipline codegen uses, in reverse. Check it against the source intent and against objective
design health (this catches problems even when you built from a vague description with no source to
compare): nothing clipped or overflowing, edges aligned, spacing consistent (one scale), a clear type
hierarchy. An empty: true export means the node rendered nothing (hidden / off-canvas).
Rules
- Understand the environment, then build. Read both the file's design system and the source's stack / styling system before creating anything β there's no single right stack, only theirs. Ground every value (design system β the code's own values β a sensible scale); never invent.
- Reuse beats regenerate. Instance existing components; bind existing variables/styles. Build new only what the system lacks, and name/structure it to fit.
- Reference tokens, not literals. Colour via
bind_variable_to_paint, scalars viabind_variable_to_node, shared looks viaapply_style_to_nodeβ never hardcode hex/px when a token exists (get_variable_defstells you what does). - Auto-layout for related children, absolute coordinates only for top-level placement.
- Build incrementally and validate (screenshot) β recognise the UI pattern and assemble it from the matching components, don't reproduce it from primitives.
- Match the file's conventions β naming, structure, and the design system's own patterns, the way codegen mirrors the project's existing code style.
Related skills
Marketing Image Generator
coreyhaines31
Generate and optimize images for blogs, social media, product mockups, and brand assets.
Reference UI to Design System
daymade
Extract design systems from UI screenshots and generate implementation-ready design prompts.
Figma Token Extractor
TheQtCompanyRnD
Extract design tokens and variables from Figma and generate ready-to-use QML code.
FigEdit
giszzt
Convert screenshots and diagrams into editable SVG and PowerPoint files.