
Android Kotlin
Apply Kotlin, Jetpack Compose, Hilt, and coroutine patterns when the agent touches Android .kt sources or Gradle modules.
Overview
Android Kotlin is an agent skill for the Build phase that guides Coroutines, Jetpack Compose, Hilt, and MockK testing on Android Kotlin and Gradle paths.
Install
npx skills add https://github.com/alinaqi/claude-bootstrap --skill android-kotlinWhat is this skill?
- Layered Android layout: data (local Room, remote Retrofit/Ktor, repositories), domain (models, use cases), ui (Compose f
- Hilt DI modules and Application entry patterns aligned with modern Google stack
- Coroutines guidance for async Android work alongside Compose presentation layer
- MockK-oriented unit testing placement under app/src/test
- Auto-invokes on **/*.kt, **/*.kts, android/**, and build.gradle.kts paths (user-invocable: false)
Adoption & trust: 2.4k installs on skills.sh; 691 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent edits .kt files with inconsistent architecture, missing DI boundaries, or Compose patterns that do not match a maintainable Android module layout.
Who is it for?
Solo developers building or extending a Compose + Hilt Android app who want the agent to respect standard package layout whenever Kotlin paths are open.
Skip if: iOS/Swift projects, React Native cross-platform codebases, or greenfield backend-only APIs with no Android module.
When should I use this skill?
When working on Android Kotlin source files (paths: **/*.kt, **/*.kts, android/**, **/build.gradle.kts); not user-invocable manually.
What do I get? / Deliverables
Kotlin and Gradle changes follow a documented multi-layer Android structure with Compose UI, Hilt, repositories, and test placement.
- Feature screens and ViewModels
- Repository and DI module changes
- Unit tests in app/src/test
Recommended Skills
Journey fit
Android app implementation lives in Build; this skill is path-triggered for Kotlin and Gradle files rather than a cross-journey methodology. Frontend subphase covers Compose UI, ViewModels, and feature screens—the primary surface this skill structures.
How it compares
Opinionated Android stack skill for file-triggered edits, not a generic JVM Kotlin server skill or a one-off code snippet.
Common Questions / FAQ
Who is android-kotlin for?
Indie Android developers using Jetpack Compose and Hilt who want consistent agent behavior on Kotlin and Gradle files.
When should I use android-kotlin?
Automatically during Build → frontend whenever you or the agent work on Android Kotlin sources, Kotlin DSL Gradle files, or files under android/**.
Is android-kotlin safe to install?
Check the Security Audits panel on this page; the skill shapes code style and structure and may suggest dependency or test patterns you should verify in your own project.
SKILL.md
READMESKILL.md - Android Kotlin
# Android Kotlin Skill --- ## Project Structure ``` project/ ├── app/ │ ├── src/ │ │ ├── main/ │ │ │ ├── kotlin/com/example/app/ │ │ │ │ ├── data/ # Data layer │ │ │ │ │ ├── local/ # Room database │ │ │ │ │ ├── remote/ # Retrofit/Ktor services │ │ │ │ │ └── repository/ # Repository implementations │ │ │ │ ├── di/ # Hilt modules │ │ │ │ ├── domain/ # Business logic │ │ │ │ │ ├── model/ # Domain models │ │ │ │ │ ├── repository/ # Repository interfaces │ │ │ │ │ └── usecase/ # Use cases │ │ │ │ ├── ui/ # Presentation layer │ │ │ │ │ ├── feature/ # Feature screens │ │ │ │ │ │ ├── FeatureScreen.kt # Compose UI │ │ │ │ │ │ └── FeatureViewModel.kt │ │ │ │ │ ├── components/ # Reusable Compose components │ │ │ │ │ └── theme/ # Material theme │ │ │ │ └── App.kt # Application class │ │ │ ├── res/ │ │ │ └── AndroidManifest.xml │ │ ├── test/ # Unit tests │ │ └── androidTest/ # Instrumentation tests │ └── build.gradle.kts ├── build.gradle.kts # Project-level build file ├── gradle.properties ├── settings.gradle.kts └── CLAUDE.md ``` --- ## Gradle Configuration (Kotlin DSL) ### App-level build.gradle.kts ```kotlin plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("com.google.dagger.hilt.android") id("com.google.devtools.ksp") } android { namespace = "com.example.app" compileSdk = 34 defaultConfig { applicationId = "com.example.app" minSdk = 24 targetSdk = 34 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.8" } } dependencies { // Compose BOM val composeBom = platform("androidx.compose:compose-bom:2024.01.00") implementation(composeBom) implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") implementation("androidx.activity:activity-compose:1.8.2") implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.7.0") // Coroutines implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3") // Hilt implementation("com.google.dagger:hilt-android:2.50") ksp("com.google.dagger:hilt-compiler:2.50") implementation("androidx.hilt:hilt-navigation-compose:1.1.0") // Room implementation("androidx.room:room-runtime:2.6.1") implementation("androidx.room:room-ktx:2.6.1") ksp("androidx.room:room-compiler:2.6.1") // Testing testImplementation("junit:junit:4.13.2") testImplementation("io.mockk:mockk:1.13.9") testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3") testImplementation("app.cash.turbine:turbine:1.0.0") androidTestImplementation("androidx.test.ext:junit