Five jobs, not one category
The standard roundup lists twenty tools in one ranked table, which implies they are alternatives. Most of them are not. Sorting by job first makes the actual choices much clearer.
| The job | What it is good for | Where it stops | |
|---|---|---|---|
| Screen generators | Describe a screen, get a working page — v0, Lovable, Bolt | Getting from nothing to something quickly; exploring layouts | They start from a blank slate. Integrating output into an existing codebase is mostly manual |
| In-repo coding agents | Write UI inside your existing project — Claude Code, Cursor, Windsurf/Devin Desktop | Real work in a real codebase, with your conventions available | Design judgement. They match the code around them, and if that code is generic so is the output |
| Design-file to code | Turn a mockup or design file into components | Teams where designers work in a design tool and hand off | Fidelity of structure. Output tends to be visually close and structurally wrong |
| Asset generation | Images, icons, illustrations, backgrounds | Filling real gaps in production work quickly | Consistency across a set. Each generation is independent |
| Design system supply | The tokens, roles, scales and rules the others consume | — | This is the gap. See below |
The first two rows are the ones most often confused. A screen generator and an in-repo agent do genuinely different jobs, and the choice is not about quality — it is about whether the code has to live alongside code you already have.
The finding: nobody supplies the system
We read the current documentation for six major AI builders and agents, specifically looking at what their design-system features do. The pattern is consistent enough to be worth stating as a finding.
| Wants | Gate | |
|---|---|---|
| v0 | An installable npm package, a repository, Storybook or a Figma source | Private packages need shared environment variables |
| Lovable | A React component library, set up as a dedicated project | Enterprise tier |
| Bolt | A component library plus a design-system site to compile from | Paid team plan to add your own |
| Claude Design | Your codebase and design files at onboarding | Labs product |
| Cursor | Rules you write yourself | None |
| Windsurf / Devin Desktop | Nothing native | None |
Not one of them produces a design system. All of them assume you arrive holding one. Two put the feature behind a paid or enterprise tier, which tells you they consider it valuable, and none of them offers to create the thing it wants.
Every AI builder's design-system feature ingests a system you already maintain. None of them produces one.
Vendor plan gates and feature shapes move quickly, and the enterprise/team claims here are the most likely to have changed. Verify against current pricing pages before planning around any of them. The structural pattern — ingest, never produce — has held across every version we have checked.
This matters for evaluation. If you are choosing between tools partly on "which one keeps my UI on-brand", the answer is none of them, on their own. The variable that determines that outcome is what you feed them, and it is the same variable across all six.
Why the output converges
Every tool in this space, given an unconstrained prompt, produces a recognisable house style: a dark hero, a gradient, a widely-used geometric sans, three feature cards with generous radii. People attribute this to the tools. It is not the tools.
A model asked for an interface with no constraints produces the most probable interface. The most probable interface is the centre of its training distribution, and every model has broadly the same centre because they were trained on broadly the same web. The mechanism in full.
Which means switching tools does not fix it. Adding constraints does — and we have some measurements on how well people currently do that. We sampled 299 DESIGN.md files published to give AI tools design guidance:
| Share of files | |
|---|---|
| Colours as raw hex, no semantic role | 86% |
| No prohibitions of any kind | 76% |
| No dark mode definition | 69% |
| No distinctive motifs | 57% |
| At least one vague adjective doing the work | 54% |
| No concrete size value anywhere | 44% |
"Clean" appears in 39% of these files and "modern" in 36%. Both are words a model satisfies by producing exactly the average output people then complain about. The tool is doing what it was told.
The counter-example is worth seeing rather than asserting. Below is what the *other* half of the input looks like — a system stated as values instead of adjectives, applied across three unrelated surfaces. No tool in the list above produces this; every tool in the list above can consume it.
The two categories that actually compete
Within the first two rows the tools genuinely are alternatives, so it is worth being specific about how they differ. Everything here is the shape of the tool rather than a quality ranking, because quality in this category turns over faster than any article can track.
Screen generators
| Takes a system as | Best suited to | |
|---|---|---|
| v0 | An installable npm package, repository, Storybook or Figma source; also consumes shadcn registry items directly | React and Next.js work where you already have a token layer to point at |
| Lovable | A React component library set up as a dedicated project; project knowledge for written guidance | Full-app prototyping where the same conventions need to hold across many screens |
| Bolt | A component library plus a design-system site to compile from; shadcn add works in its terminal | In-browser iteration where you want to install tokens without leaving the tool |
The shadcn registry line is the practical common denominator. All three can consume a registry item, which means a token set delivered that way works across the category without per-tool integration work. That is worth more when choosing than any feature comparison, because it is the part that does not change when you switch.
In-repo coding agents
| Mechanism | Note | |
|---|---|---|
| Claude Code | CLAUDE.md plus files it reads; MCP servers via .mcp.json | Reads DESIGN.md directly when instructed to. Full guide |
| Cursor | .cursor/rules/*.mdc with frontmatter controlling when each loads; MCP via .cursor/mcp.json | The conditional loading is the useful part. How to structure the rules |
| Windsurf / Devin Desktop | Rules files with a documented precedence order; AGENTS.md read from any directory | No native design-system feature; the file-based route is the route. Full guide |
Windsurf is now Devin Desktop following Cognition's acquisition, delivered as an update with settings migrating in place. If you are reading guidance that predates that, check the rules-file paths — the precedence order changed and older articles name directories that are no longer first.
Notice that all three converge on the same shape: a file in the repository that the agent reads, optionally supplemented by MCP servers for things too large to hold in context. That convergence is the reason a tool-agnostic DESIGN.md is a better investment than any per-tool configuration.
What these tools cost to run
Rarely covered in roundups and it dominates real adoption decisions, because the pricing shapes are genuinely different and they fail in different ways.
| How it charges | The failure mode | |
|---|---|---|
| Per-seat subscription | Flat monthly cost per developer | Predictable, but you pay for occasional users at the same rate as heavy ones |
| Credit or message based | Consumption drawn from a monthly allowance | A long iteration session burns an allowance fast, and the cost is invisible until it runs out mid-task |
| Metered API | Per token, uncapped | The dangerous one. An unattended loop against a metered endpoint has no natural stopping point |
If you automate any of this — a script that regenerates screens, a batch that processes a backlog — bound the iteration count and fail closed on error before the first run, not after the first bill. Prove it on a small sample, then cap concurrency and retries.
Evaluating a tool in fifteen minutes
Demos are chosen to look good and every tool in this category has an impressive one. Five questions that separate them faster than a demo does.
- 1
Ask it for the second screen
Every tool makes a good first screen. Ask for a related one and compare: same spacing rhythm? Same hierarchy? Same button treatment? Consistency between screens is the whole product, and it is never what a demo shows.
- 2
Give it your real constraints and see if they land
Hand it a token file and a short list of prohibitions. Then check whether the output actually references the tokens or writes literal values next to them. This single test eliminates most of the field.
- 3
Ask for a dense screen, not a landing page
A settings page, a data table, a form with twelve fields. Marketing layouts are heavily represented in training data; dense functional UI is where tools genuinely differ.
- 4
Check what it does with dark mode
Ask for both themes. If it derives dark by inverting light, you will get dead shadows, muddy mid-greys and a glaring accent — and you will get them on every screen thereafter.
- 5
Look at how output leaves the tool
For screen generators specifically: what arrives in your repository, in what shape, and how much rework does integrating it need? This is where the time actually goes, and no demo covers it.
Test two is the one to run first. A tool that ignores a supplied token file will ignore everything else you give it, and no amount of prompting fixes that. Ten minutes here saves a week of adoption.
What to have in place first
Because every tool in the category consumes a design system and none supplies one, the highest-leverage move is upstream of the tool choice. Four things, none of which requires a designer.
- Semantic colour roles, light and dark. Named by job —
--primary,--muted-foreground,--border— not by hue. Without these the agent writes literals and your stylesheet learns nothing. Details. - A type and spacing scale with real numbers. Not "generous spacing". A list of permitted values, and a statement that anything else is a bug.
- A prohibition list. The single highest-impact thing you can write, and the thing 76% of published guidance omits entirely. Five lines is enough to start.
- All of it in a file in the repository. Not a wiki, not a documentation site, not a Figma comment. A file the tool reads before it writes anything. How to write it.
With those in place, most tools in this category produce noticeably better output and the differences between them shrink to ergonomics and integration. Without them, the best tool in the category produces the same generic screen as the worst.
Identity Forge exists to fill the fifth row of that first table: complete design kits with 28 semantic colour roles across light and dark, type and spacing scales, motifs and explicit do's and don'ts, delivered as a DESIGN.md plus installable tokens through MCP, a CLI or a shadcn registry. Browse the kits, or read the pillar guide on giving an agent a design system.
Where the category is heading
One signal worth watching, because it comes from a direction that has no incentive to hype it. Three of the largest openly published enterprise design systems restructured within roughly eighteen months, each around the premise that the code consuming a design system is increasingly machine-written.
- IBM Carbon shipped an MCP server exposing its documentation and component code examples to agents.
- Salesforce Lightning rebuilt its CSS architecture to decouple structure from visual style, describing SLDS 2 as the foundation for its agentic design system, and shipped a linter to validate markup mechanically.
- Shopify Polaris deprecated its React library in favour of framework-agnostic web components served from a CDN.
Three different bets, one shared premise, no coordination. It suggests the durable part of this shift is not any particular generation tool — those turn over quickly — but the requirement that a design system be machine-readable, explicitly constrained, and separable from its implementation.
What are the best AI design tools for developers?
It depends which of five jobs you mean. For generating a screen from scratch: v0, Lovable, Bolt. For writing UI inside an existing codebase: Claude Code, Cursor, Windsurf/Devin Desktop. Design-file conversion and asset generation are separate categories again. Comparing across those groups is comparing tools that do not do the same thing.
Which AI tool produces the best-looking UI?
Given an unconstrained prompt, all of them produce roughly the same thing, because they all default to the centre of a similar training distribution. The variable that actually changes output quality is what you feed them — semantic tokens, real numbers, and an explicit list of what is forbidden.
Do any AI builders create a design system for me?
No. Reading the current documentation for six major builders, every native design-system feature asks you to supply an existing system — a component library, a repository, a Storybook or a Figma source — and two put the feature behind a paid or enterprise tier. They consume design systems; they do not produce them.
Why does AI-generated UI always look the same?
Because a model asked for an interface with no constraints produces the most probable interface, and every model has a similar notion of most-probable. The fix is constraint rather than tool choice: semantic roles instead of hex values, real numbers instead of adjectives, and an explicit prohibition list.
What should I set up before adopting one of these tools?
Semantic colour roles for light and dark, a type and spacing scale with actual numbers, a prohibition list, and all of it in a file in the repository rather than a wiki. With those, most tools in the category improve noticeably. Without them, the best tool produces the same generic screen as the worst.