Compose Performance Skills
A set of 26 skills on Jetpack Compose performance, from a measured audit to Baseline Profiles and R8
- 520 ★ on the repository
- Last commit
- Apache-2.0
Minimal access
Why this level
- The skills are instructions and run nothing themselves, though an agent follows them to build a release and run benchmarks on a device
- The install script creates symlinks in the agent's skills folder
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/compose-performance-skillsDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewMinimal accessThe tool runs nothing and makes no network calls.
- The skills are instructions and run nothing themselves, though an agent follows them to build a release and run benchmarks on a device
- The install script creates symlinks in the agent's skills folder
This is third-party code. Review the repository files before installing.
What it does
Compose Performance Skills is a set of 26 agent skills on one topic: Jetpack Compose performance. Each skill handles one scenario. Some cover recomposition: type stability, skipping and finding recompositions with no cause. Others deal with lazy lists, modifier chains and migration to Modifier.Node, side effects and Flow collection. Baseline Profiles, R8 configuration, hot reload with Compose HotSwan and the measurement loop get skills of their own. Every skill follows one shape: trigger words in the SKILL.md header, then a step-by-step workflow, pairs of right and wrong code and a verification checklist. The folders fall into nine categories, from audit and build to side-effects and stability. INDEX.md maps a symptom to a skill. The entry point for a broad complaint such as "the app feels sluggish everywhere" is the auditing-compose-performance skill. It runs the audit as a Measure, Diagnose, Fix, Verify loop and looks for causes in the Compose compiler reports. If the symptom is named precisely, for example janky scrolling in a LazyColumn, the agent goes straight to the narrow skill.
Who it is for. For Android developers on Jetpack Compose whose scrolling janks, recomposition counts climb or who need an audit before a release.
Good fit when
- A LazyColumn drops frames during fast scrolling and recomposition counts spike on every scroll tick
- A team starts a performance sprint and needs a work plan with measurements before and after each change
- You need to find out which types the compiler treats as unstable and pin stability baselines in CI
- Before a release you need to generate a Baseline Profile and configure R8 for Compose
- You want to check changes faster with hot reload without losing screen state
Not a fit when
- You are writing a Compose UI from scratch and want general development rules: the set is about performance only
- The app uses XML layouts or is not on Android: the skills are entirely about Jetpack Compose
- You want to install skills through the Android CLI: the set lives outside Google's official catalog and is connected by a clone and a script
- You cannot build a release variant or have no physical device at hand: the audit requires release measurements, and the author considers emulator numbers unrepresentative
Example request
My LazyColumn drops frames during fast scroll and recomposition counts spike on every tick in the Layout Inspector. Diagnose the stability issue and fix itLimitations
The author tuned the skills against Claude Code, where SKILL.md loads directly. He has not verified Android Studio Agent mode and Gemini end to end and asks for reports in the issue tracker. In Claude.ai the SKILL.md files are uploaded by hand as attachments, and with the Claude API they go into the system prompt or through the Agent Skills file API. Measuring needs a Macrobenchmark module in the project. Some advice is tied to versions: Strong Skipping, for example, is on by default from Kotlin 2.0.20. API references in the skills are pinned to specific versions.
How to disable. Run `./scripts/install-skills.sh --uninstall` from the clone folder, then delete the clone and restart Claude Code.
FAQ
How do I install Compose Performance Skills in Claude Code?
Clone the repository into ~/.claude/skills-sources/compose-performance-skills and run scripts/install-skills.sh. Running the script again breaks nothing. After a restart Claude Code picks the skill from the symptom words in your prompt.
Why does a plain git clone into ~/.claude/skills not work?
The Claude Code loader expects SKILL.md directly inside the skill folder, while in the repository the skills sit deeper, inside category folders. The install script lays symlinks out in a flat structure. Pass another target directory as an argument, and the `--uninstall` flag removes the links.
How do I connect the skills to Android Studio Agent mode or Gemini?
From the project folder, clone the repository into `.compose-performance-skills-source` and run the script with `.agent/skills` as the target. These agents discover skills in local project folders. The author has not done an end-to-end check with them.
Where do I start if the whole app feels sluggish?
With the auditing-compose-performance skill. Before the first change it requires measurements of a release build on a physical device, and it returns to measuring after every fix. A single narrow symptom goes straight to the narrow skill.
How do I pick a skill for my symptom?
In INDEX.md a table maps a symptom to a skill. For example, a slow LazyColumn points to optimizing-lazy-layouts and a question about type stability points to diagnosing-compose-stability.
Discussion
No questions or reviews yet.
Related
SkillsA skill for Jetpack Compose and Compose Multiplatform: the agent writes UI from references and checks it against androidx source
Skills for Kotlin, Jetpack Compose and Android: state and effects, performance, Flow, testing, benchmarks, Gradle and PR workflows
Official set of 30 skills from the Android team: Jetpack Compose, AGP 9 upgrade, R8, Perfetto profiling, Navigation 3, CameraX, Google Play policies
Awesome Android Agent Skills
awesome-android-agent-skills
Skills for modern Android development for Copilot, Claude, Gemini and Cursor: Kotlin, Jetpack Compose, architecture, Hilt, Room
A Material Design 3 skill for coding agents: tokens, more than 30 components, theming, adaptive layout and a compliance audit, Jetpack Compose first
Callstack agent skills for React Native
Callstack Agent Skills
Callstack's React Native skills: performance, version upgrades, native app migration, testing and CI
Comparison with similar tools
Entries that share the main search query, and how they differ.
| Entry | Official | Repository stars | Main difference |
|---|---|---|---|
| Compose Performance Skills (this entry) | no | 520 | |
| Compose Agent Skill | no | 599 | teaches writing Compose UI from reference material and checking androidx sources, without a performance focus |
| Android skills | yes | 10,003 | the official 30 skills from the Android team: Compose, AGP 9, R8, Perfetto, Navigation 3, CameraX and Google Play policies |
README in short
The README explains the Agent Skills format from the agentskills.io standard and shows the directory layout. The naming conventions are simple: a gerund-form skill name and at most 500 lines in the body. Then come the ways to connect the set to Claude Code, Android Studio, the Android CLI, Claude.ai and the API, and a quick example with a LazyColumn.
README badge
Original SKILL.md
---
name: auditing-compose-performance
description: Use this skill to run an end-to-end Jetpack Compose performance audit when the symptom is broad ("the app feels sluggish", "scroll is rough everywhere", "we're starting a perf sprint", "what should we fix first?"). Orchestrates the four-phase Measure → Diagnose → Fix → Verify loop by sequencing the 25 focused skills (release-mode setup, R8, Baseline Profiles, Compose Compiler reports, stability inference, Layout Inspector, `@TraceRecomposition`, stabilization, strong skipping, phase-deferral, derivedStateOf, lazy layouts, lazy prefetch, Modifier.Node, modifier ordering, flow collection, effects, CI gates, hot-reload) and produces a written audit report with Before/After Macrobenchmark numbers. Use when the developer wants a perf sprint kickoff, a pre-release perf gate, onboarding to a perf-troubled codebase, or a written deliverable. Use when the user mentions "audit", "perf review", "perf sprint", "where do I start", or has no specific symptom yet.
license: Apache-2.0. See LICENSE for complete terms.
metadata:
author: Jaewoong Eum (skydoves)
keywords:
- jetpack-compose
- performance
- audit
- orchestrator
- perf-sprint
- measure-diagnose-fix-verify
- baseline-profile
- macrobenchmark
- compose-compiler-reports
- stability
---
# Auditing Compose Performance — the Measure → Diagnose → Fix → Verify orchestrator
This is the highest-level entry point in the `compose-performance-skills` library. When the developer's symptom is broad — "the app feels sluggish", "scroll is rough everywhere", "we're starting a perf sprint", "where do we even start?" — Claude enters here. The orchestrator does **NOT** replace the 25 focused skills; it sequences them through a four-phase loop and produces a written audit report at the end.
The phases are **Measure → Diagnose → Fix → Verify**, run in order, never skipped. Phase 1 establishes baseline numbers from a release + R8 build on a real device, because anything else is fiction. Phase 2 turns symptoms into named causes from the Compose Compiler reports, Layout Inspector, and runtime tracing. Phase 3 applies one targeted fix at a time, re-measuring between fixes so the delta of each change is provable. Phase 4 regenerates the Baseline Profile, locks in a CI stability gate, and commits the baseline files so regressions cannot slip back.
Perf work without measurement is guessing. Skydoves hot take #1 applies throughout: **DO NOT** chase 100% skippability — that is a diagnostic on a compiler report, not the goal. The goal is `FrameTimingMetric` and `StartupTimingMetric` improvement on a real device.
## When to use this skill
- The developer reports broad sluggishness with no specific surface ("the app feels heavy", "everything is slow").
- A team is kicking off a performance sprint and wants a structured plan.
- A new team member needs onboarding to a perf-troubled codebase.
- A pre-release perf gate is required before shipping.
- The user asks for an "audit", "perf review", or a written deliverable.
- The user has no idea where to start and wants Claude to triage.
## When NOT to use this skill
- A specific symptom is already named (scroll jank in `LazyColumn`, `derivedStateOf` not firing, custom modifier recomposing). Go straight to the focused skill. See `../../INDEX.md` for the symptom→skill map.
- The developer only wants to fix one issue and does not want a written report. Pick the focused skill from `../../INDEX.md`.
- No release build is possible (e.g. broken signing config). Resolve that first; this audit MUST measure release.
## Prerequisites
- Project builds the release variant successfully (`./gradlew assembleRelease`).