android-feature
Feature or feature-change playbook for Android apps: intake, pattern discovery, plan, implement, tests, emulator check, review, commit.
SKILL.mdcodex/skills/android-feature/SKILL.md
GitHubRead the project AGENTS.md and applicable global guidance first. Fall back to CLAUDE.md if AGENTS.md is absent. Follow the global rules for optional tools, specialist agents and Git actions.
Feature work: the user request
Repo facts (modules, build/test commands, design-system names, app id) come from the project's AGENTS.md. Never guess them.
Skills named below are optional companions. When one is missing, follow references/companions.md in the android-standards skill and continue.
- Intake. If an Atlassian MCP tool is available, fetch the Jira ticket and quote its acceptance criteria. Otherwise
restate the goal in three bullets plus an out-of-scope list. Branch
feat/<ticket>-<slug>(or the project's documented branch convention) off the default branch. - Discover the pattern. Use an explorer subagent to find the closest existing screen or flow: its Activity/Fragment or
Compose entry point, ViewModel, repository/use case, DI wiring, and tests. Note whether it is XML or Compose.
For a modify task also map every caller of the code you will change.
If it changes UI, capture the touched screens now, the same way as step 7, and label them
before. - Consult skills and references. Route through
using-chrisbanes-skillsand load the compose-/kotlin- skills it names. Askandroid-researcheronly where guidance may have moved (navigation, insets, permissions, target-SDK behaviour). - Plan. Files to add or change, state model (
UiStatesealed interface, StateFlow), where data code goes, DI wiring, test list, device checks. For UI changes, consult$design-standards(tiered design rules, screen states, accessibility). Follow the project's architecture rules. Proceed within the user-authorized scope. Ask only about unresolved scope or consequential choices. - Implement in small steps, running the project's compile check after each. New UI is Compose, Material3, following the design rules (AND-1 colour roles, AND-2 insets, A11Y-3 targets), inside the project's theme and components, split into stateless
XContentand statefulXScreen. No orientation locks. - Tests. Follow the change-to-test mapping in the Android testing guidance (
~/.codex/guidance/android/testing.md, orreferences/testing.mdin theandroid-standardsskill when the guidance is not installed). ViewModel, use-case and repository changes get unit tests with fakes for owned code and MockK only at true boundaries. A new or changed screen gets a Compose UI test where the module has the infra, otherwise a preview perUiState, plus the journey in step 7. Run them with--testsand quote the summary. - Device verification.
$android-run-appon the default phone AVD, and on the tablet AVD for any new or changed screen. Then hand off to theandroid-verifieragent with the test command, the journey file(s) for the touched screen, each device serial and the application id. For a new or changed screen, also ask for a configuration capture of that screen on the phone (default, dark, font scale 2.0) and on the tablet, which A11Y-7 and AND-1 need. It returns the JSON journey result and labelled screenshot paths, so the images stay out of this session. Check insets (edge-to-edge) and large-screen layout (adaptive) against its findings. A FAILED action is a finding, not something to fix inside this step. A new screen gets a new journey. - Review.
android-revieweragainst the acceptance criteria, and delegate UI/layout changes toui-reviewerwith the labelled step 7 screenshot paths. Confirm each Blocker and Major against the code first, and decline a refuted one with the counter-evidence. Fix the rest, then re-run the compile check and the affected tests. Send the same reviewer the finding IDs and their "Verified fixed when" criteria to re-review the fix delta. Stop after two re-review rounds and report anything still open. List declined Nits. - Commit, only if asked. Follow the shared Git conventions. Do not push unless asked.
- Report: files changed, commands run with results, screenshot paths, what is left for QA.