A Claude Skill · v3

The UX DeCode

13 human–computer interaction principles, rewritten as a decidable protocol. The same criteria work in both directions: observable pass/fail tests when the interface exists, verifiable constraints when it doesn't.

20 / 20 assertions 3 evals · 2 versions MIT
View on GitHub See the test data Install

Why it exists

Three ways a UX review goes wrong

Ask a general-purpose model to “review this interface” and you get plausible, unfalsifiable prose — improve the visual hierarchy, take care of the feedback, make the CTA more prominent. None of it can be shown to be wrong. None of it survives the first meeting where somebody opens the actual screen.

Taste dressed as diagnosis

“The colours feel a bit flat.”

Replaced by observable criteria with thresholds — contrast ≥ 4.5:1, touch targets ≥ 44×44 px, response-time bands. A finding is a fact you can re-check, not a preference you can only agree with.

Fabricated evidence

“Observed evidence: forty widgets of equal visual weight…”

— about a screen never seen. The skill separates NV (not assessable with the material provided) from N/A (not relevant), and delivers a detection plan instead of an audit when there is nothing to look at.

Retroactive justification

“This layout satisfies P5 and P9.”

Principles used as a checklist after the layout is drawn always find the one that absolves the choice already made. In design mode the constraints are derived and written down before any solution is proposed.

The idea

One grid, read in two directions

An observable criterion read against something that exists is a test. The same criterion read before the thing exists is a requirement. Contrast ≥ 4.5:1 is a finding in an audit and a palette constraint in a design spec. You don't need two theories — you need to know which direction you're working in, and the skill makes you declare it.

Your situationMode
Something already exists to judge — screen, mockup, flow, live productEvaluation
A screen, a flow, an information architecture has to be designed from nothingDesign
Redesign — something is broken and has to be remadeBoth, in that order
The client describes a problem but hands over no artifactDetection plan

Redesign is the most common case and the most often botched. You evaluate first — to know exactly what breaks the task — and design after, with the findings as input constraints. Skipping the evaluation produces a redesign that relocates the problems instead of solving them, and that nobody can justify to the client.

What you get

Four things a generic review doesn't give you

Severity that ranks work

Blocking / High / Medium / Low, ordered by severity × frequency of use — never by ease of implementation. Twenty low-severity notes hide the two blockers, so padding the list is explicitly forbidden.

Trade-offs named out loud

Principles contradict each other. The conflict is declared, a stated resolution hierarchy is applied, and the decision is written with its reasoning. A conflict resolved silently returns in implementation as an endless argument.

Client-ready deliverables

Two templates — an audit report and a design spec for whoever implements. In the benchmark these came out at 30–40k characters, structured, with self-assessment sections whose outcomes are not all positive.

Honesty about limits

A heuristic evaluation anticipates likely problems; it does not measure them. What needs real users — completion times, error rates, terminology comprehension — is stated as such rather than quietly promised.

The framework

The 13 principles

The same criterion, phrased for each direction. Operational detail — verification question, observable criteria with thresholds, typical violations, levers — lives in references/principi.md, which the skill is required to read before any work, in either mode.

#PrincipleIn evaluationIn design
P1AccessibilityWho is excluded by this interface?Which capabilities am I not taking for granted?
P2Help & documentationWhere does the user get stuck, and what do they find there?Where do I expect the block, and what do I put there?
P3Consistency & standardsDoes the same thing always behave the same way?Which convention do I inherit, which do I invent — and why?
P4Mental modelsThe user's language, or the company's?What does the user call these things, before I name them?
P5Clear, effective designWhat does the eye see first, and is it the right thing?What must be seen first, and what can sit underneath?
P6Exploration & mappingDoes the user know where they are and how to get back?How do I make exploration safe rather than hard?
P7Flexibility & efficiencyIs the expert forced to move like a novice?Which accelerator can I add without breaking the base path?
P8Visibility & feedbackAfter every action, does the user know what happened?What signal do I give for each action and each wait?
P9Cognitive limitsHow many things must be held in mind at once?What can the system remember on the user's behalf?
P10Information managementIs the data presented, or just dumped?Which question must this screen answer?
P11Error preventionIs the error prevented, or only reported afterwards?Which errors do I make impossible, and which reversible?
P12Efficiency & effectivenessHow many steps for the most frequent action?What is the most frequent action, and how short can it get?
P13Freedom & rulesDo the constraints protect the user or the system?Is this constraint irreversible and costly, or am I just confirming?

Numeric thresholds reference WCAG 2.2, Apple HIG, Material and the response-time literature. They are cited to make a finding verifiable — not applied mechanically out of context.

Measured, 28 August 2026

What improved in v3, and by how much

Iteration 2 added the “nothing to look at” path and the NV outcome. Three evals were run against both versions — one design task, one audit task, and the case the correction targeted: a redesign requested with no artifact at all.

Assertions v320/20v2: 17/20
Pass rate v3100%v2: 85% (17/20)
Mean run time451sv2: 439s · within noise
Mean tokens94kv2: 90k per run

Assertions passed, per eval

Each bar is scaled to that eval's own total, so a full bar means every assertion passed.

v3 (corrected) v2 (previous)

Run time, per eval

Seconds, single run per configuration. The differences run in both directions and are not a meaningful signal.

v3 (corrected) v2 (previous)
EvalWhat it stressesv3v2Time v3Time v2
E0
Design from scratch
Non-regression: v3 must not have broken design mode 6/66/6 527.1 s571.7 s
E1
B2B checkout audit
The NV outcome: auditing a written description, where half the criteria cannot be verified 7/77/7 517.5 s465.5 s
E2
Redesign, no artifact
The “no artifact” path: a redesign asked for with no screenshots and no access 7/74/7 309.7 s278.6 s

The entire delta sits on E2 — exactly the gap the correction was meant to close. E0 is a tie by design: it is a non-regression control, not a measurement.

The case that separated them

“Our dashboard sucks. Where do I start?”

The prompt, in full: “our ERP dashboard sucks, 40 identical widgets, nobody uses it. we have to redo it for the October release. where do I start?” — no screenshot, no access, nothing to look at.

v2 — 4/7

“Usability audit … Observed evidence: forty widgets of equivalent visual weight, with no indication of which to look at first.”

Severity: High. About a screen it had never seen. It then pre-filled an “Expected” column with Expected FAIL on P5 and P9 before looking at anything, and asked for 90 days of per-widget analytics plus 5–8 shadowing sessions per role — never once asking for the screenshots.

v3 — 7/7

“Detection plan. This document is not an audit. The dashboard has not been seen … before the detection, an outcome does not exist.”

Seven hypotheses, each with the evidence to collect and the line that would disprove it, at operational thresholds. Then five specific requests with timings and an owner — screenshots first, because they are the cheapest thing that unblocks the most.

“What would disprove this” is the line that does the work. A hypothesis no observation can disprove isn't a hypothesis — it's a prejudice with a number in front of it. And a document that presents inference as observation holds up exactly until the first meeting where somebody opens the screen.

Caveats

How to read these numbers honestly

The skill's own rule is that a finding without an observation is a hypothesis. The same rule applies to its benchmark.

Raw grading with per-assertion evidence, the twelve produced documents, the v2→v3 diffs and the full report are all in the repository under /benchmarks.

Get it

Install

Clone into your Claude skills directory:

git clone https://github.com/mattBonfanti/the-ux-decode.git \
  ~/.claude/skills/ux-decode

For a project-scoped install, clone into .claude/skills/ux-decode/ inside your repository instead. A packaged bundle is also available at dist/ux-decode.skill.

Then just ask

Audit this checkout flow, I need a document for the board.

Design the fault-reporting screen for a maintenance ERP —
used on a tablet, standing up, with cut-resistant gloves on.

Why do users keep making mistakes on this form?

Our dashboard is bad and nobody uses it. Where do I start?

The last one is the interesting case: with no artifact attached you get a detection plan and a specific, minimal list of what's needed to start — not a fabricated audit.

The skill files are written in Italian — that is the exact artifact that was benchmarked, published unchanged. It works on English-language interfaces and produces English deliverables when you ask in English.