What problem does it solve? Jetpack Compose UIs that read frequently-changing state (scroll position, animation values, drag offsets) inside composable bodies recompose entire subtrees every frame, causing scroll jank, animation jank, and dropped frames. This Skill diagnoses wrong-phase state reads and migrates them to lambda-based modifiers so invalidation is confined to Layout or Draw. ## Core Features & Use Cases - Value-to-lambda modifier migration: Converts Modifier.alpha(state.value), Modifier.offset(x.dp), Modifier.background(color) into Modifier.graphicsLayer { }, Modifier.offset { IntOffset(...) }, and Modifier.drawBehind { } forms. - Lambda provider pattern: Rewrites hot values passed across composables from Float parameters to () -> Float providers so parents never recompose per frame. - Phase cheat sheet and verification: Provides a modifier-phase reference table plus Layout Inspector and @TraceRecomposition verification steps on release builds. - Use Case: A scroll-driven sticky header recomposes the whole screen on every pixel of scroll; the Skill rewrites it to Modifier.offset { IntOffset(0, scrollState.value) } so only Layout 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 graphicsLayer and offset.