What problem does it solve? Building the data layer of an Android app involves many concurrency pitfalls: blocking the main thread, leaking flow collections, mishandling Room migrations, and losing numeric precision. This Skill provides concrete Kotlin patterns and guardrails for coroutines, Flow, Retrofit, Kotlin Serialization, and Room so the data layer stays thread-safe and lifecycle-aware. ## Core Features & Use Cases - Coroutines & Dispatchers: Enforces viewModelScope usage and Dispatchers.IO for network and database work, avoiding runBlocking and GlobalScope. - Reactive Streams: Guides Room DAOs returning Flow, correct StateFlow vs SharedFlow selection, and lifecycle-safe collection with collectAsStateWithLifecycle(). - Networking & Serialization: Shows Retrofit interfaces with suspend functions and DTOs annotated for Kotlin Serialization. - Room Guardrails: Flags exportSchema = false without migrations as a production blocker and forbids storing money as Double/Float. - Use Case: When implementing a repository that fetches tasks from a REST API, caches them in Room, and exposes them to Compose UI as a lifecycle-aware StateFlow, this Skill supplies the correct code patterns and a verification checklist. ## Quick Start Ask the agent to implement a Room-backed repository with Retrofit networking and Flow-based state exposure for a Kotlin Android feature, then review it against the data-layer guardrails.