What problem does it solve? Legacy Modifier.composed { } factories allocate a fresh composable scope per recomposition, cannot be skipped, and force parent composables to recompose on every frame. This Skill guides authoring new custom modifiers and migrating legacy ones to the persistent Modifier.Node + ModifierNodeElement<T> architecture, eliminating per-recomposition allocation and parent invalidation chains. ## Core Features & Use Cases - Migration workflow: An 8-step checklist covering discovery of Modifier.composed usages, Element/Node scaffolding, interface selection, lifecycle hooks, and verification. - Specialized node interfaces: Guidance for DrawModifierNode, LayoutModifierNode, SemanticsModifierNode, PointerInputModifierNode, CompositionLocalConsumerModifierNode, LayoutAwareModifierNode, GlobalPositionAwareModifierNode, ObserverModifierNode, DelegatingNode, and TraversableNode. - Wrong/right code patterns: Concrete Kotlin examples for draw, coroutine animation, CompositionLocal reads, the data-class diffing requirement, and DelegatingNode composition. - Use Case: A code review flags Modifier.composed { drawBehind { ... } } in a hot list item. Use this Skill to rewrite it as a data class Element plus a DrawModifierNode, then verify the parent composable becomes skippable in the compiler report. ## Quick Start Ask the AI to migrate every Modifier.composed factory in this module to Modifier.Node and verify no composed usages remain.