Norman audit
Audit the interface the way its schema cannot see it: from where the user
stands. Scope: the diff under review when one is given, otherwise every
surface the workspace ships.
Anchor
Name the product's 3 most frequent user tasks (from README, docs, or
inference — say which). Walk each task's path first and count its steps.
Findings on those paths outrank findings elsewhere at equal severity.
Tags and severity
cut: control or feature that never earned its place. Fix: nothing, a
default, or the system absorbing it.
orphan: capability with no signifier on the user's natural path. Fix: put
the signifier where the intention forms.
scentless: label sharing no vocabulary with the user's goal. Fix: the
user's words.
excise: steps that do not advance the goal. Fix: the shorter path,
counted (N → M).
recall: the user must remember or re-enter what the system knows. Fix:
prefill, show, or pick.
mute: action without feedback, or state without display. Fix: the visible
response or status.
trap: slip waiting to happen — unconstrained input, destructive act
without undo, a signifier that lies. Fix: the constraint, the undo, the
honest cue.
amnesia: state lost across interruption or navigation; no resumption cue.
Fix: persist it, and mark where the user left off.
Severity — higher number = worse, always list S4 first: S4 catastrophe
(blocks or destroys), S3 major (fails often, hard to recover), S2 minor
(recurring friction), S1 cosmetic. Rated on frequency × impact × persistence.
S-numbers are not priority ranks; do not invert them.
Hunt
- Diff capabilities against signifiers: everything the schema, API, routes,
and commands can do, minus everything a screen, menu, or help text points
at. The remainder is orphans — read
references/cognition.md for the method and the
eight finding classes.
- Forms: field counts, required attributes, fields answerable from existing
data.
- Labels and copy: internal names leaking into UI strings; error messages
without cause and fix.
- Mutations without a visible response; state (mode, save, sync, scope) that
exists but never renders.
- Destructive paths: confirmation, undo, dry-run, adjacency to safe controls.
- Drafts, filters, and progress across navigation: persisted? resumption cue?
- CLI/TUI surfaces: run the 12 mechanical checks in
references/cli-tui.md.
- House standard: if the workspace carries its own interface standard, audit
against it too and cite it per finding — it outranks this skill where they
disagree.
Start with the bundled evidence collector; it reports facts, never verdicts:
bin/norman-audit [path] [--json] [--section forms|targets|flags|state]
Count what source lets you count (taps, fields, flags, steps, px) — read
references/interaction-cost.md before
asserting any number. A claim that needs the running product (timing,
rendering, actual focus order) is labeled needs live check, not asserted.
To adversarially verify a finding before reporting it, run the
skeptic role prompt as a subagent.
Output
One line per finding, ranked worst first — S4, then S3, S2, S1 — ties broken
by user cost. Format: S<severity> <tag> <what>. <fix>. [<file>:<line>].
End with: net: -<N> controls, -<M> steps, +<K> signifiers needed.
Nothing to flag: No Norman doors. Ship.
References
- references/principles.md — the DOET vocabulary,
current: signifiers, gulfs, slips vs mistakes, constraints.
- references/interaction-cost.md — what is
countable; the folklore blacklist.
- references/cognition.md — discoverability,
memory, interruption; the eight finding classes.
- references/bloat.md — the earn-its-place evidence and
severity practice.
- references/cli-tui.md — the 12 mechanical CLI/TUI
checks.
Boundaries
Interface design only. Code quality, correctness, and security go to their
own review passes. Accessibility minimums are floors, never findings to
"simplify away." Reads source, changes nothing, one-shot.
1---2name: norman-audit3description: Audit an interface for design failures, from source alone — a changed diff or a whole workspace. Hunts eight failure classes (controls that never earned their place, orphaned capabilities, scentless labels, excise steps, recall demands, mute actions, slip traps, state amnesia) across screens, forms, navigation, CLI commands, and error messages, and returns ranked one-line findings with fixes, citing file and line. Use to audit an interface or UX, review an interface change, find out why users cannot find features, or decide what a UI should drop. Reports only; does not apply fixes. Not for code quality, correctness, or security review.4---56# Norman audit78Audit the interface the way its schema cannot see it: from where the user9stands. Scope: the diff under review when one is given, otherwise every10surface the workspace ships.1112## Anchor1314Name the product's 3 most frequent user tasks (from README, docs, or15inference — say which). Walk each task's path first and count its steps.16Findings on those paths outrank findings elsewhere at equal severity.1718## Tags and severity1920- `cut:` control or feature that never earned its place. Fix: nothing, a21 default, or the system absorbing it.22- `orphan:` capability with no signifier on the user's natural path. Fix: put23 the signifier where the intention forms.24- `scentless:` label sharing no vocabulary with the user's goal. Fix: the25 user's words.26- `excise:` steps that do not advance the goal. Fix: the shorter path,27 counted (N → M).28- `recall:` the user must remember or re-enter what the system knows. Fix:29 prefill, show, or pick.30- `mute:` action without feedback, or state without display. Fix: the visible31 response or status.32- `trap:` slip waiting to happen — unconstrained input, destructive act33 without undo, a signifier that lies. Fix: the constraint, the undo, the34 honest cue.35- `amnesia:` state lost across interruption or navigation; no resumption cue.36 Fix: persist it, and mark where the user left off.3738Severity — **higher number = worse, always list S4 first**: S4 catastrophe39(blocks or destroys), S3 major (fails often, hard to recover), S2 minor40(recurring friction), S1 cosmetic. Rated on frequency × impact × persistence.41S-numbers are not priority ranks; do not invert them.4243## Hunt4445- Diff capabilities against signifiers: everything the schema, API, routes,46 and commands can do, minus everything a screen, menu, or help text points47 at. The remainder is orphans — read48 [references/cognition.md](references/cognition.md) for the method and the49 eight finding classes.50- Forms: field counts, required attributes, fields answerable from existing51 data.52- Labels and copy: internal names leaking into UI strings; error messages53 without cause and fix.54- Mutations without a visible response; state (mode, save, sync, scope) that55 exists but never renders.56- Destructive paths: confirmation, undo, dry-run, adjacency to safe controls.57- Drafts, filters, and progress across navigation: persisted? resumption cue?58- CLI/TUI surfaces: run the 12 mechanical checks in59 [references/cli-tui.md](references/cli-tui.md).60- House standard: if the workspace carries its own interface standard, audit61 against it too and cite it per finding — it outranks this skill where they62 disagree.6364Start with the bundled evidence collector; it reports facts, never verdicts:6566```67bin/norman-audit [path] [--json] [--section forms|targets|flags|state]68```6970Count what source lets you count (taps, fields, flags, steps, px) — read71[references/interaction-cost.md](references/interaction-cost.md) before72asserting any number. A claim that needs the running product (timing,73rendering, actual focus order) is labeled `needs live check`, not asserted.74To adversarially verify a finding before reporting it, run the75[skeptic](agents/skeptic.md) role prompt as a subagent.7677## Output7879One line per finding, ranked worst first — S4, then S3, S2, S1 — ties broken80by user cost. Format: `S<severity> <tag> <what>. <fix>. [<file>:<line>]`.81End with: `net: -<N> controls, -<M> steps, +<K> signifiers needed.`82Nothing to flag: `No Norman doors. Ship.`8384## References8586- [references/principles.md](references/principles.md) — the DOET vocabulary,87 current: signifiers, gulfs, slips vs mistakes, constraints.88- [references/interaction-cost.md](references/interaction-cost.md) — what is89 countable; the folklore blacklist.90- [references/cognition.md](references/cognition.md) — discoverability,91 memory, interruption; the eight finding classes.92- [references/bloat.md](references/bloat.md) — the earn-its-place evidence and93 severity practice.94- [references/cli-tui.md](references/cli-tui.md) — the 12 mechanical CLI/TUI95 checks.9697## Boundaries9899Interface design only. Code quality, correctness, and security go to their100own review passes. Accessibility minimums are floors, never findings to101"simplify away." Reads source, changes nothing, one-shot.