How to Ship Tasteful UI with AI Coding Agents
A end-to-end workflow for shipping tasteful UI with Cursor, Claude Code, Codex, and v0 — from design spec to review checklist, without generic AI slop.

Shipping tasteful UI with AI coding agents requires a spec-first workflow: pick a design language, paste a DESIGN.md into your agent, build one page at a time, and review against a checklist before shipping. Without constraints, agents default to generic patterns — with them, you get production-quality interface in a fraction of the time.
This is the capstone workflow. Everything below assumes you are building a real product and care about how it looks.
The slop problem
Every vibe coding tool can generate a working app in minutes. The problem is how those apps look:
- Inter or system-ui font with no typographic hierarchy
- Purple-to-blue gradient heroes
- Identical card grids with rounded corners and drop shadows
- Placeholder copy that sounds confident but communicates nothing
- Hover animations on every element
- Light and dark mode that are both mediocre
This is not a tool limitation. It is a constraint problem. Agents optimize for "working UI" unless you define what "good UI" means for your project.
Tasteful UI with agents is not about better prompts. It is about better inputs.
The five-step workflow
Step 1: Choose a design language
Before opening your agent, decide the aesthetic direction. Not "modern and clean" — pick concrete references:
- Typography: Which font family? What scale?
- Color: How many tokens? Light, dark, or both?
- Density: Spacious editorial or compact dashboard?
- Motion: Restrained fades or expressive transitions?
- Imagery: Photography, illustration, or none?
Write these decisions down or pick a template from the Agent's Design gallery that already defines them.
Step 2: Load a DESIGN.md spec
A DESIGN.md is your agent's design system. It includes tokens, typography, components, layout rules, motion constraints, and anti-patterns.
Add it to your project repo:
your-project/
├── DESIGN.md ← design language spec
├── src/
│ ├── app/
│ └── components/
└── ...
In your first agent message, reference it explicitly:
Follow the design language in DESIGN.md for all styling decisions. Do not deviate from defined tokens. Do not add fonts, colors, or animations not specified in the spec.
If you do not have a DESIGN.md yet, copy one from the Agent's Design gallery and customize the tokens for your brand. Fifteen minutes of token editing saves hours of prompt iteration.
Step 3: Build one page at a time
Agents produce better UI when scoped tightly. Do not ask for an entire app in one prompt.
Recommended build order:
- Layout shell — Navigation, sidebar, page container, footer
- Primary view — Hero, dashboard home, or main landing section
- Secondary sections — Features, pricing, settings, content pages
- Edge cases — Empty states, loading states, error pages, mobile nav
After each step, review in the browser before continuing. Catch spacing and hierarchy issues early when they are cheap to fix.
Step 4: Review with a taste checklist
Before calling any screen done, run this checklist:
Typography
- Font matches spec (not a fallback)
- Heading hierarchy is clear (size, weight, spacing)
- Body text line length is 45–75 characters
- Letter spacing on labels and caps is intentional
Color
- All colors come from defined tokens
- Contrast meets WCAG AA for text
- Accent color is used sparingly (CTAs, active states)
- No unauthorized gradients or glow effects
Spacing
- Consistent grid (4px or 8px base)
- Section padding matches spec
- Component internal padding is uniform
- Whitespace feels intentional, not accidental
Components
- Buttons have hover, focus, and disabled states
- Form inputs have labels, placeholders, and error states
- Cards use spec-defined borders/shadows (not both)
- Icons are from one set, consistent size
Motion
- Transitions match spec duration and easing
- No animation on elements that should be static
- Loading states use subtle indicators, not spinners everywhere
Content
- No AI filler copy ("Unlock the power of..." / "Seamlessly integrate...")
- Headlines say something specific about your product
- CTAs use action verbs tied to user goals
Responsive
- Layout stacks correctly on mobile
- Touch targets are at least 44px
- Typography scales down appropriately
- Navigation works on small screens
Step 5: Ship and maintain the spec
Commit the DESIGN.md alongside your code. When you return to the project weeks later, the agent can re-read the spec and stay on-brand.
When you need to evolve the design:
- Update tokens in DESIGN.md first
- Tell the agent which tokens changed and why
- Ask it to apply changes across affected components
- Review diffs, not full rewrites
The spec is a living document. The agent is the implementer. You are the design authority.
Anti-slop rules to paste into every session
Include these in your agent prompt or project rules:
Design constraints:
- Use only fonts defined in DESIGN.md
- Use only colors from CSS custom properties in DESIGN.md
- No purple-to-blue gradients
- No glassmorphism unless specified
- No drop shadow AND border on the same element
- One accent color for interactive elements
- Motion: 150–250ms ease transitions only, no bounce or spring
- No emoji as icons
- No lorem ipsum — use realistic placeholder copy or ask me for content
- Spacing on 4px grid
These rules eliminate the most common slop patterns before they appear.
Tool-specific execution
The workflow is the same across tools. Execution details differ.
Cursor
- Add DESIGN.md to
.cursor/rulesor project context - Use Composer for multi-file component builds
- Review diffs in the source control panel
Claude Code
- Attach DESIGN.md at session start
- Scope each request to one component or page section
- Use
--continueto maintain context across iterations
Codex
- Paste token block and design principles into the prompt
- Strong at CSS-to-component conversion
- Good for refactoring hardcoded values to tokens
v0 / Bolt / Lovable
- Condense DESIGN.md to tokens + principles (skip reference components)
- Attach one layout screenshot as visual anchor
- Treat output as a draft — refine in Cursor or Claude Code for production
Before and after: what changes
Without a spec:
"Build me a SaaS landing page"
Result: Purple gradient hero, three identical feature cards, generic testimonial section, "Get Started" button, Inter font, excessive shadow on everything.
With a spec:
"Build a landing page following DESIGN.md. Hero: left-aligned headline, right-aligned product screenshot, no gradient. Features: horizontal list with icons, not card grid. Testimonials: single quote with attribution, not a carousel. CTA: one primary button using --color-accent."
Result: Layout matches your design language. Tokens are consistent. Copy slots are ready for your content. Refinement takes one or two rounds, not ten.
The difference is not the tool. It is the input.
When to break the rules
Design languages are starting points, not prisons. Break spec rules intentionally:
- A/B testing a new accent color — Update the token, test, revert or commit
- Marketing page needs more energy — Increase motion on one section, keep the rest restrained
- Dashboard needs higher density — Tighten spacing tokens for data-heavy views
Document why you broke the rule. Update DESIGN.md if the change sticks.
Your next session
Here is the complete workflow in one pass:
- Open the Agent's Design gallery
- Pick a design language that fits your product
- Copy DESIGN.md into your repo
- Customize accent colors and typography for your brand
- Paste the anti-slop rules and agent prompt into your coding tool
- Build the layout shell — review in browser
- Build the primary view — run the taste checklist
- Build remaining pages one at a time
- Commit DESIGN.md and code together
- Ship
You now have a repeatable process for tasteful UI with any AI coding agent. The gallery gives you the design languages. The spec gives you the constraints. The checklist gives you the quality gate.
Stop fighting generic output. Start from a curated template and make it yours.
Browse the Agent's Design gallery to get started.
Ship the next screen with taste
Browse agent-ready templates, DESIGN.md specs, and prompts in the gallery — then paste into Cursor, Claude Code, or v0.


