Choose Android Project Shape
Purpose
Pick the smallest correct Android-owned shape before code changes begin.
The practical decision is whether the work belongs in an Android app, Android library, multi-module Android project, Kotlin-first implementation, Java-only maintenance, UI workflow, Gradle/AGP maintenance pass, test/lint pass, release-readiness pass, or a handoff to server-side JVM guidance.
Source Check
Use repo-local files, checked-out dependency sources, and Dash.app docsets opportunistically when they cover the exact Android-adjacent surface, especially Gradle, Java, or command-line reference material. Treat current official Android and Google documentation as authoritative for Android-specific behavior, APIs, release policy, permissions, privacy, Play delivery, and version-sensitive guidance:
Translate documentation into the concrete module, command, or implementation decision it changes.
Classification Workflow
- Inspect the repository shape:
settings.gradle, settings.gradle.kts, build.gradle, build.gradle.kts
gradle/libs.versions.toml, gradle.properties, gradlew
AndroidManifest.xml
src/main/java, src/main/kotlin, src/main/res
src/test, src/androidTest
- Compose markers such as
androidx.compose, @Composable, or Compose compiler configuration
- XML view markers such as
layout/, AppCompat, fragments, view binding, or data binding
- CI, signing, lint, release, and Play delivery files
- Identify the user-visible job:
- Android app
- Android library
- multi-module Android project
- Kotlin-first app or library
- Java-only app or library
- mixed Kotlin and Java app
- Compose UI implementation
- XML/AppCompat UI implementation
- AndroidX library maintenance
- Gradle/AGP, dependency, test, lint, signing, or release work
- Route non-Android JVM work away from this plugin:
- backend services
- shared non-Android JVM libraries
- server frameworks
- Maven or SBT backend workflows
- Choose language posture:
- Preserve existing repository language choices.
- Prefer Kotlin for new Android work when no repo default conflicts.
- Preserve Java-only Android codebases unless the user asks for migration.
- Ask before large Kotlin/Java migrations.
- Explain interop when APIs cross Kotlin and Java.
- Choose validation:
- Gradle wrapper commands from the affected module first.
test, lint, assemble, bundle, or connected-device tasks only when they match the change.
- Emulator/device validation as a handoff to the Android testing plugin, not duplicated here.
Recommendations
Android App
Use app guidance when the change affects activities, fragments, services, receivers, resources, UI, manifests, permissions, signing, packaging, or Play release behavior.
Handoff:
android-dev:build-kotlin-android for Kotlin-first implementation
android-dev:java-android-workflow for Java-only or Kotlin/Java interop work
android-dev:testing-lint-workflow for tests and lint
android-dev:release-readiness-workflow for release checks
Android Library
Use library guidance when the output is an Android artifact consumed by apps or other Android modules. Keep public APIs, resources, manifests, and binary compatibility explicit.
Gradle Or AGP Maintenance
Use android-dev:gradle-agp-workflow when build files, plugin versions, namespaces, variants, flavors, version catalogs, dependency resolution, generated sources, or Android SDK settings own the work.
UI Implementation
Use android-dev:build-kotlin-android for common Compose and XML UI tasks. Keep future specialized Compose or XML skills as expansion points, not blockers for ordinary UI edits.
Output Shape
Return:
Chosen shape: app, library, multi-module project, Kotlin implementation, Java maintenance, UI task, build task, test/lint task, release task, or handoff.
Android owner: module, package, source set, manifest, resources, or release surface.
Language posture: Kotlin-first, Java-only, mixed, or migration decision needed.
Build owner: Gradle wrapper, AGP version, affected modules, and variants.
Validation path: exact commands and any emulator/device handoff.
Next skill: the next Android or server-side JVM skill to use.
Guardrails
- Do not make backend JVM work Android-owned just because it uses Gradle or Java.
- Do not rewrite Java Android code to Kotlin without user intent.
- Do not add new modules, flavors, or architecture layers without naming the near-term problem they solve.
- Do not start emulator, device, Play, or publish workflows by default.
- Do not trust Dash coverage for Android-specific behavior unless coverage and freshness are verified.
1---2name: choose-project-shape-33description: Choose the right Android project, app, library, module, language, UI, build, test, lint, signing, release, or dependency-maintenance shape before implementation. Use when Android work needs routing across Kotlin, Java, Gradle, Android Gradle Plugin, Compose, XML views, emulator-aware validation, release readiness, or server-side JVM handoffs.4license: Apache-2.05---67# Choose Android Project Shape89## Purpose1011Pick the smallest correct Android-owned shape before code changes begin.1213The practical decision is whether the work belongs in an Android app, Android library, multi-module Android project, Kotlin-first implementation, Java-only maintenance, UI workflow, Gradle/AGP maintenance pass, test/lint pass, release-readiness pass, or a handoff to server-side JVM guidance.1415## Source Check1617Use repo-local files, checked-out dependency sources, and Dash.app docsets opportunistically when they cover the exact Android-adjacent surface, especially Gradle, Java, or command-line reference material. Treat current official Android and Google documentation as authoritative for Android-specific behavior, APIs, release policy, permissions, privacy, Play delivery, and version-sensitive guidance:1819- [Android Developers documentation](https://developer.android.com/docs)20- [Android build and Android Gradle Plugin documentation](https://developer.android.com/build)21- [Jetpack Compose documentation](https://developer.android.com/compose)22- [Gradle User Manual](https://docs.gradle.org/current/userguide/userguide.html)23- [Kotlin documentation](https://kotlinlang.org/docs/home.html)24- [Java documentation](https://docs.oracle.com/en/java/)2526Translate documentation into the concrete module, command, or implementation decision it changes.2728## Classification Workflow29301. Inspect the repository shape:31 - `settings.gradle`, `settings.gradle.kts`, `build.gradle`, `build.gradle.kts`32 - `gradle/libs.versions.toml`, `gradle.properties`, `gradlew`33 - `AndroidManifest.xml`34 - `src/main/java`, `src/main/kotlin`, `src/main/res`35 - `src/test`, `src/androidTest`36 - Compose markers such as `androidx.compose`, `@Composable`, or Compose compiler configuration37 - XML view markers such as `layout/`, AppCompat, fragments, view binding, or data binding38 - CI, signing, lint, release, and Play delivery files392. Identify the user-visible job:40 - Android app41 - Android library42 - multi-module Android project43 - Kotlin-first app or library44 - Java-only app or library45 - mixed Kotlin and Java app46 - Compose UI implementation47 - XML/AppCompat UI implementation48 - AndroidX library maintenance49 - Gradle/AGP, dependency, test, lint, signing, or release work503. Route non-Android JVM work away from this plugin:51 - backend services52 - shared non-Android JVM libraries53 - server frameworks54 - Maven or SBT backend workflows554. Choose language posture:56 - Preserve existing repository language choices.57 - Prefer Kotlin for new Android work when no repo default conflicts.58 - Preserve Java-only Android codebases unless the user asks for migration.59 - Ask before large Kotlin/Java migrations.60 - Explain interop when APIs cross Kotlin and Java.615. Choose validation:62 - Gradle wrapper commands from the affected module first.63 - `test`, `lint`, `assemble`, `bundle`, or connected-device tasks only when they match the change.64 - Emulator/device validation as a handoff to the Android testing plugin, not duplicated here.6566## Recommendations6768### Android App6970Use app guidance when the change affects activities, fragments, services, receivers, resources, UI, manifests, permissions, signing, packaging, or Play release behavior.7172Handoff:7374- `android-dev:build-kotlin-android` for Kotlin-first implementation75- `android-dev:java-android-workflow` for Java-only or Kotlin/Java interop work76- `android-dev:testing-lint-workflow` for tests and lint77- `android-dev:release-readiness-workflow` for release checks7879### Android Library8081Use library guidance when the output is an Android artifact consumed by apps or other Android modules. Keep public APIs, resources, manifests, and binary compatibility explicit.8283### Gradle Or AGP Maintenance8485Use `android-dev:gradle-agp-workflow` when build files, plugin versions, namespaces, variants, flavors, version catalogs, dependency resolution, generated sources, or Android SDK settings own the work.8687### UI Implementation8889Use `android-dev:build-kotlin-android` for common Compose and XML UI tasks. Keep future specialized Compose or XML skills as expansion points, not blockers for ordinary UI edits.9091## Output Shape9293Return:94951. `Chosen shape`: app, library, multi-module project, Kotlin implementation, Java maintenance, UI task, build task, test/lint task, release task, or handoff.962. `Android owner`: module, package, source set, manifest, resources, or release surface.973. `Language posture`: Kotlin-first, Java-only, mixed, or migration decision needed.984. `Build owner`: Gradle wrapper, AGP version, affected modules, and variants.995. `Validation path`: exact commands and any emulator/device handoff.1006. `Next skill`: the next Android or server-side JVM skill to use.101102## Guardrails103104- Do not make backend JVM work Android-owned just because it uses Gradle or Java.105- Do not rewrite Java Android code to Kotlin without user intent.106- Do not add new modules, flavors, or architecture layers without naming the near-term problem they solve.107- Do not start emulator, device, Play, or publish workflows by default.108- Do not trust Dash coverage for Android-specific behavior unless coverage and freshness are verified.