../

UI/UX

Prompting for interface design when you are not a designer: user research, information architecture, flows, wireframes, mockups and prototypes, layout, type, color and contrast (WCAG 2.2 AA), components and states, design systems, common patterns, heuristics, accessibility, microcopy and handoff, plus how to use text-to-UI tools, get HTML/Tailwind prototypes and critique screenshots. It applies the prompt skeleton and method in prompting fundamentals; the prompt chain takes a problem statement to a reviewed prototype spec. The design rules themselves, with numbers and CSS, are in UX/UI design principles; palettes are in color theory; motion is in app animation & motion.

How experts think

UX (user experience) design is deciding what a product does and how people move through it; UI (user interface) design is how each screen looks and behaves. Designers spend more time on the first than outsiders expect.

Novice asks forExpert thinks about
"a nice-looking dashboard"who opens it, how often, and what decision they make from it
a screenthe flow the screen sits in, including the way in, the way out and what goes wrong
a design with placeholder textreal content and data, at realistic lengths, because they shape the layout
polishthe right fidelity for the question: sketch to explore, wireframe to structure, prototype to test
a custom lookthe design system: reuse components and tokens; consistency is itself usable
the happy pathevery state: empty, loading, error, partial, offline, no permission
"make it accessible"specific requirements with numbers: contrast ratios, target sizes, keyboard paths
"do users like it?"can users complete the task? Watch five of them try
"I don't like the blue"critique against goals and heuristics, not taste

The model is a fast junior designer: good at structure, checklists, copy, critique against named heuristics and prototype code; weak at original visual design, at measuring pixels in screenshots, and at knowing your users. It cannot do research; it can plan it and help you make sense of what you found.

Vocabulary

TermWhat it meansSay it like
User researchstudying real users' needs, behavior and context"Plan two weeks of research to learn why trials don't convert"
Personaa profile of a user type built from research"Draft proto-personas from these notes; label every assumption"
Jobs to be done (JTBD)the progress a user is trying to make in a situation, independent of any product"Write JTBD statements: when [situation], I want to [motivation], so I can [outcome]"
User interviewa one-to-one conversation about past behavior and context"Write an interview guide about past behavior, not opinions"
Usability testwatching users attempt tasks with a design; moderated (a facilitator present) or unmoderated"Write five realistic tasks for a moderated usability test"
Task success rate / time on taskshare of users who complete a task / how long it takes"Define success criteria for each task"
SUSSystem Usability Scale: a standard 10-question usability survey; scores around 68 are about average"Add a SUS questionnaire after the tasks"
Heuristic evaluationexperts reviewing a UI against usability principles"Evaluate this against Nielsen's 10 heuristics with severity 0–4"
Affinity mappinggrouping research observations into themes"Cluster these 80 notes into themes; quote evidence for each"
Journey mapa user's steps, thoughts, feelings and pain points over time"Map the journey from signup to first invoice sent"
Information architecture (IA)how content and features are organized, labeled and found"Propose an IA for the settings area; max two levels deep"
Sitemapa diagram or outline of all screens or pages and their hierarchy"Give me the sitemap as an indented outline"
Card sortingusers group and name content to reveal their mental model"Plan an open card sort with 40 cards from this feature list"
Tree testingusers find items in a text-only hierarchy to validate IA"Write 8 tree-test tasks for this navigation"
User flowthe steps and decisions a user takes to complete a task"Draw the user flow as a Mermaid flowchart, including error branches"
Wireflowwireframes connected by arrows showing the flow"Describe a wireflow: one line per screen and what triggers the next"
Happy path / edge casethe ideal route / unusual or failure conditions"List edge cases: no data, 10,000 rows, a name of 80 characters"
Wireframea low-fidelity layout of structure and content, with no visual styling"Grayscale wireframe: boxes and real labels, no colors"
Mockupa high-fidelity static picture of the final look"A mockup in our brand colors and type"
Prototypean interactive model of a flow, at low or high fidelity"A clickable HTML prototype of the three onboarding screens"
Layout gridcolumns, gutters (gaps) and margins that align content"Lay it out on a 12-column grid with 24 px gutters"
Breakpointa width at which the layout changes"Show layouts at 375, 768 and 1280 px"
Spacing scale (8-point grid)a fixed set of spacing values, usually multiples of 4 or 8 px; an 8-point grid steps in 8 px, with 4 px for tight spots"Use only 4, 8, 12, 16, 24, 32, 48 and 64 px"
Type scalea fixed set of font sizes, often generated by a ratio"A type scale from 12 to 36 px for a dense app"
Visual hierarchythe order in which the eye notices things, set by size, weight, color and space"Make the primary action the most prominent element"
Contrast ratioluminance difference between two colors, from 1:1 to 21:1"Check every text and background pair against 4.5:1"
Component / varianta reusable UI element / one version of it (size, style)"Button variants: primary, secondary, ghost, destructive"
Statehow a component looks and behaves in a condition: hover, focus, active, disabled, loading, error"Specify all states for this input"
Focus indicatorthe visible outline showing which element has keyboard focus"A 2 px focus ring with 3:1 contrast, keyboard only"
Design systemthe shared components, tokens, patterns and guidelines for a product"Use our design system's components only: [list]"
Design tokena named design decision (color, space, type, radius) stored as data"Define semantic tokens: color-text-primary, color-surface-raised"
Patterna proven solution to a recurring problem (a form, a wizard, a data table)"Which pattern fits bulk editing: inline, modal or side panel?"
Progressive disclosureshowing advanced options only when needed"Hide advanced settings behind a disclosure"
Affordance / signifierwhat an element lets you do / the visual cue that tells you so"Make the drag handle's signifier visible without hover"
Empty statewhat a screen shows when there's no data yet"Write the first-use empty state with one primary action"
Skeleton screengray placeholder shapes shown while content loads"Use a skeleton matching the final layout, not a spinner"
Microcopy (UX writing)the small text in an interface: labels, buttons, errors, hints"Rewrite these errors: what happened, then how to fix it"
Touch targetthe tappable area of a control, which can be larger than what's drawn"Minimum 44×44 px touch targets on mobile"
WCAG / ARIAWeb Content Accessibility Guidelines / attributes that expose roles and states to assistive technology"Meet WCAG 2.2 AA; use native HTML before ARIA"
Handoffdelivering a design to engineers with everything needed to build it"Write a handoff spec: layout, tokens, states, edge cases"

Research

MethodAnswersAsk the model forWatch out
User interviewsneeds, context, language, past behaviora screener, an interview guide, a synthesis of your notesit will happily invent "user quotes"; only synthesize real notes
Usability testingcan people complete the tasks, and where they struggletest plan, tasks, script, observation sheet, findings reporttasks must be realistic and not name the UI's labels
Surveyshow many, how oftena draft questionnaire and analysis planleading questions; surveys show what, not why
Card sorting / tree testinghow users group and find thingsthe card list, tasks, analysis of results you paste—
Analytics and ticketswhere users drop off or get stucka summary and hypotheses from data you pastecorrelation is not cause
Heuristic evaluationknown usability problems, cheaplya severity-rated review of screens or a prototypenot a substitute for users
JTBDwhat progress users want and what they "hire" insteadjob statements, switch-interview questionsjobs come from interviews, not imagination
Personas and journey mapsshared understanding of user types and journeysdrafts built from your researchwithout research they are fiction; label them "proto-personas"

Information architecture and flows

Design the path before the pages. Ask for:

  • Sitemaps as indented outlines, one line per screen, with labels in the users' words (from research or card sorts).
  • User flows as numbered steps with decision points, or as Mermaid flowchart text that many tools render as a diagram. Require the error branches: invalid input, network failure, no permission, going back.
  • State diagrams for anything with a status (draft → sent → viewed → paid → overdue), listing what triggers each change and what the user sees.
  • Navigation models: top-level destinations, what's in global vs local navigation, and where search fits.
cancel: nothing saved Invoice $1,200 due Payment form amount, date valid? Saving… button busy Inline error next to field saved? Can't save input kept paid in full? Partially paid $800 still due Paid confirmation tap yes no fix it no retry yes yes no box: a screen or state · diamond: a decision
A flow with its decisions and error branches: ask for this shape, not only the happy path.

Wireframes, mockups and prototypes

ArtifactShowsAnswersGet it from AI by
Sketchrough ideas, many options"which direction is worth pursuing?""Describe 5 different layouts for this screen in one paragraph each"
Wireframe (low fidelity)structure, hierarchy and content placement; grayscale; no styling"is the right content in the right order?"a text layout spec; an ASCII wireframe; a grayscale HTML page
Mockup (high fidelity, static)final visual design: type, color, imagery, spacing"does it look right and on-brand?"a UI generator or a design tool, from your system and a wireframe
Prototype (interactive, any fidelity)a clickable or working flow"can users complete the task?"a single-file HTML/Tailwind prototype; a text-to-app tool; a design-tool prototype

Low fidelity invites feedback on structure; high fidelity invites feedback on color. Match the fidelity to the question, and say which one you want.

sketch many options which direction is worth pursuing? wireframe structure, gray right content in the right order? mockup final look does it look right and on-brand? prototype clickable can users finish the task? Invoices Overdue · 3 Hartley 1,200 Okafor 860 Lund 2,450 Send reminders Invoices Overdue · 3 Hartley 1,200 Okafor 860 Lund 2,450 Send reminders Invoices Hartley 1,200 Okafor 860 Lund 2,450 Send reminders Reminders sent feedback on structure feedback on color and polish more fidelity, slower and costlier to change
Each step up in fidelity answers a different question and is slower to change.

Visual foundations

TopicRule of thumbSay it like
Layout grid12 columns on desktop, 8 on tablet, 4 on mobile is common; gutters 16–24 px"12-column grid, 24 px gutters, 1200 px max width"
Spacinga 4/8 px scale; less space inside a group than between groups"Spacing from the scale 4–64 px only; internal padding smaller than gaps between groups"
Type sizebody at least 16 px on the web; a limited scale (often ratio 1.125–1.25 for apps)"Body 16 px, line height 1.5; five sizes max"
Line lengthabout 45–75 characters per line for body text"Cap text columns at 65ch"
Fontsone or two families, three or four weights"Inter only; weights 400, 500, 600"
Color rolesneutrals for most of the UI, one primary, semantic colors for success, warning, error, info"Color only for meaning and the primary action"
Color alonenever the only signal (WCAG 1.4.1)"Pair every status color with an icon or text"
Text contrast (WCAG 1.4.3, AA)at least 4.5:1; large text (about 24 px, or 18.66 px bold) at least 3:1"Verify every text pair meets 4.5:1"
Non-text contrast (WCAG 1.4.11, AA)input borders, icons, chart elements and focus indicators at least 3:1 against adjacent colors"Input borders and focus rings must reach 3:1"
Target size (WCAG 2.5.8, AA)at least 24×24 CSS px or enough spacing; platforms recommend 44×44 pt (Apple) and 48×48 dp (Material)"Every tap target at least 44×44 px on mobile"
Reflow (WCAG 1.4.10, AA)usable at 320 CSS px wide without horizontal scrolling"Must work at 320 px wide"
desktop detail at 1:1, px margin column gutter column 40 78 24 78 24 78 … max content width 1200 = 12 × 78 + 11 × 24 12 columns, 11 gutters 1280 px · 12 columns gutter 24 768 · 8 columns gutter 24 375 · 4 cols gutter 16
Content spans whole columns, and the column count drops at each breakpoint. Example values.
the scale, in px, drawn to size the same scale in a form 4 8 12 16 24 32 48 64 Use only these values for padding, gaps and margins. Inside a group: small (8). Between groups: larger (24+). Client Hartley & Co Amount 400.00 Record payment 8 24 8 32
Small gaps inside a group, larger gaps between groups: spacing alone shows what belongs together.

The details, examples and CSS are in UX/UI design principles.

Components and states

For every component, ask for its anatomy (parts), variants, sizes, states, behavior, content rules, accessibility (role, keyboard, label) and tokens. The states are where generated designs fall short:

StateSpecifySay it like
Defaultthe resting look"Default uses surface and border tokens"
Hovera subtle change, pointer devices only"Hover only where hover exists; never hide actions behind it"
Focus visiblea clear outline for keyboard users, 3:1 contrast"A 2 px focus ring on keyboard focus only"
Active / pressedfeedback on press"Pressed darkens one step"
Selected / checkedchosen, not by color alone"Selected rows get a check icon and a background"
Disabledunavailable; ideally with a reason"Explain why it's disabled in helper text"
Loadingwork in progress, size stays stable"Button keeps its width and shows a spinner; prevent double submit"
Emptynothing yet: explain and offer the next action"First-use empty state: what goes here, why, one button"
Errorwhat failed and how to fix it, next to the cause"Inline error under the field, linked for screen readers"
Successbrief confirmation"Toast: 'Invoice sent'; announced to screen readers"
Skeletonplaceholder shapes that match the final layout"Skeleton rows the same height as real rows"
default Amount 400.00 Save resting look, tokens input border 3:1 vs page hover Amount 400.00 Save pointer devices only never hide actions here focus-visible Amount 400 Save keyboard focus ring 2 px, 3:1 contrast disabled Amount 0.00 Save Enter an amount first say why it's off loading Amount 400.00 keeps its width no double submit error Amount 4,000 Save ! Max is 1,200.00 next to the cause
Ask for every state by name; generated designs usually show only the first one.

Design systems and tokens

A design system is the shared set of components, design tokens, patterns and guidelines. Tokens usually come in tiers: primitive (blue-600: #2563eb), semantic (color-action-primary), and component (button-primary-bg). The W3C Design Tokens Community Group published the first stable version of its token file format in October 2025. Ask for tokens as DTCG JSON, CSS custom properties or a Tailwind theme, and ask the model to map every color in a design to a semantic token: hard-coded values are the most common drift.

Patterns

PatternExpert rulesAsk for
Formsvisible labels above fields (placeholders are not labels); one column; mark required or optional consistently; validate on blur, then live; errors next to the field with a fix; autocomplete attributes; allow paste; don't disable submit to signal errors"A form spec: fields, labels, input types, validation rules, error messages, autocomplete values"
Navigationfew top-level destinations in the users' words; show where the user is; bottom bars on mobile hold 3–5 destinations (Material's guidance); breadcrumbs for deep hierarchies; search for large sets"A navigation model and labels tested against these card-sort results"
Onboardingshow value before asking for sign-up; contextual hints and a short checklist over long tours; skippable and resumable"An onboarding flow that reaches the first invoice in under 3 minutes"
Data tablesright-align numbers and use tabular figures; sticky header; sort and filter; clear row actions; density options; a plan for small screens (cards, or a pinned first column with horizontal scroll)"A table spec: columns, alignment, sorting, empty and loading rows, mobile behavior"
Dialogsuse sparingly; move focus in, trap it, close on Esc, return focus; name the action on the button ("Delete project", not "OK")"A confirmation dialog spec for a destructive action"
Feedbackrespond within about 100 ms; show progress for longer waits; optimistic updates where safe"Loading and progress behavior for each async action"

Heuristics and accessibility

Jakob Nielsen's 10 usability heuristics are the standard checklist for a critique. Ask the model to cite them by name and rate severity (0 not a problem, 1 cosmetic, 2 minor, 3 major, 4 catastrophe):

#HeuristicAsk the model to check
1Visibility of system statusdoes the user always know what's happening?
2Match between system and the real worldare labels in the users' language?
3User control and freedomis there undo, cancel, back?
4Consistency and standardssame thing, same name, same look; platform conventions
5Error preventionare errors designed out before they're messaged?
6Recognition rather than recallare options visible rather than remembered?
7Flexibility and efficiency of useare there shortcuts for experts?
8Aesthetic and minimalist designdoes every element earn its place?
9Help users recognize, diagnose and recover from errorsplain-language cause and fix?
10Help and documentationis help in context and task-focused?

Accessibility checks to request every time: semantic HTML (real button, a, label elements), a full keyboard path, visible focus not hidden by sticky headers (WCAG 2.4.11), labels and instructions, alt text, contrast (above), target size, reflow at 320 px, status messages announced to screen readers (4.1.3), no drag-only interactions (2.5.7), no cognitive puzzles to log in (3.3.8), and respect for reduced-motion settings. Automated checkers catch only part of the problems; test with a keyboard and a screen reader.

Microcopy

ElementRuleExample
Buttonverb plus object"Send invoice", not "Submit"
Errorwhat happened, then how to fix it; no blame"Card expired. Use another card or update the date."
Empty statewhat goes here, why it helps, one action"No invoices yet. Create one to start getting paid."
Confirmationname the consequence and the action"Delete 3 invoices? This can't be undone." / "Delete invoices"
Labelsshort nouns, sentence case"Due date"
Consistencyone term per conceptalways "client", never also "customer"

AI design tools

Text-to-UI generators

Text-to-UI tools generate screens or working front-end code from a prompt, a screenshot or an existing design (the current names are in the box at the end of this section).

Strong atWeak atPrompt for it
fast layout explorationa generic "SaaS template" lookattach your tokens, components and two reference screens
working prototypes for testsaccessibility (missing labels, focus, contrast)require WCAG 2.2 AA and semantic HTML; audit the output
boilerplate componentsconsistent spacing and statesname the spacing scale and every state
realistic-looking databelievable edge casesgive data ranges and ask for the long name, the zero and the huge number

Iterate one change at a time ("only change the filter bar"); broad requests regenerate everything and lose good parts.

HTML and Tailwind prototypes

Any chat assistant can write a single-file prototype you open in a browser. Ask for one HTML file that loads Tailwind from its CDN script, uses real content, includes a way to toggle each state, uses semantic elements, works with a keyboard and is responsive. Reuse your tokens in the theme. The utility classes are in Tailwind.

Critiquing screenshots

Multimodal assistants can read a screenshot and critique hierarchy, consistency, copy and likely usability problems. They are unreliable at exact pixel sizes, colors and contrast, and can miss small text. Give context (user, task, platform), the hex values and sizes that matter, and ask for findings tied to named heuristics with severity and a location on the screen.

Brief the model

The Slot column says where each input goes in the prompt skeleton.

InputSlotWhy it mattersExample
Design system or brand<materials>prevents a generic look"Our tokens and components: [paste]; brand font Inter; primary #1F5EFF"
Real content and data<materials>layout depends on real lengths and volumes"Client names up to 60 characters; 0–400 invoices; amounts up to 7 digits"
Evidence<materials>grounds the design in reality"Support tickets say users can't find partial payments: [paste]"
References<examples>what to borrow, specifically"Like Linear's list density; like Stripe's status badges"
Product and users<context>design follows the user, not the feature"Invoicing app for freelance designers; mostly on laptops, some phone use"
User goal and context<context>what they're trying to get done, where, how often"Check who owes money, weekly, in a 2-minute gap between client work"
Business goal and metric<context>what success means for the product"Reduce overdue invoices; metric: reminders sent per overdue invoice"
Platform and sizes<context>web, iOS, Android and breakpoints change patterns"Responsive web, 375 px to 1440 px"
Scope and states<task>stops the model designing only the happy path"The list screen only, in empty, loading, error, filtered and full states"
Constraints<requirements>tech, accessibility, localization, legal"React + Tailwind; WCAG 2.2 AA; must fit German strings (often about 30% longer)"
Non-goals<requirements>what not to design"No reporting; no multi-currency"
How it will be judged<quality_bar>the model checks heuristics and states before you dothe checks in Judge the output
Fidelity and format<output_format>what you'll do with the output"A wireframe spec in text, then a single-file HTML prototype"
How to work<process>one flow or screen at a time, with a stop to review"Spec the flow first and stop; then the screens"

What to ask for

StageNamed deliverables
Discoverresearch plan; recruiting screener; interview guide; survey draft; affinity-mapped synthesis of your notes; JTBD statements; proto-personas (labeled as assumptions); journey map
Defineproblem statement; "how might we" questions; success metrics; requirements; user stories with acceptance criteria
Structuresitemap; card-sort or tree-test plan; navigation model; user flows with error branches; state diagram
Designwireframe spec; layout spec on the grid; component inventory; state matrix; microcopy deck; design tokens
Prototypesingle-file HTML/Tailwind prototype; test tasks; a script for clicking through
Evaluateusability test plan and script; heuristic evaluation with severity; accessibility audit; design critique
Handoffspec: layout and spacing, tokens, component props and states, responsive behavior, edge cases, accessibility notes, analytics events, acceptance criteria

The prompt chain

The chain takes a problem statement to a reviewed prototype spec for one screen or flow: an intake interview, design directions, the spec, then a design review. Run stages 1 to 3 in one chat. Run stage 4 in a fresh chat, because a model reviewing its own design shares its blind spots; then build the prototype and test it with five users.

1. Interview

When you have a problem but no design: the model asks what a product designer asks before opening a design tool.

<context>
Problem: [problem, e.g. overdue invoices get buried in a list]
Product: [product, e.g. an invoicing web app for freelancers]
I'm not a designer.
</context>
 
<task>
Interview me the way a product designer would before
designing the screen or flow that solves this problem. Don't
design anything yet.
</task>
 
<requirements>
- At most 10 questions, grouped: users and task; content
  and data; platform and design system; constraints and
  success.
- For each: why the answer changes the design, and 2-3
  typical answers I can pick from.
- Ask what evidence I have (research, analytics, support
  tickets) and what to do if I have none.
- Define each design term the first time (state, breakpoint,
  design system).
</requirements>
 
<output_format>
Numbered questions under the four group headings, each
followed by "Why:" and "Typical answers:".
</output_format>
 
<process>
Ask all the questions, then stop. When I answer, write the
brief back as bullets, with the open questions that need
research.
</process>

2. Options

When the brief is agreed: the structure and interaction pattern decide most of the usability, so choose them before any screen is specified.

<materials>
[paste the brief from stage 1]
[paste evidence: research notes, tickets, analytics]
</materials>
 
<task>
Propose 2-4 materially different design directions for this
screen or flow, and recommend one.
</task>
 
<requirements>
- Directions differ in structure or interaction pattern, not
  styling: e.g. a prioritized list, a task inbox, summary
  cards, a guided wizard.
- For each: a one-paragraph description; the primary
  action; the Nielsen heuristics it serves or risks; how it
  handles empty and error states; mobile behavior; build
  effort with our components; the main risk.
- Low fidelity only: structure and behavior, no visuals.
- Recommend one for the user's main task, say what would
  change your mind, and what a five-user test should check.
</requirements>
 
<output_format>
A table: Direction | Primary action | Strengths | Risks |
Mobile | Effort. Then the recommendation in 3 sentences.
</output_format>
 
<process>
Stop after the recommendation and wait for my choice. Don't
spec screens yet.
</process>

3. Produce

When you've chosen a direction: the full prompt for a prototype spec, flow first so the path is right before the screens.

<materials>
Brief and chosen direction: [paste from stages 1-2]
Design system: [paste components and tokens, or "none"]
Real content: [paste sample records and the longest strings]
Evidence: [paste research findings, tickets, analytics]
</materials>
 
<context>
Task: [task, e.g. freelancers checking weekly who owes them]
Platform: [platform: responsive web | iOS | Android | desktop]
Breakpoints: [widths, e.g. 375, 768 and 1280 px]
Stack: [stack, e.g. React + Tailwind]
Success metric: [metric, e.g. reminders sent within 7 days]
</context>
 
<examples>
[paste or describe 1-2 reference screens, with what to borrow]
[paste or describe 1 you dislike, with why, e.g. vanity KPIs]
</examples>
 
<task>
Write the prototype spec for the chosen direction: enough
to build a clickable prototype and test it with five users.
</task>
 
<requirements>
- Flow: numbered steps (screen, user action, system
  response); decision points; error branches (invalid input,
  network failure, no permission, going back, leaving
  halfway); a Mermaid flowchart.
- Per screen at [fidelity: wireframe | mockup]: regions top
  to bottom with purpose, real content, component, priority
  and column span; one primary action; what changes on
  mobile.
- Component states: default, hover, focus-visible, active,
  disabled, loading, empty, error, success, with triggers.
- 8-point grid: spacing only from 4, 8, 12, 16, 24, 32, 48,
  64 px; smaller gaps inside groups than between them.
- WCAG 2.2 AA: text 4.5:1 (large text 3:1), non-text 3:1,
  targets at least 24x24 CSS px (44x44 on touch), reflow at
  320 px, visible focus, nothing by color alone; list every
  color pair to verify.
- Microcopy: buttons as verb + object; errors say what
  happened and how to fix it.
- Mark undecided product questions [DECISION NEEDED].
- Never invent numbers, names, quotes or sources: write
  [NEEDS SOURCE] where support is missing.
</requirements>
 
<quality_bar>
Before answering, check your draft against:
- The user's main question is answered in five seconds; the
  primary action is the most prominent element.
- Every screen has empty, loading, error and success states;
  every flow has its error branches.
- No Nielsen heuristic violation you'd rate 3 or 4.
- Accessibility is specified with numbers, not "accessible".
- Only our components and tokens, on the spacing scale.
</quality_bar>
 
<output_format>
Markdown: 1. Flow, then Mermaid. 2. Per screen: a table
(Region | Purpose | Content | Component | Priority |
Columns) and ASCII sketches for desktop and mobile. 3. State
matrix: Element | State | Trigger | Visual change (tokens) |
Copy | Screen-reader text. 4. Microcopy. 5. Color pairs to
verify. 6. Open questions.
</output_format>
 
<process>
Ask me up to 3 questions first if anything missing would
change your answer; otherwise go on. Spec the flow first and
stop for my OK, then the screens. End with a list of the
assumptions you made.
</process>

4. Review

When the spec is written: open a fresh chat, paste the brief and the spec (or prototype screenshots), and get a design review. It finds and ranks problems; it does not redesign.

<materials>
Brief: [paste]
Prototype spec or screenshots: [paste]
</materials>
 
<context>
This is a fresh chat. The spec was written in another chat;
I want a design review before I build and test it.
</context>
 
<task>
Review the spec as a heuristic evaluation plus an
accessibility and states check, and rank the fixes. Don't
redesign or rewrite it.
</task>
 
<requirements>
- Nielsen's 10 heuristics by name; each finding with its
  location, severity 0-4 (0 not a problem, 4 catastrophe)
  and the effect on the user.
- WCAG 2.2 AA: contrast pairs (say which need measuring;
  don't estimate from images), target size, focus visible
  and not obscured, keyboard path, reflow at 320 px, color
  alone, status messages.
- States: any screen or component missing empty, loading,
  error, partial or success.
- Consistency: one-off components, values off the spacing
  scale, two terms for one concept.
- Rank fixes by severity, then effort; say what each fix
  must achieve, not the new design.
</requirements>
 
<output_format>
A table: # | Location | Problem | Heuristic or WCAG criterion
| Severity | What the fix must achieve. Then the top 3 fixes,
then what to test with five users.
</output_format>
 
<process>
End with a list of the assumptions you made and what you
couldn't judge without the running prototype.
</process>

Goals and loops

In an agent that runs commands and checks its own work, such as Claude Code, the Produce stage can run until it measurably passes: /goal keeps starting turns until a condition holds, and /loop repeats a prompt or skill on an interval. The checker reads only the conversation, so every condition below names a check whose output Claude prints, the constraints that must survive, and a bound. How to write your own: Goals and loops.

TaskCompletion condition
Accessible prototype/goal npx @axe-core/cli http://localhost:5173 reports 0 violations (show its summary), every interactive element shows a visible focus ring in a Playwright screenshot, and all six states of the form render (list the screenshots); or stop after 15 turns
Component states in code/goal npx playwright test component.spec.ts passes with one test per state in the spec (default, hover, focus, disabled, loading, error), shown by its summary; no state test skipped; or stop after 15 turns
Microcopy deck/goal every string in strings.json is within its maximum length (print any over: none), and every error message states what happened and what to do next (list them); or stop after 6 turns

Loops that fit: while you iterate on a prototype, /loop 5m to rerun the axe and Playwright checks against the dev server and report regressions only.

What a checker can't judge: whether people can actually use it. Only a usability test with real users answers that; a heuristic review in a fresh chat is the next best thing.

Prompt library

One entry per deliverable. Quick is the minimum prompt that still works; Full is the skeleton filled in for that deliverable. Replace each [placeholder]: options after a colon are this sheet's vocabulary, so pick one.

Research plan and interview guide

Stage: produce · Use when: you're about to design something new, or you don't know why users struggle.

Quick

Plan research to answer
[question, e.g. why trials don't send a first invoice]: 3-5
learning goals with a method each, a 6-question screener and
a 45-minute interview guide about past behavior. Check: no leading or hypothetical questions.

Full

<materials>
[paste what we know: analytics, tickets, past research]
</materials>
 
<context>
Product: [product, e.g. an invoicing web app for freelancers]
Users: [users, e.g. trial users in their first week]
Budget: [budget, e.g. 2 weeks, 8 participants, no incentives]
Methods we can run:
[methods: interviews | usability test | survey | card sort]
</context>
 
<task>
Plan research to answer
[question, e.g. why trial users don't send a first invoice],
so we design from evidence.
</task>
 
<requirements>
- 3-5 learning goals, each with its method and why.
- A recruiting screener of 6-8 questions that excludes
  people outside the target without revealing it.
- A 45-minute interview guide: warm-up, questions about the
  last time they did the task (past behavior, not opinions),
  probes, wrap-up.
- No leading or hypothetical questions; flag any that could
  bias answers.
- Never invent numbers, names, quotes or sources: write
  [NEEDS SOURCE] where support is missing.
</requirements>
 
<quality_bar>
Before answering, check your draft against:
- Every learning goal maps to a design decision.
- Interview questions ask about specific past events ("the
  last time you…").
- The screener doesn't reveal what we're looking for.
- The plan fits the time and budget.
</quality_bar>
 
<output_format>
A table: Goal | Method | Decision it informs. Then the
screener, the interview guide with timings, and a
note-taking template.
</output_format>
 
<process>
Ask me up to 3 questions first if anything missing would
change your answer; otherwise go on. End with a list of the
assumptions you made.
</process>

Research synthesis

Stage: produce · Use when: you have raw notes from 5–10 interviews or tests and need themes.

Quick

Affinity-map these notes into themes: per theme a one-line
insight, participant IDs, two verbatim quotes and the design
implication. Use only the notes. Check: every quote appears
word for word in the notes. [paste notes, labeled by ID]

Full

<materials>
[paste notes, each labeled with a participant ID]
</materials>
 
<context>
Study: [study: interviews | usability test | survey free text]
Research question: [question, e.g. why trials stall]
Participants: [count, e.g. 8 trial users, 2 churned]
</context>
 
<task>
Synthesize the notes into themes we can design from.
</task>
 
<requirements>
- Affinity mapping: group observations into themes; per
  theme, a one-line insight, the participants it came from
  (by ID), two verbatim quotes, the design implication.
- JTBD statements ("When…, I want to…, so I can…") only
  where the notes support them.
- Surprises, contradictions between participants, open
  questions.
- Don't generalize beyond the notes. Never invent numbers,
  names, quotes or sources: write [NEEDS SOURCE] where
  support is missing.
</requirements>
 
<quality_bar>
Before answering, check your draft against:
- Every quote is verbatim and attributed.
- Counts are participants, not mentions.
- Each implication could be tested in a prototype.
</quality_bar>
 
<output_format>
A table: Theme | Insight | Participants | Quotes |
Implication. Then the JTBD statements, then surprises,
contradictions and open questions.
</output_format>
 
<process>
Ask me up to 3 questions first if anything missing would
change your answer; otherwise go on. End with a list of the
assumptions you made.
</process>

HTML/Tailwind prototype

Stage: produce · Use when: you want something clickable to show people or test with users.

Quick

Build one self-contained HTML file prototyping
[screen, e.g. the invoices list] with Tailwind's CDN script:
real content from my data, a toolbar to switch states,
semantic HTML, keyboard support. Check: list every color
pair so I can verify contrast. [paste data]

Full

<materials>
Spec: [paste the prototype spec or wireframe description]
Data: [paste records, including the longest name and a zero]
Tokens: [paste color, spacing and type tokens]
</materials>
 
<context>
For: [use: usability test | stakeholder demo | dev handoff]
Viewport range: 320 to 1440 px.
</context>
 
<examples>
[paste or describe 1-2 reference screens, with what to borrow]
[paste or describe 1 you dislike, with why, e.g. generic SaaS]
</examples>
 
<task>
Build a single self-contained HTML file prototype of
[flow, e.g. recording a partial payment].
</task>
 
<requirements>
- Tailwind from its Play CDN script; no other dependencies.
- Real content from the data; no lorem ipsum.
- A small toolbar to switch states:
  [states, e.g. default, empty, loading, error, long content].
- Semantic HTML (button, a, label, nav, main, table), a full
  keyboard path, visible focus rings, a label on every input.
- Spacing only from 4, 8, 12, 16, 24, 32, 48 px; colors only
  from the tokens.
- WCAG 2.2 AA: text 4.5:1, borders and focus 3:1, targets at
  least 24x24 px, reflow at 320 px.
- Never invent numbers, names, quotes or sources: write
  [NEEDS SOURCE] where support is missing.
</requirements>
 
<quality_bar>
Before answering, check your draft against:
- Every state in the toolbar renders and is reachable by
  keyboard.
- No div used as a button or link.
- No value off the spacing scale or outside the tokens.
- The primary action is the most prominent element in every
  state.
</quality_bar>
 
<output_format>
One HTML file in a code block. Then a table of every text and
UI color pair: foreground hex | background hex | estimated
ratio | "verify".
</output_format>
 
<process>
Ask me up to 3 questions first if anything missing would
change your answer; otherwise go on. End with a list of the
assumptions you made.
</process>

Component spec

Stage: produce · Use when: a component's design shows only its default look, or engineers need it specified to build.

Quick

Spec a [component, e.g. file upload field]: every state
(default, hover, focus-visible, active, disabled, loading,
error, success) with trigger, visual change in tokens, copy,
screen-reader text and keyboard behavior. Check: no state
relies on color alone.

Full

<materials>
Design: [paste the description, tokens or a screenshot]
</materials>
 
<context>
Component: [component, e.g. file upload field]
Platform: [platform: web | iOS | Android]
System: [system: our own | Material 3 | Apple HIG | none yet]
Content: [limits, e.g. file names up to 120 characters]
</context>
 
<task>
Write a component spec an engineer can build from without
asking me questions.
</task>
 
<requirements>
- Anatomy, variants, sizes.
- Every state with its trigger: default, hover,
  focus-visible, active, disabled, loading, empty, error
  types, success, read-only, plus any the component needs
  (e.g. drag-over, uploading with progress).
- Tokens per state, not raw values; motion tokens and
  reduced-motion behavior.
- Accessibility: native element or ARIA pattern (WAI-ARIA
  APG), keyboard behavior, accessible name, announcements.
- Content rules: max lengths, truncation, room for strings
  about 30% longer in translation.
- Edge cases; acceptance criteria as testable statements.
- Mark undefined behavior [DECISION NEEDED]. Never invent
  numbers, names, quotes or sources: write [NEEDS SOURCE]
  where support is missing.
</requirements>
 
<quality_bar>
Before answering, check your draft against:
- Every state has a trigger and a visual change in tokens.
- Focus is visible at 3:1; no state relies on color alone.
- Every acceptance criterion can pass or fail in a test.
</quality_bar>
 
<output_format>
Sections: purpose, anatomy, variants and sizes, state matrix
(State | Trigger | Visual change | Copy | Screen-reader text |
Keyboard), accessibility, content rules, edge cases,
acceptance criteria.
</output_format>
 
<process>
Ask me up to 3 questions first if anything missing would
change your answer; otherwise go on. End with a list of the
assumptions you made.
</process>

Microcopy deck

Stage: produce · Use when: an interface has placeholders like "No data", "Error" or "Submit".

Quick

Write microcopy for [screen, e.g. the invoices list]: empty,
no results, load failure, offline, no permission. Each: a
heading, one sentence on why, a button as verb + object.
Check: every error says what happened and how to fix it.

Full

<materials>
Current strings: [paste labels, buttons and error messages]
Voice guide: [paste, if you have one]
</materials>
 
<context>
Screen: [screen, e.g. the invoices list]
Users: [users, e.g. freelancers checking money between jobs]
Tone: [tone: plain | friendly | formal]
</context>
 
<examples>
[paste 1-2 messages you like, with why, e.g. names the fix]
[paste 1 you dislike, with why, e.g. "Oops!" and no fix]
</examples>
 
<task>
Write the microcopy deck for every state of this screen and
rewrite the current strings.
</task>
 
<requirements>
- States: first-use empty, no results (with the user's
  query), cleared, load failure, offline, no permission,
  success.
- Buttons as verb + object; errors say what happened, then
  how to fix it, without blame; empty states say what goes
  here, why it helps, and give one action; confirmations
  name the consequence.
- Labels in sentence case; one term per concept.
- Length: [limit, e.g. buttons under 20 characters]; leave
  room for translations about 30% longer.
- Never invent numbers, names, quotes or sources: write
  [NEEDS SOURCE] where support is missing.
</requirements>
 
<quality_bar>
Before answering, check your draft against:
- Every button names its action.
- Every error has a fix the user can do.
- One term per concept across the deck.
- Every string fits the length limit.
</quality_bar>
 
<output_format>
A table: State | Heading | Body | Button | Screen-reader
text. Then the rewritten strings: original | new | rule.
</output_format>
 
<process>
Ask me up to 3 questions first if anything missing would
change your answer; otherwise go on. End with a list of the
assumptions you made.
</process>

Usability test script

Stage: produce · Use when: you have a prototype and want to watch five people try it.

Quick

Write a moderated usability test script for
[prototype, e.g. the payment flow]: intro, 2 warm-up
questions, 5 task scenarios that don't use the UI's labels,
success criteria, neutral probes, SUS. Check: no task gives
away the answer.

Full

<materials>
Prototype: [paste the spec or a link description]
Research goals: [paste the learning goals]
</materials>
 
<context>
Format:
[format: moderated in person | moderated remote | unmoderated]
Participants: [users, e.g. 5 freelancers who invoice monthly]
Session length: [length, e.g. 30 minutes]
</context>
 
<task>
Write the test script and observation sheet so that I can
run five sessions and compare them.
</task>
 
<requirements>
- An intro that says we're testing the design, not them,
  and asks them to think aloud.
- 2 warm-up questions about past behavior.
- 5 realistic task scenarios that don't use the UI's own
  labels, each with a success criterion.
- Neutral probes ("What did you expect to happen?").
- A SUS questionnaire and a wrap-up.
- Never invent numbers, names, quotes or sources: write
  [NEEDS SOURCE] where support is missing.
</requirements>
 
<quality_bar>
Before answering, check your draft against:
- No task names the button or menu the user must find.
- Every task maps to a research goal.
- Probes are neutral; none suggests an answer.
- It fits the session length with time to spare.
</quality_bar>
 
<output_format>
The script with timings. Then an observation sheet: Task |
Success | Time | Errors | Quotes.
</output_format>
 
<process>
Ask me up to 3 questions first if anything missing would
change your answer; otherwise go on. End with a list of the
assumptions you made.
</process>

Screenshot critique

Stage: review · Use when: you're reviewing an existing screen or a generated design.

Quick

Critique the attached screenshot for [user, e.g. a freelancer]
trying to [task, e.g. find who owes money]. Table: location,
problem, Nielsen heuristic, severity 0-4, fix. Check: don't
guess contrast ratios from the image.

Full

<materials>
[paste or attach the screenshot]
Hex values and sizes: [paste the ones you know]
</materials>
 
<context>
User: [user, e.g. a freelancer between client calls]
Task: [task, e.g. find who owes money this week]
Platform: [platform: web | iOS | Android]
The screen should make [action, e.g. sending a reminder]
obvious.
</context>
 
<examples>
[paste or attach 1-2 screens that do this task well, with why]
</examples>
 
<task>
Critique the screen as a heuristic evaluation and rank what
to fix first. Don't redesign it.
</task>
 
<requirements>
- First, one sentence on what you think the screen is for
  and its primary action; if that's wrong, it's finding 1.
- Findings tied to Nielsen's 10 heuristics by name, with
  location and severity 0-4.
- Visible accessibility concerns: labels, color-only
  meaning, target sizes, text size. Say which need
  measuring; don't estimate contrast from the image.
- Comment on taste only where it affects the task.
- Never invent numbers, names, quotes or sources: write
  [NEEDS SOURCE] where support is missing.
</requirements>
 
<quality_bar>
Before answering, check your draft against:
- Every finding has a location and a named heuristic.
- Severities are consistent: 3-4 only for task blockers.
- No contrast ratio is stated without hex values.
</quality_bar>
 
<output_format>
A table: # | Location | Problem | Heuristic | Severity | Fix
direction. Then the three changes with the biggest impact.
</output_format>
 
<process>
Ask me up to 3 questions first if anything missing would
change your answer; otherwise go on. End with a list of the
assumptions you made.
</process>

Accessibility audit

Stage: review · Use when: you have a generated or hand-written prototype and want it to meet WCAG 2.2 AA.

Quick

Audit this HTML/CSS against WCAG 2.2 AA: semantics, names,
keyboard and focus order, focus visible and not obscured,
contrast pairs, target size, status messages, reflow at
320 px. Table: issue | criterion | element | fix.
Check: cite the success criterion number. [paste code]

Full

<materials>
[paste the HTML and CSS]
</materials>
 
<context>
Prototype of [screen, e.g. the invoices list]
Users include keyboard and screen-reader users.
Target: [target: WCAG 2.2 A | WCAG 2.2 AA]
</context>
 
<task>
Audit the code and give me the fixes, most severe first.
</task>
 
<requirements>
- Check: semantic elements and landmarks; heading order;
  labels and accessible names; keyboard operability and
  focus order; focus visible (2.4.7) and not obscured
  (2.4.11); contrast of the colors in the CSS, showing the
  pairs; target size (2.5.8); status messages (4.1.3);
  reduced motion; reflow at 320 px (1.4.10).
- Native HTML before ARIA.
- Say what only a manual test with a keyboard and a screen
  reader can confirm.
- Never invent numbers, names, quotes or sources: write
  [NEEDS SOURCE] where support is missing.
</requirements>
 
<quality_bar>
Before answering, check your draft against:
- Every issue cites a success criterion by number.
- Every fix is code, not advice.
- Contrast pairs come from the CSS, with hex values.
</quality_bar>
 
<output_format>
A table: Issue | Success criterion | Element | Fix (code).
Then the corrected code.
</output_format>
 
<process>
End with a list of the assumptions you made. This doesn't
replace testing with assistive technology.
</process>

Worked example

Weak prompt

Design a dashboard for my SaaS app.

What's wrong

  • No user, task or frequency, so "dashboard" means the average one: four KPI cards with invented metrics, a line chart and a recent-activity table.
  • No data or content: lorem ipsum and perfect eight-letter names, so the layout breaks on real data.
  • No design system: purple gradients, a sidebar of ten items and one-off styles.
  • No states: no empty, loading or error designs.
  • No accessibility requirement: gray-on-white text that fails contrast.
  • No decision to support, so nothing on the screen helps anyone act.

Strong prompt

<materials>
Support tickets: [paste the tickets about overdue invoices]
Components: [paste our component list]
</materials>
 
<context>
The home screen of an invoicing web app for solo freelance
designers. They open it about once a week, often on a laptop
between client work, to answer one question: who owes me
money, and what should I chase today? Data per user: 0-400
invoices; statuses draft, sent, viewed, paid, overdue;
amounts up to $250,000; client names up to 60 characters.
Current pain: overdue invoices are buried in a long list.
</context>
 
<task>
Write a low-fidelity wireframe spec for the home screen, so
we can test its structure before any visual design.
</task>
 
<requirements>
- One primary action, and why.
- Regions in priority order with real labels and sample
  data; overdue invoices surface without alarming people
  who have none.
- States: new account (no invoices), all paid, 12 overdue,
  loading, failed to load.
- Desktop (1280 px, 12 columns) and mobile (375 px).
- Our components only; WCAG 2.2 AA; no charts unless they
  answer the weekly question better than a list.
- Never invent numbers, names, quotes or sources: write
  [NEEDS SOURCE] where support is missing.
</requirements>
 
<quality_bar>
Before answering, check your draft against:
- The weekly question is answered in five seconds.
- Every state above is specified.
- No Nielsen heuristic violation of severity 3 or 4.
- Status is never shown by color alone.
</quality_bar>
 
<output_format>
A table: Region | Purpose | Content | Component | Priority |
Columns. ASCII sketches for desktop and mobile. Then the
states, then 3 alternative layouts in one line each.
</output_format>
 
<process>
Ask me up to 3 questions first if anything missing would
change your answer; otherwise go on. End with a list of the
assumptions you made.
</process>

What came back

The response, illustrative, abridged:

Primary action: "Send reminders" in the overdue banner. The
weekly job is chasing overdue money, so one click reminds
every overdue client.
 
Region          Content (sample)                   Priority
Overdue banner  "3 invoices overdue - $4,180"       1
                [Send reminders]
Needs action    client, invoice #, amount, days     1
                overdue; sorted by days overdue
Recent          last 10 invoices, all statuses      2
Summary         paid this month, outstanding        3
 
Desktop: banner across 12 columns; list 8, summary 4.
Mobile: banner, then the list as cards; summary collapses.
 
States
- New account: "No invoices yet. Create one to start getting
  paid." [Create invoice]
- All paid: banner hidden; "Nothing overdue" in the summary.
- 12 overdue: banner shows count and total; list pages at 10.
- Loading: skeleton rows the height of real rows.
- Failed to load: "Couldn't load invoices. Check your
  connection and try again." [Retry]; last data kept, dimmed.
Overdue rows: clock icon + "12 days overdue" text + red.
 
Alternatives: a single sorted list with no banner; a weekly
"chase list" checklist; a calendar of due dates.
Assumptions: reminders are emails; one currency per account.

How an expert judged it

Against the <quality_bar>:

  • Five-second test: the banner and the sorted list answer "who owes me" at a glance. Pass.
  • States: all five are specified, and the failure state keeps the last data instead of a blank screen. Pass.
  • Color alone: overdue rows carry an icon and text as well as red (WCAG 1.4.1). Pass.
  • The flaw: the primary action sends every reminder in one click. No preview, no per-client choice and no undo. That breaks heuristic 5 (error prevention) and heuristic 3 (user control and freedom), and the cost is real: a reminder to a client you spoke to this morning, or who paid by bank transfer yesterday, damages the relationship the app exists to protect. Severity 3 (major). The model also justified it with the task ("the weekly job is chasing"), which is why it reads as plausible.
  • The spec otherwise passes, so the follow-up changes only this.

The follow-up

Change only the primary action. Replace bulk "Send reminders"
with "Review reminders": a panel listing each overdue client
with amount, days overdue and last contact, a checkbox per
client (all checked), an email preview, and a confirm button
that names the count ("Send 3 reminders"). Add a 10-second
undo after sending. Spec its states (none selected, sending,
sent, failed for one client) and keep everything else.

Judge the output

CriterionGoodRed flag
Task fitthe primary action and the user's question are obvious in five secondseverything is equally prominent
Real contentrealistic data, long names, zeros and large numberslorem ipsum; every name eight letters long
Statesempty, loading, error, partial and success designedonly the happy path
Consistencyuses your components, tokens and spacing scalenew one-off styles; random spacing values
Hierarchysize, weight, space and color used in that ordercolor and borders doing all the work
Accessibilitycontrast pairs listed and verified; keyboard path; labels; targetsgray placeholder-as-label; icon-only buttons with no name
Responsivenessa deliberate mobile layoutthe desktop layout squeezed
Copyverbs on buttons; errors with fixes; one term per concept"Submit", "Error occurred", "OK"
Feasibilitybuildable with your stack and componentscustom widgets for everything

The same checks, condensed, are in every <quality_bar> on this sheet; the full review is stage 4 of the chain, in a fresh chat. Two quicker follow-ups:

Check this design against Nielsen's 10 heuristics with
severity 0-4. Which states are missing? Which elements could
go with no loss for the user's main task?
[paste the design or spec]
List every text and UI color pair in this design with its
hex values. I'll verify contrast; mark any pair you think is
close to 4.5:1 (text) or 3:1 (borders, icons, focus).

Pitfalls

PitfallWhy it happensFix
Generic template lookno system, brand or references suppliedattach tokens, components and two reference screens
Invented research ("users said…")the model fills gaps with plausible quotessynthesize only real notes; label assumptions
Happy path onlyprompts describe the ideal caselist required states and edge cases every time
Lorem ipsum and perfect datano content suppliedgive real content and data ranges
Wrong contrast claimsmodels miscalculate, and can't measure imagesverify hex pairs in a checker
div soup in prototypesgenerated code favors appearancerequire semantic HTML and keyboard support; audit
Hover-only actionsdesktop biasevery action reachable by touch and keyboard
Color as the only signalquick status stylingan icon or text with every color
Too much at once"design the whole app"one flow or screen per request
Polishing before testinghigh fidelity too earlywireframe, test with five users, then style
Regenerating good work awaybroad follow-up promptschange one thing per prompt; say what to keep
Trusting tool claimsfeatures described from old training datacheck the current docs of the tool you use

References