Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Produce a scored heuristic critique of the UI using Nielsen's 10 + 6 design laws + optional persona walkthroughs. Outputs a machine-parseable scorecard plus a 0-100 UsabilityScore (the judged companion to the deterministic UICraftScore). Invoke when the user asks for heuristic on their UI, or mentions 'heuristic' alongside design / UI / frontend work.
.claude/skills/educlopez-heuristic/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-14 | ✓→✗ | ▼ Worse | -84% | 0% |
| case-04 | ✓→✗ | ▼ Worse | -69% | 0% |
| case-15 | ✓→✗ | ▼ Worse | -43% | 0% |
| case-19 | ✓→✗ | ▼ Worse | -73% | 0% |
<!-- 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 ui-craft skill. If the ui-craft 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 $ARGUMENTS against Nielsen's 10 + 6 design laws. Load the ui-craft skill.
Step 1 — Load the methodology. Read references/heuristics.md 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:
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:
Step 4 — Persona walkthrough (if --persona= present). If the args include --persona=<name>, load references/personas.md and run the matching walkthrough checklist. Supported: priya, jordan, adaeze, kwame, margo, all. 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 minor-polish 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 references/heuristics.md: heuristic_base = round(((mean(nielsen_scores) − 1) / 4) × 100), minus 5 × (failed design laws), clamped 0,100]. Same A/B/C/D/F bands as UICraftScore. Always label it (judged) — it is not deterministic and must never gate CI. If the args include --json, 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 score_ui MCP tool) and placing both side by side — never average them.
Step 7 — Output. Use the exact scorecard format in references/heuristics.md:
## Heuristic Scorecard table## Design Law Audit table## Persona Walkthrough table (only if --persona= was passed)## Top findings (ranked by impact) — numbered list, 3-5 items## UsabilityScore block — the 0-100 score + grade + component breakdownKnob awareness: knob-agnostic. Usability is not a knob — a 2 is a 2 whether CRAFT_LEVEL is 3 or 9. Do not soften scores based on CRAFT_LEVEL.
Output contract:
Do NOT edit code. This is a scored critique.
Next step: Fix the findings, then /finalize — the scorecard is the input to a gated ship (rung 3).
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-14 | pass→fail | 47,383 | 6,186 | -87% | 1 | 1 | 0% | 8,216 | 1,319 | -84% | 0 | 0 | — |
case-01 | fail→fail | 37,846 | 7,007 | -81% | 1 | 1 | 0% | 5,406 | 1,322 | -76% | 0 | 0 | — |
case-02 | fail→fail | 7,918 | 6,174 | -22% | 1 | 1 | 0% | 469 | 1,368 | +192% | 0 | 0 | — |
case-03 | fail→fail | 5,684 | 8,238 | +45% | 1 | 1 | 0% | 349 | 1,481 | +324% | 0 | 0 | — |
case-04 | pass→fail | 21,754 | 5,551 | -74% | 1 | 1 | 0% | 4,393 | 1,358 | -69% | 0 | 0 | — |
case-05 | pass→pass | 18,311 | 11,775 | -36% | 1 | 1 | 0% | 3,916 | 2,823 | -28% | 0 | 0 | — |
case-06 | fail→fail | 8,031 | 28,798 | +259% | 1 | 1 | 0% | 108 | 6,450 | +5872% | 0 | 0 | — |
case-07 | fail→fail | 15,504 | 5,129 | -67% | 1 | 1 | 0% | 2,477 | 1,254 | -49% | 0 | 0 | — |
case-08 | fail→fail | 26,241 | 5,759 | -78% | 1 | 1 | 0% | 4,218 | 1,213 | -71% | 0 | 0 | — |
case-09 | fail→fail | 12,051 | 4,701 | -61% | 1 | 1 | 0% | 1,894 | 1,287 | -32% | 0 | 0 | — |
case-10 | fail→pass | 25,150 | 22,526 | -10% | 1 | 1 | 0% | 3,919 | 5,247 | +34% | 0 | 0 | — |
case-11 | fail→fail | 17,501 | 6,338 | -64% | 1 | 1 | 0% | 2,690 | 1,229 | -54% | 0 | 0 | — |
case-12 | fail→fail | 16,954 | 6,908 | -59% | 1 | 1 | 0% | 2,632 | 1,379 | -48% | 0 | 0 | — |
case-13 | fail→fail | 31,441 | 6,378 | -80% | 1 | 1 | 0% | 6,069 | 1,272 | -79% | 0 | 0 | — |
case-15 | pass→fail | 12,842 | 6,961 | -46% | 1 | 1 | 0% | 2,210 | 1,267 | -43% | 0 | 0 | — |
case-16 | fail→fail | 12,133 | 5,068 | -58% | 1 | 1 | 0% | 1,874 | 1,242 | -34% | 0 | 0 | — |
case-17 | fail→fail | 25,955 | 7,859 | -70% | 1 | 1 | 0% | 3,655 | 1,381 | -62% | 0 | 0 | — |
case-18 | fail→fail | 10,563 | 7,435 | -30% | 1 | 1 | 0% | 1,714 | 1,550 | -10% | 0 | 0 | — |
case-19 | pass→fail | 32,589 | 6,144 | -81% | 1 | 1 | 0% | 4,693 | 1,250 | -73% | 0 | 0 | — |
case-20 | fail→fail | 22,558 | 5,435 | -76% | 1 | 1 | 0% | 4,126 | 1,330 | -68% | 0 | 0 | — |
case-21 | fail→fail | 16,376 | 6,553 | -60% | 1 | 1 | 0% | 2,795 | 1,520 | -46% | 0 | 0 | — |
case-22 | fail→fail | 12,488 | 4,128 | -67% | 1 | 1 | 0% | 1,930 | 1,184 | -39% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 2 counted toward the lift figure. The other 20 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -14 percentage points is the difference between those two pass rates over the 2 comparable cases. 6 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.