pablitoarango
UserAgent skills for modern Android development with Kotlin and Jetpack Compose, aligned with Google's official documentation.
Categories
Indexed Skills (21)
android-architecture
Android app architecture per Google's guide: layers and dependency direction, Hilt, modularization, models per layer, naming. Use for project structure, where code belongs, module setup, or dependency injection, and when UI calls DAOs or APIs directly, features depend on each other's internals, or classes cannot be tested in isolation.
android-data-layer
Repositories and data sources per Google's data layer guide: models per layer, main-safety, lifetimes, errors, caching, WorkManager, offline-first sync. Use for repository, data source, Room, DataStore, network, or sync work, and when saves are cancelled on leaving a screen, work must survive process death, network or database models leak past repositories, or the app must work offline.
android-domain-layer
Use cases per Google's domain layer guide: when to add one, naming, operator invoke, main-safety, lifetime, testing. Use when creating, reviewing, or deciding whether to add a use case, and when business logic is duplicated across ViewModels or one ViewModel combines too many repositories.
android-viewmodel
ViewModels and UI state per Google's UI layer guide: StateFlow with stateIn, events modeled as state, lifecycle-aware collection. Use for ViewModels, UI state classes, snackbars, navigation triggers, or one-off events, and when a SharedFlow or Channel event is lost or handled twice, a snackbar shows twice or never, or navigation fires again on return.
android-coroutines
Coroutines and Flow per Google's best practices and the Kotlin coroutines guide: dispatchers, main-safety, scopes, Flow, lifecycle collection, cancellation, exceptions, shared state, testing, concurrency reviews. Use for async code or coroutine tests, and for ANRs, leaks, races, hangs, viewModelScope crashes, silently lost errors, work that ignores cancellation, or runTest timeouts.
android-retrofit
Retrofit and OkHttp per the Retrofit docs and Google's data layer guide: service declarations, return types, remote data sources, Hilt and OkHttp setup, interceptors, auth, logging, errors, R8, MockWebServer tests. Use when adding or changing HTTP calls, and for 401 refresh loops, KotlinNullPointerException on empty bodies, SerializationException, dropped base URL paths, or release-only failures.
gradle-build-logic
Gradle build logic per Google's build docs: settings and repositories, version catalogs, convention plugins, Kotlin DSL, AGP 9 built-in Kotlin and new DSL, the Compose Compiler plugin. Use for build.gradle.kts, settings.gradle.kts, convention plugin, or libs.versions.toml changes, and for AGP 9 upgrade errors (kotlinOptions, kapt, applicationVariants) or config copied between modules.
gradle-build-performance
Gradle build speed per Google's docs: Build Analyzer, gradle-profiler, configuration cache, build cache and remote CI cache, KSP, heap and GC tuning, AGP 9 defaults, Isolated Projects. Use when builds or sync are slow, tasks rerun with no changes, remote cache misses, configuration cache problems appear, kapt dominates, or garbage collection eats build time.
migrate-rxjava-to-coroutines
RxJava to coroutines and Flow migration: type and operator mappings, threading, UI state instead of view callbacks, interop adapters, test migration. Use when converting Singles, Observables, Flowables, Subjects, Disposables, subscribeOn/observeOn chains or RxJava tests, or when Rx and coroutine code must interoperate mid-migration.
migrate-xml-to-compose
Views to Compose migration per Google's strategy: incremental order, ComposeView and AndroidView interop, layout and widget mappings, navigation and theming during migration. Use when converting XML layouts, Fragments or View screens to Compose, and when mixed screens apply insets twice, break nested scrolling, lose ComposeView state, or drift from the XML theme.
android-emulator
Run and drive apps on emulators and devices with the Android CLI and adb: start and stop AVDs, install and launch APKs, inspect the UI with android layout, tap and type, screenshots, logcat, Gradle Managed Devices. Use when running, testing or debugging an app on a device, reading crash logs, or when adb shows offline or unauthorized devices or CI emulators lack a GPU.
android-testing
Android test strategy per Google's testing docs: test scopes, fakes over mocks, ViewModel and Flow tests, Hilt test bindings, Room DAO tests, Robolectric, Roborazzi and Compose Preview screenshot tests. Use when planning or writing unit, integration, Hilt, Room, or screenshot tests, or when a StateFlow test sees only its initial value or a local test throws Method not mocked.
compose-testing
Compose UI tests per Google's docs: test rules, semantics finders, merged trees, synchronization, state restoration, configuration overrides, accessibility checks. Use when writing or debugging Compose UI or component tests, including nodes not found or matched several times, children hidden by merging, off-screen lazy items, sleeps, and flaky waits for async data.
compose-accessibility
Compose accessibility per Google's docs: API defaults, touch targets, labels, semantics, merging and clearing, custom actions, traversal order, text scaling, contrast, automated checks. Use for TalkBack or Switch Access support and audits, and when TalkBack skips elements or reads them out of order, touch targets are too small, text clips at large font sizes, or Accessibility Scanner flags issues.
compose-adaptive-layouts
Adaptive Compose layouts per Google's docs: window size classes, list-detail and supporting panes, NavigationSuiteScaffold, state across resizing. Use when UI must work on tablets, foldables, desktop windows, or rotation, and when layouts stretch on large screens, code checks isTablet or locks orientation, or state is lost on resize or fold.
compose-images
Images in Compose per Google's image docs and Coil 3: painterResource vs AsyncImage, dependencies, sizing and downsampling, lists, painter state, the ImageLoader with OkHttp and caching, previews, tests. Use when loading network, file or resource images, and when URLs never load, images use too much memory, lists jump as images arrive, or previews show no image.
compose-lists
Lazy lists, grids and pagers per Google's docs: keys, contentType, item animations, Paging, scroll state, list pitfalls. Use for scrolling lists, grids, carousels, pagers, or RecyclerView and ViewPager replacements, and when items jump or swap state, scroll position resets, or nested scrolling crashes with infinity maximum height constraints.
compose-navigation
Navigation 3 per Google's docs: NavKey back stacks, NavDisplay, entry decorators, Hilt ViewModel keys, scenes, transitions, results, deep links, modular features, Navigation 2 migration. Use for navigation, back stack or deep link work, or migrating from Navigation Compose, and when double taps push twice, entries share a ViewModel, state or back stack is lost, or Back skips deep link parents.
compose-performance
Compose performance per Google's docs: R8 release builds, Baseline Profiles, composition tracing, recomposition counts, Macrobenchmark, JankStats, phases and deferred reads, backwards writes, stability and strong skipping. Use for jank, slow startup or scrolling, composables recomposing every frame or endlessly, one-frame layout flicker, or unstable parameters.
compose-side-effects
Compose effects per Google's docs: LaunchedEffect keys, rememberCoroutineScope, rememberUpdatedState, DisposableEffect, produceState, derivedStateOf, snapshotFlow. Use when a composable launches work, registers listeners, or reacts to state, and when an effect restarts too often or reads stale values, a listener leaks, or animating from viewModelScope throws a MonotonicFrameClock error.
compose-ui
Compose UI fundamentals per Google's docs: remember and saveable state, state hoisting, API conventions, modifiers, lifecycle effects, CompositionLocal, Material 3 theming, resources, previews. Use when writing, reviewing or refactoring composables, and when state resets on rotation, UI ignores list changes, modifier order looks wrong, dark theme breaks, or previews fail.
Bio shown is the top-scored skill's repo description as a fallback — real GitHub bios land in a future update.