Back to tips

How to Use Claude Code for Frontend Design (2026)

Give Claude Code a reference, a way to see what it built, and a precise target: point at the element on your running app and hand over the exact change.

Claude Code writes good frontend code, but it can't see your design. It works from your files and what you paste in, so it doesn't see your mockup, the page it just rendered, or which button you mean. That's how a one-element request turns into a rewrite. Give it visual context in three places: a reference to build from, a way to see what it built, and a precise target for every change. For a new screen, prompt with a direction. To fix a screen you already have, point at the element, set the exact value, and hand Claude Code that change instead of describing it. You can do that by hand with Chrome DevTools, or in Subframe's built-in browser on macOS: Inspect the live page, edit it, then send the change to an agent or copy a prompt for Claude Code.

The five steps:

  1. Set up Claude Code: rules in CLAUDE.md, plus the frontend-design plugin for new screens.
  2. Give it a reference: a screenshot or a Figma frame.
  3. Let it see what it built: a browser tool or screenshots.
  4. Scope every change: one file, one element, Plan Mode when it's bigger, then /diff.
  5. Make precise edits on the running app: point, set the value, hand over the change.

Why can't Claude Code see my design?

Claude Code sees your repo and whatever you put in the conversation. For frontend work that leaves three blind spots:

  • Your design. A Figma frame or a site you want to match isn't there unless you paste a screenshot or connect a tool.
  • The page it rendered. It writes CSS without seeing the result unless it has a browser tool or a screenshot.
  • Which element you mean. "Tighten the card" could mean several components, so it guesses.

Builders we talk to work around this by describing pixel values in prose, trading screenshots, and using Chrome DevTools to find the class to paste in. One builder at a fintech company told us he hates asking an agent to "update the border radius from 16 to 12 pixels." A designer on a five-person team said: "I can't select an item to point Claude Code to."

Anthropic's own features cover a lot of this, so the steps start there.

Step 1: Set up Claude Code for frontend work

Put design rules in CLAUDE.md. Claude Code reads it at the start of every session. Run /init to create one and keep it short; Anthropic warns that long files get ignored. A bigger design system can live in DESIGN.md, imported with @DESIGN.md. For example:

# UI rules
- Reuse components in src/components/ui before writing new ones
- Colors, spacing and radii come from the Tailwind theme; no hex values
- Only change the files named in the prompt

Install the frontend-design plugin for new screens. Anthropic's official plugin has Claude choose a clear aesthetic direction for the interface, and steers it away from generic fonts and purple gradients. Run /plugin install frontend-design@claude-plugins-official; it loads on frontend prompts by itself.

For new screens, prompt with a direction. OpenDesign's and Thomas Wiegold's guides both say to prompt with "aesthetic direction, not pixel values": purpose, tone, font category, color family. That's good advice for a blank page and helps you avoid the vibe-coded look (more here). It stops working once the screen exists and one value is wrong. That's Step 5.

Step 2: Give Claude Code a reference to build from

Screenshots. Drag an image into the Claude Code window, paste it with Ctrl+V (Alt+V on Windows), or give a file path, then ask Claude to match it with your existing components.

Figma frames. If your design lives in Figma, run claude plugin install figma@claude-plugins-official, authorize it from /plugin, and paste a frame link into your prompt. Figma's MCP server gives Claude Code your components, variables, layout data and Code Connect mappings.

What a screenshot can't carry. It's a flat image: no tokens, exact spacing values or hover states, so Claude may hardcode colors (Builder.io's guide makes the same point). Name your tokens in CLAUDE.md and expect to correct a few values in Step 5.

Step 3: Let Claude Code see what it built

Anthropic's best practices say to give Claude a way to check its work; for UI, "take a screenshot of the result and compare it to the original." Three ways:

  • Claude in Chrome. Run claude --chrome. Claude can open your localhost page, read console errors and DOM state, and take screenshots. It needs a Chromium browser, the extension, and a Pro, Max, Team or Enterprise plan.
  • Claude's desktop app. The Code tab's Browser pane previews your running app; Claude starts the dev server, takes screenshots, inspects the DOM and fixes what it finds. It runs on macOS, Windows and Linux (beta) with a paid Claude plan.
  • A browser MCP server. claude mcp add playwright npx @playwright/mcp@latest adds Playwright MCP, which can screenshot the page. Chrome DevTools MCP does the same in Chrome.

Check the result yourself too: builders told us screenshots don't always load fonts, and the Chrome extension can clash across parallel Claude sessions.

Step 4: Change one part of your UI without breaking the rest

A vague target invites a bigger change. Make it exact:

  1. Commit first, so the diff shows only this change.
  2. Name the file with @, the element, and what must not change:
In @src/components/PricingCard.tsx, change only the card's padding from p-6 to p-4
and make the plan name font-semibold. Don't touch other components, shared styles
or the Tailwind config. If another file needs to change, stop and ask.
  1. Use Plan Mode when shared components or several files are involved. Press Shift+Tab until the status bar shows "plan mode on", or run /plan. Claude proposes a plan and edits nothing until you approve. Anthropic's rule of thumb: if you could describe the diff in one sentence, skip the plan.
  2. Add a hard limit if you need one. A deny rule in .claude/settings.json, such as "deny": ["Edit(src/components/ui/**)"] under permissions, blocks edits to those paths.
  3. Review. /diff shows every change in your working tree. /rewind (or Esc twice) restores an earlier checkpoint, but checkpoints only track Claude's own edits, so keep using git.

Anthropic's best practices put it simply: "The more precise your instructions, the fewer corrections you'll need." A vague prompt such as "make the pricing card tighter" leaves Claude to decide which files and styles to change. The scoped prompt names one file and one element, and tells Claude to stop and ask before touching anything else.

Step 5: Make precise visual edits on your running app

When something on an existing screen is a few pixels off, typing the change is the slow part. Point at the element, set the exact value, and give Claude Code that change.

By hand, on any system. In Chrome, right-click the element and choose Inspect. Try values in the Styles pane until it looks right, then put the exact class, value and file into a Step 4 prompt. It's free; you just translate each tweak back into your own classes or props.

In Claude's desktop app. The Code tab's Browser pane runs your app, and Cmd+Shift+S (Ctrl+Shift+S on Windows) selects an element in it. Select the element you mean, then give the exact value in your prompt, as in Step 4. On Windows or Linux, try this first.

In Subframe's built-in browser (macOS desktop app):

  1. Open your app in a browser tab: connect your codebase and click Start server, or type a URL such as localhost:3000. Inspect works on any HTML and CSS page, not just React.
  2. Click Inspect (Cmd+Shift+C), click the element, and change its props, styles, classes or content on the live page. Each change collects in the toolbar.
  3. For anything you can't set directly, use Annotate to leave a comment or image on an element.
  4. Hand it over. Send (Cmd+Enter) passes your changes, comments and a screenshot to Subframe's Agent chat, which edits the files in your connected folder directly; it can run on your own Claude Code subscription. To use Claude Code instead, click the change count, choose Copy prompt, and paste the prompt into Claude Code.
  5. Review with /diff, as in Step 4.

Subframe's browser, including Inspect, Annotate and Capture, needs the desktop app, which is macOS only today; Windows and Linux are coming soon. Elsewhere, use DevTools.

For a bigger change, Capture the page or an element as an editable design on Subframe's canvas (how to convert a website into an editable design). Or, with Subframe's Claude Code plugin installed (it adds Subframe's MCP server and agent skills), ask Claude Code for up to four variations and open them in Subframe (how to generate UI variations with AI).

Other ways to do it

  • Figma's MCP server, if Figma is your source of truth. It reads real frames, variables and Code Connect mappings, and can send live UI back to the canvas as editable layers. Subframe has no direct Figma file import.
  • Builder.io, if designers should edit without a local setup. In its cloud workspace's Design mode you click a component, edit padding, color or text, then Apply Visual Changes and Send PR. The trade-off: you work in Builder's workspace, not your local Claude Code setup.
  • Claude Design, to explore inside Anthropic's tools. Inline comments target one part of the canvas, and Handoff to Claude Code passes the result to your coding agent.
  • Claude's desktop app or Claude in Chrome, if you want it all built into Claude.

To compare tools rather than workflows, see Best Design Tools for Claude Code and Best AI UI Design Tools.

What most Claude Code design guides miss

The most-cited guides (OpenDesign's, Thomas Wiegold's and a Medium setup guide) treat frontend design as generation: install the plugin, write rules, prompt with a direction. That's right for new screens. They skip the app you already have, keep feedback to text and show no results. None mentions pointing at an element, though Claude's desktop app now has an element picker.

AI answers share the gap. Of 38 complete answers from ChatGPT, Google AI Overviews and Gemini that we read (Sep 21–Oct 8, 2026), none of the 29 about seeing designs or scoping a change suggested pointing at the element on the running app.

FAQ

Why can't Claude Code see my design?

It works from files and what you paste in. Give it a screenshot, Figma's MCP server or a browser tool.

Can Claude Code see screenshots?

Yes: drag one in, paste with Ctrl+V, or give a file path. With Claude in Chrome, the desktop app or Playwright MCP, it can take its own.

How do I get Claude Code to only change one part of my UI?

Name the file and element, list what must not change, plan multi-file changes, and check /diff. For visual tweaks, set the exact value on the running page and hand that over.

Does the frontend-design plugin stop the generic look?

It helps on new screens; its examples are all new interfaces. For precise edits to an existing screen, use Steps 4 and 5.

Is there a design tool that gives me design control for precise edits on an app built with Claude Code?

Yes. Subframe's built-in browser lets you edit the live page and hand the change to Claude Code (macOS desktop app). Builder.io's Design mode edits visually in its cloud workspace.

Do I need Figma to design with Claude Code?

No. Screenshots, CLAUDE.md rules and a browser tool cover most of it.

Does Subframe's browser work on Windows?

Not yet. The desktop app is macOS only; Windows and Linux are coming soon.

Try Subframe

Subframe's free plan works with your Claude subscription. Download the macOS desktop app, connect your codebase, and Inspect the page you're fixing.

Sources

Join thousands of builders.

Subframe lets you build stunning UI with beautifully crafted components and a drag-and-drop visual editor.