Agent Skills
› chrisbanes/skills
› compose-performance
compose-performance
GitHub针对 Jetpack Compose 性能问题(如重组开销、跳过性、帧率状态读取)的诊断与优化技能。通过复现过渡场景、分类主要轴并应用最小修正,提升渲染性能并确保正确性。
触发场景
分析 Compose 重组成本
解决编译器稳定性报告问题
排查不可跳过参数导致的无效重组
优化帧率相关的状态读取
安装
npx skills add chrisbanes/skills --skill compose-performance -g -y
SKILL.md
Frontmatter
{
"name": "compose-performance",
"description": "Use when investigating Jetpack Compose recomposition cost, compiler stability reports, skippability, unstable parameters, frame-rate State reads, cross-phase snapshot back-writing, or @ReadOnlyComposable contracts."
}
Compose performance
Core principle
Measure one user-visible transition, identify the runtime axis that causes the work, then apply the smallest correction at the phase or boundary where that axis begins.
Procedure
- Reproduce one concrete transition and capture the observable evidence: recomposition counts, compiler reports, profiler data, or a clear trace.
- Classify the primary axis: parameter stability and skipping, State read phase, or snapshot state written back into an earlier phase.
- Check for a false lead: a real data change, a correctness defect, or an unchanged lazy item that is expected to recompose.
- Read the corresponding focused reference before proposing a change.
- For review work, pair every finding with the smallest evidence-supported repair. For a false stability promise, explicitly say to replace mutable non-snapshot properties with immutable data or snapshot-observable state, verify that contract, and only then decide whether an annotation remains needed. For a phase problem, name the layout or draw consumer where the changing read or calculation should move. Do not stop at diagnosis.
- Change one axis at a time and re-measure the same transition.
- Finish when the evidence improves at the observed boundary without hiding state changes, caching stale values, or moving work to a less correct owner.
Topic router
| Signal | Read |
|---|---|
| Cause is unknown, or several axes may interact | Diagnosis |
classes.txt, composables.txt, strong skipping, unstable parameters, or collection stability |
Stability |
| Scroll, animation, gesture, layout, or draw State read at frame rate; measured state fed back into composition | Deferred reads |
| A composable only reads composition locals or accessor-style values | Composition contracts |
| State ownership or effect lifecycle is the root cause | Compose state and effects |
RED/GREEN agent scenarios
- RED blames unstable parameters for unchanged lazy rows that recompose during a focus transition. GREEN checks composition and layout back-writing first.
- Novel case: an animation value controls only drawing. RED identifies the composition read but stops at diagnosis. GREEN moves the State read and its geometry calculation into the draw or layout consumer.
- Counterexample: a screen visibly recomposes because its displayed model actually changed. GREEN does not add stability wrappers or caches merely to lower a count.
版本历史
-
2026.8.16
当前 2026-08-19 19:31
新增 RED/GREEN 智能体场景示例,增强对不稳定参数、动画绘制及误报情况的处理指导;细化审查工作流中证据支持与修复建议的要求。
- 2026.8.5 2026-08-16 02:44


