{"id":53604,"plugin_id":"plugins_6abcb949170081919055247eaf18cfc0","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:54:35.251Z","digest":"879602c9fde349939d60658794d65236097d2e4e2fcf7a51dfc6237e9749a850","against":null,"payload":{"description":"Audit Compose performance from code and runtime evidence, focusing on invalidation scope, stability, lazy identity, effects, layout, draw work, images, and comparable profiling captures.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":211}],"name":"compose-performance-audit","skill_md_contents":"---\nname: compose-performance-audit\ndescription: Audit Compose performance from code and runtime evidence, focusing on invalidation scope, stability, lazy identity, effects, layout, draw work, images, and comparable profiling captures.\n---\n\n# Compose Performance Audit\n\nFind unnecessary recomposition, layout, and draw work with code review plus\ncomparable runtime captures.\n\n## Order of work\n\n1. Name one screen and one user-visible symptom (jank, slow open, scroll hitch).\n2. Trace state owners: which state reads invalidate which composables.\n3. Check stability of parameters, `key` / identity in lazy lists, and effect\n   scopes (`LaunchedEffect`, `DisposableEffect`, `SideEffect`).\n4. Look for expensive work in composition, intrinsic measurements, excessive\n   modifiers (clip / graphicsLayer / shadow), oversized images, and layout\n   thrash.\n5. Capture a comparable profile (Macrobenchmark, Perfetto, or Studio) on an\n   explicit target and mode.\n6. Apply the smallest fix; re-run the same flow.\n\n## Code signals\n\n- Unstable lambdas / objects crossing composition boundaries without remember.\n- Reading broad state higher than needed.\n- Lazy items without stable keys.\n- `derivedStateOf` misused or missing where it would shrink invalidation.\n- Layout that measures children twice without need.\n- Images decoded at full resolution for small on-screen size.\n\n## Runtime signals\n\nFrame time, recomposition counts (when available), overdraw, and timeline\nsections. Emulator numbers are directional; use a physical device for claims\nusers will feel.\n\n## Report\n\nFlow, device, mode, code findings, capture artifacts, fix, and before/after\nmetrics with units.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}