인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

android-compose

android-compose

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.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: android-compose description: 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. metadata: triggers: files: - '/*Screen.kt' - '/Composable.kt' - '**/*Content.kt' keywords: - "@Composable" - Modifier - Column - Row - LazyColumn - setContent - recompose - remember - derivedStateOf - LaunchedEffect

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 @Stable or @Immutable.
  • Use key in LazyColumn items for stable identity.
  • Reuse or make Modifiers static where possible.
  • Use derivedStateOf for frequently updating derived values.

See implementation examples for derivedStateOf usage.

3. Handle Side Effects Properly

  • Use LaunchedEffect for 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.
  • LazyColumn items use key parameter.
  • No ViewModel passed below Screen-level Composables.
  • ./gradlew build succeeds.

References

Canonical response anchors

When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:

  • hoist
저장한 Skills