Cursor is an IDE agent, not a website builder — it edits the project you already have. That changes what a design prompt needs to contain. Builders like v0 or Lovable choose a stack for you; Cursor inherits yours, with all its existing conventions. The failure mode is different too: not "generic template", but "competent markup with no design in it" — the Bootstrap look without Bootstrap.
Give it a design system to obey, not adjectives
In an IDE context, the highest-leverage move is writing the tokens down first and telling Cursor they are law:
Add to globals: --background: hsl(250 30% 6%); --accent: hsl(171 85% 47%); --radius: 12px; type scale 1.25 ratio from 1rem base. All new UI must consume these variables. Never hard-code a hex.
Every subsequent prompt gets shorter, and every generation stays on-palette. This is the single biggest difference between Cursor sessions that converge on a look and ones that drift.
Prompt per section, reference the file
Cursor works best scoped to a file and a region: "In app/page.tsx, replace the hero: full-viewport, headline clamp(3rem,7vw,5.5rem) tracking-tight, sub-copy max-w-md at 60% opacity, single accent CTA. Match the existing component style in components/." The file references anchor it to your conventions instead of its own.
Use the agent for the boring passes
Where Cursor genuinely beats builders is systematic sweeps a designer would dread: "add focus-visible states to every interactive element, matching the accent token"; "audit all sections at 360px and fix overflow"; "add prefers-reduced-motion guards to every animation". One sentence, whole-project consistency. These passes are where AI-generated sites usually fall down — see our checklist — and Cursor is the cheapest way to do them.
Bring the art direction in from outside
What Cursor will not do is invent a strong visual identity for you — it has your codebase as taste reference, and if the codebase has no taste yet, output will not either. This is where a written prompt with real art direction earns its keep: paste a library prompt as the brief ("implement this section in our stack, consuming our tokens"), and Cursor translates it into your conventions. Ours are written to survive exactly that translation — 60 are free, and around 1,000 of the paid entries include a finished implementation you can hand Cursor as a reference instead of a brief. The tradeoffs between those two modes are covered in prompts vs components.