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.