AI coding skills and prompts for Android lead engineers, works with Claude, GitHub Copilot, Gemini, and Cursor. Covers J
Encode your team's Android engineering standards into Claude Code and other AI assistants — once, consistently, forever.
Claude already knows what Hilt, Room, and Compose are. You don't need to teach it Android.
What you do need is for every AI-generated screen in your project to follow your architectural decisions — your spacing grid, your state modelling pattern, your animation standards, your colour token hierarchy. Without a skill, Claude will make different choices on different days, and your codebase slowly diverges.
This skill is a team standards document for AI. Install it once. Every Claude Code session — yours, your teammates', your CI's — follows the same patterns.
Without skill → Claude produces correct-but-generic Android code
With skill → Claude produces your project's Android code
| Without Skill | With Skill | |
|---|---|---|
| Color system | 6–8 Material roles, hardcoded hex | All 29 roles defined, 3-layer token architecture |
| Shared element transitions | Instant navigation or basic slide | sharedBounds() / sharedElement() with correct scope threading |
| Loading states | CircularProgressIndicator centred on grey | Skeleton shimmer mirroring real content geometry |
| State modelling | var isLoading, var error, var data | sealed interface with Loading, Ready(data), Error(message) |
| ViewModel events | StateFlow for everything (toast replays on rotation) | SharedFlow(replay=0) for events, StateFlow for state |
| UI quality | Ships when it compiles | Blocked by 29-item binary checklist |
| Spacing | Random dp values | 4dp grid enforced via AppSpacing.* tokens |
| Dark mode | Inverted colours or forgotten | Correct tonal mapping, all 29 roles defined in both schemes |
Loading / Ready(data) / Error(message, canRetry)StateFlow for persistent state, SharedFlow(replay=0) for one-time eventsSingletonComponent → ViewModelComponentSavedStateHandle.toRoute<T>() for type-safe argument extractionCompositionLocal extensions: gradient colors, warning/success roles, dimensionsSharedTransitionLayout / SharedTransitionScope / AnimatedVisibilityScopesharedElement() vs sharedBounds() decision guide with comparison tableCompositionLocal — when to use eachSharedTransitionLayout)stiffness × dampingRatio decision table)AnimatedVisibility stagger pattern — delay = min(index × 40ms, 300ms)Animatable for gesture-coupled drag-to-dismiss and swipe-to-revealupdateTransition for multi-property state machinesAnimatedContent for tab switching with directional slide@Serializable data classesTaskStackBuilder for notifications)popUpTo, saveState, restoreState for multi-backstacksSavedStateHandle.toRoute<T>() in ViewModelBackHandlerWindowSizeClass — Compact / Medium / Expanded breakpointsNavigationSuiteScaffold — automatic bottom bar / rail / drawer selectionListDetailPaneScaffold — list+detail on tablet, single-pane on phoneFoldingFeature detection, table-top mode layoutsafeDrawingPadding, imePadding, systemGesturesPaddingAppDispatchers — testable dispatcher selectioncollectAsStateWithLifecycle() vs collectAsState() — why it mattersflatMapLatest vs flatMapMerge vs flatMapConcat — decision tablestateIn(SharingStarted.WhileSubscribed(5000)) — the correct patternawaitItem(), advanceTimeBy(), cancelAndIgnoreRemainingEvents()CancellationException must always be rethrownGlobalScope prohibition with explanationFlow<DomainResult<T>> + suspend DomainResult<T>DomainError sealed interface — NetworkUnavailable, Unauthorized, NotFound, ServerError@Upsert, Flow<T> DAOs, in-memory testingEncryptedSharedPreferences + EncryptedFile for sensitive storageBiometricPrompt implementationCertificatePinner + Network Security Config XMLBuildConfig from env vars@Stable, @Immutable, ImmutableList, lambda stabilityderivedStateOf — prevent threshold-driven over-recompositionBaselineProfileRule, critical user journeysStartupTimingMetric, FrameTimingMetricNotifications: FCM setup, channels grouped by user intent, POST_NOTIFICATIONS permission, action receivers with goAsync(), notification groups
Background Work: @HiltWorker with retry logic, work chaining, expedited workers, Foreground Services (Android 14 service types), AlarmManager for exact alarms
Image Loading: Coil3 ImageLoader configuration (OkHttp, memory/disk cache), SubcomposeAsyncImage for custom loading states, lazy list performance traps, video thumbnails, SVG, animated GIF
Accessibility: Semantic roles, contentDescription rules, custom accessibility actions, focus management, live regions, WCAG AA contrast guide, TalkBack testing checklist
Testing: Testing pyramid (unit/integration/screenshot/E2E), FakeRepository over mocks, Roborazzi JVM screenshot tests, Turbine for Flow testing, MainDispatcherRule
→ references/notifications.md · references/background-work.md · references/image-loading.md · references/accessibility.md · references/testing.md
Gradle: Convention plugins (build-logic/ composite build), version catalog (libs.versions.toml), AGP↔Gradle compatibility matrix, gradle-wrapper.properties — the file everyone forgets
Bootstrap: Minimum res/ files for any app module (themes.xml, adaptive icons, strings), VectorDrawable element restrictions
ADB / MCP: Screenshot-driven UI review loop, logcat filtering, UI hierarchy dump, animation frame-interval debugging, responsive testing (font scale, RTL, density, foldable states)
→ references/build-and-modules.md · references/android-mcp.md
Luminary — a news reader built entirely with this skill. Demonstrates shared element transitions, full 29-role colour system, skeleton loading, staggered animations, and Clean Architecture end-to-end.
Every pattern in that codebase traces to a specific section of this skill.
# From your project root
git clone https://github.com/ayush016/android-lead-agent-skills.git \
.claude/skills/android
Add to your project's CLAUDE.md:
## Active Skills
- **android**: `.claude/skills/android/SKILL.md`
Covers architecture, Compose, animations, theming, navigation, security, performance, testing, and more.
mkdir -p ~/.claude/skills
git clone https://github.com/ayush016/android-lead-agent-skills.git \
~/.claude/skills/android
Add to ~/.claude/CLAUDE.md:
## Skills
- android: ~/.claude/skills/android/SKILL.md
Copy SKILL.md into the relevant rules/instructions location for your tool:
| Tool | Location |
|---|---|
| GitHub Copilot | .github/copilot-instructions.md |
| Cursor | .cursor/rules/android.mdc |
| Gemini Code Assist | .gemini/context.md |
The skill auto-loads when it detects Android-related work — any .kt file with Compose imports, mentions of ViewModel / Hilt / Room / Coroutines, Gradle config, or ADB / MCP usage.
Using the android skill, build a product detail screen with a shared element
transition from the list thumbnail. Use the offline-first data layer pattern.
Review this composable against the android skill's UI excellence checklist.
Using the android skill, set up Baseline Profiles and Macrobenchmark
for the critical cold-start and scroll paths.
Be clear-eyed about limitations:
android-lead-agent-skills/
│
├── SKILL.md ← Load this into your AI tool
│
├── references/ ← Deep-dive guides (load on demand)
│ ├── theming-and-color.md ★ All 29 M3 roles, 3-layer tokens
│ ├── shared-element-transitions.md ★ 4 full Kotlin patterns + 6 pitfalls
│ ├── compose-ui-system.md ★ Design system, shimmer, gradients
│ ├── motion-and-animation.md ★ Spring physics, Canvas, choreography
│ ├── navigation.md Type-safe nav, deep links, multi-module
│ ├── architecture.md ViewModel, state, DI, Clean Architecture
│ ├── adaptive-layouts.md WindowSizeClass, foldables, insets
│ ├── coroutines-and-flow.md Dispatchers, operators, cancellation
│ ├── data-layer.md Offline-first, Room, Retrofit
│ ├── performance.md Baseline Profiles, R8, recomposition
│ ├── security.md Encryption, biometrics, cert pinning
│ ├── background-work.md WorkManager, Foreground Services, Alarms
│ ├── image-loading.md Coil3, SubcomposeAsyncImage, caching
│ ├── notifications.md FCM, channels, action receivers
│ ├── accessibility.md Semantics, TalkBack, WCAG AA
│ ├── testing.md Roborazzi, Turbine, fakes
│ ├── build-and-modules.md Gradle, convention plugins, bootstrap
│ └── android-mcp.md ADB, screenshot review, debugging
│
└── assets/
└── ui-excellence-checklist.md ← 29-item binary quality gate
Files marked ★ are the most impactful — start here if you're evaluating the skill.
| Component | Version |
|---|---|
| AGP | 8.5.2 |
| Gradle | 8.7 (pinned via wrapper) |
| Kotlin | 2.0.21 |
| Compose BOM | 2024.09.00 |
| Navigation Compose | 2.8.4 |
| Hilt | 2.52 |
| min SDK | 26 (API 26 = ~99% device coverage) |
| target SDK | 35 |
Versions are pinned at time of last update. Always verify against the official AGP compatibility table before upgrading.
The skill improves when patterns fail in the real world. Open a PR if:
PR format: Include the specific file and section, the problem with the current content, the replacement, and ideally a link to the relevant Android documentation.
MIT © 2025 Ayush Shrivastava
See LICENSE for full terms. TL;DR: use it, fork it, build on it — attribution appreciated but not required.
If this skill improved your Android + AI workflow, a ⭐ on the repo helps others find it.
WCAG accessibility audit — automated scanning, manual review, remediation
Playwright testing toolkit — test generation, flaky test fix, migration helpers
Parallel development with git worktrees — port isolation, env sync, cleanup
1000+ skills curated from Anthropic, Vercel, Stripe, and other engineering teams