Agent SkillsAgent Skills
Motium-AI

ux-improver

@Motium-AI/ux-improver
Motium-AI
0
0 forks
Updated 4/1/2026
View on GitHub

Recursively improve web application UX via vision-based screenshot analysis. Use when asked to "improve UX", "fix usability", "audit user experience", or "/uximprove". Triggers on UX review, usability improvement, user flow analysis, interaction audit.

Installation

$npx agent-skills-cli install @Motium-AI/ux-improver
Claude Code
Cursor
Copilot
Codex
Antigravity

Details

Pathconfig/skills/ux-improver/SKILL.md
Branchmain
Scoped Name@Motium-AI/ux-improver

Usage

After installing, this skill will be available to your AI coding assistant.

Verify installation:

npx agent-skills-cli list

Skill Instructions


name: ux-improver description: Recursively improve web application UX via vision-based screenshot analysis. Use when asked to "improve UX", "fix usability", "audit user experience", or "/uximprove". Triggers on UX review, usability improvement, user flow analysis, interaction audit.

UX Improver

Recursive workflow that transforms frustrating user experiences into intuitive, efficient interactions through iterative screenshot analysis and targeted fixes.

Screenshot β†’ Grade (6 UX dimensions) β†’ Fix Top 3 β†’ Repeat until score >= 8.0

Focus: Usability, Not Aesthetics

This skill evaluates user experience (can users accomplish tasks efficiently?) rather than visual design (does it look pretty?).

This Skill EvaluatesNOT This (use /designimprove)
Clear CTAs and labelsFont choices
Navigation efficiencyColor harmony
Loading/feedback statesVisual polish
Error prevention/recoveryShadows and depth
Affordances (looks clickable)Typography hierarchy

Prerequisites

  • Chrome integration (claude --chrome) - PREFERRED
  • Playwright - Fallback for CI/headless scenarios
  • Web application running (default: localhost:3000)

Browser Decision Tree

Is Chrome MCP available? (claude --chrome)
β”œβ”€β”€ Yes β†’ Use Chrome tools
β”‚   β”œβ”€β”€ tabs_context_mcp β†’ get tab IDs
β”‚   β”œβ”€β”€ tabs_create_mcp β†’ new tab
β”‚   β”œβ”€β”€ navigate β†’ go to URL
β”‚   β”œβ”€β”€ computer action:"screenshot" β†’ capture
β”‚   └── read_page β†’ get accessibility tree (CRITICAL for UX)
β”‚
└── No β†’ Fall back to Playwright
    β”œβ”€β”€ Use sync_playwright API
    β”œβ”€β”€ page.screenshot(full_page=True)
    └── Save to /tmp/ for analysis

Workflow

Phase 1: Screenshot & Analyze

  1. Setup browser context

    Chrome: tabs_context_mcp β†’ tabs_create_mcp β†’ navigate
    Playwright: browser.new_page() β†’ page.goto()
    
  2. Capture full-page screenshot

    Chrome: computer(action: "screenshot", tabId: X)
    Playwright: page.screenshot(path="/tmp/ux_audit.png", full_page=True)
    
  3. Get accessibility tree (essential for UX evaluation)

    read_page(tabId, filter: "all") β†’ element roles, labels, states
    read_page(tabId, filter: "interactive") β†’ buttons, links, inputs
    
  4. Analyze against 6 UX dimensions using vision + accessibility data

  5. Output structured UX report

Phase 2: Fix Top 3 Issues

  1. Rank issues by: severity Γ— user_impact Γ— fix_complexity

    • Prioritize: Blocking issues > Friction issues > Polish issues
  2. For each issue (top 3 only):

    a. Use read_page to identify element refs and roles
    b. Grep codebase for component files
    c. Apply UX fix:
       - Add missing labels/aria-labels
       - Add loading/disabled states
       - Improve button text
       - Add error messages
       - Add progress indicators
    d. Preserve existing functionality
    
  3. Wait for hot reload (2-3 seconds for HMR)

Phase 3: Re-evaluate

  1. Take new screenshot
  2. Re-check accessibility tree
  3. Re-grade against same 6 dimensions
  4. Decision:
    • score < 8.0 AND iteration < 5 β†’ goto Phase 2
    • score >= 8.0 β†’ auto-stop, generate final report
    • iteration >= 5 β†’ stop, generate final report with recommendations

UX Grading Dimensions

DimensionWeightWhat Makes It Pass
Usability20%Users can accomplish tasks with minimal effort. Clear CTAs, obvious actions.
Information Architecture15%Content organized logically. Navigation intuitive. Labels clear.
User Flows20%Paths to goals are efficient. Progress visible. Next steps obvious.
Affordances & Signifiers15%Interactive elements look interactive. Buttons look clickable.
Feedback & Status15%System responds to actions. Loading states. Confirmations.
Error Handling15%Errors prevented. Messages helpful. Recovery paths clear.

Scoring Scale

ScoreStatusAction
9-10ExceptionalAuto-stop - UX is excellent
7-8GoodAuto-stop - meets quality bar
5-6Needs WorkAuto-continue fixing
1-4Significant IssuesAuto-continue fixing

Pass threshold: 8.0 (configurable)

UX Anti-Patterns to Detect & Fix

Usability (Critical)

Anti-PatternWhy It's BadFix
Vague CTA text ("Submit", "Click Here")Users don't know what happensUse action verbs ("Create Account", "Send Message")
Hidden primary actionsUsers can't find main functionMake primary action prominent
Too many optionsChoice paralysisReduce options, use progressive disclosure
Inconsistent interactionsConfuses usersStandardize patterns across app
No clear starting pointUsers don't know where to beginAdd clear onboarding/guidance

Information Architecture (Major)

Anti-PatternWhy It's BadFix
Deep navigation (> 3 clicks)Users get lostFlatten hierarchy
Unclear labelsUsers guess meaningUse user-centric terminology
No visual hierarchyCan't scan pageSize/weight for importance
Important info below foldUsers miss itMove critical content up
Inconsistent categorizationItems hard to findLogical grouping

User Flows (Critical)

Anti-PatternWhy It's BadFix
Dead ends (no next step)Users stuckAlways provide next action
Unnecessary stepsWastes user timeRemove or combine steps
No progress indicationUsers feel lostAdd stepper/progress bar
Can't go backUsers trappedClear back/cancel buttons
Unclear completionUsers unsure if doneSuccess confirmation

Affordances & Signifiers (Major)

Anti-PatternWhy It's BadFix
Flat buttons (no visual cue)Look like textAdd borders, shadows, background
Clickable text without styleUsers don't know it's a linkUnderline, color, or button style
Icons without labelsMeaning unclearAdd text labels
No hover/focus statesNo feedback on interactionAdd visual state changes
Disabled looks same as enabledUsers try clicking disabledDim/gray disabled elements

Feedback & Status (Major)

Anti-PatternWhy It's BadFix
No loading stateUsers think app frozenAdd spinner/skeleton
No action confirmationUsers unsure if workedToast/success message
Silent failuresUsers don't know error occurredError feedback
No undo optionMistakes permanentAllow reversal
Stale data displayedUsers see wrong infoRefresh indicators

Error Handling (Critical)

Anti-PatternWhy It's BadFix
Generic "An error occurred"No actionable infoSpecific error message
No inline validationErrors found too lateValidate on blur/change
Errors clear form inputUser loses workPreserve input
No recovery suggestionUser stuck"Try again" or alternatives
Blame the userBad experienceNeutral, helpful tone

Output Format

Per-Iteration Report

## UX Grade: X.X/10 - [Status]

**Iteration**: N of 5

| Dimension | Score | Status | Key Issue |
|-----------|-------|--------|-----------|
| Usability | X/10 | PASS/FAIL | [specific issue] |
| Info Architecture | X/10 | PASS/FAIL | [specific issue] |
| User Flows | X/10 | PASS/FAIL | [specific issue] |
| Affordances | X/10 | PASS/FAIL | [specific issue] |
| Feedback | X/10 | PASS/FAIL | [specific issue] |
| Error Handling | X/10 | PASS/FAIL | [specific issue] |

## Top 3 UX Issues to Fix

### Issue #1: [Title] (Critical/Major/Minor)
- **Location**: [element/page area]
- **Problem**: [UX issue description]
- **User Impact**: [how this hurts users]
- **Root Cause**: [missing component/prop/state]
- **Files Found**:
  - `src/components/Button.tsx:42`
  - `src/pages/checkout.tsx:15`
- **Fix**:
  ```tsx
  // Change this
  <button>Submit</button>
  // To this
  <button disabled={isLoading}>
    {isLoading ? 'Processing...' : 'Complete Purchase'}
  </button>

Issue #2: ...

Issue #3: ...


Applying fixes...


### Final Report

```markdown
## UX Improvement Summary

| Metric | Before | After | Change |
|--------|--------|-------|--------|
| **Overall** | X.X | X.X | +X.X |
| Usability | X | X | +X |
| Info Architecture | X | X | +X |
| User Flows | X | X | +X |
| Affordances | X | X | +X |
| Feedback | X | X | +X |
| Error Handling | X | X | +X |

## Files Modified
- `src/components/Button.tsx` - Added loading state
- `src/components/Form.tsx` - Added inline validation
- `src/pages/checkout.tsx` - Added progress indicator

## Iterations Completed: X

## Final Status: PASSING / NEEDS_MORE_WORK

## Remaining Recommendations
[If score < 8, list remaining UX issues]

File Discovery Patterns

From Screenshot to Source File

  1. Get accessibility tree

    read_page(tabId, filter: "interactive") β†’ buttons, links, inputs with roles
    find(query: "submit button", tabId) β†’ specific element refs
    
  2. Extract identifying info

    • Element text content
    • ARIA labels/roles
    • Class names
    • Test IDs (data-testid)
  3. Search codebase

    # Find by button text
    grep -r "Submit" --include="*.tsx" --include="*.jsx"
    
    # Find by component name
    grep -r "CheckoutButton" --include="*.tsx"
    
    # Find by test ID
    grep -r "data-testid=\"checkout" --include="*.tsx"
    
  4. Common UX-related locations

    src/components/           # UI components
    src/components/forms/     # Form components
    src/components/feedback/  # Toast, loading, error components
    src/hooks/               # State hooks (useLoading, useError)
    src/pages/               # Page-level UX
    

Chrome Tool Reference

ToolPurposeUX-Specific Usage
tabs_context_mcpGet available tabsRequired first
navigateGo to URLTest different pages/flows
computerScreenshot/clickCapture state, test interactions
read_pageGet accessibility treeCritical - reveals labels, roles, states
findNatural language searchFind "submit button", "error message"

Iteration Control

  • max_iterations: 5 (prevents infinite loops)
  • pass_threshold: 8.0 (UX is "good enough")
  • auto_continue: When score < 8.0
  • auto_stop: When score >= 8.0 OR iterations >= 5

Git Operations

After each iteration that makes code changes:

  1. Commit with iteration context:
    git add <files> && git commit -m "ux: [changes] (iteration N, score X.X)"
    

After the final iteration: 2. Push to trigger CI:

git push

Integration Notes

This skill integrates with:

  • webapp-testing: Shares Chrome/Playwright decision patterns
  • ux-designer: Uses WCAG accessibility principles
  • design-improver: Complementary (design-improver for aesthetics, this for UX)

Example Session

User: /uximprove the checkout flow

Claude: [Takes screenshot of localhost:3000/checkout]

## UX Grade: 4.8/10 - Significant Issues

| Dimension | Score | Status | Key Issue |
|-----------|-------|--------|-----------|
| Usability | 4/10 | FAIL | Vague "Submit" button |
| Info Architecture | 6/10 | PASS | Sections organized |
| User Flows | 3/10 | FAIL | No progress indicator |
| Affordances | 5/10 | FAIL | Payment fields look disabled |
| Feedback | 4/10 | FAIL | No loading state on submit |
| Error Handling | 5/10 | FAIL | Generic error messages |

## Top 3 UX Issues to Fix

### Issue #1: No Loading State (Critical)
- **Location**: Submit button
- **Problem**: Button doesn't indicate processing
- **User Impact**: Users click multiple times, think app is broken
- **Fix**: Add isLoading state and spinner

### Issue #2: Vague Button Text (Major)
- **Location**: Submit button
- **Problem**: "Submit" doesn't describe action
- **User Impact**: Users unsure what clicking will do
- **Fix**: Change to "Complete Purchase"

### Issue #3: No Progress Indicator (Major)
- **Location**: Checkout flow
- **Problem**: Users don't know how many steps remain
- **User Impact**: Abandonment due to uncertainty
- **Fix**: Add step indicator (Step 2 of 3)

[Applies fixes]
[Takes new screenshot]

## UX Grade: 7.1/10 - Good (+2.3)

[Continues until score >= 8.0]

## Final Report
UX improved from 4.8 to 8.2 in 3 iterations.

Complementary Usage

For complete UI improvement, run both:

/designimprove the checkout page  # Fix visual aesthetics
/uximprove the checkout flow      # Fix user experience

The skills don't overlap - they address different aspects of quality.