What problem does it solve? Jetpack Compose code often contains subtle state bugs: bare local vars that silently reset on recomposition, list mutations that never trigger UI updates, and misused @ReadOnlyComposable annotations that break the composition contract. This Skill provides the rules and diagnostics to write and review local Compose state correctly. ## Core Features & Use Cases - State-backed local variables: Detects bare var declarations inside @Composable functions and content lambdas, and rewrites them as remember { mutableStateOf(...) } so values survive and trigger recomposition. - Observable collections: Explains why mutableStateOf(list).add(x) never recomposes and when to use mutableStateListOf / mutableStateMapOf or value replacement instead. - Back-writing prevention: Flags snapshot state mutations during composition (e.g., clear() + putAll() in the composable body) and replaces them with remember(keys) { derivedSnapshot }. - @ReadOnlyComposable contract: Decides when to add or remove the annotation based on whether the body only reads composition locals versus calling layout, effects, or remember. - Use Case: While reviewing a pull request, you spot var count = 0 inside a Column { } content lambda and a @ReadOnlyComposable function that calls Box {}. This Skill gives you the exact diagnosis and fix for both. ## Quick Start Review this @Composable function for state authoring mistakes and fix any bare local vars or incorrect @ReadOnlyComposable annotations.