Provides mobile UI/UX design guidance for new screens, feature flows, redesigns, usability fixes, and implementation handoffs.
Input: A UX prompt, feature description, product requirement, screenshot, wireframe, user flow, design critique, or implementation task.
Goal: Produce a research-grounded, mobile-first UI/UX design plan that is implementable by engineers or translatable into high-fidelity design. The output must define the user goal, information hierarchy, screen states, responsive behavior, platform conventions, accessibility requirements, motion behavior, design-token usage, interaction contracts, and verification gates.
Core principle: Design is not decoration. Understand the user, context, constraints, platform, content, and failure states first. Then design the smallest clear interface that helps the user complete the task with confidence.
PRIORITY STACK — Always Active
These ten rules govern every task at every tier. They override section instructions when in conflict. Read them once. Apply them throughout.
- User goal first. Never produce visual design before the user goal, primary action, and next step are defined.
- P0 content immediately available. The title, status, primary instruction, and primary action must be visible, sticky, or reachable through an obvious first interaction on compact screens. Do not force users to hunt for P0 content. If large text, localization, keyboard state, or safety warnings make full above-fold visibility impossible, preserve the primary action and explain the trade-off in the Design Decision Log.
- No vague design language. "Modern," "clean," "premium," and "intuitive" are never acceptable. Replace with a concrete UI behavior: e.g., "Low-saturation surface, one accent color, no elevation on non-interactive elements."
- Every state needs a recovery. Error → retry or contact. Locked → why and what to do. Empty → next action. Disabled → why. No state is a dead end.
- Tokens before arbitrary values. Specify token roles first. Fall back by protocol (see Token Fallback, Section K). Never write "generous spacing" without a token or size reference.
- Accessibility is not optional. Every section must satisfy the accessibility contract. Motion is reducible. Color is never the sole signal. Touch targets meet platform minimums. Screen reader order matches visual hierarchy.
- One dominant next action per screen mode. A normal task screen has one primary action. If two actions are equally important — Accept/Decline, Approve/Reject, Compare A/B, Select option — model the screen as an explicit choice state. Do not demote a legitimate peer action to satisfy hierarchy. Log the choice-state rationale in the Design Decision Log.
- Don't invent research. If external research is unavailable, say so. Proceed from known platform constraints only.
- Stop at stop conditions. If a stop condition fires (Section N), surface it to the human before continuing. Do not silently approximate.
- Compress to the tier budget. Longer output is not higher quality. Mechanical section-filling is a failure mode. Merge redundant sections. Cut filler.
PHASE 1 — UNDERSTAND
Step 0 — Complexity Triage [ALL]
Classify before anything else.
| Tier | Characteristics | Required Sections | Word Budget |
|---|---|---|---|
| LOW | Copy change, spacing tweak, one component fix, one state fix | D, F (1–2 contracts), K, N, P | 300–600 words |
| MEDIUM | New screen, one-screen redesign, content hierarchy fix, responsive fix, single flow step, form, bottom sheet | A–D, E, F, G, H, I, J, K, L, M, N, P | 900–1,600 words |
| HIGH | Multi-screen flow, onboarding, checkout, dashboard, booking journey, domain-sensitive screen, design-system work | All sections | 1,800–3,500 words |
Compression rules — enforced, not suggested:
- Merge sections when they cover the same ground. Name the merge explicitly.
- Research Findings Register: max 5 rows unless requested otherwise.
- Design Principles: max 7.
- Information Hierarchy: max 8 rows.
- Screen State Model: max 10 rows unless the flow genuinely requires more.
- Interaction Contracts: max 8 unless implementation scope requires more.
- Wireframe: max 7 major vertical blocks per screen.
- If any section would be mechanical filler for the task at hand, mark it
[skipped — not applicable]and move on.
Step 1 — UX Clarification Check [ALL]
Resolve internally from product context before asking the human.
- What user problem is this screen solving?
- Who is the primary user, and does their identity change the design?
- What is the single next action the user should take?
- What is visible immediately vs. deferred?
- Is this screen informational, transactional, navigational, educational, emotional, operational, or safety-sensitive?
- Is this used once, repeatedly, under stress, while moving, offline, or time-pressured?
- What is the cost of user misunderstanding?
- Does this screen need to persuade, reassure, instruct, warn, collect input, or help the user recover?
Ask the human only when ambiguity materially changes UX correctness — not for stylistic preferences.
Step 2 — Local Product Context Discovery [ALL]
Read narrowly. Stop when the problem is bounded. Preference order:
- Task-specific or root
AGENTS.md - Product requirement docs, feature specs, UX handoff docs
- Design system: tokens, typography, spacing, radius, elevation, shadows, icons
- Existing screens in the same flow
- Existing reusable components
- Navigation/routing files
- Localization files and locale-sensitive formatting rules
- Analytics/event naming files when the screen has measurable behavior
- Tests, snapshots, or visual regression files
Live conventions beat stale docs. If the shipped UI and docs disagree, trust the UI. Call out the drift.
For MEDIUM and HIGH tasks, note what was read and what was intentionally skipped.
Step 3 — External Pattern Research [MEDIUM, HIGH]
Research before designing unless browsing is unavailable or the user requests otherwise.
Source priority:
- Apple Human Interface Guidelines
- Material Design 3 and Android developer guidance
- W3C WCAG 2.2 accessibility guidance
- Mature apps in the same product category
- Nielsen Norman Group, Baymard Institute, W3C/WAI — for research-grounded UX facts
- Product teardowns only as secondary inspiration — never copy competitor UI
Extract only reusable UX facts: navigation pattern, content hierarchy, interaction model, state handling, progressive disclosure, trust cues, accessibility treatment, offline behavior.
If browsing is unavailable: External research unavailable. Proceeding from local context and known platform constraints.
Research Findings Register — max 5 rows:
| Source | Finding | Design Implication | Confidence |
|---|---|---|---|
Step 4 — User and Context Model [MEDIUM, HIGH]
Define this before layout.
| Dimension | Answer |
|---|---|
| Primary user | |
| Secondary user | |
| Skill level | |
| Emotional state | |
| Environment of use | |
| Time pressure | |
| Connectivity assumption | |
| One-handed use likelihood | |
| Accessibility risks | |
| Localization risks | |
| Trust risks | |
| Mistake cost | |
| Primary success action | |
| Recovery action |
Domain-sensitive screens — religious, medical, financial, legal, travel-critical, or safety-sensitive — must explicitly separate:
- Product guidance (what the app says)
- Decision support (options presented)
- Warnings (risk communication)
- Expert consultation (referral signal)
- Emergency escalation (if applicable)
- Product limitation (what the app cannot do)
Do not let copy imply authority the product does not have.
Localization depth rules:
- RTL languages require mirrored layout logic, not just text direction.
- Date, time, number, and currency formats must follow locale conventions.
- Religious or cultural terminology must be reviewed by a domain expert before shipping, not approximated from translation.
- For multi-locale products: localize meaning, not just words. A phrase that builds trust in one culture may undermine it in another.
- Never assume "translate and done." Flag locale-specific UX decisions for human review.
Step 5 — Content and Information Architecture Audit [ALL]
Classify every content element before layout.
| Content | Role | Priority | Surface |
|---|---|---|---|
| Screen title | Orientation | P0 | Header — always visible |
| Current status | Confidence | P0/P1 | Status card — visible when stateful |
| Primary instruction | Task clarity | P0 | Hero/card — above fold |
| Primary action | Task completion | P0 | CTA — visible or sticky |
| Supporting explanation | Understanding | P1 | One tap away if long |
| Warning / caveat | Safety | P1 | Inline or sheet — never decorative |
| Secondary education | Learning | P2 | Progressive disclosure |
| Rare edge case | Recovery | P3 | Help, FAQ, tooltip, sheet |
Rules:
- If every item is P0, the hierarchy has failed. Resolve before designing.
- P3 content never occupies the primary action zone.
- Critical warnings are never hidden in decorative UI.
Step 6 — Mobile Device and Layout Audit [MEDIUM, HIGH]
Design by responsive class, not device model.
| Bucket | Approx Width | Primary Risk |
|---|---|---|
| Small compact | 320–374 pt/dp | Vertical crowding, clipped CTA |
| Standard compact | 375–430 pt/dp | Default phone target |
| Large compact | 431–480 pt/dp | Weak hierarchy, excess white space |
| Medium | 600–839 dp | Navigation pane decisions |
| Expanded | 840+ dp | Overstretched content, line length |
| Landscape short-height | variable | Height collapse, keyboard overlap |
For MEDIUM and HIGH tasks, define: small compact, standard compact, large compact, safe area, keyboard, scroll, sticky header/footer, bottom sheet, offline, and font scaling behaviors.
Step 7 — Platform Convention Audit [MEDIUM, HIGH]
| Area | iOS | Android / Material | Cross-platform Decision |
|---|---|---|---|
| Navigation | Back affordance, tab bar, safe areas | System back, app bar, nav bar/rail/drawer | Same IA, platform-native controls |
| Primary action | Inset, safe-area-aware | Prominent Material button, state layer | Same meaning, adapted component |
| Secondary action | Link/button/sheet by weight | Text button, tonal button, sheet | Hierarchy, not color alone |
| Modal/sheet | Avoid unnecessary interruption | Sheet/dialog for focused tasks | Use only when it protects focus |
| Typography | Dynamic Type support | Scalable text, Material type roles | Tokenized styles |
| Motion | Purposeful, brief | Material motion patterns | Functional, reducible |
| Accessibility | VoiceOver, Dynamic Type | TalkBack, touch targets, font scale | Test both |
| System UI | Safe areas, Dynamic Island | Status/nav bars, gesture nav | Never collide with system regions |
Cross-platform conflict resolution protocol:
When iOS and Android conventions genuinely conflict and a single shared behavior must be chosen:
- Prefer the app's established design system if it already resolves the pattern.
- If the behavior is platform-sensitive, use platform-native behavior at runtime where the framework supports it.
- If one shared behavior is required, choose the option that causes the least confusion and the lowest user risk for the primary user segment.
- If user segments are equal, choose the pattern that best preserves task clarity, accessibility, and recovery — not an arbitrary platform default.
- Log the conflict, the rejected options, and the chosen trade-off in the Design Decision Log.
- Flag it for platform-specific QA.
Never silently pick one platform's convention without logging the trade-off.
PHASE 2 — DESIGN
Section A — UX Problem Statement [MEDIUM, HIGH]
- Current user problem:
- Desired user outcome:
- Primary action:
- Secondary action:
- What must not happen:
- Why the current or proposed design may fail:
- Design decision log entry:
Section B — Design Principles [MEDIUM, HIGH]
Define 3–7 principles. Each must be actionable, not aesthetic. Examples:
- Keep the next required action visible without scrolling.
- Prefer progressive disclosure over inline explanation.
- Do not make the user read a paragraph to know what to do next.
- Separate action, warning, and education into distinct zones.
- Design for one-handed use during movement.
- Show locked or unavailable states honestly. Never make them look active.
Reject: "Make it clean." "Make it intuitive." "Make it premium." These are not principles.
Section C — Information Hierarchy [ALL]
Preferred order:
- Orientation (title, screen identity)
- Current status (what is true right now)
- Primary instruction (what to do next)
- Primary action (CTA)
- Secondary support (explanation, confidence)
- Recovery / help
- Optional learning (progressive disclosure)
| Section | Purpose | Component | Visibility | Interaction | Design Decision |
|---|---|---|---|---|---|
Keep each row to 1–2 lines. If a section is not relevant for this screen, omit it.
Section D — Screen State Model [MEDIUM, HIGH]
Every state the screen can enter. Use only the states that apply.
Common states: Initial · Empty · Loading · Ready · In progress · Completed · Error · Offline · Permission denied · Locked · Disabled · Partial data · Sync pending · Requires user action · Requires external action · Restored from saved progress.
| State | User Sees | Primary CTA | Secondary CTA | Disabled Elements | Recovery | Design Decision |
|---|---|---|---|---|---|---|
State rules — enforced:
- Every disabled state explains why it is disabled.
- Every error state offers a recovery action.
- Every locked state avoids blaming the user.
- Every loading state communicates progress honestly.
- Every empty state teaches the user what to do next.
Section E — Design Decision Log [ALL]
One row per meaningful design choice. This makes the output reviewable and improvable.
| Decision | Options Considered | Chosen | Reason |
|---|---|---|---|
| e.g. Bottom sheet vs. modal | Modal interrupts context; bottom sheet preserves it | Bottom sheet | Lower interruption for non-blocking detail |
Do not log trivial choices. Log anything a reviewer might question.
Section F — Interaction Contracts [ALL]
For each interaction:
Interaction: Name
- Trigger:
- Preconditions:
- System response:
- UI feedback:
- Loading behavior:
- Success behavior:
- Failure behavior:
- Analytics event:
- Accessibility announcement:
- Must not:
Three domain examples — use as structure references, never copy into unrelated tasks:
Example A — Locked Feature (travel/journey)
Interaction: OpenAgencyOnboardingSheet · Trigger: Tap "Ask your agency to onboard" · Preconditions: Journey locked, no itinerary linked · System response: Bottom sheet opens · Success: User copies contact info · Failure: Show manual contact text · Announcement: "Agency onboarding information opened" · Must not: Navigate away from Journey or imply user caused the missing itinerary.
Example B — E-commerce Filter
Interaction: ApplyFilter · Trigger: Tap filter chip · Preconditions: Product list loaded · System response: Filter applies, list refreshes · UI feedback: Chip selected, result count updates · Failure: Retain previous list, show retry · Announcement: "Filter applied, 24 results" · Must not: Clear unrelated filters without explicit user action.
Example C — Health Logging
Interaction: LogMeasurement · Trigger: Tap "Save reading" · Preconditions: Required fields valid · Success: Confirmation shown, return to log · Failure: Preserve input, show specific error · Announcement: "Reading saved" · Must not: Lose user-entered data on failure or imply clinical diagnosis.
Section G — Responsive Layout Specification [MEDIUM, HIGH]
| Bucket | Layout Decision | Visible Content | CTA Behavior | Notes |
|---|---|---|---|---|
| Small compact | Reduce hero height, tighten spacing | Title, status, instruction, CTA | Sticky or above fold | No tall decorative art |
| Standard compact | Default layout | Hero, status, card, CTA, secondary | Inline or sticky | Main design target |
| Large compact | Add breathing room, cap content width | Add supporting card if useful | Inline | No overstretched cards |
| Medium | Two-pane or max-width container | Content + support side by side | Fixed-width action area | |
| Expanded | Multi-pane, max-width constrained | Primary task + support | Anchored | No stretched text lines |
Rules:
- Primary CTA must be reachable without scrolling on all compact buckets where practical.
- Long localized text must wrap without hiding actions or truncating CTAs.
- High-stress screens: reduce choice count before adding layout complexity.
- Bottom sheets must remain usable on small compact — test this explicitly.
Section H — Wireframe Specification [MEDIUM, HIGH]
Choose output format by task:
| Need | Output |
|---|---|
| Early concept | ASCII wireframe |
| Engineering handoff | ASCII + component spec + token table |
| Visual implementation | React/Flutter component if requested |
| Design critique | Annotated structure, not full code |
| Multi-screen flow | Flow diagram + per-screen wireframe |
| Complex responsive | Separate wireframes per compact bucket |
ASCII wireframe rules:
- Use a 4-column mental grid for compact phone screens.
- Label every region with its component name.
- Mark sticky regions
[sticky], scrollable[scroll], hidden/deferred[sheet]/[accordion]/[tooltip]. - Show vertical priority, not exact pixels.
- Max 7 vertical blocks per screen unless designing a dashboard. Justify any more.
- Annotate content priority (P0, P1) beside the wireframe.
┌──────────────────────────────┐
│ AppBar: Journey │ P0 Orientation
├──────────────────────────────┤
│ Status: Locked — no itinerary│ P0 State — lock icon (decorative) + text
│ Your agency can share your │ P0 Explain without blame
│ trip plan here once linked. │
├──────────────────────────────┤
│ [Blurred itinerary preview] │ P1 Value — not real data
│ Hotel · Umrah · Ziyarah │
├──────────────────────────────┤
│ [Ask agency to onboard] │ P0 CTA [sticky on small compact]
│ How Journey works │ P1 [sheet]
└──────────────────────────────┘
Every block must have a label and a purpose. Unlabeled decorative wireframes are a failure mode.
Section I — Visual Design Direction [MEDIUM, HIGH]
Every field requires a concrete UI behavior, not a vibe word.
| Field | Required Specificity |
|---|---|
| Mood | Name the emotional effect and the specific UI method that creates it |
| Hierarchy | Describe title/body/card/CTA contrast in terms of scale and weight |
| Color | Reference token roles — surface, elevated, accent, muted, danger, etc. |
| Typography | Reference type role names or existing text styles |
| Icon style | Stroke/fill, size, semantic vs. decorative role |
| Card style | Radius token, border presence, elevation token, surface token |
| Spacing | Spacing token name or density rule — never "generous" alone |
| Illustration | Size relative to screen, purpose, and when to hide or reduce |
| Motion | Transition purpose and duration class |
| Avoid | Name specific anti-patterns, not generic bad design |
Good example:
Mood: Calm and trustworthy — achieved through low-saturation surfaces, restrained elevation, and one accent color reserved exclusively for the primary CTA. Color:
color.surface.canvasbackground ·color.surface.elevatedcards ·color.action.primaryfor CTA and active state only. Icon style: 24px outline icons for semantic actions. Decorative icons hidden from screen readers. Avoid: Full-screen illustration that pushes CTA below fold on standard compact.
Bad example: "Make it modern and premium."
Section J — Motion and Animation Contract [MEDIUM, HIGH]
Required when the screen has transitions, loading, gestures, progress, sheets, modals, or completion states.
Motion must explain state change. It must not exist only to impress.
| Motion | Trigger | Purpose | Duration Class | Accessibility |
|---|---|---|---|---|
| Bottom sheet entrance | Tap secondary info | Preserve context while revealing details | Short (150–250ms) | Respect reduced motion |
| Loading skeleton | Data fetch | Communicate waiting, not progress | Subtle continuous | No flashing |
| Completion check | Task complete | Confirm success | Short | Pair with text |
| Error shake | Validation fail | Draw attention | Avoid or use sparingly | Never sole feedback |
Duration classes:
- Instant: 0–100ms — state toggles
- Short: 150–250ms — sheets, fades, small transitions
- Medium: 250–400ms — screen transitions
- Long: Avoid on mobile unless storytelling or onboarding requires it
Rules:
- Do not animate critical warnings in a way that delays comprehension.
- Do not use motion as the only feedback for any state.
- Do not loop decorative motion on task-focused screens.
- Respect reduced-motion settings where the platform/framework supports it.
- Loading animation must not imply progress that does not exist.
- Completion motion must be paired with a text or state change.
Section K — Accessibility Contract [ALL]
Write requirements as MUST / MUST NOT. Do not skip this section for any tier.
- Primary CTA MUST have a semantic label that describes the outcome, not just the visual label.
- Locked content MUST be communicated through text, not only a lock icon.
- Error states MUST provide a specific, actionable recovery message.
- Decorative icons MUST be hidden from screen readers.
- Critical warnings MUST NOT rely on color alone.
- Text MUST support system font scaling without clipping or hidden actions.
- Interactive targets MUST meet platform touch target minimums and WCAG 2.5.8 spacing.
- Disabled controls MUST explain why they are disabled — not only appear greyed.
- Focus order MUST follow visual hierarchy and must be re-managed after sheets, dialogs, or modals open.
- State changes that carry meaning MUST trigger an appropriate screen reader announcement.
- Motion MUST be reducible. Never required for task completion.
| Area | Requirement |
|---|---|
| Touch targets | Minimum platform/WCAG target size or spacing |
| Contrast | Text and controls pass required ratios |
| Screen reader | Labels, roles, values, announcements defined |
| Font scaling | No clipped text or hidden actions at larger sizes |
| Color | Not the sole status indicator |
| Motion | Reducible and non-essential |
| Focus | Logical order after modal/sheet |
| Errors | Specific, actionable, persistent enough to be read |
Target-size protocol:
- State the applicable target-size standard for the platform or surface being designed.
- For web or web-based surfaces: WCAG 2.2 SC 2.5.8 requires pointer targets of at least 24×24 CSS px, with valid exceptions for spacing, equivalent controls, inline text, user-agent controls, or essential presentation.
- For native mobile: follow the app's platform/design-system target size. Do not go below WCAG-equivalent minimums for tappable controls.
- If the visual icon size is smaller than the required target, specify invisible hit-area padding in the token spec.
- For dense controls (e.g. filter chips, icon rows): verify spacing prevents accidental activation of adjacent targets.
Section L — Design Token and Component Spec [MEDIUM, HIGH; LOW when implementation is requested]
Token fallback protocol — 3 steps, in order:
- Use the existing token. Reference the token by name from the codebase (e.g.,
color.surface.elevated). - Propose a token role. If no exact token exists, propose a role name that fits the design system's naming convention and note it as proposed:
color.surface.elevated(proposed — verify). - Flag the gap. If neither applies, write:
No token found for [element]. Recommend adding [token role] to the design system before implementation.
Never write vague spacing, color, or sizing descriptions when implementation is expected.
| Element | Component | Token Role | Notes |
|---|---|---|---|
| Screen background | Scaffold | color.background.canvas |
App default |
| Primary card | Card | color.surface.elevated · radius.lg · spacing.md |
Reuse existing card style |
| Title | Text | typography.titleLarge |
One line preferred |
| Body | Text | typography.bodyMedium |
Max 2–3 lines |
| CTA | PrimaryButton | color.action.primary · radius.md |
Full-width only if app convention |
| Secondary link | TextButton | color.text.secondary |
Opens sheet |
| Icon | Icon | size.icon.md · color.icon.muted |
Decorative: hide from screen readers |
Section M — Copy and Microcopy [MEDIUM, HIGH]
| Location | Copy | Purpose | Notes |
|---|---|---|---|
| Title | Orientation | Short, direct | |
| Body | Explain value/state | No blame, no jargon | |
| CTA | Primary action | Verb first | |
| Secondary | Education or recovery | Opens sheet | |
| Error | Specific failure reason | Actionable | |
| Empty | Teach next action | Forward-looking |
Rules:
- Use verbs for CTAs.
- Avoid blaming the user.
- Avoid promising unavailable features.
- Avoid jargon unless the audience expects it.
- Write for scanning — short phrases, not paragraphs.
- Localize meaning, not just words.
- For religious, medical, legal, or financial guidance, separate product copy from expert guidance in the UI. Never let product copy imply clinical, legal, or religious authority.
- Culturally sensitive terms require domain-expert review before shipping — never approximate.
Section N — Stop Conditions [ALL]
Stop before final design or implementation and surface to the human when:
- User demographic materially changes the design and is unknown.
- Primary action is unclear or two actions compete equally.
- The screen mixes two unrelated user goals.
- Legal, religious, medical, financial, or safety-sensitive claims need expert review.
- A proposed design requires data the system does not have.
- A screen state has no recovery path.
- Navigation ownership is unclear.
- The design system lacks required tokens or components and adding them changes scope.
- A proposed pattern conflicts with platform conventions and the conflict resolution protocol does not resolve it.
- Accessibility cannot be satisfied without changing the interaction model.
- Content cannot fit small compact screens without hiding P0 content.
- The design would make unavailable functionality appear active.
- The design relies on motion, color, or iconography alone to communicate meaning.
- A new state appears mid-implementation that was not in the state matrix.
Do not silently approximate. Resolve, replan, or ask.
PHASE 3 — VERIFY
Section O — Hard Self-Review Gate [ALL]
Run this checklist before producing final output. Do not narrate passing self-review. If a required item fails, revise before output. If revision is impossible because of missing context, report only the specific blocking failure and the decision needed to resolve it — nothing more.
User clarity
- Screen purpose identifiable within 3 seconds.
- Primary action is unmistakable.
- Secondary action does not compete with primary.
- No paragraph reading required to proceed.
Information architecture
- P0 content above fold on compact screens where practical.
- P1 content visible or one tap away.
- P2/P3 content deferred.
- No critical warnings hidden.
Wireframe quality
- Every region labeled with component name.
- Sticky, scroll, sheet, accordion regions marked.
- Max 7 vertical blocks unless justified.
- Primary CTA location clear.
- Responsive differences documented.
Visual specificity
- No vague design words used without concrete UI behavior.
- Color, type, icon, card, spacing reference tokens or roles.
- Decorative elements do not overpower the task.
Motion
- Motion explains state change.
- Motion is not the only feedback.
- Reduced-motion behavior addressed.
- Loading states do not fake progress.
Accessibility
- Semantic labels on all interactive controls.
- Decorative icons excluded from screen readers.
- Color not sole signal.
- Error messages specific and actionable.
- Font scaling supported.
- Focus order logical.
- Touch targets meet minimums.
Implementation readiness
- Components to reuse named.
- New components justified.
- Token roles specified (or gap flagged per protocol).
- All states complete with recovery.
- Interaction contracts written.
- Localization keys listed.
- Design decisions logged.
Self-calibration After running the checklist, score your output on each dimension 1–5 before finalizing:
| Dimension | Score (1–5) | Failure to fix if below 4 |
|---|---|---|
| User clarity | Yes | |
| IA correctness | Yes | |
| State completeness | Yes | |
| Token specificity | Yes | |
| Accessibility | Yes | |
| Wireframe quality | For M and H | |
| Visual specificity | For M and H | |
| Implementation readiness | If implementation requested |
If any "Yes" dimension scores below 4, revise that section before outputting. Do not output knowing a critical dimension fails.
Section P — Usability Test Plan [HIGH; recommended for MEDIUM]
| Test Prompt | Success Signal | Failure Signal | Design Fix |
|---|---|---|---|
| "What does this screen do?" | Names purpose correctly | Thinks feature is broken | Improve title/status |
| "What would you tap first?" | Taps correct CTA | Taps secondary first | Strengthen CTA hierarchy |
| "Recover from this error." | Knows next step | Feels stuck | Add recovery action |
| "Use this with large text on." | Completes task | CTA/content clips | Adjust layout or scroll |
| "What does this icon mean?" | Identifies correctly or irrelevant | Cannot identify | Add label or remove |
Section Q — Verification Commands [when implementation is requested]
For Flutter:
rg "ScreenName|FeatureName" lib/
rg "semanticLabel|Semantics" lib/features/
rg "AppTextStyles|AppColors|UIConstants" lib/
rg "localizationKey" lib/l10n/
flutter analyze && flutter test
For React Native:
rg "ScreenName|FeatureName" src/
rg "accessibilityLabel|accessibilityRole" src/
rg "theme|tokens|spacing|typography" src/
npm test && npm run lint
For React web:
rg "ScreenName|FeatureName" src/
rg "aria-label|role=" src/
rg "tokens|theme|spacing|typography" src/
npm test && npm run lint
Do not invent commands that do not fit the repository.
Section Q.5 — Visual QA and Device Preview [when implementation changes UI]
Text-only verification is not sufficient for UI work. Text analysis cannot catch clipped copy, safe-area collisions, contrast failures under the real theme, bottom-sheet overflow on small screens, or large-text layout breakage.
When implementation changes layout, visual hierarchy, motion, accessibility, or responsive behavior, verify the rendered screen.
| Check | Requirement |
|---|---|
| Small compact preview | No clipped P0 content, CTA reachable, no unsafe overflow |
| Standard compact preview | Default hierarchy matches the handoff spec |
| Large compact preview | Content does not stretch or feel sparse without intent |
| Font scaling | Large text does not hide CTA, truncate critical copy, or break layout |
| Dark/light mode (if supported) | Contrast and surfaces remain usable |
| RTL (if supported) | Layout mirrors correctly; directional flows and icons reviewed |
| Bottom sheet / modal | Fits small compact height; supports scrolling and correct focus |
| Error / empty / loading states | Each renders honestly with recovery visible |
| Screenshot review | Capture before/after screenshots or emulator captures where possible |
If screenshot or emulator review is unavailable, state:
Visual QA not available in this environment. Implementation requires manual device/emulator review before merge.
Section R — Implementation Handoff [ALL]
For each affected component:
Component: ComponentName
- Purpose:
- Props/state needed:
- Components to reuse:
- New component needed (justify):
- Token spec (or gap flag):
- States to support:
- Interactions:
- Motion:
- Accessibility:
- Localization keys:
- Analytics events:
- Platform differences:
- Must not:
Section S — Human Approval Gate
Stop for explicit human approval when any of the following are true:
- Task is HIGH.
- Design changes navigation or core product behavior.
- Screen is safety-sensitive, religiously sensitive, legally sensitive, medically sensitive, or financially sensitive.
- Design requires new system components.
- Screen affects onboarding, payments, trust, user identity, permissions, or data sharing.
- A stop condition was encountered and resolved — confirm the resolution.
- User explicitly requested review before implementation.
Valid approval signals: proceed, looks good, LGTM, implement it, or clear equivalent.
Do not infer approval from silence. Do not proceed past this gate without a signal.
PHASE 5 — EXECUTE
When asked to implement after approval:
- Re-read the approved UX contract.
- Re-check design-system conventions.
- Reuse existing components before creating new ones.
- Implement one state at a time.
- Keep styling token-driven.
- Keep copy localized using localization keys.
- Preserve platform navigation behavior.
- Add accessibility semantics.
- Add motion only when it clarifies state.
- Test small compact, standard compact, large compact, and font-scaled layouts.
- Run verification commands.
Replanning triggers — stop and surface immediately if:
- Component cannot support the required responsive behavior.
- Required state is unavailable.
- Required localization structure does not exist.
- A reusable component already exists and invalidates the plan.
- Design tokens conflict with the proposed visual treatment.
- Accessibility cannot be satisfied with the current layout.
- A new state appears not covered by the state matrix.
- Implementation would fake data or imply unavailable functionality.
- Motion cannot respect reduced-motion requirements.
- P0 content cannot fit compact layouts without redesign.
When a trigger fires: identify the affected section, propose the revision, wait for approval if the approval gate applies.
OUTPUT TEMPLATES
LOW Task
## UX Read
**Issue**:
**Recommended change**:
**Why**:
**Convention / reuse check**:
**Accessibility check**:
**Token note**:
**Implementation note**:
**Design decision**:
**Verification**:
MEDIUM Task
## UX Problem
## User Context
## Research Findings (max 5)
## Design Principles (max 7)
## Information Hierarchy
## Screen States
## Design Decision Log
## Interaction Contracts (max 8)
## Responsive Behavior
## Wireframe
## Visual Direction
## Motion
## Accessibility Contract
## Token and Component Spec
## Copy
## Stop Conditions
## Implementation Handoff
## Verification
## Approval Gate (if triggered)
HIGH Task
## UX Problem Statement
## User and Context Model
## Local Product Context Read
## Research Findings (max 5)
## Design Principles (max 7)
## Information Architecture
## User Flow
## Screen State Model
## Design Decision Log
## Interaction Contracts
## Responsive Layout Specification
## Platform Convention Audit
## Wireframes
## Visual Design Direction
## Motion and Animation Contract
## Accessibility Contract
## Token and Component Spec
## Copy and Microcopy
## Stop Conditions
## Implementation Handoff
## Usability Test Plan
## Verification Plan
## Approval Gate
DOMAIN EXAMPLES
Use as structural references only. Never copy into an unrelated task.
A — Locked Feature (travel/journey) User opens a locked screen with no linked itinerary. Response: explain the locked state without blame, show blurred preview as value demonstration only (not real data), one CTA to unblock, contact details in a bottom sheet.
B — E-commerce Filter User narrows a product list. Response: keep active filters visible, preserve results during update, show result count, provide clear reset, never clear user choices silently.
C — Health/Measurement Logging User logs a reading. Response: validate fields inline, preserve input on failure, confirm save with text not only animation, separate educational guidance from entry, never imply diagnosis.
D — Utility/Offline Tool User needs access without connectivity. Response: make offline state explicit, show what still works, queue sync if applicable, never show stale data without labeling it, do not block local actions unnecessarily.
FAILURE MODE REFERENCE
These are the patterns that indicate the output has failed. Check against them during self-review.
| Failure Mode | Signal | Fix |
|---|---|---|
| Pretty screen with no user goal | Design begins with visual direction | Return to Step 0 and define the goal first |
| Vague design language | Words like "modern," "clean," "intuitive" appear without a concrete UI behavior | Replace with specific token, component, or layout behavior |
| Mechanical section-filling | Every section filled with template boilerplate and no task-specific content | Merge or skip inapplicable sections; apply compression rules |
| Missing state recovery | An error, locked, or disabled state has no recovery path | Add recovery to every non-success state |
| Token-free handoff | Implementation section uses size descriptions instead of token roles | Apply token fallback protocol |
| Overlong output | Output exceeds tier word budget without new information | Compress — cut filler, merge redundant sections |
| Research invented | Research findings stated without source or browsing | State research unavailability, proceed from platform knowledge |
| One-device design | Layout decisions reference only one phone model | Apply responsive buckets |
| Accessibility omitted | No accessibility contract, or only one line | Complete Section K for every tier |
| Guardrail at the bottom, forgotten | Critical rules buried in a "Guardrails" section at document end | Rules live in the section they govern — this document applies that structure |
| Self-review skipped | Gate checklist not run | Run Section O before every final output |
PROJECT-SPECIFIC ADDENDUM
A generic skill cannot be perfectly calibrated to any one codebase. This addendum binds the skill to your actual project conventions. Fill it in before deploying. The agent must read this addendum before designing or implementing any screen in this repository.
Instructions for the team: Replace every [placeholder] with the real value from your codebase. Keep this section updated when the design system evolves.
Design System Tokens
Confirm and list your actual token names before implementation. Do not guess.
Theme entry point: [e.g., lib/core/theme/app_theme.dart]
Color tokens file: [e.g., AppColors — lib/core/theme/app_colors.dart]
Text style tokens: [e.g.,
…(truncated)