Use when asked to audit accessibility or UX polish of a locally runnable app — color contrast, tap-target size, ARIA/labels, keyboard navigation, locale parity, AI-generated UI slop. Triggers on "접근성 점검", "a11y audit", "UX 점검", "대비/탭타깃 확인".
Installs into .claude/skills of the current project.
Are you the author of A11ysweep?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/testbeagle-a11ysweep)
---
name: a11ysweep
description: Use when asked to audit accessibility or UX polish of a locally runnable app — color contrast, tap-target size, ARIA/labels, keyboard navigation, locale parity, AI-generated UI slop. Triggers on "접근성 점검", "a11y audit", "UX 점검", "대비/탭타깃 확인".
---
# a11ysweep
Plan-gated accessibility and UX audit of a locally running app: contrast, tap targets, labels, keyboard access, locale parity, and AI-built UI slop — reported against WCAG with evidence.
## Phase 0 — Discover (reuse preflight)
Run/reuse `../preflight/SKILL.md` for targets, run commands, drivers, output location. Reuse any repo a11y tooling found (e.g. touch-target or localization-parity lint scripts).
## Phase 1 — Plan + approval gate (MANDATORY)
Present the screens/routes to audit and the checks per platform, then stop per the shared gate in `../beagle-shared/approval-gate.md` (if that file is missing, still stop and wait for the user's explicit approval).
## Phase 2 — Audit
**Web** (`../beagle-shared/drivers-web.md`):
- axe per route, on the live page (logged-in pages included): `agent-browser a11y --tags wcag2a,wcag2aa,wcag21a,wcag21aa,wcag22aa --json`. Run `--tags best-practice` separately and never attach a WCAG criterion to those. Fallbacks: chrome-devtools MCP injecting axe-core via `evaluate_script` + `axe.run`, or `npx @axe-core/cli` (logged-out only, needs a matching chromedriver). Record the axe version. axe `incomplete` results go under 검증 불가, never pass. Quote axe's raw impact, but assign severity by `../beagle-shared/report-base.md` rule 9 (what the barrier does to the user), not by the impact label.
- Contrast: confirm axe's contrast results against computed colors; flag body text below WCAG AA (4.5:1; 3:1 for large text).
- Keyboard (interactive driver required): walk focus order with `agent-browser press Tab` + `snapshot` (or the MCP's `press_key`); flag traps, invisible focus, unreachable controls. Capture-only driver → 검증 불가.
- Labels: inputs/buttons/icons without an accessible name — `agent-browser snapshot` shows the accessible tree; unnamed controls stand out.
**Mobile** (`../beagle-shared/drivers-mobile.md`):
- Tap targets below the platform minimum (iOS 44pt, Android 48dp) — reuse the repo's touch-target check if present.
- Missing accessibility labels (`accessibilityLabel` / `contentDescription`).
**Both**: locale parity — strings present in one language but not another (reuse the repo's localization-parity lint); capture the same screen in each locale.
**UI slop** (review prompts, not absolute bans — keep intentional, justified design):
- Korean body text below ~14px.
- Default AI-blue/purple palette (e.g. `#3B82F6`) with no brand rationale.
- Uniform 3/4-column grids where rhythm/emphasis would serve the content.
- Box shadows on every surface; extreme gradients the brand doesn't own.
## Phase 3 — Report
Write per `../beagle-shared/report-base.md` (Korean default, anti-slop). Per finding: WCAG 기준(있으면) · 증상 위치 · 원인 위치(axe target selector → component template: grep a distinctive attribute, class, or text) · 왜(검증: axe rule / 측정값 / 스크린샷) · 수정 제안 · 확신. Unaudited screens → 검증 불가.
Optionally offer a static re-check runner via `../beagle-shared/emit-runner.md`.