Build Kotlin Android
Purpose
Implement Kotlin-first Android changes while preserving the repository's architecture, UI system, resources, and validation path.
The skill should be deep enough for common Compose and XML UI work without pretending to replace future specialized UI skills.
Source Check
Use repo-local Android files, checked-out dependency sources, and Dash.app docsets opportunistically when they cover exact Gradle, Java, or local command questions. Use official documentation as authority for Android APIs, Compose, AndroidX, lifecycle, resources, accessibility, and version-sensitive behavior:
Translate documentation into repository-specific code, resource, lifecycle, or validation decisions.
Implementation Workflow
- Inspect existing conventions:
- package structure and module boundaries
- activities, fragments, services, receivers, workers, or navigation owners
- Compose versus XML/AppCompat ownership
- ViewModel, state holder, repository, dependency injection, persistence, and background-work patterns
- resource naming, theming, strings, dimensions, and accessibility conventions
- existing tests and lint baselines
- Preserve architecture:
- keep UI, state, domain, persistence, and platform boundaries consistent
- add shared helpers only when they remove real duplication or match an existing local pattern
- avoid new architecture layers unless the current shape cannot support the requested work
- Implement common Compose tasks:
- compose screens from small functions with explicit state and callbacks
- preserve state hoisting and unidirectional data flow
- update previews when the repo already uses them
- use modifiers, lists, forms, theming, and semantics consistently
- keep navigation touchpoints aligned with existing navigation owners
- Implement common XML/AppCompat tasks:
- update layouts, resources, themes, strings, and accessibility labels together
- use view binding or data binding only when the repo already does
- keep RecyclerView, adapter, fragment, and activity wiring aligned with existing code
- avoid mixing Compose into XML screens unless the repo already has an interop pattern or the user approves it
- Implement platform work:
- keep lifecycle-aware coroutines scoped correctly
- keep permissions, manifests, and background work explicit
- preserve nullability and Java interop annotations for public APIs
- Validate narrowly:
- compile or assemble the affected module
- run targeted unit tests
- run lint for affected variants when UI/resources/platform APIs changed
- hand off emulator/device checks to the Android testing plugin when needed
Command Selection
Choose commands from the repo's Gradle tasks:
./gradlew :app:assembleDebug
./gradlew :app:testDebugUnitTest
./gradlew :app:lintDebug
Use narrower module or variant tasks when the project defines them.
Output Shape
Return:
Implementation surface: module, source set, packages, UI files, resources, manifest, or tests.
UI path: Compose, XML/AppCompat, interop, or no UI.
State and lifecycle: state owner, coroutine scope, lifecycle owner, persistence or background-work impact.
Validation path: commands run or skipped with concrete reasons.
Handoffs: Java interop, Gradle/AGP, testing/lint, release readiness, or emulator/device validation.
Guardrails
- Do not migrate Java to Kotlin without user intent.
- Do not mix Compose and XML patterns casually.
- Do not introduce a new dependency injection, navigation, persistence, or architecture framework without an explicit decision.
- Do not hardcode user-facing text that belongs in resources unless the repo already does so.
- Do not ignore accessibility labels, content descriptions, focus behavior, or dynamic text when changing UI.
- Do not start emulator or device automation from this skill.
1---2name: build-kotlin-android3description: Implement Kotlin-first Android app or library changes, including activities, fragments, services, receivers, Compose UI, XML/AppCompat UI, AndroidX, lifecycle-aware coroutines, state, persistence touchpoints, resources, accessibility labels, navigation touchpoints, tests, lint, and validation while preserving repo conventions.4license: Apache-2.05---67# Build Kotlin Android89## Purpose1011Implement Kotlin-first Android changes while preserving the repository's architecture, UI system, resources, and validation path.1213The skill should be deep enough for common Compose and XML UI work without pretending to replace future specialized UI skills.1415## Source Check1617Use repo-local Android files, checked-out dependency sources, and Dash.app docsets opportunistically when they cover exact Gradle, Java, or local command questions. Use official documentation as authority for Android APIs, Compose, AndroidX, lifecycle, resources, accessibility, and version-sensitive behavior:1819- [Android Developers documentation](https://developer.android.com/docs)20- [Jetpack Compose documentation](https://developer.android.com/compose)21- [Android app architecture guide](https://developer.android.com/topic/architecture)22- [Kotlin documentation](https://kotlinlang.org/docs/home.html)23- [AndroidX documentation](https://developer.android.com/jetpack/androidx)2425Translate documentation into repository-specific code, resource, lifecycle, or validation decisions.2627## Implementation Workflow28291. Inspect existing conventions:30 - package structure and module boundaries31 - activities, fragments, services, receivers, workers, or navigation owners32 - Compose versus XML/AppCompat ownership33 - ViewModel, state holder, repository, dependency injection, persistence, and background-work patterns34 - resource naming, theming, strings, dimensions, and accessibility conventions35 - existing tests and lint baselines362. Preserve architecture:37 - keep UI, state, domain, persistence, and platform boundaries consistent38 - add shared helpers only when they remove real duplication or match an existing local pattern39 - avoid new architecture layers unless the current shape cannot support the requested work403. Implement common Compose tasks:41 - compose screens from small functions with explicit state and callbacks42 - preserve state hoisting and unidirectional data flow43 - update previews when the repo already uses them44 - use modifiers, lists, forms, theming, and semantics consistently45 - keep navigation touchpoints aligned with existing navigation owners464. Implement common XML/AppCompat tasks:47 - update layouts, resources, themes, strings, and accessibility labels together48 - use view binding or data binding only when the repo already does49 - keep RecyclerView, adapter, fragment, and activity wiring aligned with existing code50 - avoid mixing Compose into XML screens unless the repo already has an interop pattern or the user approves it515. Implement platform work:52 - keep lifecycle-aware coroutines scoped correctly53 - keep permissions, manifests, and background work explicit54 - preserve nullability and Java interop annotations for public APIs556. Validate narrowly:56 - compile or assemble the affected module57 - run targeted unit tests58 - run lint for affected variants when UI/resources/platform APIs changed59 - hand off emulator/device checks to the Android testing plugin when needed6061## Command Selection6263Choose commands from the repo's Gradle tasks:6465```bash66./gradlew :app:assembleDebug67./gradlew :app:testDebugUnitTest68./gradlew :app:lintDebug69```7071Use narrower module or variant tasks when the project defines them.7273## Output Shape7475Return:76771. `Implementation surface`: module, source set, packages, UI files, resources, manifest, or tests.782. `UI path`: Compose, XML/AppCompat, interop, or no UI.793. `State and lifecycle`: state owner, coroutine scope, lifecycle owner, persistence or background-work impact.804. `Validation path`: commands run or skipped with concrete reasons.815. `Handoffs`: Java interop, Gradle/AGP, testing/lint, release readiness, or emulator/device validation.8283## Guardrails8485- Do not migrate Java to Kotlin without user intent.86- Do not mix Compose and XML patterns casually.87- Do not introduce a new dependency injection, navigation, persistence, or architecture framework without an explicit decision.88- Do not hardcode user-facing text that belongs in resources unless the repo already does so.89- Do not ignore accessibility labels, content descriptions, focus behavior, or dynamic text when changing UI.90- Do not start emulator or device automation from this skill.