Android Profiler
Android (Google)OfficialCreated by Google LLCDistributed by Android (Google)
- Skill
- Tool integration
- Software development
- Apache-2.0
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The android-profiler skill provides a structured approach to capturing and interpreting Android performance data. It acts as an orchestrator for recording system traces, heap dumps, and CPU profiles, and provides workflows for deep-dive analysis using Perfetto. The skill is designed to help developers identify the root causes of UI jank, memory leaks, battery drain, and system-level performance regressions by leveraging standardized trace analysis and SQL-based querying.
What it does
- Records system traces, CPU call stacks, and memory heap profiles.
- Analyzes Perfetto traces to identify UI jank, frame drops, and startup latency.
- Investigates system-level issues like IPC Binder storms and thread scheduling stalls.
- Diagnoses power-related issues including battery drain and kernel wake locks.
- Debugs memory pressure, LMK events, and native or Java heap leaks.
- Executes custom PerfettoSQL queries for advanced trace data exploration.
When to use it
- When you need to investigate app startup latency or intermittent UI jank.
- When diagnosing memory-related crashes like OOMs or excessive allocation churn.
- When analyzing system-wide performance regressions using A/B trace comparisons.
- When you need to profile power consumption or modem power rail activity.
- When you need to perform ad hoc analysis on complex Android system traces.
Advantages
- Provides a unified workflow for both recording and analyzing performance data.
- Reduces ambiguity by enforcing clear intent disambiguation before execution.
- Includes specialized reference hints for CPU, memory, graphics, and power analysis.
- Supports advanced data exploration via PerfettoSQL integration.
- Ensures consistent environment setup through standardized path management.
Usage examples
- “My app is stuttering during scrolling. Can you help me find the cause?”
- The agent will initiate a trace recording session focused on UI jank, then guide you through analyzing the resulting Perfetto trace for frame drops and thread stalls.
- “I suspect a memory leak in my application. How can I investigate?”
- The agent will help you capture a Java or native heap dump and provide steps to analyze the memory allocation patterns to identify potential leaks.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/android/android-profiler/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip android-profiler.zip -d .agents/skills
Documentation by Google LLC
Your primary role is to figure out what the user wants to do (disambiguation), find the right instructions for it (workflow discovery), and follow them step-by-step (following the execution plan). If the request is unclear, work with the user to finalize the execution plan before proceeding.
Prerequisites and Setup
Before executing any workflows, read references/env_setup.md. It defines
what to set $SKILL_ROOT to - the anchor every other path in this skill is
written against.
Intent Disambiguation
Do not guess the user's intent. If the user request is not clear, ask the user what they want to do before proceeding.
Recording
Route all recording requests through recording/recording_orchestrator. This defines guidelines and pre-flight checks or dependency checks that apply to all recording workflows, and ensures you have the necessary setup to proceed. Read the orchestrator and execute the plan it describes based on what the user wants to record (for example, a system trace or a heap dump).
Analysis
Route all analysis requests through analysis/analysis_orchestrator.
Files
- ATTRIBUTION.mdAdded by AutoGineer965 B
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md2.2 KiB
- analysis/analysis_orchestrator.md1.5 KiB
- analysis/workflows/perfetto-sql/perfetto_sql.md969 B
- analysis/workflows/perfetto-trace-analysis/perfetto_trace_analysis.md4.2 KiB
- analysis/workflows/perfetto-trace-analysis/references/hints/hints_cpu.md2.6 KiB
- analysis/workflows/perfetto-trace-analysis/references/hints/hints_graphics.md2.1 KiB
- analysis/workflows/perfetto-trace-analysis/references/hints/hints_io.md1.8 KiB
- analysis/workflows/perfetto-trace-analysis/references/hints/hints_ipc.md1.7 KiB
- analysis/workflows/perfetto-trace-analysis/references/hints/hints_memory.md2.2 KiB
- analysis/workflows/perfetto-trace-analysis/references/hints/hints_power.md1.2 KiB
- analysis/workflows/perfetto-trace-analysis/references/per_candidate_analysis.md8.8 KiB
- analysis/workflows/perfetto-trace-analysis/references/triage.md3.9 KiB
- recording/recording_orchestrator.md1.5 KiB
- recording/workflows/perfetto-trace-recording/perfetto_trace_recording.md4.7 KiB
- recording/workflows/perfetto-trace-recording/references/example-configs/app_jank.pftxt1.0 KiB
- recording/workflows/perfetto-trace-recording/references/example-configs/cpu_profile.pftxt773 B
- recording/workflows/perfetto-trace-recording/references/example-configs/java_heap_dump.pftxt566 B
- recording/workflows/perfetto-trace-recording/references/example-configs/long_background.pftxt1006 B
- recording/workflows/perfetto-trace-recording/references/example-configs/memory_counters.pftxt1.0 KiB
- recording/workflows/perfetto-trace-recording/references/example-configs/native_heap.pftxt589 B
- recording/workflows/perfetto-trace-recording/references/example-configs/sched_cpu.pftxt836 B
- recording/workflows/perfetto-trace-recording/references/trace_config_reference.md4.9 KiB
- references/env_setup.md513 B
- references/perfetto/bin/trace_processorScript10.8 KiB
- references/perfetto/setup.md1.3 KiB
- references/perfetto/sql.md15.8 KiB
analysis/workflows/perfetto-trace-analysis/references/triage.md
Follow these steps in order:
1. Verify Data Integrity
Query the stats table for CPU and data loss indicators. If dropped events
exist, warn the user that findings may be incomplete and proceed with [GAP]
awareness.
2. Run High-Level System Metrics
Run metrics to detect systemic issues (thermal throttling, LMKs, binder contention) affecting system health.
Prerequisite: Verify
trace_processoris available (see$SKILL_ROOT/references/perfetto/setup.md) and start a warm background session per$SKILL_ROOT/references/perfetto/sql.md(trace_processor server unix --name <session> --daemonize [trace_file]) so all triage and candidate queries share one in-memory parse.
Query the standard library views below against --remote <session> (or run a
single metrics pass via
trace_processor [trace_file] --run-metrics [comma_separated_metrics]):
Quick Reference for Triaging
Key available metrics for --run-metrics: android_startup, android_cpu,
android_mem, android_lmk, android_binder, android_surfaceflinger,
android_gpu.
| Symptom / Issue | What to check | Useful Perfetto tables |
|---|---|---|
| App Startup | Main thread, class loading, bindApplication | android.startup.startups (android_startups), slice |
| App Jank | Main thread, RenderThread | actual_frame_timeline_slice, slice, thread_state |
| System Jank | SurfaceFlinger, HWC composition | actual_frame_timeline_slice, slice |
| App / System Crash | Process crashed or tombstoned | slice, process |
| ANR | Main thread, system_server watchdog | thread_state, slice |
| Frame Timing Issues | DrawFrame or doFrame slices | slice, actual_frame_timeline_slice |
| Memory Pressure / LMK | LMKD kills, RSS growth, kswapd | counter, sched_slice |
3. Define Target and Symptom Window
Locate the start (
ts), duration (dur) and end timestamp (ts + dur) of the specific issue.Expand upstream: Check if the first blocking event was caused by a stall that started before the symptom window. Stalls (for example, in binder servers, memory reclamation or kernel locks) often originate hundreds of milliseconds before the user-visible frame drop or latency spike occurs.
Find the victim's first non-Running state transition within the symptom window.
Follow the waker chain. If the blocking event began significantly before the symptom window, expand the investigation window upstream to include that origin. If it cascades down to an origin in another process (for example, a binder server that stalled
500msbefore the jank), note the expanded window and track the upstream stall as a co-candidate in the output.
Output the triage summary using the format defined below.
4. Final Output Format
Output the triage summary in this format:
## Trace Metadata
- **Device Model:** `[String, e.g., Pixel 7 Pro]`
- **Android Build:** `[String, e.g., TQ2A.230505.002]`
## System Vitals Summary
- **Status:** `[Nominal | Degraded | Critical]`
- **Flags Raised:** *(Only list systemic issues that are actually detected)*
- **Metric:** `[String, e.g., thermal_throttling, lmkd, binder_contention]`
- **Description:** `[e.g., 'Thermal throttling during symptom window']`
## Candidate(s)
*(Provide this block for each identified candidate)*
- **Issue Classification:** `[String, e.g., Startup, Jank, ANR_Input, Crash]`
- **Package Name:** `[String]`
- **Process Name:** `[String]`
- **Thread Name:** `[String]`
- **UPID:** `[Integer]`
- **Target UTID:** `[Integer]` *(The primary thread)*
- **Render Thread UTID:** `[Integer or N/A]` *(If issue is jank)*
- **Symptom Window:** `[Start TS] - [End TS] ([Duration ms])`
- **Expanded Window:** `[Expanded Start TS] - [End TS] ([Expanded Duration ms] or "None")`
- **Severity Note:** `[String, e.g., '150ms missed frame - worst instance']`Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
What our scanner noticed· Low risk
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Google LLC
- Publisher
- Android (Google) (Official)
- Distributed by
- Android (Google)
- Source
- android/skills · profilers/android-profiler · commit bf68e2d
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE.txt)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Google LLC or Android (Google).
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download android-profiler.zip