
Compose Ui
- 3 installs
- 910 repo stars
- Updated July 27, 2026
- new-silvermoon/awesome-android-skills
Helps with ai & agent building tasks.
About
compose-ui is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- compose-ui
- AI & Agent Building
- AI-coding skill
Compose Ui by the numbers
- 3 all-time installs (skills.sh)
- Ranked #13,677 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/new-silvermoon/awesome-android-skills --skill compose-uiAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 3 |
|---|---|
| repo stars | ★ 910 |
| Last updated | July 27, 2026 |
| Repository | new-silvermoon/awesome-android-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
Jetpack Compose Best Practices
Instructions
Follow these guidelines to create performant, reusable, and testable Composables.
1. State Hoisting (Unidirectional Data Flow)
Make Composables stateless whenever possible by moving state to the caller.
- Pattern: Function signature should usually look like:
@Composable
fun MyComponent(
value: String, // State flows down
onValueChange: (String) -> Unit, // Events flow up
modifier: Modifier = Modifier // Standard modifier parameter
)- Benefit: Decouples the UI from simple state storage, making it easier to preview and test.
- ViewModel Integration: The screen-level Composable retrieves state from the ViewModel (
viewModel.uiState.collectAsStateWithLifecycle()) and passes it down.
2. Modifiers
- Default Parameter: Always provide a
modifier: Modifier = Modifieras the first optional parameter. - Application: Apply this
modifierto the root layout element of your Composable. - Ordering matters:
padding().clickable()is different fromclickable().padding(). Generally apply layout-affecting modifiers (like padding) after click listeners if you want the padding to be clickable.
3. Performance Optimization
- `remember`: Use
remember { ... }to cache expensive calculations across recompositions. - `derivedStateOf`: Use
derivedStateOf { ... }when a state changes frequently (like scroll position) but the UI only needs to react to a threshold or summary (e.g., show "Jump to Top" button). This prevents unnecessary recompositions.
val showButton by remember {
derivedStateOf { listState.firstVisibleItemIndex > 0 }
}- Lambda Stability: Prefer method references (e.g.,
viewModel::onEvent) or remembered lambdas to prevent unstable types from triggering recomposition of children.
4. Theming and Resources
- Use
MaterialTheme.colorSchemeandMaterialTheme.typographyinstead of hardcoded colors or text styles. - Organize simple UI components into specific files (e.g.,
DesignSystem.ktorComponents.kt) if they are shared across features.
5. Previews
- Create a private preview function for every public Composable.
- Use
@Preview(showBackground = true)and include Light/Dark mode previews if applicable. - Pass dummy data (static) to the stateless Composable for the preview.
Related skills
AI & Agent Buildingagents