Android & KMP development skills for Claude Code and Copilot CLI — architecture, Compose, coroutines, flows, networking, persistence, dependency injection, testing, debugging, and Gradle.
Skills are invoked automatically based on context — working on Compose code activates the compose skill, a coroutine bug pulls in kotlin-coroutines, and so on. Each SKILL.md is plain, self-contained markdown, so the collection also works outside the plugin format.
/plugin marketplace add rcosteira79/android-skills
/plugin install android-skills@android-skills
Updates are picked up automatically when the plugin version is bumped.
Copilot CLI detects the same plugin format automatically:
copilot plugin install rcosteira79/android-skillsCopy the skill directories into your agent's skills folder:
git clone https://github.com/rcosteira79/android-skills.git
cp -r android-skills/plugins/android-skills/skills/* ~/.claude/skills/The SKILL.md files are plain markdown, so they can be adapted to any editor that supports custom instructions.
android-dev— the baseline for Android and KMP work: house defaults (DI, async, JSON, images, networking, module boundaries), routing to the specialised skills, the greenfield MVVM state/effect UI convention, four-bucketUiStatemodeling, andChannel(BUFFERED)overSharedFlow(replay = 0)for one-shot effects.modularization— visibility discipline for multi-module projects: declare everything at the lowest visibility that still compiles (private→internal→public), keep DI-bound implementation classesinternalbehindpublicinterfaces, and treat widening topublicas a decision that requires a real cross-module consumer.android-data-layer— data-layer implementation: the layered error-propagation model (repository as the error boundary, sealedDataError,Resultplacement with and without a domain layer) and KMP Room setup (@ConstructedBy,BundledSQLiteDriver, per-target KSP).
compose— Jetpack Compose expert guidance: state management (remember,derivedStateOf, hoisting, the unified keying rule, cross-phase back-writing), Modifier chains, lazy lists (LazyLayoutCacheWindowprefetch tuning), navigation (Nav 2 + Nav 3 guardrails), animation, side effects (LifecycleStartEffect/LifecycleResumeEffect), theming, accessibility, performance (Argument Change Reasons, the five compiler stability types, escape-hatch annotations, baseline profiles), focus/key-event navigation (D-pad/TV/ChromeOS, focus restoration, dialog focus traps, predictive-back), and a production-crash playbook with CMP equivalents.android-ux— Material Design 3 UX principles: foldable postures (tabletop, book mode), M3 contrast levels (Hct/SchemeContent), motion duration tokens and reduced motion, and an M3 compliance audit scoring screens across 10 categories with grep-based quick checks.coil-compose— image loading in Compose and CMP with Coil 3: the KMP specifics (LocalPlatformContext,SingletonImageLoader.setSafe,coil-composevscoil-compose-core) and two lazy-list performance guardrails (neverSubcomposeAsyncImagein lists;rememberAsyncImagePainterneeds an explicit size).
kotlin-coroutines— scope management, structured concurrency, cancellation, and exception handling, centered on scope ownership (prefersuspend fun, let the caller own the scope) and exception discipline that doesn't break cancellation.kotlin-flows— Flow traps and semantic edge cases:ChannelvsSharedFlowone-shot event semantics, callback bridging (callbackFlow+awaitClose), retry attempt guards,.catchscope and theCancellationExceptiontrap, side effects outside transforms, and explicit backing fields (Kotlin 2.4+).
android-retrofit— Retrofit setup:suspendservice functions returning the body directly (Response<T>only when you need status/headers/error body), the auth-interceptor throw-vs-proceed decision, loose-JSONkotlinx.serializationconfig, and error mapping at the repository boundary.kmp-ktor— Ktor client configuration traps for KMP and Android: plugin install order (HttpRequestRetrybeforeHttpTimeout),encodeDefaults = trueand the vanishing-constant-field trap,expectSuccessconsistency, bearer refresh withmarkAsRefreshTokenRequest(), WebSocket/SSE via the serialization converter,MockEnginetesting, and error mapping at the repository boundary.
datastore— Jetpack DataStore for Android and KMP: Preferences vs Typed vs Room selection, the two error traps (IOException-specific.catch;CorruptionException+ReplaceFileCorruptionHandlerfor typed stores), and the KMP factory with per-platform file paths.paging— Paging 3 for Android and Compose:PagingSource,Pager/PagingConfig, the critical "PagingData must be a separate Flow, never inside UiState" rule, dynamic filters viaflatMapLatest+debounce,cachedInplacement,LazyColumnintegration (itemKey/itemContentType/load-state handling),RemoteMediatorfor offline-first lists with Room, and unit tests withTestPager+asSnapshot.
koin— Koin for Android and KMP: Classic DSL vs KSP annotations,expect val platformModule: Modulefor per-target wiring,koinViewModelin Compose, scopes, Nav 3 entry providers viakoinEntryProvider(), compile-time verification withverify(), and a clear Koin-vs-Hilt positioning.
kmp-boundaries— designing Kotlin Multiplatform boundaries: choosing betweenexpect/actual, common interfaces with platform bindings, or separate platform screens; capability granularity, the thin-actuals rule, source-set hierarchies (skikoMain,appleMain), Compose Multiplatform leaf positioning, AGP 9 KMP library plugin constraints, and a dedicated iOS Swift interop reference.
android-gradle-logic— scalable Gradle build logic: Convention Plugins, composite builds, sharedcompileSdk/minSdk/Compose configuration across modules, and clean per-modulebuild.gradle.ktsfiles.gradle-build-performance— Gradle build optimisation: Build Scans, configuration cache, build cache, kapt→KSP migration, parallel execution, lazy task configuration, and a recommendedgradle.propertiesbaseline.
android-testing— test-first discipline plus the Android test traps: Compose-test dispatching (StandardTestDispatcherdefault, the two-schedulers trap), semantics-first selectors, choosing the smallest test shape, test-clock vs wall-clock, and animation/screenshot determinism.android-debugging— debugging Android and KMP issues: Logcat, ADB, ANR traces, R8 stack trace decoding (forward and inverse-mapping), Perfetto trace investigation escalation, memory leaks, Gradle build failures, and Compose recomposition bugs.
pdf-annotations— editing PDF annotations (highlight, free-text, stamp) and page objects with Android's platform PDF APIs: the API 36.1 / SDK-extension-18 editing surface (android.graphics.pdf.component), the version gate betweenPdfRenderer.PageandPdfRendererPreV.Page, the open→edit→write workflow, and the id/render-flag/save contracts.
android-source-search— fetch and verify Android source: AOSP platform internals (@hideAPIs, framework classes, system services via Gitiles) and AndroidX/Jetpack library source and samples (via GitHub). A zero-setup fallback; upgrade with android-source-explorer-mcp.rxjava-migration— triggered only when you explicitly ask to migrate: assesses complexity, maps RxJava types and operators to coroutines equivalents, and provides interop patterns for incremental migration.
xml-to-compose-migration— dropped in favour of Google's actively-maintainedmigrate-xml-views-to-jetpack-compose.
The skills work standalone, but several integrate with external tools for enhanced capabilities. These are independent of the plugin install — use them alongside whichever agent you choose.
-
android-source-explorer-mcp — local source sync, Tree-sitter parsing, class hierarchy, and LSP for Android source navigation. The
android-source-searchandcomposeskills use it automatically when present, and fall back to Gitiles/GitHub otherwise.uv tool install git+https://github.com/mrmike/android-source-explorer-mcp
-
jetbrains-index-mcp-plugin — semantic navigation via the IDE's symbol index (implementations, overrides, callers, references through typealiases) with much higher recall than text search. Particularly valuable for
compose,android-debugging,android-testing, andrxjava-migration. Requires Android Studio / IntelliJ running with the project indexed. -
Google's
androidCLI — CLI-native shortcuts forcomposeandandroid-debugging: Android Knowledge Base search (android docs), runtime UI layout inspection (android layout), device/emulator orchestration, and SDK management. Skills work without it, but it's recommended for the best experience. Install instructions.
- android/skills — Google's official Android agent skills: AGP 9 migration (pure-Android), XML-to-Compose migration, Navigation 3, R8 analysis, Play Billing upgrades, and edge-to-edge support.
- Kotlin/kotlin-agent-skills — JetBrains' official Kotlin skills: AGP 9 migration for KMP, CocoaPods → SwiftPM migration, framework-aware Java-to-Kotlin conversion, and Kotlin backend/JPA entity mapping.
- awesome-android-agent-skills — curated list of Android agent skills.
- chrisbanes/skills — narrow, opinionated Compose and Kotlin skills covering state authoring, side effects, recomposition performance, stability diagnostics, focus navigation, UI testing, structured concurrency, and KMP
expect/actualboundaries. - compose-skill (Meet-Miyani) — broad Compose + KMP skill covering MVI/MVVM, Navigation 2 & 3, Ktor, Koin/Hilt, Room, DataStore, Paging, and iOS interop.
- compose-skill (aldefy) — alternative Compose skill that bundles a static AndroidX snapshot.
- compose_skill (hamen) — ships
jetpack-compose-audit(evidence-based repo scoring via Compose Compiler reports) andcompose-agent(a teaching/authoring skill with 13 reference files). Install directly for the full audit+score workflow. - material-3-skill — comprehensive Material Design 3 reference: 30+ components, design tokens, theming, responsive layout, and dynamic color.
- skydoves/android-testing-skills — 54 source-grounded testing skills as a 7-set catalog to cherry-pick from. The
jvm-tests,instrumentation, andkotlinsets fit cleanly alongsideandroid-testingwithout overlap. Apache-2.0. - skydoves/compose-performance-skills — the performance side of Compose (stability, recomposition, lazy layouts, baseline profiles, R8, hot reload).
- android-reverse-engineering-skill — decompiling APKs, extracting API endpoints, and tracing call flows.
These skills are my own work — most written from scratch, then sharpened over many audit passes. Where one drew inspiration, adapted a specific section, or (only in compose's case) started from an existing skill, the credit is below. Anything not listed is fully original.
| Skill(s) | Inspiration / adapted material |
|---|---|
android-dev, kmp-ktor, datastore, paging, koin |
compose-skill (Meet-Miyani) |
android-retrofit, coil-compose, rxjava-migration, android-gradle-logic, gradle-build-performance |
awesome-android-agent-skills |
android-data-layer |
awesome-android-agent-skills; Room KMP section from compose-skill (Meet-Miyani) |
kotlin-coroutines |
awesome-android-agent-skills + chrisbanes/skills |
android-testing, kotlin-flows |
chrisbanes/skills |
kmp-boundaries |
chrisbanes/skills; iOS Swift interop from compose-skill (Meet-Miyani) |
android-ux |
material-3-skill |
compose |
forked from aldefy/compose-skill, then rebased on live source verification, with patterns from chrisbanes/skills, skydoves/compose-performance-skills, and compose_skill (hamen) |
MIT