{"id":53608,"plugin_id":"plugins_6abcb949170081919055247eaf18cfc0","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:54:35.308Z","digest":"7b91e97e076b3cb1cecb958c6e148828f6ecdbce79f7865c5009c689962d4139","against":null,"payload":{"description":"Audit Flutter runtime performance from code and profile evidence, separating UI-thread build cost, raster cost, startup, memory pressure, image work, and native Android bottlenecks.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":209},{"relative_path":"references/performance-evidence.md","size_in_bytes":686},{"relative_path":"scripts/frame_timings_summary.py","size_in_bytes":4205}],"name":"flutter-performance-audit","skill_md_contents":"---\nname: flutter-performance-audit\ndescription: Audit Flutter runtime performance from code and profile evidence, separating UI-thread build cost, raster cost, startup, memory pressure, image work, and native Android bottlenecks.\n---\n\n# Flutter Performance Audit\n\nSeparate UI-thread build cost from raster cost. Measure in **profile mode** on\nan explicit device.\n\n## Evidence order\n\n1. One user-visible flow and symptom.\n2. Code pass: rebuild scope, sync Dart work, list identity, images, layout/paint,\n   state churn, isolate boundaries.\n3. Profile-mode capture on a named device.\n4. DevTools frames / timeline / CPU / raster / custom `dart:developer` events.\n5. For repeatable flows: `integration_test` `watchPerformance` or `traceAction`;\n   keep the JSON.\n6. Smallest fix; equivalent re-capture.\n\nRead `references/performance-evidence.md` first.\n\n## Commands\n\n```bash\nflutter run --profile -d <device-id> --target <target>\nflutter test integration_test/performance_test.dart -d <device-id>\nautonom metrics frames flutter-summary build/integration_response_data.json\n```\n\n(`<skill-root>/scripts/frame_timings_summary.py` is the same math for hosts\nwithout the Autonom CLI.)\n\n## Metrics\n\nReport build and raster average, p90, p99, worst, and over-budget frames. State\nthe budget (refresh rate). Keep startup and app size as separate claims.\n\n## Boundaries\n\n- Debug timings are not representative.\n- Emulator results are directional.\n- Flutter UI/raster evidence does not replace Perfetto/Simpleperf for Android,\n  binder, codec, DB, or native plugin bottlenecks.\n- Compare same device, thermal state, mode, target, data, and flow.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}