[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1145":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":15,"starSnapshotCount":15,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},1145,"compose-performance-skills","skydoves\u002Fcompose-performance-skills","skydoves","⚡️ A curated library of Agent Skills focused on Jetpack Compose performance.","",null,"Shell",420,14,5,0,3,9,57,59.73,"Apache License 2.0",false,"main",[24,25,26,27,28,29,30,31,32,33,7],"agent-skills","android","claude","claude-code","compose","compose-performance","jetpack-compose","kotlin","llm-tools","recomposition","2026-06-12 04:00:08","# Compose Performance Skills\n\nIf you have used [`android\u002Fskills`](https:\u002F\u002Fgithub.com\u002Fandroid\u002Fskills), you already know the shape of an Agent Skill: a Markdown file an agent loads on demand to perform one focused task. That library covers Android development at large. This repository goes narrow and deep on a single axis: Jetpack Compose performance. The skills here cover stability, recomposition, lazy layouts, custom modifiers, side effects, baseline profiles, R8, hot reload with Compose HotSwan, and the measurement loop that ties them together. The goal is to give a coding agent enough operational knowledge to diagnose and fix Compose performance issues without guessing, and to give the developer reading the diff a citation trail back to primary sources.\n\n## What this repo is\n\nThis is a curated library of Agent Skills focused on Jetpack Compose performance. Every skill is grounded in primary sources: Android Developers documentation, the Compose compiler, posts by Ben Trengrove, Chris Banes, Manuel Vivo, and the skydoves open source projects, and blog posts. Every API reference is pinned to a version.\n\nThe skills follow the open Agent Skills standard published at [agentskills.io](https:\u002F\u002Fagentskills.io), the same `SKILL.md` format used by Anthropic's Skills API, Android Studio Agent mode, and Gemini. The library was iterated against Claude Code, where the SKILL.md files load directly; other compatible runtimes have not been individually end to end tested. \n\nNote that the [Android CLI](https:\u002F\u002Fdeveloper.android.com\u002Ftools\u002Fagents\u002Fandroid-cli) itself manages only Google's [first party skill catalog](https:\u002F\u002Fgithub.com\u002Fandroid\u002Fskills) (`android skills add --skill \u003Cname>`); this repo is a community library outside that catalog and is loaded by agent runtimes from project local directories rather than installed via the CLI. \n\n## What is a Skill\n\nA Skill is a single Markdown file (`SKILL.md`) plus optional `references\u002F` material that teaches an agent how to perform one focused task. It declares trigger vocabulary in YAML frontmatter and a numbered workflow in the body. The agent reads the frontmatter, decides whether the skill applies to the current task, then follows the workflow inside `SKILL.md` step by step.\n\nA skill is not documentation for humans. It is operational instructions for an LLM. That changes the writing voice: terse, imperative, RIGHT and WRONG snippet pairs, MUST and MUST NOT directives in bold caps, and a Verification checklist that proves the work was done. Prose is kept short. Code samples carry the load.\n\n## Directory layout\n\n```\ncompose-performance-skills\u002F\n├── README.md                 # this file\n├── INDEX.md                  # symptom to skill lookup table\n├── LICENSE                   # Apache-2.0\n└── \u003Ccategory>\u002F\u003Cslug>\u002F\n    ├── SKILL.md              # the skill (required)\n    └── references\u002F           # optional, one level deep\n        └── \u003Ctopic>.md\n```\n\nConventions:\n\n- **Category**: lowercase, one of `stability`, `recomposition`, `lists`, `modifiers`, `side-effects`, `measurement`, `build`, `audit`, `hot-reload`.\n- **Slug**: gerund form, lowercase, hyphenated, max 64 chars (`diagnosing-compose-stability`, `migrating-to-modifier-node`).\n- **`SKILL.md`**: uppercase. Every skill body stays under 500 lines. Longer material moves into `references\u002F`.\n- **`references\u002F`**: one level deep only. Deeper nesting breaks how agents preview the files.\n- **Cross links**: relative Markdown links between skills so they resolve when the repository is browsed on GitHub.\n\nThe full authoring specification lives in [`docs\u002FSPEC.md`](docs\u002FSPEC.md).\n\n## How to use\n\n### Claude Code\n\nClaude Code's skill loader expects each skill at `~\u002F.claude\u002Fskills\u002F\u003Cslug>\u002FSKILL.md`. This repo organizes its 26 skills under nested category folders (`\u003Ccategory>\u002F\u003Cslug>\u002FSKILL.md`) for human readability, so a plain `git clone` into `~\u002F.claude\u002Fskills` does not surface the skills (community feedback confirmed). Use the bundled install script, which clones once to a stable location and symlinks each individual skill folder into `~\u002F.claude\u002Fskills\u002F`:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fcompose-performance-skills.git \\\n  ~\u002F.claude\u002Fskills-sources\u002Fcompose-performance-skills\n\n~\u002F.claude\u002Fskills-sources\u002Fcompose-performance-skills\u002Fscripts\u002Finstall-skills.sh\n```\n\nThe script is idempotent and accepts an optional custom target directory:\n\n```bash\n.\u002Fscripts\u002Finstall-skills.sh \u002Fpath\u002Fto\u002Fagent\u002Fskills      # custom target\n.\u002Fscripts\u002Finstall-skills.sh --uninstall                # remove the symlinks\n```\n\nOnce the symlinks are in place, restart Claude Code. Mention a Compose performance symptom in a prompt and Claude Code matches the trigger vocabulary in the skill frontmatter, then loads the relevant `SKILL.md` automatically.\n\n### Android Studio Agent mode and Gemini\n\nThese agents discover skills at runtime by scanning project local directories per Google's [Android skills documentation](https:\u002F\u002Fdeveloper.android.com\u002Ftools\u002Fagents\u002Fandroid-skills). The official Android skill catalog uses a flat layout (`\u003Cslug>\u002FSKILL.md` directly under the install directory), and Claude Code follows the same convention. Based on the Claude Code feedback above, expect Android Studio Agent mode and Gemini to require flat layout as well, so use the same install script targeting the project's agent skills directory:\n\n```bash\ncd \u003Cyour-android-project>\ngit clone https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fcompose-performance-skills.git \\\n  .compose-performance-skills-source\n\n.\u002F.compose-performance-skills-source\u002Fscripts\u002Finstall-skills.sh .agent\u002Fskills\n```\n\nThe script symlinks each `\u003Ccategory>\u002F\u003Cslug>\u002F` folder under `.agent\u002Fskills\u002F\u003Cslug>\u002F` so the agent finds `SKILL.md` at the depth it expects. The source repo lives at `.compose-performance-skills-source\u002F` (gitignore-able) so updates are a single `git pull`.\n\nOnce the symlinks are in place, the agent matches the trigger vocabulary in each skill's frontmatter against the user prompt or the open file. A slow `LazyColumn` should trigger `optimizing-lazy-layouts`, a stability question should trigger `diagnosing-compose-stability`, and so on.\n\nEnd to end behavior with Android Studio Agent mode and Gemini has not been independently verified by the author. Reports of working or broken integration are welcome at the [issue tracker](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fcompose-performance-skills\u002Fissues).\n\n### Android CLI\n\nThe [Android CLI](https:\u002F\u002Fdeveloper.android.com\u002Ftools\u002Fagents\u002Fandroid-cli) manages only Google's first party skill catalog. `android skills add --skill \u003Cname>` installs catalog skills such as `r8-analyzer` or `edge-to-edge` into `\u003Cproject>\u002Fskills\u002F\u003Cslug>\u002F`. Community libraries such as this repo are outside that catalog and cannot be installed through the CLI; verified by running `android skills list --project=\u003Cpath>` against a project containing this repo's nested layout, which surfaces only the official catalog. Use the Android CLI for first party skills and the manual clone above for this repo's skills; both sets coexist on the same project.\n\n### Claude.ai and the Claude API\n\nFor Claude.ai workspaces, upload the relevant `SKILL.md` files as Agent Skill attachments. For direct Anthropic API integrations, reference skills inline in the system prompt or load them through the Agent Skills file API. The skills are self contained. No external runtime is required beyond a working Compose toolchain on the developer's machine for verification steps.\n\n### Other agent runtimes\n\nAny agent runtime that can read a Markdown file and follow its instructions can use these skills. The frontmatter is plain YAML. The body is plain Markdown. Treat the `SKILL.md` files as system prompts for the task, attach the linked `references\u002F` files when the body cites them, and let the agent run the Verification checklist before declaring the work done.\n\n## Quickstart\n\nA developer pastes the following into Claude Code:\n\n> My LazyColumn drops frames during fast scroll. Composables show in the layout inspector but recomposition counts spike on every scroll tick. Diagnose the stability issue and fix it.\n\nClaude Code matches the symptoms (`dropped frames`, `recomposition counts`, `LazyColumn`) against skill frontmatter and loads [`stability\u002Fdiagnosing-compose-stability\u002FSKILL.md`](stability\u002Fdiagnosing-compose-stability\u002FSKILL.md). That skill walks Claude through enabling Compose Compiler reports in release mode, parsing `\u003Cmodule>-composables.txt` for `unstable` parameters, then chains into [`stability\u002Fstabilizing-compose-types\u002FSKILL.md`](stability\u002Fstabilizing-compose-types\u002FSKILL.md) for the fix. The chain is explicit in each skill's body: a fix skill states which diagnostic skill should have produced the input, and a diagnostic skill names the fix skills it can hand off to. The agent does not have to infer the path.\n\n## Skill categories\n\n- **`stability\u002F`**: diagnose and fix Compose stability. Read compiler reports, stabilize types, configure `stability_config.conf`, validate via `compose-stability-analyzer`.\n- **`recomposition\u002F`**: eliminate unnecessary recomposition. Defer state reads to layout or draw, apply `derivedStateOf` correctly, trace recomposition with `@TraceRecomposition`, avoid `SubcomposeLayout`\u002F`BoxWithConstraints`\u002F`Scaffold` pitfalls that compose during the measure pass.\n- **`lists\u002F`**: make `LazyColumn` and `LazyVerticalGrid` smooth. Stable keys, `contentType`, `LazyLayoutCacheWindow`, pausable prefetch.\n- **`modifiers\u002F`**: author and migrate custom modifiers. `Modifier.Node` over `composed { }`, `graphicsLayer { }` for animated reads.\n- **`side-effects\u002F`**: wire flows and effects safely. `collectAsStateWithLifecycle`, `LaunchedEffect` vs `RememberedEffect`, lambda memoization under strong skipping.\n- **`measurement\u002F`**: measure before fixing. Macrobenchmark, Baseline Profiles, frame timing, startup metrics, release mode invariants.\n- **`build\u002F`**: get the toolchain right. R8 in full mode, strong skipping flag, CI time stability validation.\n- **`audit\u002F`**: orchestrator skill that sequences the others into an end to end performance audit (Measure to Diagnose to Fix to Verify).\n- **`hot-reload\u002F`**: install Compose Hot Reload for Android, stay inside the supported change set, preserve state across reloads, and drive the loop from an AI agent over MCP.\n\nThe full symptom to skill lookup is in [INDEX.md](INDEX.md).\n\n## Scope\n\nIn scope:\n\n- Jetpack Compose for Android, on the runtime, compiler, and tooling that ship with AndroidX.\n- The Compose performance loop end to end: measurement, diagnosis, fix, and verification.\n- Build configuration where it changes Compose runtime behavior (R8 full mode, strong skipping, baseline profiles).\n\nOut of scope:\n\n- General Compose tutorials and onboarding. Use the official [Compose pathway](https:\u002F\u002Fdeveloper.android.com\u002Fcourses\u002Fjetpack-compose\u002Fcourse) for that.\n- Compose Multiplatform specifics. Most skills apply, but iOS, Desktop, and Web targets are not validated here.\n- Non Compose Android performance work (View system, RecyclerView, app startup outside Compose).\n\n## Editorial position\n\nFive non negotiable hot takes carried across every skill. They appear in skill bodies as MUST and MUST NOT directives so the agent treats them as constraints, not advice.\n\n1. Skippability is a diagnostic, not a KPI. Do not chase 100%.\n2. A stability config is a contract with the compiler, not a magic spell. Break the contract and you silently miss recompositions.\n3. Inline composables (`Row`, `Column`, `Box`) are not restartable or skippable. Wrapping them changes recomposition scoping.\n4. `Flow` parameters are unstable. Collect them in a `ViewModel` or with `collectAsStateWithLifecycle`. Do not pass them down.\n5. Always measure in release plus R8 plus a real device. Debug builds lie.\n\n## Contributing\n\nContributions are welcome. Before opening a pull request:\n\n1. Read [`docs\u002FSPEC.md`](docs\u002FSPEC.md) end to end. The frontmatter template, body structure, voice, and mandatory rules apply to every skill.\n2. Pull facts and code samples from [`docs\u002FCORPUS.md`](docs\u002FCORPUS.md) so vocabulary stays consistent across skills.\n3. Run the post write self check. It is the gate. Frontmatter validates, body is 500 lines or fewer, at least one RIGHT and WRONG pair for code level skills, a Verification checklist, three or more authoritative reference URLs, no first person, no emojis, no time sensitive phrasing.\n4. Add the new skill to [INDEX.md](INDEX.md) under each lookup section it belongs to.\n\nOpen the pull request only after the self check passes.\n\n## Attribution\n\nFive skydoves OSS libraries seed the technical content of this repository. The skills cite them inline where their APIs are referenced.\n\n- [compose-performance](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fcompose-performance): the umbrella performance hub.\n- [compose-stability-inference](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fcompose-stability-inference): the 12 phase stability inference algorithm and bitmask encoding.\n- [compose-stability-analyzer](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fcompose-stability-analyzer): `@TraceRecomposition`, `stabilityDump`, and the `stabilityCheck` Gradle plugin.\n- [compose-stable-marker](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fcompose-stable-marker): `@Stable`, `@Immutable`, and `@StableMarker` for pure Kotlin modules without pulling `compose-runtime`.\n- [compose-effects](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fcompose-effects): `RememberedEffect`, `ViewModelStoreScope`, and other side effect primitives.\n\nAdditional primary sources are listed in [`docs\u002FCORPUS.md`](docs\u002FCORPUS.md).\n\n## Find this repository useful? :heart:\nSupport it by joining __[stargazers](https:\u002F\u002Fgithub.com\u002Fskydoves\u002Fcompose-performance-skills\u002Fstargazers)__ for this repository. :star: \u003Cbr>\nAlso __[follow](https:\u002F\u002Fgithub.com\u002Fskydoves)__ me for my next creations! 🤩\n\n# License\n```xml\nDesigned and developed in 2026 by skydoves (Jaewoong Eum)\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```","该项目是一个专注于Jetpack Compose性能优化的精选Agent技能库。其核心功能包括通过一系列基于Markdown格式的SKILL.md文件，提供关于Compose性能调优的具体指导，如稳定性增强、重组优化、懒加载布局等，每项技能都基于官方文档及行业专家的文章精心编写，并且针对特定版本进行引用。适用于需要深入理解和解决Jetpack Compose应用中性能问题的场景，无论是开发者手动调试还是利用AI助手自动化处理，都能从中受益。此外，该库遵循开放的Agent技能标准，兼容多种运行环境，但需注意其为社区贡献项目，不直接通过Android CLI管理。",2,"2026-06-11 02:41:56","CREATED_QUERY"]