Skip to content
Back to skills

Android Accessibility Pro

ASecurity

Deep-reviews Android app accessibility — the TalkBack semantics tree (content descriptions, roles, merging, state, custom actions, live regions), Bluetooth assistive input (external keyboards, Switch Access, braille displays), and visual accessibility (contrast, dynamic text, color-independence, reduce motion). Use when auditing Compose screens for accessibility, preparing the Play listing's accessibility answers, or when reading, writing, or reviewing accessibility code.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
ai-agentsswiftkotlinnodeapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 27, 2026

npx -y skills add kelvinkosbab/AppBootstrapAI --skill android-accessibility-pro --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Android Accessibility Pro?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Android Accessibility Pro
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kelvinkosbab-android-accessibility-pro/badge)](https://www.skillsdirectory.com/skills/kelvinkosbab-android-accessibility-pro)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: android-accessibility-pro
description: Deep-reviews Android app accessibility — the TalkBack semantics tree (content descriptions, roles, merging, state, custom actions, live regions), Bluetooth assistive input (external keyboards, Switch Access, braille displays), and visual accessibility (contrast, dynamic text, color-independence, reduce motion). Use when auditing Compose screens for accessibility, preparing the Play listing's accessibility answers, or when reading, writing, or reviewing accessibility code.
license: MIT
metadata:
  author: AppBootstrapAI contributors
  version: "1.0"
  grounded_in: "Android Developers accessibility docs (Compose semantics), WCAG 2.2 AA, TalkBack 15+ / Android 15-16 behavior (HID braille, announceForAccessibility deprecation)"
---

Review Android app accessibility for correctness and completeness. This is the deep-review companion to the always-on `android-accessibility-best-practices.md` rule — the rule steers while writing; this skill audits whole screens. The Android sibling of `swift-accessibility-pro`. Report only genuine problems; don't nitpick.

Applies to Jetpack Compose (primary) with View-interop notes. If asked to **write or fix** rather than review, make the changes directly and summarize them in the same file-by-file format.

Review process:

1. Audit the TalkBack semantics tree using `references/semantics.md` — content descriptions, roles, merging, state descriptions, custom actions, live regions, and the deprecated-announcement migration.
2. Audit Bluetooth assistive input using `references/input-access.md` — keyboard/D-pad reachability, Switch Access scanning, braille-display label quality.
3. Audit visual accessibility using `references/visual.md` — contrast, dynamic text scaling, touch targets, color-independence, reduce motion.

If doing a partial review, load only the relevant reference files.

## Core Instructions

- **Audit the semantics tree, not the code style.** The question for every Composable is what TalkBack/keyboard/braille users actually receive — trace `semantics` modifiers to the resulting node, don't assume.
- **The input methods share one tree.** A `CustomAccessibilityAction` serves TalkBack's action menu, Switch Access, AND braille users; a missing one fails all three. Report tree problems once, noting every affected input method.
- **Flag deprecated announcement APIs on sight**: `announceForAccessibility()` / `TYPE_ANNOUNCEMENT` (deprecated Android 16) → `liveRegion` / `paneTitle` / `stateDescription` semantics. AI-generated code still emits the old calls.
- **Localization is part of accessibility.** Hardcoded strings in `contentDescription`, `stateDescription`, or action labels are findings — everything routes through `stringResource(...)`.
- **Severity by user impact**: task-blocking (unreachable control, missing label on a primary action, focus trap) > degraded (fragmented rows, sub-48dp targets, contrast near-misses) > polish (verbosity tuning).
- **Name the verification path** where relevant: Compose semantics tests (`onNodeWithContentDescription`), the Accessibility Scanner app, TalkBack on device, or a paired Bluetooth keyboard.
- Never suggest suppressing or hollowing out an accessibility affordance to silence a finding.

## Output Format

Organize findings by file. For each issue: file/line, the violated principle, affected assistive tech (TalkBack / keyboard / switch / braille / low-vision), and a brief before/after. Skip clean files. End with a prioritized summary, task-blocking issues first.

Example finding:

### FeedRow.kt

**Line 18: icon + two texts exposed as three TalkBack nodes — fragmented reading; Switch Access scans three stops per row.**

```kotlin
// Before
Row(modifier = Modifier.clickable(onClick = onOpen)) {
    Icon(Icons.Default.Wifi, contentDescription = stringResource(R.string.wifi))
    Column { Text(item.title); Text(item.subtitle) }
}

// After — one merged node; icon is decorative (text carries the meaning)
Row(
    modifier = Modifier
        .clickable(onClick = onOpen)
        .semantics(mergeDescendants = true) { }
) {
    Icon(Icons.Default.Wifi, contentDescription = null)
    Column { Text(item.title); Text(item.subtitle) }
}
```

### Summary

1. **Task-blocking:** `pointerInput`-only card in `ScanScreen.kt` unreachable by keyboard/Switch Access — use `clickable` or add `focusable()` + semantics `onClick`.
2. **Degraded:** 4 fragmented rows; error snackbar uses deprecated `announceForAccessibility`.
3. **Polish:** emoji in `stateDescription` renders as braille noise.

End of example.

## References

- `references/semantics.md` — the TalkBack tree: description/role/state audit, merging, custom actions, live regions, pane titles, the announcement migration, View-interop notes.
- `references/input-access.md` — Bluetooth keyboards, Switch Access, and braille displays: focusability, scan order, label quality.
- `references/visual.md` — contrast and how to check it, sp-based text scaling, 48dp targets, color-independence, reduce motion.

Files in this skill

  • SKILL.md5 KB
  • references/input-access.md3.6 KB
  • references/semantics.md4.7 KB
  • references/visual.md3.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.