skills/dont-make-me-think/SKILL.md
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.
npx skillsauth add luongnv89/skills dont-make-me-thinkInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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:
# Usability Review: [Page/Screen Name]
## Thinking Cost: [LOW | MODERATE | HIGH]
> [One sentence: what's the single biggest usability problem on this page]
## Scorecard
Rate each applicable lens 0-10. Use a mermaid chart to visualize.
```mermaid
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 |
| ... | ... | ... |
## Issues
Use severity icons: 🔴 Critical, 🟡 Moderate, 🟢 Minor
### 🔴 [Short issue title]
- **Problem:** [one line — what the user experiences]
- **Impact:** [one line — what happens because of this]
- **Fix:** [one line — specific, actionable, concrete]
- **Where:** [element/section/selector if applicable]
### 🟡 [Short issue title]
...
### 🟢 [Short issue title]
...
## Issue Map
Show where issues cluster on the page using a mermaid diagram.
```mermaid
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
```
## Page Flow Analysis
When relevant, show the user's journey and where friction occurs.
```mermaid
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
```
## What Works
Bullet list — protect these during redesign:
- ✅ [Good thing 1]
- ✅ [Good thing 2]
## Fix Priority
| 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.
development
Scan a live site with isitagentready.com, then approve each step: triage the 0-5 agent-readiness score, write agent-ready-plan.md, file issues via /plan-to-issues. Don't use for applying llms.txt/SEO fixes (seo-ai-optimizer) or app-store ASO.
development
Review a product codebase and landing page against 32 viral principles and produce a Virality Score plus ranked fixes. Use to audit virality or prioritize growth. Don't use for SEO, ASO, copywriting, or code review.
development
Generate a Technical Architecture Document (TAD) from a PRD. Use when asked to design system architecture or define how a product is built. Updates tad.md and reports GitHub links. Don't use for PRD authoring, sprint tasks, or code implementation.
development
Check product and brand names for conflicts across trademarks, domains, social handles, and package registries. Returns a risk level and Proceed/Modify/Abandon recommendation. Skip for name brainstorming, logo design, or trademark filings.