Android Profiler
arindamxd/camerax-android
Manages Android performance profiling and debugging. An agent skill from arindamxd/camerax-android.
Translates natural language data intents into syntactically valid Perfetto SQL queries and executes them against a local trace file.
$ npx skills add jameshnsears/QuoteUnquote --skill perfetto-sql -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jameshnsears/QuoteUnquote perfetto-sql --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jameshnsears/QuoteUnquote.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/perfetto-sql .claude/skills/perfetto-sql && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "perfetto-sql" agent skill from https://github.com/jameshnsears/QuoteUnquote/tree/main/.agents/skills/perfetto-sql into .claude/skills/perfetto-sql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perfetto-sql", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jameshnsears/QuoteUnquote/tree/main/.agents/skills/perfetto-sqlType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jameshnsears/QuoteUnquote --skill perfetto-sql -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jameshnsears/QuoteUnquote perfetto-sql --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jameshnsears/QuoteUnquote.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/perfetto-sql .agents/skills/perfetto-sql && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "perfetto-sql" agent skill from https://github.com/jameshnsears/QuoteUnquote/tree/main/.agents/skills/perfetto-sql into .agents/skills/perfetto-sql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perfetto-sql", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jameshnsears/QuoteUnquote --skill perfetto-sql -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jameshnsears/QuoteUnquote perfetto-sql --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jameshnsears/QuoteUnquote.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/perfetto-sql .cursor/skills/perfetto-sql && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "perfetto-sql" agent skill from https://github.com/jameshnsears/QuoteUnquote/tree/main/.agents/skills/perfetto-sql into .cursor/skills/perfetto-sql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perfetto-sql", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jameshnsears/QuoteUnquote.git --path .agents/skills/perfetto-sql--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jameshnsears/QuoteUnquote --skill perfetto-sql -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jameshnsears/QuoteUnquote perfetto-sql --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jameshnsears/QuoteUnquote.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/perfetto-sql .gemini/skills/perfetto-sql && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "perfetto-sql" agent skill from https://github.com/jameshnsears/QuoteUnquote/tree/main/.agents/skills/perfetto-sql into .gemini/skills/perfetto-sql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perfetto-sql", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jameshnsears/QuoteUnquote perfetto-sqlInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jameshnsears/QuoteUnquote --skill perfetto-sql -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jameshnsears/QuoteUnquote.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/perfetto-sql .github/skills/perfetto-sql && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "perfetto-sql" agent skill from https://github.com/jameshnsears/QuoteUnquote/tree/main/.agents/skills/perfetto-sql into .github/skills/perfetto-sql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perfetto-sql", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jameshnsears/QuoteUnquote --skill perfetto-sql -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jameshnsears/QuoteUnquote perfetto-sql --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jameshnsears/QuoteUnquote.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/perfetto-sql .opencode/skills/perfetto-sql && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "perfetto-sql" agent skill from https://github.com/jameshnsears/QuoteUnquote/tree/main/.agents/skills/perfetto-sql into .opencode/skills/perfetto-sql/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perfetto-sql", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
perfetto-sqlTranslates natural language data intents into syntactically valid Perfetto SQL queries and executes them against a local trace file.
Perfetto SQL is an agent skill from jameshnsears/QuoteUnquote. Translates natural language data intents into syntactically valid Perfetto SQL queries and executes them against a local trace file. Use this skill to extract slice, thread, or memory data from Android Perfetto traces using traceprocessor.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/perfetto-stdlib.md`).
It sits in Databases, covering SQL. It works with SQL and Android. The repository describes itself as: A Quotations / Affirmations App Widget. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1e3f3b0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlpythonFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
get.perfetto.devFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Perfetto SQL loads about 2.7k tokens when it runs, and up to ~56k if it reads all its reference files. Until then it costs about 63 tokens; SKILL.md has 1,379 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from jameshnsears/QuoteUnquote at commit 1e3f3b0, republished under its Apache-2.0 licence (© jameshnsears). 1,379 words, ~2,738 tokens.
.claude/skills/perfetto-sql/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Idempotency: Ensure queries are idempotent to prevent "already exists" errors during multiple executions.
CREATE OR REPLACE: CREATE OR REPLACE PERFETTO TABLE, CREATE OR REPLACE PERFETTO VIEW, CREATE OR REPLACE PERFETTO FUNCTION, CREATE OR REPLACE PERFETTO MACRO.SPAN_JOIN), CREATE OR REPLACE is not supported. Explicitly drop them first: DROP TABLE IF EXISTS my_table; CREATE VIRTUAL TABLE my_table USING SPAN_JOIN(...);DROP INDEX IF EXISTS index_name;.SPAN_JOIN will crash if intervals within the same input table overlap. Always use the PARTITIONED {column} (for example, PARTITIONED upid) clause to isolate intervals.
Intermediate tables fed into a SPAN_JOIN must be materialized using CREATE PERFETTO TABLE, not CREATE VIEW.
Trace Boundaries (dur = -1): Slices or thread states that don't finish before the trace ends are recorded with dur = -1. When calculating a bounding box (for example, ts + dur) or summing durations (SUM(dur)), handle incomplete durations using: IIF(dur = -1, trace_end() - ts, dur).
Robust State Transitions: Avoid manual timestamp arithmetic (for example, ts + dur = next.ts) to join adjacent events. Rely on standard library modules (for example, sched.runnable, linux.perf.counters, intervals.overlap) which safely handle trace gaps and preemptions.
Unique Identifiers: When writing SQL queries in Perfetto, you must join tables using utid (unique thread ID) or upid (unique process ID) instead of the regular tid or pid. Why it's useful : The operating system recycles TIDs and PIDs, while UTIDs and UPIDs remain unique for the lifetime of the trace, which prevents incorrect joins.
Safe Argument Extraction: Use EXTRACT_ARG(arg_set_id, 'key') to extract dictionary or JSON-like properties from slices or tracks. Don't attempt string parsing.
String Matching (Always use GLOB): Use GLOB instead of LIKE. LIKE causes performance bottlenecks and treats underscores (_) as wildcards, leading to bugs.
=.GLOB with * (for example, name GLOB '*RenderThread*').LOWER(name) GLOB and make sure the search string is fully lowercase (for example, LOWER(name) GLOB '*renderthread*'). Use this when dealing with inconsistent trace capitalization (for example, WakeLock versus wakelock).Calculating Time Overlaps: To calculate the overlap duration between two
time intervals [start1, end1] and [start2, end2]:
Precedence Rule: Always prefer using
SPAN_JOINor standard library functions (for example,intervals.overlap) to calculate overlaps between two different sets of intervals . Avoid manual arithmetic if a standard library feature orSPAN_JOINcan achieve the same result. Use the following logic if no built-in alternative exists.
Condition: The intervals overlap if start1 < end2 and start2 < end1.
Duration: The overlap duration is calculated as MIN(end1, end2) - MAX(start1, start2)
Important: Incomplete Perfetto slices have a duration of -1 (
dur = -1). Always calculate the effective end time usingts + IIF(dur = -1, trace_end() - ts, dur)before applying this logic.
Query android_thread_slices_for_all_startups for app startup requests.
Join counter_track with counter to get values of counter with a specific
name.
When querying for a CPU frequency counter, include the linux.cpu.frequency
module and use the cpu_frequency_counters table.
When looking for events around a specific timestamp, start with 100ms as the window size.
Always prefix column names with table or view alias, that is:
{alias}.{column_name}.
To calculate the total time spent in slices matching a specific name pattern
(for example, *{name_pattern}*), you must sum their durations. Why it's
useful : This helps quantify the total impact of a specific function or
feature on performance across multiple calls. Here is an example query (note
the safe handling of incomplete slices): sql SELECT count(*) as total_count, sum(IIF(slice.dur = -1, trace_end() - slice.ts, slice.dur)) / 1000000.0 as total_dur_ms FROM slice WHERE slice.name GLOB '*{name_pattern}*';
perfetto-stdlib.md. Use this file as a reference to discover available modules, find schemas (columns and types) for specific tables or views, or determine the INCLUDE PERFETTO MODULE statements required before drafting SQL query.trace_processor wrapper script downloaded directly from Perfetto. Output is returned in pure CSV format.You must follow these steps sequentially, mirroring a multi-agent pipeline:
Fetch the Wrapper: You must use the top level of the current project workspace (./trace_processor).
CRITICAL GUARDRAIL: NEVER use filesystem search tools (
find,find_by_name,grep,dir /s,Get-ChildItem) across the home directory or workspace to locatetrace_processor— unconstrained searches across entire workspaces will stop responding or time out.
Perform a direct file check at the top level of your workspace (e.g., ls trace_processor). If missing, download https://get.perfetto.dev/trace_processor directly into the root workspace (curl -LO), make it executable on macOS/Linux (chmod +x), and ensure trace_processor is added to .gitignore. Execute queries directly via ./trace_processor (on Windows, explicitly invoke python trace_processor).
Important: The file served at this URL is a
~10KBPython wrapper script. Don't assume the download failed because it is human-readable text. This is the intended behavior. This script handles lazy-loading the precompiled binary automatically on its first run. Use it directly.
perfetto-stdlib.md. Don't read the entire documentation file --- it consumes the context window. Follow this precise workflow:grep, read_file or file search) with line limits to discover relevant views, tables or modules based on your problem domain and high-level intents (for example, 'CPU time', 'running time', 'overlap', 'jank').INCLUDE PERFETTO MODULE statements for the required object from the documentation.Schema for {name}: listing columns and types.Draft the SQL query in SQLite syntax using only the schemas retrieved in Step 1. After drafting, you must validate against this checklist:
[ ] SQLite Syntax: Does the query parse successfully without syntax errors?
[ ] Idempotency: Are all object creations safe to re-run? (Did you use CREATE OR REPLACE PERFETTO and DROP TABLE IF EXISTS for virtual tables?)
[ ] Existence: Were all tables found in the documentation?
[ ] Intent Check: Is there a pre-existing standard library table or view that will fulfill this intent before instead of writing manual arithmetic?
[ ] Column Accuracy: Do columns match the retrieved schemas?
[ ] Alias Check: Are ALL column names prefixed with their table or view alias (for example, alias.column_name)?
[ ] Module Check: Are INCLUDE PERFETTO MODULE statements included for all non-prelude modules? You must use the exact module names provided in
the documentation.
[ ] Span Join Check: If using SPAN_JOIN, are tables safely PARTITIONED to prevent overlapping interval crashes? Are intermediate tables materialized with CREATE PERFETTO TABLE?
[ ] No LIKE Constraint: Did you map string matches using GLOB or = instead of prohibited LIKE?
[ ] Execution Check: You MUST run queries using the standalone
./trace_processor wrapper with the --query-string flag:
./trace_processor --query-string "QUERY" {trace_file}.
Execution Rules:
/tmp/ directory./tmp/ directory.© jameshnsears, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in .agents/skills/perfetto-sql of jameshnsears/QuoteUnquote.
Open the folder on GitHubat commit 1e3f3b0
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in jameshnsears/QuoteUnquote, which our catalogue first saw on October 7, 2026.
Perfetto SQL next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Perfetto SQL this skilljameshnsears/QuoteUnquote | 100 | 2 repos | ~2.7k | Automated safety check: Pass | Apache-2.0 | |
| Android Profilerarindamxd/camerax-android | 132 | 2 repos | ~493 | Automated safety check: Pass | Apache-2.0 | |
| Evolving The Data ModelTriliumNext/Trilium | 38k | — | ~2.1k | Automated safety check: Pass | AGPL-3.0 | |
| Safe SQL Executionsupabase/supabase | 111k | — | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Citus Backportcitusdata/citus | 13k | — | ~3.2k | Automated safety check: Pass | AGPL-3.0 | |
| SQL Database Support for pRESTprest/prest | 4.6k | — | ~1.6k | Automated safety check: Pass | MIT |
arindamxd/camerax-android
Manages Android performance profiling and debugging. An agent skill from arindamxd/camerax-android.
TriliumNext/Trilium
A skill your agent uses when adding a DB migration or a new column/field to a Becca entity in Trilium ("add a migration", "new column on notes/attributes", "ALTER TABLE", "add a field to…
supabase/supabase
A skill your agent uses whenever code will build, return, fetch, or execute SQL that runs against a user's real Postgres database — even when the request reads like an ordinary feature or bug fix…
citusdata/citus
Backport one or more merged citusdata/citus main commits/PRs onto the active release branches.
prest/prest
Guides classifying, gap-analyzing and scaffolding support for a new SQL database in pREST, from Postgres-compatible variants to entirely new dialects.
StarRocks/starrocks
Proposes verified fixes for failing SQL examples in StarRocks docs across three languages and several versions, then opens draft pull requests and never merges.
jameshnsears/QuoteUnquote
Expert guidance for working with Wear OS Compose Material3. An agent skill from jameshnsears/QuoteUnquote.
jameshnsears/QuoteUnquote
A skill your agent uses to migrate legacy Android camera implementations (Camera1 or raw Camera2 APIs) to CameraX.
jameshnsears/QuoteUnquote
Analyzes Perfetto traces to find the root cause of latency, memory, or jank issues in Android apps.
Categories
Translates natural language data intents into syntactically valid Perfetto SQL queries and executes them against a local trace file. Perfetto SQL is an agent skill from jameshnsears/QuoteUnquote. Translates natural language data intents into syntactically valid Perfetto SQL queries and executes them against a local trace file.
Perfetto SQL fits situations like: memory data from Android Perfetto traces using traceprocessor; tasks that involve SQL.
Run `npx skills add jameshnsears/QuoteUnquote --skill perfetto-sql -a claude-code`. Or copy the skill folder (.agents/skills/perfetto-sql in jameshnsears/QuoteUnquote) into .claude/skills/perfetto-sql in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jameshnsears/QuoteUnquote --skill perfetto-sql -a codex`. Or copy the skill folder (.agents/skills/perfetto-sql in jameshnsears/QuoteUnquote) into .agents/skills/perfetto-sql in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jameshnsears/QuoteUnquote --skill perfetto-sql -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/perfetto-sql, .gemini/skills/perfetto-sql, .github/skills/perfetto-sql and .opencode/skills/perfetto-sql in your project.
Going by SKILL.md and its folder, Perfetto SQL needs the command-line tools its instructions call (curl and python). Our summary lists: Python 3.
SKILL.md names 1 domain. In commands or code: get.perfetto.dev; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Perfetto SQL is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 54k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Perfetto SQL: Android Profiler (arindamxd/camerax-android, 132 stars), Evolving The Data Model (TriliumNext/Trilium, 38k stars), Safe SQL Execution (supabase/supabase, 111k stars) and Citus Backport (citusdata/citus, 13k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jameshnsears (a GitHub user) maintains it in jameshnsears/QuoteUnquote, which has 100 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on August 27, 2026.
Source: jameshnsears/QuoteUnquote on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.