ux-audit
Skill2 starsChanged 41 days agoMITView on GitHub
Judge whether a page or flow actually works for the person using it — is the thing it's FOR easy, clear, and low-friction to do, or does it confuse, stall, or lose them? Applies behavioral psychology (cognitive load, friction, Fogg, defaults/anchoring, loss aversion, social proof, timing, clarity) tied to the page's ONE real user-goal — whatever that is: finish a task, understand a status, find info, sign up, pay, feel reassured. For web (Vue/Vuetify) and mobile (Flutter). Invoke with /ux-audit on any page, screen, or flow — or when /ship-check's UI step calls it on a UI diff; never on your own initiative mid-task. Advisory only — it recommends, you decide. Ethics-gated: only honest friction-removal and clear value; flags dark patterns as anti-patterns. Restraint-gated: a few high-leverage, grounded changes beat a wall of generic \"add urgency/social proof\" slop.
We split this skill into the rules it gives an agent
5 rules. 0 are common, 5 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 20 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 24
If the user asks for a dark-pattern move, say plainly why it's a net loss and offer the honest lever that gets most of the same benefit.
- Distinctive: line 33
Before judging anything, answer three questions:
- Distinctive: line 84
Keep it skimmable and ranked:
- Distinctive: line 110
Ground truth over guesswork: Every finding points at something real in the page — a field, a label, a route, a gate you actually read — not …
- Distinctive: line 113
Ethics gate is hard: Only honest levers. Dark patterns get listed as things to *remove*, never as recommendations — even if asked.
“Common” is measured: kept by at least 6 in 10 of the 20 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/ux-audit — Does this page actually work for the human using it?
Your sibling skills cover the other angles: ui-audit checks the technical quality of the code (a11y, perf, theming), design picks the aesthetic before building, ui-polish tunes the feel. This one is the behavioral counterpart to ui-audit: not "is the code good" but "does a real person land on this page and successfully, easily do the thing it exists for — or do they get confused, stall, second-guess, or leave?"
Every page is for something from the user's side — finishing checkout, understanding where their order is, finding the right setting, signing up, getting reassured that things are fine. A page can be beautiful, fast, and accessible and still fail the human: the primary action is buried, the form asks for five things when it needs two, the status is ambiguous, the next step is missing, the prompt fires at the wrong moment. Your job is to find those, name why they hurt (with the actual principle, not a vibe), and hand back a prioritized list of changes — impact × effort — each tied to that one real goal.
Making a page work better sometimes means it converts better (more signups, more completed payments) — that's a frequent outcome, not the definition. The definition is: the user gets what they came for with the least friction and the clearest path. Sometimes the win is "they finish the form"; sometimes it's "they stop worrying and don't call support"; sometimes it's "they finally find the toggle." Optimize for the user's success on this page's actual purpose — the business win follows honestly from that.
The deliverable is a diagnosis + recommendations, not code edits. You advise; the user decides what to build.
The ethics gate — read this first, it's not optional
You improve a page by removing real friction and making the right thing obvious at the right moment — never by tricking, cornering, or shaming people. The manipulative version ("don't let them leave without paying," fake countdowns, pre-checked add-ons) looks like it lifts numbers and reliably backfires: chargebacks, refunds, churn, 1-star reviews, and — for the mobile app — App Store / Play Store rejection (both ban dark patterns outright). It also erodes the trust of a paying product's users, which is the expensive kind to lose.
So:
- Recommend: fewer form fields, clearer labels and CTA copy, the right info shown up front, progress made visible, a well-timed prompt anchored to a real moment, sensible defaults, honest social proof, a clear next step when something goes wrong.
- Refuse and flag (list them as anti-patterns to remove, never to add): fake scarcity/countdowns, pre-checked paid add-ons, confirm-shaming ("No thanks, I hate saving money"), hidden or buried opt-outs, roach-motel signup-easy/cancel-hard, disguised ads, forced continuity with no reminder, misdirection on the destructive button.
If the user asks for a dark-pattern move, say plainly why it's a net loss and offer the honest lever that gets most of the same benefit.
The restraint gate
You are done when you've named the handful of changes that actually make this page work better for its user — not when you've listed every heuristic in the book. Five ranked, specific, grounded recommendations beat twenty generic ones. Don't recommend social proof on a page with no trust problem; don't recommend urgency anywhere by default. If the page already works well, say so — "this does its job; one small thing" is a valid, valued verdict. Manufacturing findings to look thorough is the failure mode here.
The four passes
1. Pin the goal — what is this page FOR, for THIS viewer?
Before judging anything, answer three questions:
- What is the single thing this page exists to help the user do? State it in user terms ("understand where my order is and feel it's on track," not "display order status"). A page trying to do three co-equal things has already split its user's attention — note that as finding #1.
- Is this even an action surface at all? Not every page is a funnel. A status page, a receipt, a confirmation, a read-only dashboard — its goal may be comprehension or reassurance, not a click. Don't hallucinate a "convert" goal onto a page whose real job is "answer a question so the user can move on." Forcing a CTA onto a page that doesn't need one is a finding against you.
- Who is actually looking at this, and can they do the thing? Check the viewer against the action. A package recipient is usually not the buyer — a "re-order" CTA aimed at them is wasted. A logged-out visitor can't use a permission-gated button. Ground the audience in reality (auth state, role, how they arrived) before recommending anything they can't act on.
- How often does this viewer do this — one-off or many times a day? Frequency flips the priorities. A high-frequency power-user surface (an internal create/dispatch form, a daily dashboard) wants speed and defaults — prefill the repeated fields, keep keyboard flow, don't hand-hold. A one-off consumer surface (signup, a first checkout) wants guidance and reassurance — explain, confirm, prevent errors. Recommending hand-holding on a form someone fills 40 times a day is as wrong as assuming a first-timer knows the ropes.
Everything downstream is measured against this goal, for this viewer.
2. Read the real flow — walk it like a first-time user
Open the actual page/component/screen and trace what a real user hits, in order: what they see first, what they must read, understand, type, decide, and tap — and where they'd hesitate, get confused, or leave. Count the literal costs — number of fields, taps to the goal, decisions, new concepts. Note what's above the fold vs. buried, required vs. optional, what blocks progress (mandatory signup before value, forced permissions, a surprise, an ambiguous status with no explanation, a dead end with no next step). Ground every later claim in something you actually saw in the code — a field, a label, a route, a guard, a gate — not a generic assumption about "pages like this."
3. Diagnose against named principles
For each friction point, name the mechanism so the recommendation is arguable, not taste. The working catalog:
- Cognitive load / Hick's Law — every extra choice, field, or concept slows and sheds users. Too many options → paralysis. Fix: cut, default, progressively disclose. On entry points (login, onboarding) default to one path and collapse the rest behind "Have a code?" / "Other options."
- Von Restorff / salience — the item that breaks the pattern is the one the eye finds. When everything is weighted equally, nothing is — a grid of identical tiles forces the user to scan all of them. Fix: let the thing that needs attention break the pattern (a red count, a glow, a pulse) so "3 payouts failed" is pulled out, not hunted for. Don't over-use it — if five things shout, none do.
- Friction & drop-off — each required step is a leak. Mandatory signup before value, long forms, re-entering known data, forced permissions up front. Fix: defer, autofill, guest path, ask later.
- Clarity & comprehension — ambiguous labels, jargon, a status the user can't interpret, an outcome they can't predict ("what happens if I tap this / will I be charged / can I undo"). On read-only/status pages this is usually the primary axis. Fix: plain language, answer the unspoken question inline, make state legible.
- Next-step / dead ends — a page that reports a problem (or a success) but offers no action leaves the user stuck and drives them off-channel (support call, app uninstall). Fix: always give the one relevant next step — retry, contact, undo, continue.
- Fogg Behavior Model (B = Motivation × Ability × Trigger) — action happens only when all three line up. A stalled user usually lacks ability (too hard) or trigger (no clear prompt at the right moment), not motivation. Fix: make it easier before trying to hype it; put the trigger where it's actionable.
- Defaults & anchoring — the pre-selected option is what most people take; the first number seen frames the rest. A number with no reference point can't be judged, so it gets ignored — every KPI/metric wants a comparison (vs. yesterday, vs. target, ▲/▼). Fix: default to the choice you'd honestly recommend; pair each figure with an honest anchor; never anchor against a fake reference.
- Loss aversion & endowment — people fear losing more than they value gaining; something they've already set up feels owned. Fix: frame honestly around what they keep ("your data stays"), never fake countdowns.
- Social proof — real usage, counts, reviews, logos reduce risk — only where doubt exists. Fix: place near the hesitation point; never fabricate.
- Progress, Zeigarnik & goal-gradient — a visible, partly-complete progress indicator pulls people to finish; half-done feels like a debt (Zeigarnik), and people accelerate as a visible goal gets closer (goal-gradient). Open, unresolved counts nag productively ("4 awaiting approval"). Fix: show steps and pre-fill step one ("2 of 3"); surface progress toward any real daily target (a ring on "orders today" beats a bare count); pull open loops to the top.
- Timing / the right moment — the same prompt helps or annoys depending on when it fires. Ask for a permission, review, or upsell in-context after value is felt, not on launch. Fix: anchor prompts to a real moment.
- Peak-end & fresh-start — people judge an experience by its most intense moment and its ending, and a landing/greeting is a natural peak. Raw data at the top wastes it. Fix: open with a one-line verdict, not a data dump — "You're on track" or "3 things need you" — so the first impression is a conclusion the user can act on.
- Recognition over recall — people find faster than they remember. Making a returning user re-scan a full grid or re-derive their path every time is recall tax. Fix: surface recent / pinned / last-used entries so they recognize their route; on return, lead with the fast known path (e.g. Face ID) over re-entry.
- Value & cost legibility — if what they get (or what it costs) isn't obvious before the ask, people defer. A surprise at the end is the top killer. Fix: make the benefit and the price visible before the commitment step.
4. Prioritize — impact × effort, tied to the goal
Rank the findings. High-impact + low-effort first (the copy fix, the removed field, the moved button, the missing next-step link), bigger bets flagged as bigger bets (re-sequencing a flow, adding a guest path). Each recommendation names: the friction, the principle, the concrete change, and the expected effect on this page's goal for its real viewer. Be honest about uncertainty — "likely helps completion; worth an A/B test" beats a fake precise number.
Platform notes
Web (Vue 3 / Vuetify / Inertia):
- Above-the-fold and action hierarchy on desktop and the responsive breakpoints — the mobile-web viewport often buries the primary
v-btnbelow a fold ofv-cardfiller. - Forms:
v-text-fieldcount, required vs. optional, inline validation timing (validate on blur/submit, not every keystroke), autofill/autocompleteattributes present. - Multi-step flows as routes/
v-stepper— is progress shown? Can you go back without losing input? Is state preserved on refresh? - Permission-gated affordances on public/guest pages — a button behind
hasPermission(...)a logged-out visitor never has is effectively dead for them. Check the auth reality. - Modal/dialog interruptions — do they help the primary task or block it?
Mobile (Flutter):
- Taps-to-goal and thumb reach — is the primary action in the bottom third, reachable one-handed? Not stranded top-right.
- Permission and login gates — asked on launch (bad) vs. in-context at the moment they're needed (good). Forced account creation before any value is a classic mobile leak.
- Onboarding length — every pre-value screen sheds users; can it be skipped or deferred?
- Dead ends on error/empty states are worse on mobile — no next step often means an uninstall. Always give the action.
- Store-compliance: any dark pattern is also a rejection risk — call it out with that stake.
- System-native patterns (native pickers, platform back, IAP where required) reduce friction; fighting them adds it.
Output shape
Keep it skimmable and ranked:
## UX audit: <page/flow> — goal: <what it's FOR, in user terms>
**Viewer & action surface** — <who's actually looking; is this an action page or a comprehension/reassurance page; can this viewer even do the goal?>
**Funnel/flow position** — <what came before → THIS → what's next>
**First-run walk** — <what a real user hits, in order; where they'd hesitate / get confused / leave>
### Findings (ranked by impact × effort)
1. [High impact / Low effort] <friction> — <principle>.
Change: <concrete, specific>. Expected: <effect on the goal, for the real viewer>.
2. [High / Med] ...
...
### Deliberately NOT recommended
- <plausible-but-wrong moves this page tempts — e.g. a CTA aimed at the wrong audience — and why they don't apply. Keeps the naive lever from getting added later. Omit if none.>
### Dark patterns present (remove these)
- <if any — the pattern, why it costs more than it earns, the honest replacement. Omit entirely if none — don't invent them.>
**Verdict: <one line — the real state of the page>**
(Recommendations only — no code changed. Pick what to build; hand off to implementation.)Guardrails
- Ground truth over guesswork. Every finding points at something real in the page — a field, a label, a route, a gate you actually read — not "pages like this usually…". If you're inferring, say so.
- Pin the real goal first — and question it. State what the page is for in user terms. Ask whether it's even an action surface, and whether its actual viewer can do the goal at all. A "convert" recommendation on a comprehension page, or a CTA aimed at someone who can't act, is a finding against you.
- Audience ≠ buyer. The person looking is often not the person who pays/decides (recipient vs. purchaser, viewer vs. admin). Check before recommending any action they can't take.
- Ethics gate is hard. Only honest levers. Dark patterns get listed as things to remove, never as recommendations — even if asked.
- Restraint gate applies. A few high-leverage, specific changes over an exhaustive heuristic dump. "It already works" is a valid verdict; don't manufacture problems. Call out the naive-but-wrong lever you chose not to recommend, and why.
- Advisory, not applied. The deliverable is the ranked diagnosis. Don't edit code; hand off to implementation as the next step.
- Honest about impact. Name the expected effect and your confidence; recommend an A/B test where the effect is a genuine guess. No fabricated percentages.
Other versions24 projects use a version of this.
Word for word · 1
- AhmedMerza/claude-skills★ 2100% same
Edited · 0
None found.
Wrote their own version · 23
- lobehub/lobe-chat★ 84ksame name
- lobehub/lobehub★ 84ksame name
- thedesignproject/agent-skills★ 88same name
- drvoss/everything-copilot-cli★ 49same name
- EliaAlberti/ux-audit-skill★ 17same name
- naman10parikh/agentgrid★ 9same name
- kevin-burns/claude-skills★ 8same name
- AhmedAbdelfattah0/AI-Skills★ 4same name
- paulunemoon/ux-audit-skill★ 4same name
- dundas/thinkrun★ 2same name
13 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use ecosystem-reference, fractal-delegation and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
naman10parikhSkillecosystem-reference
Quick-access directory of Claude Code ecosystem repos, skills, plugins, MCPs, and patterns. Use when improving the harness.
Also in 3 projects that use this
naman10parikhSkillfractal-delegation
Also in 3 projects that use this
KirchliveSkillskill-routing
Decides which of the installed skills a task needs and loads them before the work starts. This skill should be used at the beginning of any multi-step task — build, fix, refactor, migrate, review, plan, release, research, write, design, video — and again at every phase change, after context compaction, and when work moves into a different part of the codebase. Use it for requests like "let's build X", "fix this bug", "refactor Y", "plan the migration", "review this", and also when the user asks which skill applies, why a skill did not fire, or asks to check what is available.
Also in 3 projects that use this
GoZippySkillrepo-scout
Also in 3 projects that use this
sublimotionSkillagent-runtime
Launch and manage detached agent runs on EKS via the agent-runner CLI. Use when the user says "launch an agent run", "agent runtime", "agent-runner", "run this spec on the cluster", "check run status", "agent run logs", or "stop a run". Do NOT use for writing the agent-runner code itself (edit the sibling ../agent-runner repo), Terraform of the foundation (use terraform-automation), or GPU serving deployments (use infra-deployer).
Also in 3 projects that use this
BenjaminGSkillharness-review
Turn one PR's review comments into harness fixes — classify each cause by the most solid place it can live (codebase, lint, rules, skill), then draft the fixes in a separate PR.
Also in 3 projects that use this
- +6 more from naman10parikh
In this repository53 other files it gives its agents.
- animateSkill
- api-docs-completeSkill
- best-optionSkill
- browseSkill
- changelog-generateSkill
- checkpointSkill
- claimSkill
- commitSkill
- courtSkill
- design-driftSkill
- designSkill
- expandSkill
- explainSkill
- fix-reviewSkill
- grill-meSkill
- handover-listSkill
- handover-resumeSkill
- handover-saveSkill
- i18n-syncSkill
- issueSkill
- leadSkill
- mr-approveSkill
- mr-assignSkill
- mr-createSkill
- mr-guideSkill
- mr-listSkill
- mr-mergeSkill
- mr-review-requestSkill
- mr-reviewSkill
- mr-statusSkill
- persona-walkthroughSkill
- ponytailSkill
- prove-the-testSkill
- qa-crawlSkill
- qa-sweepSkill
- reflectSkill
- reviewSkill
- root-causeSkill
- scoutSkill
- second-opinionSkill
- ship-checkSkill
- skill-auditSkill
- skill-compareSkill
- spinoffSkill
- story-siteSkill
- tool-compareSkill
- ui-auditSkill
- ui-polishSkill
- usage-weekSkill
- validate-planSkill
- video-teardownSkill
- wait-whatSkill
- where-were-weSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

