Android performance observability
Skill krutikJain/android-agent-skills/skills/android-performance-observability
Measure startup, rendering, memory, jank, vitals, logs, and crash signals for Android apps with actionable traces.From its SKILL.md
npx -y skills add krutikJain/android-agent-skills --skill android-performance-observabilityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 3 commands, including `rg -n "baseline|macrobenchmark|profileable|JankStats|Trace|Perfetto" .` and 2 more.
SKILL.md
5.3 KB, 955 tokens by cl100k_base, as published. Nobody here has run it
Android Performance Observability
When To Use
- Use this skill when the request is about: android performance profiling, baseline profile or macrobenchmark, app startup issue android.
- Primary outcome: Measure startup, rendering, memory, jank, vitals, logs, and crash signals for Android apps with actionable traces.
- Read
references/patterns.mdwhen you need the measurement ladder for startup, jank, traces, and production signals. - Read
references/scenarios.mdfor repeatable profiling and trace-oriented entry points. - Handoff skills when the scope expands:
android-compose-performanceandroid-ci-cd-release-playstore
Workflow
- Classify the symptom before choosing tools: cold start, warm start, frame/jank, scrolling, memory, ANR, crash, battery, or production vitals drift.
- Measure on release-like builds and physical devices whenever possible; avoid debugging from debug-only traces or profile-unfriendly builds.
- Pick the smallest tool that answers the question: Macrobenchmark for startup/scroll numbers, Baseline Profiles for ahead-of-time optimization, Perfetto/System Tracing for deep traces, JankStats or FrameMetrics for frame quality, and Play Vitals for field evidence.
- Change one thing at a time, then compare before and after traces or benchmark outputs instead of stacking multiple optimizations blindly.
- Hand off UI-specific rendering changes or release rollouts only after the measurement surface is stable and the bottleneck is evidenced.
Guardrails
- Treat benchmarks, traces, and vitals as different evidence sources with different noise profiles; do not mix them casually.
- Prefer reproducible release-build measurements over debug-build intuition.
- Tie optimizations back to user-facing metrics such as startup time, frame pacing, ANRs, or battery impact.
- Keep the profiling setup stable enough that regressions are attributable to code changes instead of device or environment churn.
Anti-Patterns
- Chasing micro-optimizations before identifying whether the problem is startup, rendering, I/O, or field reliability.
- Reading one noisy trace and presenting the result as settled fact.
- Measuring debug builds and assuming the same behavior in production.
- Adding Baseline Profiles or macrobenchmarks without checking whether the target path is stable enough to compare.
Review Focus
- Startup: cold and warm launch, expensive initialization, and Baseline Profile coverage.
- Rendering: jank, skipped frames, Compose or View invalidation churn, and long main-thread work.
- Memory and reliability: allocations, leaks, ANRs, crashes, and Play Vitals trends.
- Evidence quality: repeatable commands, release-like variants, and documented before/after comparisons.
Examples
Happy path
- Scenario: Audit the repo for profiling surfaces and benchmark-related hooks before proposing a measurement plan.
- Command:
rg -n "baseline|macrobenchmark|profileable|JankStats|Trace|Perfetto" .
Edge case
- Scenario: Keep startup and rendering investigations grounded in repeatable release-like builds.
- Command:
cd examples/orbittasks-compose && ./gradlew :app:assembleDebug
Failure recovery
- Scenario: Keep observability requests distinct from Compose-only tuning or release automation.
- Command:
python3 scripts/eval_triggers.py --skill android-performance-observability
Done Checklist
- The bottleneck is classified and tied to an evidence source that can be re-run.
- The chosen tools match the symptom instead of duplicating noisy measurements.
- Before/after comparisons are explicit for any recommended optimization.
- UI-only or release-only work is separated from measurement and tracing.
Official References
- https://developer.android.com/studio/profile/overview
- https://developer.android.com/topic/performance/vitals
- https://developer.android.com/topic/performance/benchmarking/macrobenchmark-overview
- https://developer.android.com/topic/performance/benchmarking/macrobenchmark-metrics
- https://developer.android.com/topic/performance/baselineprofiles/overview
- https://developer.android.com/topic/performance/tracing
- https://developer.android.com/topic/performance/rendering/jankstats
What ships with it: 5 files
4.3 KB alongside SKILL.md, 1 of them executable
agents/
- openai.yaml400 B
references/
- official-links.md1.0 KB
- patterns.md1.8 KB
- scenarios.md660 B
scripts/
- run_examples.shruns437 B