| name | android-tv-focus-audit |
| description | Audit M3UAndroid Android TV screens for DPad focusability, focus order, initial focus, visual focus states, touch assumptions, and couch-distance readability. Use when reviewing TV UI or changing focus behavior. |
| allowed-tools | Read, Glob, Grep, Bash, Agent |
| argument-hint | [repo path or TV module path] |
Android TV Focus Audit
Audit Android TV UI with measurable evidence, not broad design opinion.
When To Use
Use when a task changes or reviews:
app/tv screens, rows, cards, overlays, or dialogs
- DPad navigation, focus requesters, focus properties, or remote-control behavior
- TV playback controls or overlays
Required Context
Read first:
AGENTS.md
app/AGENTS.md
app/tv/AGENTS.md
docs/ai/playbooks/android-tv-ui.md
Audit Checks
Verify with file evidence:
- Key interactive elements are focusable and reachable by DPad.
- Focus order is predictable for up, down, left, and right movement.
- Initial focus is explicitly defined for screens, dialogs, and overlays when needed.
- Focused and selected states are visually distinct from default state.
- The UI does not rely on touch-only gestures or pointer hover.
- Text, icons, spacing, and contrast are suitable for couch-distance viewing.
- Playback overlays do not obscure important video content or focus targets.
Process
- Map the TV screens and shared TV components in scope.
- Identify focusable controls, focus requesters, focus properties, and click handlers.
- Read representative files before judging each issue.
- Record specific file paths and line numbers for every finding.
- Prefer multiple examples for systemic issues.
- Separate focus defects from general visual polish.
Validation
Recommend:
./gradlew :app:tv:compileDebugKotlin
If runtime focus cannot be manually checked, state the remaining risk.
Output
Return a concise Markdown report with:
- Scope and confidence
- Pass/fail table for each audit check
- Evidence-backed findings with file paths
- Top fixes prioritized by focus-blocking severity
- Validation run or not run, with reason