a11y-audit
Skill2 starsChanged 19 days agoMITView on GitHub
Run a WCAG 2.2 accessibility audit of an Android app with AppScreenMap — automated checks across a crawl, a 200% font-scale crawl, device tests (rotation, Switch Access/keyboard, TalkBack spot checks), manual review of the rest, triage into notes.json, and a findings report mapped to success criteria and levels. Use when asked to audit, check, or report on an app's accessibility or WCAG conformance.
34 other projects use a version of this.
Adopted by
Most recently taken up by
- arcasilesgroup/ai-engineeringtheir own version, first seen Nov 8, 2026
- darkweb19/skillstheir own version, first seen Nov 8, 2026
- Aboudjem/ui-ux-suitetheir own version, first seen Nov 8, 2026
- kgelster/ecom-a11y-audittheir own version, first seen Nov 1, 2026
- jbouder/skillstheir own version, first seen Nov 1, 2026
- greglas75/zuvotheir own version, first seen Oct 16, 2026
Used with
Projects with it also use perf-audit, design-tokens and 8 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
WhatIfWeDigDeeperSkillperf-audit
Profile and optimize React application performance
Also in 4 projects that use this
ilikescienceSkilldesign-tokens
Expert in design tokens using the DTCG specification. Use this skill when users ask about design tokens, DTCG format, token validation, formatting, transformation, color spaces (sRGB, Display P3, OKLCH), references and aliasing, resolvers, theming with modifiers/contexts, multi-platform design systems, accessibility, or working with tools like jq, jsonata, and terrazzo. Helps with token file creation, resolver configuration, structure, naming conventions, and best practices.
Also in 4 projects that use this
Sagargupta16Skilldependency-audit
Audit project dependencies for security vulnerabilities, licensing issues, maintenance health, and optimization opportunities. Use it during regular security audits (monthly or quarterly); before a major release when you want to ensure the dependency tree is clean; when evaluating whether to adopt or replace a dependency; after a security advisory affects one of your dependencies; when your install times or bundle sizes have grown noticeably.
Also in 3 projects that use this
lbednerSkilli18n
Use when a code or template change introduces a new translation message key, in either the framework CLI (aegis/i18n/locales/) or a generated project's CLI (the app/i18n/locales/ template tree). Covers adding the real English string, stubbing the same key into every other locale for parity, and the separate translation PR that later replaces placeholders with reviewed native text.
Also in 3 projects that use this
GitHubSkillrefactor
Surgical code refactoring to improve maintainability without changing behavior. Covers extracting functions, renaming variables, breaking down god functions, improving type safety, eliminating code smells, and applying design patterns. Less drastic than repo-rebuilder; use for gradual improvements.
Also in 5 projects that use this
VercelSkilldeploy
Deploy applications to Vercel. Use when the user says "deploy", "deploy to Vercel", "push to production", "deploy my app", or "go live".
Also in 4 projects that use this
Other versions34 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 34
- gitkraken/vscode-gitlens★ 10ksame name
- plugin87/ux-ui-agent-skills★ 3.1ksame name
- SwitchbackTech/compass★ 227same name
- arcasilesgroup/ai-engineering★ 65same name
- helderberto/agent-skills★ 19same name
- Hassaan146/claude-skills★ 18same name
- renfei-design/Figma-AI-Bridge★ 16same name
- kgelster/ecom-a11y-audit★ 12same name
- Mozurok/fhorja.dev★ 10same name
- Aboudjem/ui-ux-suite★ 8same name
24 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository22 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- adaptiveSkill
- add-a11y-ruleSkill
- add-exporterSkill
- android-intent-securitySkill
- android-permissions-securitySkill
- crawl-appSkill
- design-systemSkill
- edge-to-edgeSkill
- extend-crawlerSkill
- ios-a11y-rulesSkill
- ios-simulatorSkill
- maintain-crawlerSkill
- play-policy-insightsSkill
- security-auditSkill
- security-rulesSkill
- stack-iosSkill
- stack-rulesSkill
- store-requirementsSkill
- tune-crawlerSkill
- wcag-mobile-rulesSkill
- web-uiSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 2 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 27 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Read wcag-mobile-rules first.
- Very specific: line 14
Use the newest good run, or crawl first (crawl-app skill):
- Very specific: line 21
Every crawl also writes <run>/a11y.json.
- Very specific: line 25
If density_exact is false, the run predates density recording.
- Very specific: line 51
Run device tests only with the app pinned or on screens you navigated to deliberately, and don't leave the app (stay_in_app rule).
- Very specific: line 66
When the app's source is available (Playground: samples/playground-app/app/), grep it to confirm or rule out findings: contentDescription, …
- Distinctive: line 93
When writing up findings yourself (e.g.
- Distinctive: line 104
If the user wants a shareable report, publish it rather than leaving it in the terminal.
“Common” is measured: kept by at least 6 in 10 of the 27 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
WCAG 2.2 accessibility audit
Read wcag-mobile-rules first. It defines terms, thresholds, and how to word findings.
Target app: the Playground sample (dev.appscreenmap.playground; it has deliberate A11Y BUG screens) unless the user
names another. Default level: AA.
1. Automated pass on a normal crawl
Use the newest good run, or crawl first (crawl-app skill):
uv run appscreenmap-engine a11y runs/<project>/<run-id> # level ≤ AA, open + confirmed issues
uv run appscreenmap-engine a11y runs/<project>/<run-id> --level AAA --json > <scratchpad>/a11y.jsonEvery crawl also writes <run>/a11y.json. The web viewer's Accessibility tab adds the
per-screen scanner rules (labels, 48 dp guideline, contrast estimate). Look at both. Their issue
keys share one format, so one triage covers both.
If density_exact is false, the run predates density recording; dp values are estimates. Re-crawl
for exact numbers.
2. Resize text: crawl at 200%
APP_PASSWORD=playground-demo uv run appscreenmap-engine crawl --package dev.appscreenmap.playground \
--config samples/playground-app/appscreenmap.toml --clear-data --font-scale 2.0 --name font200
uv run appscreenmap-engine a11y runs/playground/font200-<stamp>
uv run appscreenmap-engine diff runs/playground/<normal-run> runs/playground/font200-<stamp>The font scale is restored afterwards. Look for text-truncated (1.4.4), screens missing compared
to the normal run (content no longer reachable), and overlapping or clipped controls in screenshots
(1.4.4 / 1.4.10). Read the screenshots; the diff only says what changed.
3. Device tests (adb). Restore every setting afterwards.
| SC | Test |
| 1.3.4 Orientation | adb shell settings put system accelerometer_rotation 0; adb shell settings put system user_rotation 1 → screenshot each main screen → set back to 0. Fails if the UI stays portrait (or breaks). Manifest locks are already in a11y.json (orientation-locked). |
| 2.1.1 / 2.1.2 / 2.4.3 / 2.4.7 Keyboard & focus | Use adb shell input keyevent KEYCODE_TAB (and DPAD_DOWN, ENTER) and screenshot after each step: can you reach and activate every control, is focus visible, does the order make sense, can you leave every component? |
| 2.4.11 Focus Not Obscured | While tabbing, note any focused control hidden behind a sticky bar or FAB. |
| 1.3.2 / 4.1.2 TalkBack | adb shell settings put secure enabled_accessibility_services com.google.android.marvin.talkback/com.google.android.marvin.talkback.TalkBackService (only if TalkBack is installed). Swipe through 2–3 key screens and check the reading order and announcements. Turn it off afterwards (settings delete secure enabled_accessibility_services). Ask the user before enabling it, because it changes how the emulator responds to touches. |
| 3.2.1 On Focus | Focus moves alone must not navigate. |
Run device tests only with the app pinned or on screens you navigated to deliberately, and don't
leave the app (stay_in_app rule).
4. Manual review of what can't be automated
Walk the screen list (map.json) and screenshots, guided by each screen's patterns:
| Pattern | Check |
login / form | 3.3.1 errors in text, 3.3.2 persistent labels, 3.3.3 suggestions, 1.3.5 input purpose (look in the app source for autofillHints/contentType), 3.3.8 paste/password manager/passkey support, 3.3.7 repeated data |
list / cards | 2.4.4 / 2.4.6 specific names ("Read more about …"), 1.3.1 headings |
dialog | Focus moves into the dialog and back out, 2.1.2 |
| media, timers, carousels | 1.2.x captions/transcripts, 2.2.1 time limits (a focus timer is user-started, so it's fine), 2.2.2 pause for auto-moving content |
| everything | 1.4.1 colour-only signals, 1.4.11 icon/border contrast, 1.3.3 sensory instructions, 2.5.1 gesture alternatives, 4.1.3 status messages (snackbars/toasts announced?) |
When the app's source is available (Playground: samples/playground-app/app/), grep it to confirm or rule out
findings: contentDescription, semantics, Role., paneTitle, liveRegion, autofillHints,
screenOrientation, maxLines.
5. Triage
Each issue's status lives in <run>/notes.json under a11y: { "<issue key>": { "status":
"confirmed" | "wontfix" | "false_positive", "note": "…", "updated": "<iso>" } }. The viewer edits
the same file. To write it from the CLI, load the existing file, merge your decisions, and validate
with appscreenmap.core.notes.validate before saving (format owned by the web session; don't change it).
appscreenmap a11y then hides false positives and won't-fixes.
6. Report
Generate the report after triage, so confirmed viewer findings and your decisions are included:
uv run appscreenmap-engine a11y runs/<project>/<run-id> --report # AA (default)
uv run appscreenmap-engine a11y runs/<project>/<run-id> --report --level AAAThis writes a11y-report.html (self-contained, shareable) and a11y-report.md (+ a11y/crops/).
For every WCAG 2.2 criterion it gives a status: Fails (confirmed), Issues found, Needs review,
No issues detected (automated, not proof), Check in viewer, or Not tested. Repeated
elements (a nav item on every screen) are grouped into one finding. Open the HTML and read it before
handing it over. Then add what the generator can't know: your device and manual test results.
When writing up findings yourself (e.g. in a PR or the chat), group by success criterion, A then AA (AAA only if asked). For each finding include:
- SC number and name, level, and status: Fails (confirmed) / Needs review / Advisory (native) / Guideline only
- Screens (ids and titles), evidence (screenshot path plus what's wrong, with dp sizes or ratios)
- Fix for Views and/or Compose (from
wcag-mobile-rules/reference/criteria.md), as specific to the code as you can make it
End with:
- coverage: which criteria were tested automatically, on device, or manually, and which were not tested
- a clear statement that automated results are not a conformance claim
If the user wants a shareable report, publish it rather than leaving it in the terminal.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

