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 for | Expert thinks about |
|---|---|
| "a nice-looking dashboard" | who opens it, how often, and what decision they make from it |
| a screen | the flow the screen sits in, including the way in, the way out and what goes wrong |
| a design with placeholder text | real content and data, at realistic lengths, because they shape the layout |
| polish | the right fidelity for the question: sketch to explore, wireframe to structure, prototype to test |
| a custom look | the design system: reuse components and tokens; consistency is itself usable |
| the happy path | every 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
| Term | What it means | Say it like |
|---|---|---|
| User research | studying real users' needs, behavior and context | "Plan two weeks of research to learn why trials don't convert" |
| Persona | a 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 interview | a one-to-one conversation about past behavior and context | "Write an interview guide about past behavior, not opinions" |
| Usability test | watching 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 task | share of users who complete a task / how long it takes | "Define success criteria for each task" |
| SUS | System Usability Scale: a standard 10-question usability survey; scores around 68 are about average | "Add a SUS questionnaire after the tasks" |
| Heuristic evaluation | experts reviewing a UI against usability principles | "Evaluate this against Nielsen's 10 heuristics with severity 0–4" |
| Affinity mapping | grouping research observations into themes | "Cluster these 80 notes into themes; quote evidence for each" |
| Journey map | a 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" |
| Sitemap | a diagram or outline of all screens or pages and their hierarchy | "Give me the sitemap as an indented outline" |
| Card sorting | users group and name content to reveal their mental model | "Plan an open card sort with 40 cards from this feature list" |
| Tree testing | users find items in a text-only hierarchy to validate IA | "Write 8 tree-test tasks for this navigation" |
| User flow | the steps and decisions a user takes to complete a task | "Draw the user flow as a Mermaid flowchart, including error branches" |
| Wireflow | wireframes connected by arrows showing the flow | "Describe a wireflow: one line per screen and what triggers the next" |
| Happy path / edge case | the ideal route / unusual or failure conditions | "List edge cases: no data, 10,000 rows, a name of 80 characters" |
| Wireframe | a low-fidelity layout of structure and content, with no visual styling | "Grayscale wireframe: boxes and real labels, no colors" |
| Mockup | a high-fidelity static picture of the final look | "A mockup in our brand colors and type" |
| Prototype | an interactive model of a flow, at low or high fidelity | "A clickable HTML prototype of the three onboarding screens" |
| Layout grid | columns, gutters (gaps) and margins that align content | "Lay it out on a 12-column grid with 24 px gutters" |
| Breakpoint | a 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 scale | a fixed set of font sizes, often generated by a ratio | "A type scale from 12 to 36 px for a dense app" |
| Visual hierarchy | the order in which the eye notices things, set by size, weight, color and space | "Make the primary action the most prominent element" |
| Contrast ratio | luminance difference between two colors, from 1:1 to 21:1 | "Check every text and background pair against 4.5:1" |
| Component / variant | a reusable UI element / one version of it (size, style) | "Button variants: primary, secondary, ghost, destructive" |
| State | how a component looks and behaves in a condition: hover, focus, active, disabled, loading, error | "Specify all states for this input" |
| Focus indicator | the visible outline showing which element has keyboard focus | "A 2 px focus ring with 3:1 contrast, keyboard only" |
| Design system | the shared components, tokens, patterns and guidelines for a product | "Use our design system's components only: [list]" |
| Design token | a named design decision (color, space, type, radius) stored as data | "Define semantic tokens: color-text-primary, color-surface-raised" |
| Pattern | a proven solution to a recurring problem (a form, a wizard, a data table) | "Which pattern fits bulk editing: inline, modal or side panel?" |
| Progressive disclosure | showing advanced options only when needed | "Hide advanced settings behind a disclosure" |
| Affordance / signifier | what an element lets you do / the visual cue that tells you so | "Make the drag handle's signifier visible without hover" |
| Empty state | what a screen shows when there's no data yet | "Write the first-use empty state with one primary action" |
| Skeleton screen | gray 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 target | the tappable area of a control, which can be larger than what's drawn | "Minimum 44×44 px touch targets on mobile" |
| WCAG / ARIA | Web Content Accessibility Guidelines / attributes that expose roles and states to assistive technology | "Meet WCAG 2.2 AA; use native HTML before ARIA" |
| Handoff | delivering a design to engineers with everything needed to build it | "Write a handoff spec: layout, tokens, states, edge cases" |
Research
| Method | Answers | Ask the model for | Watch out |
|---|---|---|---|
| User interviews | needs, context, language, past behavior | a screener, an interview guide, a synthesis of your notes | it will happily invent "user quotes"; only synthesize real notes |
| Usability testing | can people complete the tasks, and where they struggle | test plan, tasks, script, observation sheet, findings report | tasks must be realistic and not name the UI's labels |
| Surveys | how many, how often | a draft questionnaire and analysis plan | leading questions; surveys show what, not why |
| Card sorting / tree testing | how users group and find things | the card list, tasks, analysis of results you paste | — |
| Analytics and tickets | where users drop off or get stuck | a summary and hypotheses from data you paste | correlation is not cause |
| Heuristic evaluation | known usability problems, cheaply | a severity-rated review of screens or a prototype | not a substitute for users |
| JTBD | what progress users want and what they "hire" instead | job statements, switch-interview questions | jobs come from interviews, not imagination |
| Personas and journey maps | shared understanding of user types and journeys | drafts built from your research | without 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.
Wireframes, mockups and prototypes
| Artifact | Shows | Answers | Get it from AI by |
|---|---|---|---|
| Sketch | rough 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.
Visual foundations
| Topic | Rule of thumb | Say it like |
|---|---|---|
| Layout grid | 12 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" |
| Spacing | a 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 size | body 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 length | about 45–75 characters per line for body text | "Cap text columns at 65ch" |
| Fonts | one or two families, three or four weights | "Inter only; weights 400, 500, 600" |
| Color roles | neutrals for most of the UI, one primary, semantic colors for success, warning, error, info | "Color only for meaning and the primary action" |
| Color alone | never 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" |
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:
| State | Specify | Say it like |
|---|---|---|
| Default | the resting look | "Default uses surface and border tokens" |
| Hover | a subtle change, pointer devices only | "Hover only where hover exists; never hide actions behind it" |
| Focus visible | a clear outline for keyboard users, 3:1 contrast | "A 2 px focus ring on keyboard focus only" |
| Active / pressed | feedback on press | "Pressed darkens one step" |
| Selected / checked | chosen, not by color alone | "Selected rows get a check icon and a background" |
| Disabled | unavailable; ideally with a reason | "Explain why it's disabled in helper text" |
| Loading | work in progress, size stays stable | "Button keeps its width and shows a spinner; prevent double submit" |
| Empty | nothing yet: explain and offer the next action | "First-use empty state: what goes here, why, one button" |
| Error | what failed and how to fix it, next to the cause | "Inline error under the field, linked for screen readers" |
| Success | brief confirmation | "Toast: 'Invoice sent'; announced to screen readers" |
| Skeleton | placeholder shapes that match the final layout | "Skeleton rows the same height as real rows" |
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
| Pattern | Expert rules | Ask for |
|---|---|---|
| Forms | visible 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" |
| Navigation | few 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" |
| Onboarding | show 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 tables | right-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" |
| Dialogs | use 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" |
| Feedback | respond 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):
| # | Heuristic | Ask the model to check |
|---|---|---|
| 1 | Visibility of system status | does the user always know what's happening? |
| 2 | Match between system and the real world | are labels in the users' language? |
| 3 | User control and freedom | is there undo, cancel, back? |
| 4 | Consistency and standards | same thing, same name, same look; platform conventions |
| 5 | Error prevention | are errors designed out before they're messaged? |
| 6 | Recognition rather than recall | are options visible rather than remembered? |
| 7 | Flexibility and efficiency of use | are there shortcuts for experts? |
| 8 | Aesthetic and minimalist design | does every element earn its place? |
| 9 | Help users recognize, diagnose and recover from errors | plain-language cause and fix? |
| 10 | Help and documentation | is 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
| Element | Rule | Example |
|---|---|---|
| Button | verb plus object | "Send invoice", not "Submit" |
| Error | what happened, then how to fix it; no blame | "Card expired. Use another card or update the date." |
| Empty state | what goes here, why it helps, one action | "No invoices yet. Create one to start getting paid." |
| Confirmation | name the consequence and the action | "Delete 3 invoices? This can't be undone." / "Delete invoices" |
| Labels | short nouns, sentence case | "Due date" |
| Consistency | one term per concept | always "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 at | Weak at | Prompt for it |
|---|---|---|
| fast layout exploration | a generic "SaaS template" look | attach your tokens, components and two reference screens |
| working prototypes for tests | accessibility (missing labels, focus, contrast) | require WCAG 2.2 AA and semantic HTML; audit the output |
| boilerplate components | consistent spacing and states | name the spacing scale and every state |
| realistic-looking data | believable edge cases | give 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.
| Input | Slot | Why it matters | Example |
|---|---|---|---|
| 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 do | the 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
| Stage | Named deliverables |
|---|---|
| Discover | research plan; recruiting screener; interview guide; survey draft; affinity-mapped synthesis of your notes; JTBD statements; proto-personas (labeled as assumptions); journey map |
| Define | problem statement; "how might we" questions; success metrics; requirements; user stories with acceptance criteria |
| Structure | sitemap; card-sort or tree-test plan; navigation model; user flows with error branches; state diagram |
| Design | wireframe spec; layout spec on the grid; component inventory; state matrix; microcopy deck; design tokens |
| Prototype | single-file HTML/Tailwind prototype; test tasks; a script for clicking through |
| Evaluate | usability test plan and script; heuristic evaluation with severity; accessibility audit; design critique |
| Handoff | spec: 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.
| Task | Completion 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
| Criterion | Good | Red flag |
|---|---|---|
| Task fit | the primary action and the user's question are obvious in five seconds | everything is equally prominent |
| Real content | realistic data, long names, zeros and large numbers | lorem ipsum; every name eight letters long |
| States | empty, loading, error, partial and success designed | only the happy path |
| Consistency | uses your components, tokens and spacing scale | new one-off styles; random spacing values |
| Hierarchy | size, weight, space and color used in that order | color and borders doing all the work |
| Accessibility | contrast pairs listed and verified; keyboard path; labels; targets | gray placeholder-as-label; icon-only buttons with no name |
| Responsiveness | a deliberate mobile layout | the desktop layout squeezed |
| Copy | verbs on buttons; errors with fixes; one term per concept | "Submit", "Error occurred", "OK" |
| Feasibility | buildable with your stack and components | custom 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
| Pitfall | Why it happens | Fix |
|---|---|---|
| Generic template look | no system, brand or references supplied | attach tokens, components and two reference screens |
| Invented research ("users said…") | the model fills gaps with plausible quotes | synthesize only real notes; label assumptions |
| Happy path only | prompts describe the ideal case | list required states and edge cases every time |
| Lorem ipsum and perfect data | no content supplied | give real content and data ranges |
| Wrong contrast claims | models miscalculate, and can't measure images | verify hex pairs in a checker |
div soup in prototypes | generated code favors appearance | require semantic HTML and keyboard support; audit |
| Hover-only actions | desktop bias | every action reachable by touch and keyboard |
| Color as the only signal | quick status styling | an icon or text with every color |
| Too much at once | "design the whole app" | one flow or screen per request |
| Polishing before testing | high fidelity too early | wireframe, test with five users, then style |
| Regenerating good work away | broad follow-up prompts | change one thing per prompt; say what to keep |
| Trusting tool claims | features described from old training data | check the current docs of the tool you use |
References
- UX/UI design principles: this site's sheet with the numbers, CSS and checklists
- Nielsen Norman Group: 10 usability heuristics (opens in a new tab) and How to conduct a heuristic evaluation (opens in a new tab): the standard critique framework
- Nielsen Norman Group: User interviews 101 (opens in a new tab), Personas (opens in a new tab), Low vs high fidelity prototypes (opens in a new tab), Error message guidelines (opens in a new tab): research and design basics
- Harvard Business Review: Know your customers' "jobs to be done" (2016) (opens in a new tab): the JTBD idea from Christensen and colleagues
- W3C: WCAG 2.2 (opens in a new tab), What's new in WCAG 2.2 (opens in a new tab) and How to meet WCAG (quick reference) (opens in a new tab): the accessibility standard
- W3C Understanding docs: Contrast (minimum) (opens in a new tab), Non-text contrast (opens in a new tab), Target size (minimum) (opens in a new tab)
- WAI-ARIA Authoring Practices Guide (opens in a new tab): keyboard and ARIA patterns for widgets
- WebAIM contrast checker (opens in a new tab): verify color pairs
- Material Design 3 (opens in a new tab) and Apple Human Interface Guidelines (opens in a new tab): platform components and conventions
- Design Tokens Community Group (opens in a new tab): the token file format (first stable version, October 2025)
- GOV.UK Design System (opens in a new tab): well-tested patterns for forms and errors
- Laws of UX (opens in a new tab): Fitts, Hick, Jakob and other laws with sources
- Tailwind CSS: Play CDN (opens in a new tab): the one-script setup for prototypes
- Figma Help: Explore Figma Make (opens in a new tab): what Figma's prompt-to-app tool does today
- Mermaid (opens in a new tab): text syntax for flowcharts and state diagrams