This is a skillset -- it chains
/usability-test-plan->/usability-findings->/ux-writing->/design-handoffin sequence. Each skill also works independently.
Use this when you have a prototype or shipped product and need to validate that it works, polish the copy, and hand off to engineering. Run at sprint end or after a release.
The chain
| Step | Skill | What it produces |
|---|---|---|
| 1 | /usability-test-plan | Test plan with task scenarios, success metrics, moderator guide, and observer briefing |
| 2 | /usability-findings | Severity-scored findings, task success metrics, and stakeholder summary |
| 3 | /ux-writing | Interface copy -- CTAs, error messages, empty states, tooltips, onboarding sequences |
| 4 | /design-handoff | Annotated specs with behavior rules, responsive breakpoints, and a11y notes |
When to use: Sprint end or after a release. Validates the experience and produces the handoff artifact.
How skills chain
/usability-test-plandefines what to test and how to measure it -> task scenarios and success criteria structure the sessions/usability-findingssynthesizes sessions into severity-scored issues -> findings inform what to fix and what copy to refine/ux-writingrefines interface copy based on findings -> polished copy is incorporated into the final handoff/design-handoffcompiles everything engineers need -> annotated specs attached to stories
What the designer does between stages
| After... | Designer decision |
|---|---|
/usability-test-plan | Recruit participants, run the sessions, capture observer notes |
/usability-findings | Prioritize with PM -- create stories for critical findings |
/ux-writing | Incorporate copy into designs, validate tone with stakeholders |
/design-handoff | Walk engineers through specs, answer questions during build |
Related skills: Part of the
ux-orbitrecipe. Takes prototype input from/ux-craft. Usability findings feed back into/backlog-craftvia the iteration orbit.
Example Output
Input
- Product: Meridian Health — patient medication refill flow (iOS app), post-sprint prototype in Figma
- Test focus: End-to-end refill task: locate a prescription, request a refill, confirm pharmacy selection, and receive confirmation
- Participants: 6 recruited patients aged 45–70, mixed health literacy, 2 using assistive tech (VoiceOver)
- Known risk areas: Pharmacy picker dropdown has 11 options with no search; confirmation screen copy tested poorly in hallway feedback; empty state when no refills are due is blank
- Sprint context: Sprint 14 of 18, shipping to production in 3 weeks
Output (abbreviated)
/ux-validate — Meridian Health Medication Refill Flow
Step 1 — /usability-test-plan
Test Objectives
- Can patients locate an eligible prescription without guidance?
- Can patients complete pharmacy selection and submit a refill in under 90 seconds?
- Do VoiceOver users encounter blocking issues in the confirmation flow?
Task Scenarios
| # | Task Prompt | Success Criteria | Time Limit |
|---|---|---|---|
| T1 | "You need to refill your Metformin. Show me how you'd do that." | Reaches refill request screen without backtracking | 60 sec |
| T2 | "Choose CVS on Main Street as your pickup pharmacy." | Correct pharmacy selected and confirmed | 45 sec |
| T3 | "Confirm your refill and show me where you'd track its status." | Reaches confirmation + taps status link | 30 sec |
Success Metrics
- Task completion rate: ≥ 85% per task
- Error-free rate: ≥ 70% (no wrong taps or backtracking)
- Time on task: Within defined limits above
- UMUX-Lite score: ≥ 75/100
Moderator Guide (excerpt)
- After T1: "Was anything unclear about how the list was organized?"
- After T2: "How did you feel about the number of choices in that dropdown?"
- Probe if participant hesitates > 10 seconds without acting.
Observer Briefing
Observers log timestamps, verbatim quotes, and facial/audio cues. Do not prompt. Flag any moment participant says "I'd just call the pharmacy" as a bailout signal.
Step 2 — /usability-findings
Task Success Summary
| Task | Completion Rate | Error-Free Rate | Avg Time | vs. Target |
|---|---|---|---|---|
| T1 — Locate Rx | 83% (5/6) | 50% | 74 sec | ⚠️ Below 85% |
| T2 — Select Pharmacy | 67% (4/6) | 33% | 61 sec | 🔴 Critical |
| T3 — Confirm + Status | 100% (6/6) | 83% | 22 sec | ✅ Pass |
UMUX-Lite score: 68/100 — below target of 75.
Severity-Scored Findings
| ID | Finding | Severity | Frequency | Recommended Fix |
|---|---|---|---|---|
| F1 | Pharmacy dropdown (11 items, no search) caused task abandonment for 2 users; 1 VoiceOver user couldn't navigate past item 7 | Critical — S1 | 4/6 | Replace with searchable list; add VoiceOver focus trap fix |
| F2 | "Medications" tab label misread as "Medical Records" by 3 participants — delayed T1 start | High — S2 | 3/6 | Relabel tab; consider icon reinforcement |
| F3 | Confirmation screen copy ("Your request has been submitted") didn't communicate next steps; 4 users unsure if refill was approved or pending | High — S2 | 4/6 | Rewrite confirmation copy; add status timeline |
| F4 | Empty state when no refills are due shows blank white screen — 2 users thought app had crashed | High — S2 | 2/6 | Design empty state with explanation copy and CTA |
| F5 | "Request Refill" CTA label caused hesitation — users expected "Order" or "Send" | Medium — S3 | 3/6 | A/B test "Send Refill Request" vs. "Request Refill" |
Stakeholder Summary
Two tasks failed target thresholds. The pharmacy picker is the single highest-risk item — it blocked 67% of users on T2 and generated a VoiceOver accessibility defect. Confirmation copy leaves patients uncertain about what happens next, which is a trust and safety concern for a clinical workflow. Recommend creating S1/S2 stories before production release.
Step 3 — /ux-writing
Revised Interface Copy
Tab Label
- ❌ Before:
Medications - ✅ After:
My Meds(shorter, less clinical; pair with pill-bottle icon)
Request Refill CTA
- ❌ Before:
Request Refill - ✅ After:
Send Refill Request - Rationale: "Send" maps to familiar mental model of sending a message; reduces hesitation.
Confirmation Screen
- ❌ Before:
Your request has been submitted. - ✅ After:
Refill request sent to CVS Main Street Your pharmacist usually has it ready within 1–2 business days. We'll notify you when it's ready for pickup. [Track Refill Status →]
Empty State — No Refills Due
- ❌ Before: (blank screen)
- ✅ After:
You're all set for now None of your prescriptions are due for a refill yet. We'll remind you 7 days before your next refill is needed. [View All Medications]
Error Message — Pharmacy Picker, No Selection Made
- ✅ New:
Please choose a pickup pharmacy to continue. You can search by name or zip code.
Tooltip — Refill Eligibility Badge
- ✅ New:
Eligible to refillmeans your insurance and prescription date allow a new fill today.`
VoiceOver Announcement — Confirmation
- ✅ After form submit: "Refill request sent. CVS Main Street. Ready in 1 to 2 business days." (aria-live region, assertive)
Step 4 — /design-handoff
Component Specs
Pharmacy Picker — Searchable List (replaces dropdown)
| Property | Value |
|---|---|
| Component | SearchableList |
| Input type | Text search field + scrollable result list |
| Max visible rows | 5 (scroll for more) |
| Search triggers | On input, min 1 character, debounce 300ms |
| Empty search result | "No pharmacies found. Try a different name or zip." |
| Default selection | Last used pharmacy, pre-highlighted |
| Keyboard nav | Arrow keys cycle options; Enter selects; Escape closes |
| VoiceOver | role="listbox", each option role="option", selected state announced |
Confirmation Screen Layout
| Element | Behavior |
|---|---|
| Headline | H1, bold, maps to TextStyle/Heading2 |
| Status line | Pulls dynamic pharmacy name + estimated time from API response |
| Notification copy | Shown only if push permissions granted; hidden otherwise |
| Track status CTA | Links to RxStatusView; deep-link param rx_id passed in URL |
| aria-live region | assertive, fires once on screen mount |
Responsive Breakpoints
| Breakpoint | Behavior |
|---|---|
| 375px (iPhone SE) | Pharmacy list rows increase to 48px tap target; search field full width |
| 390px+ | Standard layout |
| Landscape | Confirmation card max-width 480px, centered |
Accessibility Notes
- Pharmacy picker focus trap: on open, focus moves to search field; on close, returns to trigger button
- Minimum tap target: 44×