
ux-compare
Compare UX patterns across multiple reference apps using pattern libraries produced by ux-extract. Reads 2+ pattern-library.md files, walks them category by category, identifies where apps converge (strong signal), where they diverge (genuine design choice), what's unique to one app, and what's absent across the set. Produces an opinionated comparison document with recommendations for a new build. No browser needed — pure markdown analysis. Trigger with 'compare UX patterns', 'how do top apps handle X', 'ux comparison', 'pattern comparison across reference apps'.
- Installs
- 649
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/jezweb/claude-skills --skill ux-compare- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads ux-compare automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
UX Compare
Read N pattern libraries produced by ux-extract and synthesise a comparison. Answers questions like:
- "Across claude.ai, Linear, Notion, Vercel, and Superhuman — how are empty states handled?"
- "Which apps use keyboard shortcuts, and what's the shared vocabulary?"
- "When we build our billing page, should we follow convention or deliberately break it?"
A single extract is a reference point. Multiple extracts are a design library. A comparison is a decision aid — it turns the library into "here's what to do and why".
When to use
- Before a build — comparing 3–5 references for the feature class you're about to build reveals the convention and the tradeoffs
- During a design review — "this pattern isn't in any of the 5 references we've extracted — is that deliberate?"
- For team alignment — shared reference for a design decision
- To produce a design brief — convergent patterns become the baseline; divergent patterns become the discussion
Inputs
Available libraries
First, discover what's available. Pattern libraries live at:
docs/ux-extracts/<app-name>/pattern-library.md.jez/artifacts/ux-extracts/<app-name>/pattern-library.md
List everything you find. Show the user the inventory with the extraction date for each so they can spot stale ones:
Available pattern libraries:
- claude.ai (extracted 2026-03-12)
- linear.app (extracted 2026-02-28)
- notion.so (extracted 2026-01-15) ← 3 months old
- superhuman (extracted 2026-03-20)
If only one library exists, stop and suggest running ux-extract on more apps first. A one-library "comparison" is just the library.
Scope / focus
Ask the user what to compare — or infer from their request:
- Whole library — compare every category across every library (verbose but comprehensive)
- One category — just empty states, just keyboard, just modals (tighter, more useful for specific decisions)
- A feature area — "how do these apps handle settings", crosses multiple categories but stays focused
- A specific question — "which apps support offline?" — searches Notable Absences sections too
Narrower scope produces sharper recommendations. Default to asking: "What feature or pattern do you want to compare?"
Libraries to include
By default, include every library the user mentions or all of them if they don't specify. Let them exclude: "all except notion — their library is too stale".
Comparison Process
1. Read every library
For each library in scope, read the full pattern-library.md. Note:
- Extraction date
- Scope of the extract (whole app vs partial)
- Any Notable Absences section — often the most interesting data for comparison
2. Walk category by category
For the scope requested, walk each pattern category that appears in any library. For each category:
- List what each app does — one bullet per app, concrete and verbatim where possible
- Identify convergence — what's the same across most or all? This is the low-risk default.
- Identify divergence — where do they genuinely differ? This is a design decision.
- Flag unique approaches — only one app does X. Either innovation or weirdness; call it out either way.
- Flag coverage gaps — if an app's library doesn't cover this category, say so (don't silently treat absent-from-library as absent-from-app).
3. Cross-reference absences
After walking categories, collect what's absent across the set. If 4 of 5 apps have no undo on destructive actions, that's a pattern. If 3 of 5 apps have no keyboard shortcut for new-record creation, that's a decision someone keeps making.
4. Synthesise recommendations
Close with opinionated guidance:
- Safe default — the convergent pattern. Following it means users feel at home.
- Deliberate choices — the divergent patterns, with the tradeoff of each so the user can pick.
- Avoid — unique-to-one patterns unless there's a clear reason why that one app does it differently.
- Gaps worth filling — absences that are surprising, or that your users would benefit from seeing addressed.
The recommendations section is the reason to run the comparison. Without it, the doc is a pile of bullets. With it, it's a decision.
Output
Write to docs/ux-comparisons/<topic>-YYYY-MM-DD.md (or .jez/artifacts/ux-comparisons/<topic>-YYYY-MM-DD.md if that path exists).
Topic slug from the scope — e.g. empty-states, keyboard-shortcuts, onboarding, destructive-actions.
See references/comparison-template.md for the full output shape.
Short version:
# UX Comparison: Empty States
Compared: claude.ai, linear.app, notion.so, superhuman
Date: 2026-04-19
Scope: How these apps handle empty states across list views, onboarding, and zero-data dashboards.
## At a glance
[2-3 sentences: what converges, what diverges, what's missing across the set]
## Pattern-by-pattern
### Empty list state
- **claude.ai**: illustration + headline + description + primary CTA + 3 shortcut hints
- **linear**: headline only, small text, no CTA
- **notion**: template picker (unique — offers 12 templates)
- **superhuman**: empty state not reached in extract (all-data demo account)
Convergence: most show some form of guidance; none are fully blank.
Divergence: claude.ai guides toward keyboard workflow; notion guides toward templates.
Unique: notion's template-first empty state.
Coverage gap: superhuman not assessed.
### Empty search results
[...]
## Recommendations
- **Safe default**: illustration + one-line description + primary CTA. All convergent apps do this.
- **Consider**: shortcut hints (like claude.ai) if your power-user persona is strong. Tradeoff: adds visual noise that doesn't help first-time users.
- **Skip**: notion's template picker unless you have a templates feature.
- **Fill a gap**: none of the 4 apps explain *why* the list is empty. A one-liner ("No clients yet — add your first to get started") is convergent practice and worth preserving.
## Source libraries
- claude.ai — 2026-03-12
- linear.app — 2026-02-28
- notion.so — 2026-01-15 (stale, re-extract recommended)
- superhuman — 2026-03-20
Autonomy
- Just do it: Discover available libraries, read them, write the comparison document, cite specific screenshots or copy from the source libraries
- Ask first: If the user didn't specify scope — one focused question is cheaper than a sprawling comparison
- Stop and confirm: If fewer than 2 usable libraries exist — comparing is impossible with 1 library, suggest
ux-extractfirst
Reference files
| When | Read |
|---|---|
| Writing the comparison document | references/comparison-template.md |
Tips
- Don't re-list everything from every library. The comparison is value-add synthesis. If you're just copying bullets from 5 libraries, you're not comparing.
- Convergence is usually the safest choice, but not always the most interesting one. Call out where convergence might be copy-paste rather than good design.
- Cite screenshots from the source libraries — don't copy them. "See claude.ai pattern library § Empty States, screenshot 502" keeps extracts as the single source of truth.
- Stale libraries are still useful — just note the date. A 12-month-old library is a snapshot of that moment, not nothing.
- Recommendations must be opinionated. "It depends" is the weakest possible output. State a position. The user can disagree.
- Comparisons age too. Re-run when underlying extracts get refreshed, or when a new reference enters the set.
Future: more than 5 apps
Comparisons scale non-linearly. 3 apps is comfortable; 5 is the upper bound of readability; 10 becomes a matrix that's impossible to synthesise in prose. If comparing more than 5 libraries, bucket them:
- Tier 1 (closest to your app) — detailed bullets
- Tier 2 (reference-class) — summary bullets
- Tier 3 (outliers, novel approaches) — mention by exception
Or do several narrower comparisons rather than one mega-comparison.
FAQ
What does the ux-compare skill do?
Compare UX patterns across multiple reference apps using pattern libraries produced by ux-extract. Reads 2+ pattern-library.md files, walks them category by category, identifies where apps converge (strong signal), where they diverge (genuine design choice), what's unique to one app, and what's absent across the set. Produces an opinionated comparison document with recommendations for a new build. No browser needed — pure markdown analysis. Trigger with 'compare UX patterns', 'how do top apps handle X', 'ux comparison', 'pattern comparison across reference apps'.
How do I install ux-compare?
Run npx skills add https://github.com/jezweb/claude-skills --skill ux-compare in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/ux-compare/ (personal) or .claude/skills/ux-compare/ (project).
Which AI agents can use ux-compare?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is ux-compare safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains ux-compare?
It is published by jezweb in jezweb/claude-skills. It has 649 recorded installs.
More from jezweb/claude-skills
shadcn-ui
jezweb/claude-skills
Install and configure shadcn/ui components for React projects. Guides component selection, installation order, dependency management, customisation with semantic tokens, and common UI recipes (forms, data tables, navigation, modals). Use after tailwind-theme-builder has set up the theme infrastructure, when adding components, building forms, creating data tables, or setting up navigation.
color-palette
jezweb/claude-skills
Generate complete, accessible colour palettes from a single brand hex. Produces 11-shade scale (50-950), semantic tokens, dark mode variants, Tailwind v4 CSS output, WCAG contrast checks. Use whenever the user supplies a brand hex and asks for a palette, mentions setting up a design system, wants Tailwind theme colours from a brand colour, or asks to check colour accessibility / contrast.
tailwind-theme-builder
jezweb/claude-skills
Set up Tailwind v4 + shadcn/ui themed UI with dark mode. Install deps, configure CSS variables via @theme inline, wire dark mode toggle, verify. Use whenever the user mentions Tailwind v4, setting up Tailwind theming, shadcn/ui colours, dark mode, or troubleshooting colours not working, tw-animate-css errors, @theme inline conflicts, @apply breaking after upgrade, or v3 → v4 migration issues.
wordpress-elementor
jezweb/claude-skills
Edit Elementor pages and manage templates on WordPress sites via browser automation (for visual / structural changes) or WP-CLI (for safe text replacements). Use whenever the user wants to edit an Elementor page, update text in Elementor widgets, apply or manage Elementor templates, or make content changes to pages built with the Elementor page builder.
ux-audit
jezweb/claude-skills
Walk through a live web app AS a real user to find usability + behavioural bugs that static reviews miss. REQUIRES proof of interaction (typing, clicking, sending, observing) before any verdict — a sweep that didn't interact terminates with verdict 'Incomplete'. Walks threads, exercises every element, runs the multi-pane stress matrix, visual polish sweep, component perfection checklist, automated a11y (axe-core), pragmatic performance budget (LCP/CLS/INP), scenario battery (11 scenarios), and stress recipes including the real-flavour data battery. Hard gates: console errors/warnings = 0, network 5xx = 0, layout collapse = 0, axe Critical/Serious = 0, perf budget green. Audit-the-audit meta-check rejects rushed reports. Each finding has reproduction steps, evidence path, and suspected code location. Trigger with 'ux audit', 'walkthrough', 'qa sweep', 'audit the app', 'dogfood this', 'check all pages', 'find what's broken', 'stress the UI'.
tailwind-v4-shadcn
jezweb/claude-skills
Set up Tailwind v4 with shadcn/ui using @theme inline pattern and CSS variable architecture. Four-step pattern: CSS variables, Tailwind mapping, base styles, automatic dark mode. Prevents 8 documented errors. Use when initializing React projects with Tailwind v4, or fixing colors not working, tw-animate-css errors, @theme inline dark mode conflicts, @apply breaking, v3 migration issues.
Popular frontend & design skills
setup-matt-pocock-skills
mattpocock/skills
Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
frontend-design
anthropics/skills
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
hyperframes-animation
heygen-com/hyperframes
All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.
prototype
mattpocock/skills
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
hyperframes-core
heygen-com/hyperframes
The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.
vercel-react-best-practices
vercel-labs/agent-skills
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.