Create Gentle AI pull requests with issue-first checks.
Use when configuring Ameba rules and settings for Crystal projects including .ameba.yml setup, rule management, severity levels, and code…
Use when implementing MVVM, clean architecture, dependency injection with Hilt, or structuring Android app layers.
Android build system and deployment patterns
Jetpack Compose mechanics: what belongs in an effect rather than the composable body, how state is hoisted and remembered, and what makes…
Android architecture and platform decisions: where state lives, what survives process death, what work leaves the main thread, and what…
Use to find stuck coroutines, leaked jobs, and suspended awaits with no resumer — the concurrency bugs that don't crash but cause hangs…
Persistence and offline behaviour: where a value lives, what survives, transactions, migrations, and what happens when the network does…
The object graph: what lives how long, what may depend on what, and when a wiring mistake is discovered.
Images that arrive at runtime, fetched or picked or decoded: caching, sizing, cancellation, and what a picker actually hands back.
Java on Android without the language features Kotlin has: threading, equality, resource handling, and interoperating with Kotlin.
The shape of the layer graph: which layers exist, which way dependencies point, and what each one may touch.
Talking to a server: client configuration, what comes back, what happens when it does not, and how a request is authorised.
Runtime permissions: whether to ask at all, how to ask, and what the app does with every answer including the silent ones.
Material Design 3 and Android platform guidelines.
Use BEFORE fixing any non-trivial bug. Write a test that fails because of the bug, watch it fail, then fix the bug until the test passes…
Use to flip framework-level diagnostics without code changes — verbose framework logging (`log.tag.<Tag> VERBOSE`), view-bounds overlay…
Keeping a secret on a device you do not control: key storage, backup, intents, and client-side checks that are signals rather than controls.
Use to prove (or disprove) that a state actually changed between two points — "did the dialog dismiss?", "did this navigation actually…
Use to surface invisible main-thread I/O, leaked closeables, leaked activities, and other policy violations that don't crash but cause…
What makes a test able to fail for the right reason: the shape of the seam, the scheduler it runs on, and what an assertion is allowed to…