Structural request vs. subjective taste
A taste-based request asks for subjective judgment without criteria:
"Make me a beautiful dashboard"
A structural request has concrete, verifiable criteria:
"Create a dashboard layout: sidebar 240px, main content max-width 1200px, header 56px with breadcrumbs. Color scheme: background #FAFAFA, accent #3B82F6, text #1A202C. Typography: Inter."
Claude works well with the second type and poorly with the first.
Seven patterns for design prompts
1. Reference + difference
Create a navigation sidebar in the style of Linear.app.
Difference: no icons in collapsed state, text only.
Tech stack: React + Tailwind CSS.
2. Problem + constraints
I have a registration form: 8 fields on one page, high dropout rate.
Constraints: can't remove required fields, no progressive disclosure (product requirement).
Suggest three layout variations that reduce cognitive load.
3. Iteration with preservation
Here's the current design.md: <paste>
Keep everything as is, but:
- Replace the accent color from blue to emerald
- Increase border-radius to 10px everywhere
- Add a Toast component with 4 variants (success, error, warning, info)
4. Critique with prioritization
Here's my current interface: <description or screenshot>
Find issues. Prioritize by: impact on conversion vs. implementation cost.
Give me the top 3 fixes that deliver maximum value for minimum effort.
5. Component with states
Create a Button component:
- Variants: primary, secondary, ghost, danger, loading
- Sizes: sm (h-8), md (h-10), lg (h-12)
- States for each variant: default, hover, active, disabled
Format: Tailwind CSS + TypeScript props
6. Accessibility check
Here's my color palette: primary #2563EB on white, secondary #9CA3AF.
Check contrast against WCAG AA (4.5:1 for text, 3:1 for large text and UI).
Where it fails — suggest alternatives with the same hue.
7. Design-to-code
Here's design.md: <paste>
Implement a Card component in React + CSS Modules.
Strictly follow the design system: no values outside the tokens.
Add variants: default, featured (accent left border), minimal (no shadow).
How to iterate correctly
Wrong iteration:
"No, that's not it, redo it" — Claude doesn't know what's wrong
Right iteration:
"Good, but:
- The button is too large (currently 48px, should be 40px)
- Card background should be --bg-surface, not --bg
- Add gap between icon and text (they're stuck together now)"
Specifics + a list = predictable result.