curiositech/ux-friction-analyzer
Comprehensive UX analysis using cognitive psychology, ADHD-friendly design, Gestalt principles, and flow state engineering. Specializes in friction audits, user journey simulation, cognitive load optimization, and Fitts' Law application. Activate on "analyze UX", "friction audit", "user journey", "ADHD-friendly", "optimize flow", "reduce cognitive load", "UX audit", "conversion optimization". NOT for visual design execution (use web-design-expert), A/B testing implementation (use frontend-developer), or accessibility compliance auditing (use accessibility-auditor).
npx skills add https://github.com/curiositech/some_claude_skills --skill ux-friction-analyzer
A comprehensive skill for analyzing and optimizing user experience through cognitive psychology, ADHD-friendly design, and flow state engineering.
Use this skill when:
Trigger phrases: "analyze UX", "friction audit", "user journey", "ADHD-friendly", "optimize flow", "reduce cognitive load"
Apply these patterns to ALL interfaces:
| Principle | Implementation | Why It Matters |
|-----------|----------------|----------------|
| Progressive Disclosure | Show one task at a time; hide future steps | Prevents overwhelm, maintains focus |
| Context Preservation | Auto-save every keystroke; never lose work | Reduces anxiety about losing progress |
| Gentle Reminders | Status updates, not alarms; no red urgency | Avoids panic, maintains calm |
| Pause & Resume | Session state persists across days/weeks | Respects inconsistent schedules |
| Minimal Distractions | Single focus area; dim non-active panels | Reduces competing stimuli |
| Chunked Progress | Visual cards/steps, not endless scrolling | Creates completion dopamine hits |
| Predictable Navigation | Same layout always; no surprises | Reduces reorientation cost |
| Calm Mode Option | Reduced animations, muted colors on demand | Accommodates sensory sensitivity |
Apply these perception principles:
PROXIMITY
─────────
Elements close together = perceived as related
White space creates natural boundaries
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Related │ │ Related │ │ Other │ │ Other │
│ Item A │ │ Item B │ │ Group A │ │ Group B │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
↑ CLOSE = GROUPED ↑ SEPARATE = DISTINCT
SIMILARITY
──────────
Same color/shape/size = perceived as related function
┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
│ BLUE │ │ BLUE │ │ BLUE │ │ CORAL│ │ CORAL│
│ Save │ │ Copy │ │ Edit │ │ Del │ │ Clear│
└──────┘ └──────┘ └──────┘ └──────┘ └──────┘
↑ SAME = Related actions ↑ DIFFERENT = Destructive
CONTINUITY
──────────
Eye follows lines/paths naturally
Step 1 ──→ Step 2 ──→ Step 3 ──→ Complete
●──────────●──────────●──────────●
CLOSURE
───────
Brain completes incomplete shapes
Use for progress indicators, loading states
[ ████████░░░░░░░░ ] 50% - brain "sees" the end
Three types of mental load to manage:
| Type | Definition | Strategy |
|------|------------|----------|
| Intrinsic | Task complexity itself | Can't eliminate; acknowledge it |
| Extraneous | Poor design adding effort | ELIMINATE THIS - your job |
| Germane | Learning/understanding | Minimize for repeat users |
Working Memory Limits:
Reduce Extraneous Load By:
Time to acquire target = f(Distance / Size)
IMPLICATIONS FOR BUTTONS:
─────────────────────────
┌───────────────────┐ vs ┌──┐
│ GENERATE │ │Go│
│ │ └──┘
└───────────────────┘
↑ ↑
44px+ touch target Hard to hit
Easy to acquire Frustrating
MINIMUM SIZES:
- iOS: 44x44 CSS pixels
- Android: 48x48 CSS pixels
- Desktop: 32x32 minimum, 44x44 preferred
EDGE TARGETS ARE INFINITE:
┌─────────────────────────────────────────────────────┐
│ ■ LOGO MENU ■ │
│ │
│ Screen edges = can't overshoot │
│ Place critical actions at corners/edges │
│ │
│ ■ HELP EXPORT ■ │
└─────────────────────────────────────────────────────┘
ICON + LABEL > ICON ALONE:
- Larger target area
- Reduced ambiguity
- Faster acquisition
Key Metrics:
Flow Conditions:
Preserve Flow By:
Map every user path with probabilities:
┌─────────────┐
│ USER LANDS │
└──────┬──────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Action A │ │ Action B │ │ Action C │
│ (40%) │ │ (45%) │ │ (15%) │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
▼ ▼ ▼
[Next] [Next] [Next]
For each edge, record:
Create detailed simulations for each persona:
Template:
TIME ACTION COGNITIVE STATE FRICTION
─────────────────────────────────────────────────────────────────────────────
0:00 [User action] [Mental state] Low/Med/High
└─ [System response or UI shown]
0:15 [Next action] [How they feel] Low/Med/High
└─ [What happens]
└─ PROBLEM: [Friction point if any]
...continue...
─────────────────────────────────────────────────────────────────────────────
TOTAL TIME: X minutes
FRICTION POINTS: N (list them)
ABANDONMENT RISKS: N (critical moments)
DELIGHT MOMENTS: N (positive surprises)
Personas to simulate:
Quantify and prioritize:
| Friction Point | Users Affected | Severity (1-10) | Fix Difficulty | Priority Score |
|----------------|---------------|-----------------|----------------|----------------|
| [Issue 1] | X% | N | Easy/Med/Hard | HIGH/MED/LOW |
| [Issue 2] | X% | N | Easy/Med/Hard | HIGH/MED/LOW |
Priority Formula:
Priority = (Users Affected × Severity) / Fix Difficulty
Compare current vs ideal:
TASK CURRENT IMPEDANCE IDEAL IMPEDANCE
────────────────────────────────────────────────────────────────────
[Task 1] Low (X sec) ✓ Optimal
[Task 2] Medium (X sec) Could be Y sec
[Task 3] HIGH (X min) Should be Y sec
Calculate context switch costs:
Action Frequency Time Lost Each Total Impact
─────────────────────────────────────────────────────────────────────────
[Interruption type 1] X/session Y min Z min
[Interruption type 2] X/session Y min Z min
─────────────────────────────────────────────────────────────────────────
TOTAL CONTEXT SWITCH LOSS Z min/session
<button class="cta" style="min-height: 60px; min-width: 200px;">
Primary Action
<span class="subtext">Supporting text</span>
</button>
┌─────────────────────────────────────────────┐
│ Welcome back! Here's where you left off: │
│ │
│ ✓ Step 1: Complete │
│ → Step 2: In progress (60%) │
│ ○ Step 3: Not started │
│ │
│ [Continue where I left off] │
└─────────────────────────────────────────────┘
Before shipping any feature, verify:
When running this skill, produce a document with:
Core Philosophy: Every click, every second of confusion, every moment of "where am I?" is friction stealing from your users. Design for the distracted, optimize for the overwhelmed, and everyone benefits.
Take curiositech/ux-friction-analyzer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.