Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

build-design — Claude Code skill: what it does, how to install

Builds UI code from a Figma file or image mockup. It reuses existing project tokens and components instead of hardcoding values.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add jakubkrehel/skills --skill build-design -a claude-code
Open on GitHub

What build-design does

This skill converts Figma files or mockup images into code using what the project already has. A Figma link requires a connected Figma MCP server. If you only provide a screenshot, the skill treats every dimension as an estimate. When an element lacks a project component, it inlines plain markup and logs the deviation.

Arbitrary styling values are not allowed. The skill stops and asks before rounding any spacing or size by more than 2px. It never touches surrounding code or invents unsketched error states.

The final step compares the rendered UI against the source frames element by element across target breakpoints. Output arrives as a verification table detailing matched tokens, unwired mock data, and missing states.

What it helps with

  • generate UI code from Figma frames using project design tokens
  • map raw spacing and color values to existing design system variables
  • compare rendered browser output against design screenshots across breakpoints
  • document missing component variants and unwired props in a structured report

Example prompts for the agent

  • Build the profile card from this Figma frame link using our design tokens.
  • Convert login.png into project components and verify spacing against the image.
  • Implement the settings modal from the Figma file and check breakpoints.

How to install build-design

1Skills CLI (Vercel)

npx skills add jakubkrehel/skills --skill build-design -a claude-code

2Manually: put the files in place

~/.claude/skills/build-design/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/build-design/

From the same set13

The whole set →
better-ui jakubkrehel This skill sets concrete rules for surface details, icons, shadows, and motion. Use it to polish an interface after its underlying interactions work. Claude Code CX Codex Cursor +1 38,900installs better-typography jakubkrehel Reviews interface typography and applies fixes through the project’s styling system. Use it to check text hierarchy, wrapping, truncation and punctuation. Claude Code CX Codex Cursor +1 33,800installs better-colors jakubkrehel Audits color systems, generates ramps, and maps semantic tokens to roles. Use it when hardcoded hex values pile up or text contrast needs verifiable measurement. Claude Code CX Codex Cursor +1 32,200installs better-layout jakubkrehel A skill that sets grouping, alignment, reading order and responsive structure, then stress-tests the result by resizing, translating and mirroring it for RTL. Claude Code CX Codex Cursor +1 30,400installs better-interface jakubkrehel Runs a cross-discipline interface review covering accessibility, layout, copy, typography, color, and UI polish into one ranked report. Claude Code CX Codex Cursor +1 29,700installs better-accessibility jakubkrehel Reviews an interface against WCAG 2.2 and fixes issues in the project’s styling system. Use it to check keyboard navigation and screen-reader behavior. Claude Code CX Codex Cursor +1 29,200installs better-writing jakubkrehel Writes and reviews UI copy, from button labels to errors and empty states. It keeps product vocabulary consistent and guides users to the next step. Claude Code CX Codex Cursor +1 28,700installs interface-review jakubkrehel Audits pull requests, branches, and uncommitted edits for layout, UI, accessibility, and typography regressions. Keeps focus on what changed rather than pre-existing debt. Claude Code CX Codex Cursor +1 18,100installs

Similar

shopify-development sickn33 Skill for building Shopify apps, extensions and themes using GraphQL Admin API, Shopify CLI, Polaris UI, and Liquid. Routes tasks to the right track: app, extension, theme or combination. Claude Code CX Codex Cursor +1 1,900installs shopify-expert https://github.com/Jeffallan Skill for building Shopify themes, apps, and headless storefronts via Storefront API. Useful when you need to assemble a Liquid theme, custom checkout, or Hydrogen storefront. Claude Code CX Codex Cursor +1 5,000installs browser-harness browser-use Controls a real browser via Chrome DevTools Protocol: clicking, typing, navigation, logged-in sessions, JS-rendered and bot-protected pages. Use curl for plain HTTP requests. Claude Code CX Codex Cursor +1 793installs react-native-expert https://github.com/Jeffallan A skill for AI coding agents that helps build React Native and Expo apps: navigation, native modules, list performance, platform-specific code for iOS and Android. Claude Code CX Codex Cursor +1 4,900installs quick-mockups civitai Generates 3 to 5 parallel UI mockups in HTML. Useful when you need to explore layouts, wireframes, and hierarchy variations before writing frontend code. Claude Code CX Codex Cursor +1 1,700installs shader-dev MiniMax-AI GLSL reference skill covering 36 real-time shader techniques for ShaderToy and WebGL2. Helpful for ray marching, SDF scenes, fluids, and visual effects. Claude Code CX Codex Cursor +1 2,500installs frontend-design official anthropics This skill guides intentional visual design for new interfaces and redesigns. Use it when a generic generated UI is not enough. Claude Code Claude.ai 1,025,790installs design-taste-frontend Leonxlnx This skill directs the design of public pages and work screens, then checks the result in a browser through screenshots. Use it when an interface feels generic or unfinished. Claude Code CX Codex Cursor +1 673,100installs

Questions about build-design

How to install build-design in Claude Code?

Install the skill by running npx skills add jakubkrehel/skills --skill build-design -a claude-code. The file will be placed in ~/.claude/skills/build-design/SKILL.md.

What does build-design do?

It converts Figma frames or screenshots into project code, mapping styles to existing design tokens and verifying the output visually.

What is required to read Figma links?

You need an active Figma MCP server connected so the agent can extract exact values for spacing, typography, and component variants.

Source text

SKILL.md · MIT
---
name: build-design
description: Builds UI from a Figma file or a design image so it matches the design, using the project's existing tokens and components.
---

# Build design

This skill turns a design into code that matches it. It reads the design at its source, builds with what the project already has, then compares the result against the design before calling it done.

The design decides. Values come from the design file, never from your taste or a pattern you liked elsewhere. A change the design does not show is a deviation, and a deviation is the user's call.

It owns no domain rules. Where the design breaks one, build it as designed and report the conflict with its owner. Contrast is a requirement in `better-accessibility` and a measurement in `better-colors`. Focus and semantics are `better-accessibility`, type is `better-typography` and spacing and structure are `better-layout`. Palette is `better-colors`, copy is `better-writing` and surfaces, icons and motion are `better-ui`. Reviewing finished work is `interface-review`, exploring alternatives is `variant` and stress testing a component is `break`.

## 1. Read the design at its source

A Figma link means the Figma MCP. Search the available and deferred tools for `figma` before saying it is unavailable, since the server often sits under a name you did not expect. A server that lists only an authenticate tool is connected but signed out, so ask the user to authenticate. With no Figma tool at all, ask the user to connect one, and do not build from memory or guesswork meanwhile. [figma.md](figma.md) holds which tools to call and what each returns.

A screenshot or exported image has no values to read. Sizes are ratios to the capture, so state the scale you assumed and treat every measurement as an estimate. Ask for the Figma link when one exists, since it replaces the whole estimate.

Scope the run to the frames named. Frames that show the same thing at different widths are one piece at several breakpoints, not separate pieces.

This step is done when you hold a screenshot of every frame in scope and its values for spacing, size, radius, color, type and the components used. From a Figma file they are exact. From an image they are estimates at the scale you stated.

## 2. Map the design onto the project

Read the project's tokens and component library before writing anything. Then map every design value to what exists:

| In the design | In code |
| --- | --- |
| A bound variable or style | The token with the same name or the same value |
| A raw value that equals a token | That token |
| A raw value with no token | The nearest existing token, listed in the report as rounded |
| A component instance | The project's component of that name, with the variant the design shows |
| A component instance with no project equivalent | Plain markup in place, listed as a deviation, and ask whether a component should exist |
| A one-off group of layers | Plain markup in place, not a new component |

Never add a token, a component variant or an arbitrary value to hit a number. Stop and ask which way to go when rounding would visibly change the design. That means more than 2px on spacing or size, or a color landing on a different step.

Check what data the design needs and wire it to what exists. Where the backend for part of it does not exist yet, build that part as UI fed by props and name it in the report as unwired.

## 3. Build only what the design shows

Implement the frames, the breakpoints the frames define and the states the file draws, such as hover, empty or error. A state the file does not draw is not yours to design. Leave it to the existing component's default and list it as missing.

Leave everything around the piece as it was. No neighbouring copy edits, no icon swaps, no "while I was here" cleanups. A diff wider than the design is the most common way this goes wrong.

## 4. Compare against the design

Render the build at each frame's width beside the design screenshot and walk it element by element. Compare the properties **Read the design at its source** collected. "Gap is 12px, design is 16px" is a finding. "Feels a bit tight" is not.

With a browser at hand, screenshot each width and compare. Without one, hand over the local URL with the widths to check and say the comparison is unverified. Do not report a match you did not look at.

Fix every mismatch you caused, then compare again. This step is done when every remaining difference is a rounding or a question.

## 5. Report and stop

| Element | Design | Built | Status |
| --- | --- | --- | --- |
| Card padding | 20px | `p-5` | Matches |
| Title size | 15px | `text-sm`, 14px | Rounded to token |
| Badge | Filled pill | Text label | Deviates, asked: no badge component exists |

Then list, one line each, and omit a list with nothing in it:

- **Unwired.** What renders from props until the backend exists.
- **Missing states.** What the design does not draw.
- **Domain conflicts.** Where the design breaks a rule, with the owning skill.

Close by saying where the build is running and at which widths you compared.

## Before you finish

| You notice | Fix |
| --- | --- |
| "Figma isn't connected" written before any tool search | Search the tools for `figma` first |
| Values in code that appear in no Figma response, only in the screenshot | Read them from the design context |
| An arbitrary utility such as `w-[343px]` or a raw hex in the diff | Map it to a token, or ask if rounding shows |
| A new file under the components directory for a frame that is not a component | Inline it as plain markup |
| A loading or error branch the design never drew | Remove it, keep the default and list it as missing |
| Files in the diff that no frame touches | Revert them |
| A contrast or focus change the design does not show | Restore the design and report the conflict with its owner |
| A comparison claimed with no screenshot of the build | Render each frame width, or say it is unverified |
| Hard-coded sample data with no mention in the report | List it under **Unwired** |

© jakubkrehel · MIT · jakubkrehel/skills

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor