<!-- HARNESS MIRROR — do not edit here. Canonical source: skills/ or commands/. After editing source, copy into cli/assets/<harness>/ and repo-root harness mirrors. -->
Context: this sub-skill is one lens of the broader
skill. If the
skill is also installed, read its SKILL.md first for Discovery + Anti-Slop + Craft Test, then apply the specific lens below.
Score the UI at
against Nielsen's 10 + 6 design laws. Load the
skill.
Step 1 — Load the methodology. Read
for the full rubric, scoring definitions, design law details, and the required output format. Do NOT invent a new format or a new scale.
Step 2 — Walk Nielsen's 10 heuristics. Score each 1-5 per the rubric:
- 1 blocks users · 2 severe friction · 3 works but confusing · 4 works, minor polish · 5 best-in-class
For every heuristic, write a concrete finding — quote text, count elements, name the broken flow. Vague findings are rejected.
Step 3 — Audit the 6 design laws. PASS / FAIL each with a specific detail:
- Fitts's Law — touch target sizing, CTA placement
- Hick's Law — choice density, nav + select sizing
- Doherty Threshold — perceived latency, optimistic UI
- Cleveland-McGill — chart encoding choice
- Miller's Law — nav depth, form section counts
- Tesler's Law — where complexity lives
Step 4 — Persona walkthrough (if present). If the args include
, load
and run the matching walkthrough checklist. Supported:
,
,
,
,
,
. Output the walkthrough as a
| Checklist item | Pass/Fail | Finding | Impact |
table. Without the flag, skip this step.
Step 5 — Rank findings by impact tag. Impact order:
blocks-conversion > adds-friction > reduces-trust > minor-polish
. Include at most 5 findings in the ranked list; cut anything at
unless there are no higher-impact findings.
Step 6 — Compute the UsabilityScore. Roll the scorecard into a 0-100 number + grade per the
UsabilityScore formula in
:
heuristic_base = round(((mean(nielsen_scores) − 1) / 4) × 100)
, minus
, clamped [0,100]. Same A/B/C/D/F bands as UICraftScore. Always label it
— it is
not deterministic and must never gate CI. If the args include
, also emit the machine-readable block. If the user asks for the full picture, build the
Extended quality report by fetching the deterministic UICraftScore (
node scripts/eval.mjs <path> --json
or the
MCP tool) and placing both side by side — never average them.
Step 7 — Output. Use the exact scorecard format in
:
- table
- table
- table (only if was passed)
## Top findings (ranked by impact)
— numbered list, 3-5 items
- block — the 0-100 score + grade + component breakdown
Knob awareness: knob-agnostic. Usability is not a knob — a 2 is a 2 whether
is 3 or 9. Do not soften scores based on
.
Output contract:
- This command produces a critique artifact, not code. No edits unless the user explicitly asks in a follow-up.
- The scorecard is machine-parseable markdown. A PM can paste it into any issue tracker and file tickets row-by-row. Frame it that way in any preamble.
- No "First Impressions" paragraph, no hedging, no praise padding. Tables + ranked list only.
Do NOT edit code. This is a scored critique.
Next step: Fix the findings, then
— the scorecard is the input to a gated ship (rung 3).