Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Product interaction and UX expert. Use when reviewing UI/UX, conducting heuristic evaluations, designing user journeys, applying cognitive psychology principles, or ensuring WCAG 2.2 accessibility compliance.
.claude/skills/majiayu000-product-ux-expert/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 149% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 146% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 165% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 187% | 0% |
| # | Heuristic | Key Question | |---|-----------|--------------| | 1 | Visibility of System Status | Does the user always know what's happening? | | 2 | Match System & Real World | Does it use familiar language and concepts? | | 3 | User Control & Freedom | Can users easily undo or exit? | | 4 | Consistency & Standards | Does it follow platform conventions? | | 5 | Error Prevention | Does it prevent errors before they occur? | | 6 | Recognition over Recall | Is information visible, not memorized? | | 7 | Flexibility & Efficiency | Are there shortcuts for experts? | | 8 | Aesthetic & Minimalist Design | Is every element necessary? | | 9 | Help Users with Errors | Are error messages helpful and actionable? | | 10 | Help & Documentation | Is help available when needed? |
Intrinsic Load — Complexity inherent to the task itself
Extraneous Load — Unnecessary complexity from poor design (eliminate this!)
Germane Load — Mental effort for learning/understanding (support this)Hick's Law — More choices = longer decision time
→ Limit options to 5-7, use progressive disclosure
Miller's Law — Working memory holds 7±2 items
→ Chunk information, use visual grouping
Fitts's Law — Larger, closer targets are easier to click
→ Make primary actions big and accessible
Jakob's Law — Users expect your site to work like others
→ Follow established patterns
Von Restorff — Different items are more memorable
→ Highlight CTAs with contrast
Serial Position — First and last items remembered best
→ Put key info at start/end of listsProximity — Close elements are perceived as groups
Similarity — Similar elements are perceived as related
Continuity — Eyes follow smooth lines and curves
Closure — Mind completes incomplete shapes
Figure-Ground — Elements seen as foreground or background
Common Region — Elements in same area are grouped1. Define scope — What screens/flows to evaluate
2. Select evaluators — 3-5 UX experts (80%+ issues found)
3. Independent review — Each expert reviews alone
4. Apply heuristics — Rate severity for each issue
5. Consolidate — Merge findings, remove duplicates
6. Prioritize — Rank by severity × frequency
7. Report — Actionable recommendations| Level | Severity | Description | |-------|----------|-------------| | 0 | Not a problem | Evaluator disagrees it's an issue | | 1 | Cosmetic | Fix only if extra time available | | 2 | Minor | Low priority, causes friction | | 3 | Major | High priority, significant impact | | 4 | Catastrophic | Must fix before release |
markdown## Issue: [Brief Description] **Heuristic:** #N - Name **Severity:** 0-4 **Location:** Screen / Component / Flow **Problem:** What's wrong and why it matters to users. **Evidence:** Screenshot or recording link. **Recommendation:** Specific fix with before/after comparison.
┌─────────────────────────────────────────────────────────────────┐
│ PERSONA: [Name, Goals, Context] │
├─────────┬─────────┬─────────┬─────────┬─────────┬──────────────┤
│ Stage │ Aware │ Consider│ Purchase│ Use │ Advocate │
├─────────┼─────────┼─────────┼─────────┼─────────┼──────────────┤
│ Actions │ Search │ Compare │ Signup │ Onboard │ Share/Review │
├─────────┼─────────┼─────────┼─────────┼─────────┼──────────────┤
│ Touch- │ Search │ Website │ Checkout│ App │ Social │
│ points │ Ads │ Reviews │ Email │ Support │ Email │
├─────────┼─────────┼─────────┼─────────┼─────────┼──────────────┤
│ Emotions│ 😐 │ 🤔 │ 😟 │ 😊 │ 😍 │
│ │ curious │ hopeful │ anxious │ relieved│ delighted │
├─────────┼─────────┼─────────┼─────────┼─────────┼──────────────┤
│ Pain │ Too many│ Info │ Complex │ Unclear │ No referral │
│ Points │ options │ overload│ forms │ next │ program │
├─────────┼─────────┼─────────┼─────────┼─────────┼──────────────┤
│ Opportu-│ Clear │ Compare │ 1-click │ Progress│ Share │
│ nities │ tagline │ table │ signup │ tracker │ incentive │
└─────────┴─────────┴─────────┴─────────┴─────────┴──────────────┘For each touchpoint, evaluate:
1. Entry Point — How do users arrive?
2. User Goal — What are they trying to accomplish?
3. Friction — What slows them down?
4. Emotion — How do they feel?
5. Drop-off Risk — Where might they abandon?
6. Opportunity — How can we improve?Perceivable — Can users perceive the content?
✓ Text alternatives for images
✓ Captions for video
✓ 4.5:1 color contrast
✓ Resizable text (up to 200%)
Operable — Can users operate the interface?
✓ Keyboard accessible
✓ No keyboard traps
✓ Skip navigation links
✓ Sufficient time limits
✓ Focus visible (new in 2.2!)
Understandable — Can users understand the content?
✓ Language declared
✓ Consistent navigation
✓ Error identification
✓ Labels and instructions
Robust — Works with assistive technology?
✓ Valid HTML
✓ ARIA landmarks
✓ Status messages announcedFocus Not Obscured (AA) — Focused element not fully hidden
Focus Appearance (AA) — Visible focus indicator (2px outline)
Dragging Movements (AA) — Alternatives to drag-and-drop
Target Size (AA) — Minimum 24×24 CSS pixels
Consistent Help (A) — Help mechanisms in consistent locations
Redundant Entry (A) — Don't ask for same info twice
Accessible Authentication (A) — No cognitive function tests for loginmarkdown## Accessibility Check ### Perceivable - [ ] All images have meaningful alt text - [ ] Videos have captions and transcripts - [ ] Color contrast ratio ≥ 4.5:1 (text), ≥ 3:1 (large text) - [ ] Information not conveyed by color alone - [ ] Text can be resized to 200% without loss ### Operable - [ ] All functionality available via keyboard - [ ] Focus order is logical - [ ] Focus indicator is visible (2px outline minimum) - [ ] No keyboard traps - [ ] Skip links provided - [ ] Touch targets ≥ 24×24px ### Understandable - [ ] Page language declared - [ ] Consistent navigation across pages - [ ] Form errors clearly identified - [ ] Labels associated with inputs ### Robust - [ ] Valid HTML (no duplicate IDs) - [ ] ARIA roles used correctly - [ ] Works with screen readers (NVDA/VoiceOver)
Purpose of micro-interactions:
1. Feedback — Confirm user action (button click, form submit)
2. Status — Show current state (loading, progress)
3. Guidance — Direct attention (onboarding tooltips)
4. Delight — Create emotional connection (subtle animations)
Best Practices:
✓ Keep animations under 300ms
✓ Use easing (ease-out for exits, ease-in for entries)
✓ Respect prefers-reduced-motion
✓ Animate properties that don't trigger layout (transform, opacity)Duration Scale:
- Micro (fade, state change) → 100-200ms
- Small (dropdown, tooltip) → 200-300ms
- Medium (modal, sidebar) → 300-400ms
- Large (page transition) → 400-500ms
Easing:
- ease-out → Elements entering (decelerate into view)
- ease-in → Elements exiting (accelerate out of view)
- ease-in-out → Elements moving (natural feel)✓ One column layout (no side-by-side inputs)
✓ Labels above inputs (not placeholder-only)
✓ Group related fields visually
✓ Inline validation (after field blur)
✓ Clear error messages with solutions
✓ Show password option
✓ Autofill support (autocomplete attributes)
✓ Smart defaults based on contextEvery interactive component needs:
Default — Normal resting state
Hover — Mouse over (desktop)
Focus — Keyboard focus (visible ring)
Active — Being pressed/clicked
Disabled — Not currently available
Loading — Processing action
Error — Validation failed
Success — Action completedjson{ "color": { "text": { "primary": "#1a1a1a", "secondary": "#6b6b6b", "disabled": "#a3a3a3", "inverse": "#ffffff" }, "interactive": { "default": "#0066cc", "hover": "#0052a3", "active": "#003d7a", "focus": "#0066cc" }, "feedback": { "error": "#d32f2f", "warning": "#f57c00", "success": "#388e3c", "info": "#1976d2" } }, "spacing": { "xs": "4px", "sm": "8px", "md": "16px", "lg": "24px", "xl": "32px" }, "radius": { "sm": "4px", "md": "8px", "lg": "16px", "full": "9999px" } }
✓ Adaptive interfaces based on user behavior
✓ Predictive content suggestions
✓ Context-aware personalization
✓ Real-time UI adjustments
⚠️ Always provide transparency and user control
⚠️ Respect privacy, use on-device processing when possibleDesign that:
- Predicts user needs before they ask
- Reduces decision fatigue with smart defaults
- Automates repetitive tasks
- Surfaces relevant information proactively
Example: Pre-filling shipping address based on previous ordersDO:
✓ Clear consent for data collection
✓ Easy-to-find privacy settings
✓ Honest product representations
✓ Sustainable design (reduce digital carbon)
DON'T (Dark Patterns):
✗ Confirmshaming ("No, I don't want to save money")
✗ Hidden costs
✗ Trick questions
✗ Forced continuity (hard-to-cancel subscriptions)
✗ Misdirection
✗ Roach motels (easy in, hard out)markdown# UX Evaluation Report ## Overview - **Product:** [Name] - **Scope:** [Screens/Flows evaluated] - **Date:** [Date] - **Evaluators:** [Names] ## Executive Summary [2-3 sentences on overall UX health and critical findings] ## Methodology - Nielsen's 10 Heuristics - WCAG 2.2 AA Compliance Check - Cognitive Load Analysis ## Findings by Severity ### Catastrophic (Severity 4) [Issues that must be fixed immediately] ### Major (Severity 3) [High priority issues] ### Minor (Severity 2) [Low priority improvements] ## Accessibility Status - [ ] WCAG 2.2 A Compliance - [ ] WCAG 2.2 AA Compliance - [ ] Screen Reader Compatible - [ ] Keyboard Navigation Complete ## Recommendations [Prioritized action items with effort estimates] ## Appendix - Screenshot evidence - User testing video clips - Competitive analysis
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→pass | 37,759 | 31,440 | -17% | 1 | 1 | 0% | 6,194 | 8,153 | +32% | 0 | 0 | — |
case-01 | fail→fail | 13,014 | 11,594 | -11% | 1 | 1 | 0% | 2,138 | 5,050 | +136% | 0 | 0 | — |
case-03 | pass→pass | 13,811 | 17,219 | +25% | 1 | 1 | 0% | 1,994 | 5,724 | +187% | 0 | 0 | — |
case-04 | fail→fail | 13,027 | 11,252 | -14% | 1 | 1 | 0% | 2,024 | 4,939 | +144% | 0 | 0 | — |
case-05 | pass→pass | 13,953 | 10,997 | -21% | 1 | 1 | 0% | 2,268 | 5,026 | +122% | 0 | 0 | — |
case-06 | pass→pass | 9,091 | 7,804 | -14% | 1 | 1 | 0% | 1,551 | 4,533 | +192% | 0 | 0 | — |
case-07 | fail→fail | 10,674 | 12,793 | +20% | 1 | 1 | 0% | 1,757 | 4,756 | +171% | 0 | 0 | — |
case-08 | pass→pass | 8,048 | 8,437 | +5% | 1 | 1 | 0% | 1,416 | 4,638 | +228% | 0 | 0 | — |
case-09 | fail→pass | 14,480 | 15,584 | +8% | 1 | 1 | 0% | 2,263 | 5,630 | +149% | 0 | 0 | — |
case-10 | fail→pass | 15,233 | 17,204 | +13% | 1 | 1 | 0% | 2,321 | 5,721 | +146% | 0 | 0 | — |
case-11 | pass→pass | 16,342 | 15,564 | -5% | 1 | 1 | 0% | 2,344 | 5,595 | +139% | 0 | 0 | — |
case-12 | pass→pass | 14,041 | 12,459 | -11% | 1 | 1 | 0% | 2,129 | 4,942 | +132% | 0 | 0 | — |
case-13 | fail→pass | 13,795 | 16,590 | +20% | 1 | 1 | 0% | 2,158 | 5,716 | +165% | 0 | 0 | — |
case-14 | pass→pass | 11,262 | 10,365 | -8% | 1 | 1 | 0% | 1,886 | 4,892 | +159% | 0 | 0 | — |
case-15 | pass→pass | 13,670 | 11,913 | -13% | 1 | 1 | 0% | 2,080 | 4,959 | +138% | 0 | 0 | — |
case-16 | pass→pass | 3,551 | 3,605 | +2% | 1 | 1 | 0% | 556 | 3,678 | +562% | 0 | 0 | — |
case-17 | pass→pass | 13,372 | 15,122 | +13% | 1 | 1 | 0% | 1,820 | 5,494 | +202% | 0 | 0 | — |
case-23 | pass→pass | 11,803 | 11,402 | -3% | 1 | 1 | 0% | 2,025 | 5,186 | +156% | 0 | 0 | — |
case-18 | pass→pass | 13,132 | 15,370 | +17% | 1 | 1 | 0% | 1,866 | 5,542 | +197% | 0 | 0 | — |
case-19 | pass→pass | 13,077 | 10,802 | -17% | 1 | 1 | 0% | 1,966 | 4,748 | +142% | 0 | 0 | — |
case-20 | pass→pass | 11,496 | 13,299 | +16% | 1 | 1 | 0% | 1,816 | 5,104 | +181% | 0 | 0 | — |
case-21 | pass→pass | 8,991 | 13,115 | +46% | 1 | 1 | 0% | 1,663 | 5,586 | +236% | 0 | 0 | — |
case-22 | pass→pass | 9,668 | 11,356 | +17% | 1 | 1 | 0% | 1,433 | 4,934 | +244% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.