ux-audit
Systematic UX evaluation using Nielsen heuristics and accessibility checks. Use when reviewing UI, "is this usable", improving user experience, or pre-launch.
Best use case
ux-audit is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Systematic UX evaluation using Nielsen heuristics and accessibility checks. Use when reviewing UI, "is this usable", improving user experience, or pre-launch.
Teams using ux-audit should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/ux-audit/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How ux-audit Compares
| Feature / Agent | ux-audit | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Systematic UX evaluation using Nielsen heuristics and accessibility checks. Use when reviewing UI, "is this usable", improving user experience, or pre-launch.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
<!-- TOC: Core | Prompt | Quick Check | Heuristics | CLI | Output | Anti-Patterns | References -->
# UX Audit
> **Core Insight:** Users don't read manuals. If it's not obvious, it's broken.
## THE EXACT PROMPT
```
Conduct a UX audit of this [application/CLI/interface]:
1. Nielsen's 10 Usability Heuristics
2. Accessibility basics (keyboard, contrast, screen reader)
3. User flow analysis (happy path + error paths)
4. Cognitive load assessment
Produce prioritized report:
- Critical (blocking)
- Important (degraded experience)
- Suggestions (polish)
Include file:line references and concrete fixes.
```
---
## Quick Check (5 min)
```markdown
| Area | Status | Notes |
|------|--------|-------|
| Navigation | 🟢/🟡/🔴 | |
| Forms | 🟢/🟡/🔴 | |
| Errors | 🟢/🟡/🔴 | |
| Accessibility | 🟢/🟡/🔴 | |
| Mobile/Responsive | 🟢/🟡/🔴 | |
```
---
## Nielsen's 10 Heuristics (Quick Reference)
| # | Heuristic | Key Question |
|---|-----------|--------------|
| 1 | **Visibility** | Does user know what's happening? |
| 2 | **Real World** | Familiar language & concepts? |
| 3 | **Control** | Can user undo/escape? |
| 4 | **Consistency** | Same action = same result? |
| 5 | **Error Prevention** | Prevents mistakes before they happen? |
| 6 | **Recognition** | Options visible vs. memorized? |
| 7 | **Flexibility** | Shortcuts for experts? |
| 8 | **Minimal** | Visual clutter removed? |
| 9 | **Error Help** | Error messages helpful? |
| 10 | **Documentation** | Help available when needed? |
Deep dive: [HEURISTICS.md](references/HEURISTICS.md)
---
## CLI-Specific Heuristics
| Heuristic | CLI Application |
|-----------|-----------------|
| Visibility | `--verbose`, progress bars, spinners |
| Real world | Standard flags (`--help`, `--version`) |
| Control | Ctrl+C works, `--dry-run` available |
| Consistency | `-v` short, `--verbose` long |
| Error prevention | Confirmation prompts, `--force` |
| Recognition | `--help` shows all options |
| Flexibility | Short + long flags, piping |
| Minimal | Clean default, verbose optional |
| Error help | Actionable messages, suggested fixes |
| Documentation | `--help`, man pages, examples |
Generate checklist: `./scripts/generate-checklist.py cli`
---
## Accessibility Quick Check
### The Big 4
- [ ] **Keyboard:** All interactive elements reachable via Tab?
- [ ] **Contrast:** Text 4.5:1 ratio minimum?
- [ ] **Not color-only:** Icons/patterns, not just color?
- [ ] **Screen reader:** Labels, alt text, ARIA?
Deep dive: [A11Y.md](references/A11Y.md)
---
## Output Template
```markdown
# UX Audit: [Project]
## Summary
**Score:** X/10 | **Critical:** N | **Important:** N | **Suggestions:** N
## Critical Issues (Must Fix)
### 1. [Title]
**Heuristic:** #N - [Name]
**Location:** `file:line`
**Problem:** [What's wrong]
**Fix:** [Specific solution]
## Important Issues (Should Fix)
[Same format]
## Suggestions
- [ ] [Item]
## Heuristic Scores
| Heuristic | Score |
|-----------|-------|
| 1. Visibility | X/10 |
...
```
Full template: [EXAMPLES.md](references/EXAMPLES.md)
---
## Audit Depth
| Type | Time | When |
|------|------|------|
| **Quick Scan** | 5-10 min | PR review, spot check |
| **Standard** | 30-60 min | Pre-release, feature review |
| **Deep Audit** | 2+ hr | Major redesign, compliance |
---
## Anti-Patterns
| Don't | Do |
|-------|-----|
| "It's intuitive" | Test with fresh eyes |
| Ignore error paths | Audit happy AND error flows |
| Skip accessibility | Check the Big 4 minimum |
| Vague issues | Specific `file:line` + fix |
| All issues equal | Prioritize by impact |
---
## Integration
### With Hooks
Auto-run a11y check after UI edits:
```json
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit",
"hooks": [{
"type": "command",
"command": "if echo \"$TOOL_INPUT_PATH\" | grep -qE '\\.(tsx|jsx|html)$'; then npx axe \"$TOOL_INPUT_PATH\" 2>/dev/null || true; fi"
}]
}]
}
}
```
### With Other Skills
| Combine with... | For... |
|-----------------|--------|
| multi-model-triangulation | Multiple UX perspectives |
| multi-pass-bug-hunting | Include UX issues in sweeps |
| ui-polish | After fixing critical UX issues |
---
## References
| Topic | File |
|-------|------|
| Full heuristic details | [HEURISTICS.md](references/HEURISTICS.md) |
| Accessibility deep dive | [A11Y.md](references/A11Y.md) |
| Example audits | [EXAMPLES.md](references/EXAMPLES.md) |
## Scripts
| Script | Purpose |
|--------|---------|
| `scripts/generate-checklist.py` | Generate project-specific checklist |
```bash
./scripts/generate-checklist.py web # Web app
./scripts/generate-checklist.py cli # CLI tool
./scripts/generate-checklist.py mobile # Mobile app
./scripts/generate-checklist.py api # API/DX
```Related Skills
codebase-audit
Codex-native domain codebase auditing for security, UX/accessibility, performance, API design, copy, and CLI quality. Use when auditing code, assessing quality, finding issues, pre-launch review, or running an explicit parallel Codex subagent audit.
zig
Use when implementing, reviewing, migrating, linting, testing, fuzzing, profiling, optimizing, or hardening Zig 0.16.0 code: .zig files, build.zig/build.zig.zon, std.Io/process.Init migration, C interop, expert comptime/metaprogramming/reflection/codegen, allocator ownership, FFI boundaries, concurrency, dependencies, and measured performance work.
verification-closure
Use this skill to decide whether the current artifact set is actually ready by consuming a canonical Closure Handoff Packet, running the narrowest decisive checks, and assigning a grounded readiness state. Trigger for requests like verify this patch is ready, run closure gates, decide if the branch reached a material fixed point, or close the loop on the current artifact state. Do not trigger for broad redesign or de novo code review without a closure question.
universalist
Use when code smells point to a structural refactor that should ship: flag or state matrices, repeated boundary validation, shared-key agreement checks, branchy policy logic, or syntax mixed with execution. Default to one seam, one smallest honest construction, adapter-first staging, and one proof signal.
synesthesia
Cross-modal diagnostic and review workflow for software systems. Use this skill to understand, explain, compare, critique, debug, profile, review, or refactor code by mapping technical signals into sensory models, then translating those models back into precise engineering language. Best fits include architecture review, readability or maintainability assessment, strange or flaky behavior, performance bottlenecks, API or UX critique, onboarding explanations, and comparing implementations or designs by feel, friction, weight, rhythm, sharpness, smoothness, coupling, or complexity. Also use when prompts ask what a codebase, bug, logs, API, or system feels, sounds, or looks like, or ask to make it lighter, smoother, cleaner, tighter, quieter, or more coherent. Do not use for exact API syntax, compliance or legal interpretation, security sign-off, rote code edits, or terse factual tasks.
st
Manage persistent task plans in `.step/st-plan.jsonl`, with an explicit first-use choice between repo-committed storage and local-only ignore via `.git/info/exclude`, so state survives turns/sessions and can stay reviewable in git when desired. Use when users ask to "use $st", "resume the plan", "export/import plan state", "checkpoint milestones", "track dependencies/blocked work", "show ready next tasks", "keep shared TODO status on disk", "store backlog tasks on disk without loading them into `update_plan` yet", "select which durable tasks enter the mirrored plan", "map a `$select` plan into durable execution state", "prove `$st` works for implementation tracking", mirror the durable plan into Codex `update_plan` or OpenCode `TodoWrite`, or diagnose/repair `st-plan.jsonl` concerns (for example append-only vs mutable semantics, lock-file ignore policy, or seq/checkpoint integrity).
simplify-and-refactor-code-isomorphically
Shrink and unify code without changing behavior. Use when: simplify, refactor, reduce duplication, remove lines, extract helper, reuse component, DRY, collapse, better abstraction.
ship
Finalize work after validation: confirm a signal, capture proof in the PR description, and open a PR (no merge). Use when asked to run `$ship`, ship/finalize a branch, prepare or open a PR without merging, or publish validation proof before handoff.
seq
Mine Codex sessions JSONL (`~/.codex/sessions`) and file-based memories (`~/.codex/memories`) for explicit `$seq` and artifact-forensics questions, preferring `artifact-search`, then specialized follow-ups such as `skill-blocks`, `plan-search`, `session-prompts`, `session-tooling`, and `orchestration-concurrency`, then `query-diagnose`, and generic `query` only when needed. Opencode mining is explicit-only and requires a literal `opencode` cue in the request.
review-adjudication
Discriminately adjudicate PR review comments before implementation. Treat each comment as a claim to test, build the strongest no-change countercase, recover PR rationale with explicit `$seq` when needed, and decide what to act on, rebut, defer, or investigate. Trigger for `$review-adjudication`, review the review, adjudicate PR comments, are these comments relevant, which comments matter, or should we act on these comments. Not for implementing fixes, writing rebuttals only, or final merge closure.
refine
Refine an existing Codex skill in place with minimal diffs, then validate with quick_validate. Trigger when asked to improve a skill's trigger description/frontmatter, workflow text, metadata, scripts/references/assets, or agents/openai.yaml; also for requests to iterate, refactor, rename, or fix a skill using usage/session-mining evidence (for example from $seq).
reduce
Deconstruct high-cost abstractions and recommend lower-level primitives that reduce tooling, indirection, and hidden steps. Use when requests ask for fewer layers (for example "too many layers", "remove this framework/plugin/DI", "ditch codegen/task runners", "replace with plain scripts/config/SQL"), or when prompts say "it feels over-engineered", "start simpler", or "reduce the size of the codebase" (analysis-only unless implementation is explicitly requested).