friction
Skill12 starsChanged 56 days agoMITView on GitHub
Diagnoses and improves usability by walking real user tasks, finding hesitation, backtracking, errors, recovery gaps, accessibility barriers, and inefficient paths. Use for UX audits, onboarding, forms, navigation, error messages, or confusing flows.
5 other projects use a version of this.
Adopted by
Most recently taken up by
- mira-pi/rsi-skillstheir own version, first seen Nov 1, 2026
- manusco/resonancetheir own version, first seen Oct 22, 2026
- gabo963/claude-skillstheir own version, first seen Oct 15, 2026
- ananmouaz/frictiontheir own version, first seen Oct 13, 2026
- jorekai/skillstheir own version, first seen Sep 7, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- manusco/resonance★ 38same name
- mira-pi/rsi-skills★ 2same name
- ananmouaz/friction★ 0same name
- gabo963/claude-skills★ 0same name
- jorekai/skills★ 0same name
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.
In this repository28 other files it gives its agents.
- AGENTS.mdAGENTS.md
- backendSkill
- blueprintSkill
- clearedSkill
- conciergeSkill
- distillSkill
- dittoSkill
- findableSkill
- frontpageSkill
- frugalSkill
- handsfreeSkill
- hardenSkill
- headroomSkill
- hotpathSkill
- hotseatSkill
- janitorSkill
- masterplanSkill
- pilotSkill
- polishSkill
- proofSkill
- recallSkill
- refereeSkill
- roadtestSkill
- runwaySkill
- scoutSkill
- sleuthSkill
- spelunkSkill
- unslopSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. 0 are common, 14 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
14
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 46
Create a short charter for every audited task:
- Distinctive: line 60
When frequency is unknown, do not invent it: use task impact and label the evidence gap.
- Very specific: line 82
Read references/usability-checklist.md and walk the applicable sections: information architecture, navigation, forms and validation …
- Distinctive: line 111
Do not call every UI problem UX.
- Distinctive: line 142
Use WCAG success criteria as testable requirements where they apply, but do not claim full conformance from a partial walk.
- Distinctive: line 157
No runnable UI: do a static audit only, label dynamic assertions unverified, and specify the minimal command/environment needed for a walk.
- Distinctive: line 159
No clear task: ask for the top job or derive a provisional task from an observed primary action and label it an assumption.
- Distinctive: line 161
Conflicting user needs: document the tradeoff and route a product decision.
- Distinctive: line 163
Sensitive/destructive path: use the safest fixture and stop at a user confirmation boundary.
- Distinctive: line 174
No browser but runnable app/screenshots → walk what's walkable, audit the rest via code.
- Distinctive: line 208
Every blocker/major fix re-verified by re-walking the task.
- Distinctive: line 209
No finding reported without a proposed fix.
- Distinctive: line 216
No way to walk the flows (no browser, no runnable app) → static audit with every dynamic finding marked unverified, and the one command …
- Distinctive: line 219
No blockers or majors found → say so with the walks cited.
- Distinctive: line 231
Read references/research.md when a decision depends on an external standard, a numerical claim, or a fast-moving practice.
“Common” is measured: kept by at least 6 in 10 of the 5 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
friction: can a real person actually use this?
UI asks "does it look good?": that's polish. You ask "where does the
user hesitate, backtrack, or give up?" A beautiful app with a checkout
that loses people is a failed app.
When to use
- "users keep abandoning the signup form"
- "is our app accessible? check keyboard navigation too"
- "just audit the checkout flow, don't change anything yet"
When NOT to use
- Pure visual styling →
polish. - Automated test coverage of flows →
roadtest; you may use browser tooling, but your product is the audit. - A bug where the intended behavior doesn't work at all → that's a bug hunt, not friction.
Prerequisites
The real task(s): what is a user actually trying to get done? If the product's top tasks aren't obvious, ask: an audit without tasks grades decoration. Browser access helps enormously (you can walk flows like a user); without it, audit via code + screenshots and mark what's unverified.
Audit authority and evidence boundaries
Friction evaluates task experience; it does not fabricate user research, conversion metrics, accessibility conformance, or permission to change product policy. Distinguish observed walk evidence, repository evidence, inference, and research hypotheses. Do not enter production accounts, create destructive data, send messages, or expose personal data while walking a task without explicit authority. Use an isolated identity/fixture, mask evidence, and preserve the original flow before recommending a change.
Task charter and severity decision
Create a short charter for every audited task:
| Field | Required answer |
| User/job | who is trying to achieve what outcome |
| Entry and precondition | where they start; identity/data/permission needed |
| Success | observable result and stopping point |
| Critical alternatives | error, cancellation, backtrack, empty, recovery |
| Evidence | browser/static rung, viewport, fixture, timestamp/commit |
| Risk | impact of failure: lost work, money, access, trust, time |
Severity is not visual annoyance. Rank by task impact, affected audience, frequency when known, recoverability, and confidence in the evidence. A low-frequency inaccessible blocker can outrank a common minor inconvenience. When frequency is unknown, do not invent it: use task impact and label the evidence gap.
Workflow
1. Name the critical tasks
Identify the smallest set of tasks that represents the user's real job. Rank findings by their effect on those tasks.
2. Walk each task twice
- Novice walk: first time, no knowledge: where do I start? What does this button do? Where do I hesitate? What happens if I do the wrong thing?
- Expert path: can a returning user do it fast: keyboard shortcuts, sensible defaults, no forced re-entry of known information?
Note every stumble point with its exact location.
3. Audit the dimensions
Read references/usability-checklist.md and walk the applicable
sections: information architecture, navigation, forms and validation
(blocking paste into login/OTP fields fails WCAG 2.2 SC 3.3.8, failure
F109 -- a blocker, not a minor),
error recovery, destructive-action safety, feedback and latency
perception, keyboard/focus, touch, copy, and AI/Agentic UX (planning
visibility, audit trails, escalation). Fix-the-system findings (a
validation pattern wrong everywhere) beat fix-the-instance ones.
4. Accessibility pass
WCAG 2.2 is the primary reference: focus visibility, target sizes, labels, contrast, motion, reflow. When Playwright + axe are available, run them: axe findings are a floor, not a ceiling: automated checks cannot find every issue, so they complement the manual walk, never replace it.
5. Classify, then rank
Name the concern per finding: they have different owners and fixes:
- usability: task completion, flow, feedback (this skill's core);
- accessibility: WCAG failures (may be legal/contractual, fix regardless of usage data);
- visual design: aesthetic problems belong to
polish; reference, don't own; - conversion/product: drop-off from positioning, pricing, value clarity: these route to product decisions, not UI fixes.
Do not call every UI problem UX. Then rank:
- Blocker: the task cannot be completed (dead end, lost data, unrecoverable error).
- Major: hesitation, backtrack, or a wrong guess users will make.
- Minor: friction an expert route around.
Fix blockers and majors (directly, or as slices for pilot), then
re-walk the task to confirm the path is actually smoother: the
fix is verified by the walk, not by the intention.
For interrupted forms, mobile keyboards, offline work, or uncertain save outcomes, read recovery journeys. Preserve work only within the product's privacy and retention constraints.
Turn findings into testable improvements
For each blocker or major, state the causal hypothesis, smallest intervention, expected changed behavior, owner, and verification method. Prefer a reversible prototype, copy/structure adjustment, or bounded flow change before a large redesign when the cause is uncertain. Re-walk with the same charter after a change; compare task completion, wrong turns, recovery, and accessibility behavior rather than declaring victory from a nicer screen.
Route work deliberately: visual hierarchy/tokens to polish; a broken contract to sleuth/backend; browser evidence to roadtest; a user-value or scope decision to hotseat/distill. Friction owns the task diagnosis and evidence, not every implementation.
Accessibility and inclusive-task protocol
Use WCAG success criteria as testable requirements where they apply, but do not claim full conformance from a partial walk. Combine automated checks, semantic inspection, keyboard operation, focus/order review, zoom/reflow, contrast, motion preferences, and representative content. Accessibility testing is both technical and human evaluation; an automated tool provides a floor.
For each relevant finding, record the affected task, barrier, standard anchor when known, evidence method, and user impact. Avoid "accessibility issue" as a catch-all: distinguish semantics, keyboard, focus, visual contrast, timing, motion, target size, error/status communication, and cognitive burden. If assistive-technology testing is unavailable, state that evidence limit rather than simulating a screen-reader experience from code.
Failure handling and edge cases
- No runnable UI: do a static audit only, label dynamic assertions unverified, and specify the minimal command/environment needed for a walk.
- No clear task: ask for the top job or derive a provisional task from an observed primary action and label it an assumption.
- Conflicting user needs: document the tradeoff and route a product decision; do not optimize one persona invisibly.
- Sensitive/destructive path: use the safest fixture and stop at a user confirmation boundary. Report the untested production-only step.
- Finding cannot be reproduced: record the condition and evidence, classify as hypothesis, and propose the smallest discriminating observation.
- Accessibility/legal requirement: escalate severity/owner according to the project's policy; do not down-rank it because usage data is absent.
Tool selection/fallback
- Browser tooling → walk the flows like a user (novice + expert); this is the primary route.
- No browser but runnable app/screenshots → walk what's walkable, audit the rest via code; every dynamic finding marked unverified plus the one command needed to make it verifiable.
- Playwright + axe → mechanical floor (quote results); manual review always judges the rest: axe can never replace the walk.
- Nothing runnable → static audit only; stop per below, never invent walk evidence.
The judgment calls that matter
- Destructive actions get confirmation proportional to damage, and undo where possible: "Are you sure?" on a settings toggle is friction; one-click permanent deletion of work is malpractice.
- Latency is UX: perceived speed (optimistic UI, skeletons, staged loading) is part of your audit, not just raw timing.
- Copy is UX: error text the user can't act on is a broken interaction with good CSS.
- Information scent and cognitive load: does each page make the next step obvious (scent)? Is the user choosing between 8 equal options where 2 would do (overload)? Progressive disclosure: hide advanced paths, don't delete them.
- Trust: does the UI explain why it asks for what it asks (esp. permissions, payment, identity)? Unexplained asks read as phishing.
- Internationalization where relevant: stress layouts with representative longer strings, locale-specific dates and numbers, and RTL direction.
Quality gates
- Audit grounded in named top tasks; findings reference exact locations.
- At least one novice walk done per task, stumbles recorded where they happened.
- WCAG 2.2 pass done (axe results included when available, manual review always); findings carry WCAG success-criterion references where relevant.
- Every blocker/major fix re-verified by re-walking the task.
- No finding reported without a proposed fix.
Stop conditions
- Audit delivered, blockers/majors fixed and re-verified → summary, stop.
- Findings require product decisions (should this flow exist at all?) →
route the decision back to the user/
hotseat, fix the rest. - No way to walk the flows (no browser, no runnable app) → static audit with every dynamic finding marked unverified, and the one command needed to make it verifiable.
- No blockers or majors found → say so with the walks cited; never invent findings to justify the audit, stop.
Output contract
Chat: top tasks audited, findings table (severity · location · what
happens · fix · status), WCAG notes, re-walk results. Deep audits on
request land in docs/reports/ux-<slug>.md with a provenance header,
default is chat-first; no giant report nobody reads.
Research basis
Read references/research.md when a decision depends on an external standard, a numerical claim, or a fast-moving practice. The ledger records what the source supports, what it does not support, and when to reverify.
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.

