20 skills · 7 categories
Claude Code skills for Android and Kotlin
Android skills for Kotlin coroutines, Jetpack Compose, app architecture that survives configuration changes, offline sync and Play Store releases. Shared mobile skills for security, accessibility and testing are listed too.
Start with these
- 1
Android Architecture
Layers, Hilt and modules that keep Android apps testable
Claude restructures Android apps along the official layered model: ViewModels expose one StateFlow UiState, repositories make Room the source of truth and keep DTOs internal, Hilt binds interfaces through KSP, and long work moves to WorkManager instead of GlobalScope. It splits modules with a strict dependency direction and convention plugins, and backs each layer with fake-based JVM tests.
- 2
Kotlin Multiplatform
Share the logic, keep the native feel on Android and iOS
Claude decides what belongs in commonMain and what stays native, builds the shared module with the AGP 9 Android-KMP plugin, Ktor and SQLDelight or Room KMP, and designs a Swift-facing facade with @Throws and SKIE so iOS code gets async functions and exhaustive enums. It treats Swift export as Alpha and plans adoption one slice at a time.
- 3
Kotlin Idioms
No !!, no GlobalScope, no leaked coroutines
Claude writes Kotlin that resolves nulls at the edge, models screens and results as sealed types with exhaustive when, and launches every coroutine in a scope something owns. It picks Flow, StateFlow, SharedFlow or Channel deliberately, keeps suspend functions main-safe, rethrows CancellationException, and tests timing with virtual time instead of sleeps.
All 20 Android and Kotlin skills
Grouped by category. Each card opens the full playbook, example prompts and install commands.
Languages 2
Kotlin Idioms
No !!, no GlobalScope, no leaked coroutines
Claude writes Kotlin that resolves nulls at the edge, models screens and results as sealed types with exhaustive when, and launches every coroutine in a scope something owns. It picks Flow, StateFlow, SharedFlow or Channel deliberately, keeps suspend functions main-safe, rethrows CancellationException, and tests timing with virtual time instead of sleeps.
Modern Java
Records, sealed types, and virtual threads done right
Claude writes Java that uses what the language finally offers: immutable records with compact-constructor validation, sealed hierarchies matched by exhaustive switch with record patterns and no default branch, and virtual threads for blocking I/O with semaphores instead of pools. It upgrades legacy 8, 11 and 17 codebases in a safe order, build tooling first.
Testing 1
Security 1
Mobile 13
Android Architecture
Layers, Hilt and modules that keep Android apps testable
Claude restructures Android apps along the official layered model: ViewModels expose one StateFlow UiState, repositories make Room the source of truth and keep DTOs internal, Hilt binds interfaces through KSP, and long work moves to WorkManager instead of GlobalScope. It splits modules with a strict dependency direction and convention plugins, and backs each layer with fake-based JVM tests.
Kotlin Multiplatform
Share the logic, keep the native feel on Android and iOS
Claude decides what belongs in commonMain and what stays native, builds the shared module with the AGP 9 Android-KMP plugin, Ktor and SQLDelight or Room KMP, and designs a Swift-facing facade with @Throws and SKIE so iOS code gets async functions and exhaustive enums. It treats Swift export as Alpha and plans adoption one slice at a time.
Jetpack Compose
Stateless screens, StateFlow state, no recomposition storms
Claude structures Compose screens as a route that collects one immutable UI state with collectAsStateWithLifecycle and a stateless screen that takes state and lambdas. It picks the right effect API with correct keys, applies Scaffold insets for edge-to-edge, and fixes slow lists with keys, deferred state reads and stable models, confirmed with Layout Inspector counts and compiler reports on a release build.
Deep Links
One https URL that opens the right screen everywhere
Claude sets up Universal Links and App Links so verified https URLs open the exact screen, with association files served without redirects, exclude rules ordered first, and the Play app signing fingerprint rather than the upload key. One URL parser serves links and push taps, signed-out users return to their target after login, and a bundled script validates both files and Apple's CDN copy.
Mobile Accessibility
Apps that work with VoiceOver, TalkBack and huge text
Claude audits and fixes native and cross-platform apps so critical flows can be completed eyes-free with VoiceOver and TalkBack. It writes concise labels, exposes roles, values and states, groups cards with custom actions, manages focus after navigation, and makes layouts reflow at the largest text sizes, using a concept-to-API map for SwiftUI, UIKit, Compose, Views, React Native and Flutter.
Mobile Biometric Auth
Face ID that guards a key, not a boolean
Claude implements biometric unlock so the prompt releases a token sealed in the Keychain or Android Keystore, with biometryCurrentSet and setInvalidatedByBiometricEnrollment so a newly added face or finger locks the secret. It maps every cancel, lockout and invalidation error to a password fallback, keeps the server issuing short-lived tokens, and flags wrappers that only return a bypassable true.
Mobile Performance
Faster launches and smooth lists, proven on real devices
Claude treats mobile performance as measurement first: release builds on a mid-range physical device, median and p90 over repeated runs, and a profiler trace before any change. It then applies the fixes that usually matter — deferred SDK init, Baseline Profiles, image downsampling, virtualized lists with stable keys, work moved off the main thread — and adds a benchmark so the gain cannot quietly regress.
Mobile Push Notifications
Delivered, opted-in, and opening the right screen
Claude wires push end to end: per-device tokens stored with their APNs environment, correct apns-push-type and priority headers, FCM HTTP v1 messages with string-only data, and pruning on 410 or UNREGISTERED. It designs a pre-prompt before the system permission dialog, routes taps from foreground, background and cold start, and validates every payload template with a bundled script.
React Native with Expo
Dev builds, Expo Router and OTA updates that are safe
Claude works in Expo projects the way the toolchain expects: native libraries via npx expo install, native settings through app config and plugins instead of hand-edited ios and android folders, development builds once custom native code appears, and OTA updates only to binaries with a matching runtime version. It checks safe areas, keyboard, back handling and permissions on both platforms.
App Store Release
Signed, reviewed and rolled out without surprises
Claude runs mobile releases like a release manager: CI-signed builds with unambiguous version and build numbers, testers on the exact binary that ships, metadata and privacy disclosures that match every SDK, and reviewer notes with demo credentials. Rollouts are phased with crash and ANR halt thresholds set in advance, and bad releases are halted and fixed forward because neither store can roll back.
Fastlane CI
One command from commit to TestFlight and Play
Claude turns laptop releases into reproducible fastlane lanes: Gemfile-pinned fastlane, match certificates fetched read-only behind setup_ci, App Store Connect API keys instead of Apple ID sessions, build numbers derived from the store, and Play uploads that land on internal and promote with a staged rollout. A bundled checker flags committed secrets and risky lanes before CI runs them.
Flutter Widgets
Small const widgets, one state owner, no overflow stripes
Claude writes Flutter UI as small const widget classes instead of helper methods, places state deliberately with setState, Riverpod 3 or Cubit, and fixes layout exceptions from the constraints model rather than by trial and error. Async code checks context.mounted after every await, native calls go through Pigeon, and jank is diagnosed in profile mode with DevTools.
Offline Sync
Local-first writes that never vanish or duplicate
Claude designs offline support per entity instead of bolting a cache onto API calls. Writes commit to the local database together with an outbox entry, a single worker pushes them with idempotency keys and backoff, deltas arrive by server cursor with tombstones, and each entity gets an explicit conflict rule — versioned last-writer-wins, field merges, operations or CRDTs — with failed items surfaced, never dropped.
Install
Every Android and Kotlin skill in one command
Installs into ~/.claude/skills/. Add --project after -- to install into the current repository.
curl -fsSL https://claudeskills.page/install.sh | sh -s -- android-architecture kotlin-multiplatform kotlin-idioms jetpack-compose mobile-app-security deep-links mobile-accessibility mobile-biometric-auth mobile-performance mobile-push-notifications react-native-expo mobile-ui-patterns codemods java-modern mobile-e2e-testing jvm-tuning app-store-release fastlane-ci flutter-widgets offline-sync Android and Kotlin skills FAQ
What is the best Claude Code skill for Android and Kotlin?
Start with Android Architecture: Layers, Hilt and modules that keep Android apps testable. Then add Kotlin Multiplatform and Kotlin Idioms, which cover the next most common Android and Kotlin requests.
How do I install all 20 Android and Kotlin skills at once?
Pass every name to the installer in one command: curl -fsSL https://claudeskills.page/install.sh | sh -s -- android-architecture kotlin-multiplatform kotlin-idioms jetpack-compose mobile-app-security deep-links mobile-accessibility mobile-biometric-auth mobile-performance mobile-push-notifications react-native-expo mobile-ui-patterns codemods java-modern mobile-e2e-testing jvm-tuning app-store-release fastlane-ci flutter-widgets offline-sync. Add --project to install them into the current repository's .claude/skills/ folder so your team gets them too.
Do these Android and Kotlin skills work outside Claude Code?
Yes. Each skill uses only the portable Agent Skills frontmatter, so the same folder works on claude.ai, through the Claude API and in the Agent SDK. Skills that run bundled scripts need an environment with code execution.