What problem does it solve? Frequently-changing state (animation values, scroll positions, drag offsets) read in a composable body invalidates Composition on every frame, causing scroll jank, dropped frames, and full-subtree recomposition. This Skill identifies wrong-phase reads and rewrites them with lambda-based modifiers so only Layout or Draw re-runs per frame. ## Core Features & Use Cases - Value-to-lambda modifier migration: Converts Modifier.alpha(state.value), Modifier.offset(x.dp), and Modifier.background(color) into Modifier.graphicsLayer { }, Modifier.offset { IntOffset(...) }, and Modifier.drawBehind { } forms. - Lambda provider pattern: Rewrites hot values passed across composables as () -> T lambda providers so parent composables never recompose per frame. - Phase cheat sheet and verification: Provides a modifier-phase reference table plus Layout Inspector and @TraceRecomposition verification steps to confirm recomposition counts stop climbing. - Use Case: A scroll-driven sticky header recomposes the entire screen on every pixel of scroll; the Skill rewrites it as Modifier.offset { IntOffset(0, scrollState.value) } so only the header's Layout phase re-runs. ## Quick Start Ask the assistant to fix the per-frame recomposition in your composable by moving the animated alpha and scroll offset reads into lambda-based modifiers like Modifier.graphicsLayer and Modifier.offset.