安装方式
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add luongnv89/skills --skill dont-make-me-think Review UI usability using Steve Krug's principles and produce a scannable report. Use for UX audits of screenshots, URLs, or code. Don't use for brand critique, WCAG audits, or backend/API review.
0
下载量
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add luongnv89/skills --skill dont-make-me-think name: dont-make-me-think
description: Review UI usability using Steve Krug's principles and produce a scannable report. Use for UX audits of screenshots, URLs, or code. Don't use for brand critique, WCAG audits, or backend/API review.
license: MIT
effort: medium
metadata:
version: 1.4.1
author: "Luong NGUYEN <luongnv89@gmail.com>"Evaluate and improve UIs through Steve Krug's "Don't Make Me Think" principles. The report itself must practice what Krug preaches: scannable, visual, zero fluff. A human should skim it in 30 seconds; an AI agent should be able to parse it and start fixing.
Trigger this skill when the user asks for a usability audit, UX review, or UI feedback on a screenshot, live URL, or HTML/CSS code. Do not use for visual/brand critique, WCAG accessibility audits, or backend/API review — route those elsewhere.
This skill invokes /browse, and only on the live URL path — screenshot, code, wireframe,
and description inputs need nothing installed. Resolve it before navigating anything:
test -d "$HOME/.claude/skills/browse" || asm list -p claude --json | grep -q '"browse"' || {
echo "Missing required skill: browse" >&2
echo "Install it: asm install github:garrytan/gstack:browse -p claude -s global --yes" >&2
echo "No asm yet: npm install -g agent-skill-manager" >&2
echo "Verify: asm list -p claude --json | grep 'browse'" >&2
}
The install-path test runs first on purpose: /browse ships in gstack and may be present without
asm knowing about it, so an asm list check alone would nag on every live-URL review.
-p claude is not decoration: asm install refuses to guess a provider non-interactively and
--yes does not cover that choice. Naming the same provider in the verification stops an install
under a different tool from reporting success. -s global is what makes the install agree with the
detection: scope otherwise defaults to a prompt, and a project-scoped install lands in
.claude/skills/, where the $HOME test above will never find it.
A missing /browse is fail-soft, not fatal — take the /browse row in Error Handling below.
Never review a URL you could not load.
Steps 1-4 below are read-only and need no sync. **Redesign Mode (step 5) writes to UI source files
in a git repo** — sync the branch with the remote before its first edit, so fixes land on the
latest base:
branch="$(git rev-parse --abbrev-ref HEAD)"
git fetch origin
git pull --rebase origin "$branch"
If the tree is dirty, git stash, sync, git stash pop. If origin is missing or the pull
conflicts, stop and ask the user — never skip or force the sync.
Follow this workflow to keep the agent's context budget tight:
references/krug-principles.md for token-efficient deep dives)./browse, per the Dependency Preflight aboveWhen the input is a screenshot, run the pre-processing script before visual analysis, so the
review rests on measured data instead of image-processing code written at runtime:
python3 scripts/process_screenshots.py <image_path> [--recursive]
It always produces both outputs: JSON on stdout — metadata, color palette, layout regions, visual
density, quality score, warnings — and a human-readable markdown report on stderr. Populate the
review from the JSON; read the markdown for a quick sanity check. If the script fails or the image
is invalid, fall back to visual analysis and note the failure in the review.
Read references/screenshot-processing.md for the full flag set, every extracted field, and how to
map the output onto the scorecard.
| Input type | Action |
|---|---|
| Screenshot/image | Pre-process with scripts/process_screenshots.py, then analyze visually |
| Live URL | Use /browse to navigate, screenshot, interact |
| HTML/CSS/JS code | Read code, focus on user experience |
| Wireframe/mockup | Focus on information architecture, not polish |
| Verbal description | Ask clarifying questions first |
Evaluate through whichever lenses apply. Read references/krug-principles.md for deep detail on any principle.
| # | Lens | Core question |
|---|---|---|
| 1 | Self-evidence | Would a user pause to figure out what this is or does? |
| 2 | Scanning | Can you grasp the page structure in 2-3 seconds? |
| 3 | Visual hierarchy | Does visual weight match importance? |
| 4 | Word economy | Does every word earn its place? |
| 5 | Navigation | Do you always know where you are and how to move? |
| 6 | Trunk test | Drop here cold — can you answer: what site? what page? what can I do? |
| 7 | Landing clarity | Within 5 seconds, can you explain what this site does? |
| 8 | Affordances | Is it instantly clear what's clickable/tappable? |
| 9 | Mobile | Touch targets, reachability, no hidden gestures? |
| 10 | Goodwill | Does the UI respect the user's time and trust? |
The review output must be concise, visual, and skimmable. Think bullet points, tables, and diagrams — not paragraphs. The report serves two audiences simultaneously: a human who wants to skim in 30 seconds, and an AI agent who needs enough context to implement fixes.
Use this exact template:
~~~markdown
[One sentence: what's the single biggest usability problem on this page]
Rate each applicable lens 0-10. Use a mermaid chart to visualize.
xychart-beta
title "Usability Scores"
x-axis ["Self-evident", "Scanning", "Hierarchy", "Words", "Navigation", "Trunk test", "Landing", "Affordances", "Mobile", "Goodwill"]
y-axis "Score" 0 --> 10
bar [8, 6, 5, 4, 7, 8, 9, 6, 7, 5]
| Lens | Score | Why |
|---|---|---|
| Self-evidence | 8/10 | Labels are clear, one ambiguous nav item |
| ... | ... | ... |
Use severity icons: 🔴 Critical, 🟡 Moderate, 🟢 Minor
...
...
Show where issues cluster on the page using a mermaid diagram.
graph TD
subgraph Header/Nav
I1["🔴 Duplicate 'macOS' label"]
end
subgraph Hero
OK1["✅ Clear tagline"]
end
subgraph Mid-page
I2["🟡 Tab selector too subtle"]
I3["🟡 23 carousel images"]
end
subgraph Bottom
I4["🔴 Disabled buttons, no explanation"]
I5["🟡 No pricing shown"]
end
style I1 fill:#ff4444,color:#fff
style I4 fill:#ff4444,color:#fff
style I2 fill:#ffbb33,color:#000
style I3 fill:#ffbb33,color:#000
style I5 fill:#ffbb33,color:#000
style OK1 fill:#00C851,color:#fff
When relevant, show the user's journey and where friction occurs.
graph LR
A["Land on page"] --> B["Read hero ✅"]
B --> C["Scroll features ✅"]
C --> D["See carousel 🟡"]
D --> E["Reach CTA"]
E --> F["Button disabled 🔴"]
F --> G["Abandon ❌"]
style F fill:#ff4444,color:#fff
style G fill:#ff4444,color:#fff
style B fill:#00C851,color:#fff
style C fill:#00C851,color:#fff
Bullet list — protect these during redesign:
| Priority | Issue | Effort | Impact |
|---|---|---|---|
| 1 | [issue] | Low | High |
| 2 | [issue] | Medium | High |
| 3 | [issue] | Low | Medium |
~~~
When the user wants fixes applied (not just reported), every destructive edit requires an explicit dry-run preview and user confirmation before writing:
If working with code, edit files directly only after confirmation. For screenshots, provide specs an AI agent or developer can implement without guessing.
| Situation | Action |
|---|---|
/browse fails or URL is unreachable | Ask user for a screenshot or HTML export; do not proceed with assumptions |
| Screenshot pre-processing fails | Fall back to visual analysis; note the failure in the review |
| Screenshot cannot be loaded or parsed | Ask user to re-share as PNG/JPEG or paste the relevant HTML |
| HTML/CSS code is incomplete | Note missing sections in the review; evaluate only what is present |
| No input provided | Ask for one of: URL, screenshot, code snippet, or verbal description before starting |
| Redesign Mode — file not writable | Report the permission issue; provide specs as code comments instead |
A completed usability review delivers a structured Usability Review markdown report containing:
Example summary line:
Thinking Cost: HIGH — 3 critical issues found (disabled button, missing nav labels, no landing clarity)
| Scenario | Handling |
|---|---|
| Input is a verbal description only | Ask clarifying questions before evaluating; do not guess at UI elements not described |
| Screenshot of a native mobile app (not web) | Apply mobile-specific lenses (9 — Mobile) with extra weight; note platform-specific conventions |
| User wants "just a quick check" | Deliver a condensed review (top 3 issues only) rather than the full 10-lens report |
| Redesign Mode on a CSS framework (Tailwind, Bootstrap) | Preserve the framework classes; only change values, not the framework itself |
| UI has no issues | Output the scorecard with high scores and a "What Works" section only; do not fabricate problems |
| Multiple screenshots provided | Pre-process each with the script; run batch analysis (--recursive if directory) |
| Screenshot is very large (>4K) | Note in the review that detail may be excessive; consider recommending downscaled reference |
After each major phase, emit a status report. See references/step-completion-reports.md for the template and per-phase check names.