android-expert

Enforce Jetpack Compose and MVI architecture patterns in Android codebases.

2|Updated Jan 22, 2026
One-click install
npx skills add https://github.com/abnegate/claudes --skill android-expert-abnegate
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: android-expert
Source: https://github.com/abnegate/claudes/tree/main/skills/android-expert
Command: npx skills add https://github.com/abnegate/claudes --skill android-expert-abnegate

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill prevents costly Android/Compose rework by enforcing consistent, production-proven patterns for Jetpack Compose + MVI across teams and codebases.

Core Features & Use Cases

  • MVI contract standardization: Enforces MviViewModel<State, Intent, Effect> with a *Contract holder, immutable data class state, and sealed Intent/Effect types to reduce ambiguity and bugs.
  • Modern Compose requirements: Mandates collectAsStateWithLifecycle(), correct edge-to-edge setup for modern targets, strong skipping expectations, and consistent effect handling via Channel + receiveAsFlow().
  • Type-safe navigation + DI conventions: Requires @Serializable typed routes (no string routes) and Koin-based DI (not Hilt), with clear module layout and parameter ordering rules.

Quick Start

Apply the android-expert house rules when writing or reviewing any Jetpack Compose + MVI Android code in your project.

Frequently Asked Questions about android-expert

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I standardize Jetpack Compose and MVI architecture across my Android team?

Standardize Jetpack Compose and MVI architecture by enforcing production-proven patterns like `MviViewModel` with immutable state, sealed Intent/Effect types, and a `*Contract` holder to reduce ambiguity and bugs.

What is the best way to handle one-shot effects in MVI with Jetpack Compose?

Handle one-shot MVI effects using a `Channel` combined with `receiveAsFlow()`, and mandate `collectAsStateWithLifecycle()` for state streams to ensure robust effect processing in Jetpack Compose.

How do I set up type-safe navigation in Jetpack Compose without string routes?

Set up type-safe Compose navigation by requiring `@Serializable` typed `data object` or `data class` routes, eliminating string-based paths to enforce compile-time safety and prevent navigation errors.

Does this MVI approach work with Hilt for dependency injection?

This MVI approach does not work with Hilt; it mandates Koin-based dependency injection, requiring specific Koin module layouts and strict parameter ordering conventions for production Android codebases.

How do I test Android Compose ViewModels and flows for production readiness?

Test Android Compose ViewModels and flows using robust testing scaffolds built with Turbine for flow assertions, MockK for mocking, and Robolectric to ensure production-ready MVI logic.

Why should I use strong skipping and edge-to-edge in modern Android Compose apps?

Use strong skipping and edge-to-edge in modern Android Compose apps to enforce consistent UI rendering, prevent layout regressions, and align with current production performance expectations.