Android Compose
CommunityHoangNguyen0403
Build high-performance declarative UI with Jetpack Compose. Use when writing Composable functions, optimizing recomposition, hoisting state, or working with LazyColumn and side effects; defer deep-link and navigation routing to android-navigation.
Overview
- Repository
- HoangNguyen0403/agent-skills-standard
- Publisher
- HoangNguyen0403
- Stars
- 585
- Forks
- 163
- Bundled files
- 2
- License
- MIT
- Updated
- Nov 14, 2026
Installation
tmp=$(mktemp -d)
git clone --depth 1 https://github.com/HoangNguyen0403/agent-skills-standard.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/skills/android/android-compose" ~/.claude/skills/android-compose
rm -rf "$tmp"tmp=$(mktemp -d)
git clone --depth 1 https://github.com/HoangNguyen0403/agent-skills-standard.git "$tmp"
mkdir -p ~/.codex/skills
cp -R "$tmp/skills/android/android-compose" ~/.codex/skills/android-compose
rm -rf "$tmp"Install the Android Compose agent skill from https://github.com/HoangNguyen0403/agent-skills-standard/tree/develop/skills/android/android-compose into this project's skills folder.Instructions
Jetpack Compose Expert
Priority: P0 (CRITICAL)
Role: Android UI Performance Expert. Prioritize frame stability and state management.
1. Hoist State Correctly
- Screen (Stateful) -> Content (Stateless).
- Pass lambdas down (
onItemClick: (Id) -> Unit). - NEVER pass ViewModel to stateless composables.
- Use
MaterialTheme.colorScheme, no hardcoded hex.
See implementation examples for state hoisting patterns.
2. Optimize Recomposition
- Annotate params with
@Stableor@Immutable. - Use
keyinLazyColumnitems for stable identity. - Reuse or make Modifiers static where possible.
- Use
derivedStateOffor frequently updating derived values.
See implementation examples for derivedStateOf usage.
3. Handle Side Effects Properly
- Use
LaunchedEffectfor one-shot or keyed side effects — never run side effects in composition body. - Move complex calculations to ViewModel or
remember.
Anti-Patterns
- No Side Effects in Composition Body: Use
LaunchedEffect, not raw coroutines. - No VM Deep Pass: Hoist state; pass only data/callbacks.
- No Heavy Computation in Composables: Offload to ViewModel or
remember.
Verification
- All stateless Composables have
@Preview. -
LazyColumnitems usekeyparameter. - No ViewModel passed below Screen-level Composables.
-
./gradlew buildsucceeds.
References
Bundled files
FAQ
What does Android Compose do?
Build high-performance declarative UI with Jetpack Compose. Use when writing Composable functions, optimizing recomposition, hoisting state, or working with LazyColumn and side effects; defer deep-link and navigation routing to android-navigation.
Who made Android Compose?
HoangNguyen0403 (a community member) publishes it in the HoangNguyen0403/agent-skills-standard repository on GitHub.
Is Android Compose free?
Yes. Android Compose is open source, published by HoangNguyen0403 under the MIT license.
What comes with Android Compose?
Its instructions and 2 files the agent reads only when a task needs them, such as references, examples or scripts.
Which agents can use Android Compose?
Any coding agent that reads SKILL.md files, including Claude Code, Codex, Cursor, GitHub Copilot and Gemini CLI. The agent loads the skill when a task matches its description.
What are agent skills?
An agent skill is a folder with a SKILL.md file: instructions that teach a coding agent how to do one kind of task, and optionally files it can read while it works. The agent keeps only the skill's name and description in mind and reads the rest when a task calls for it.
How are agent skills different from MCP servers?
An MCP server gives an agent new tools to call, code that runs somewhere and returns results. A skill gives it knowledge: how to approach a task with the tools it already has. Many agents use both.
How can my agent test my Android app?
Robomori lets coding agents create, start and control Android emulators and devices from one command, so they can install your app, take screenshots and check dark mode, font sizes and languages.