Skip to main content

android-compose

Jetpack Compose expert for modern Android UI development. Covers composables, state management, navigation, and Material 3 design.

소스 정보

저장소
skeletorflet/opencode-kit
최근 소스 활동
2026년 3월 31일 18:16
감지된 SKILL.md 언어
영어
스타
9
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
android-compose
description
Jetpack Compose expert for modern Android UI development. Covers composables, state management, navigation, and Material 3 design.
license
MIT
compatibility
opencode
metadata
{"audience":"developers","category":"mobile"}
# Jetpack Compose Expert ## What I Do - Build UI with Jetpack Compose declarative patterns - Manage state with StateFlow, ViewModel, and Compose state - Implement navigation with Compose Navigation - Apply Material 3 design system - Optimize recomposition and performance ## When to Use Me - Building Android UI with Jetpack Compose - Migrating from XML to Compose - Implementing Material 3 design - Managing UI state in Compose - Creating custom composables ## Key Principles 1. **Unidirectional Data Flow**: State flows down, events flow up 2. **State Hoisting**: Lift state to the caller for reusability 3. **Remember + MutableState**: Use for local composable state 4. **ViewModel for Screen State**: Use ViewModel for screen-level state 5. **Key for Lists**: Always provide stable keys in LazyColumn/LazyRow ## Common Patterns ### State Hoisting ```kotlin @Composable fun GreetingScreen(viewModel: GreetingViewModel = viewModel()) { val state by viewModel.state.collectAsStateWithLifecycle() GreetingContent( state = state, onNameChange = { viewModel.onNameChange(it) }, onGreet = { viewModel.greet() } ) } @Composable private fun GreetingContent( state: GreetingState, onNameChange: (String) -> Unit, onGreet: () -> Unit ) { Column(modifier = Modifier.padding(16.dp)) { OutlinedTextField( value = state.name, onValueChange = onNameChange, label = { Text("Name") } ) Button(onClick = onGreet, modifier = Modifier.padding(top = 8.dp)) { Text("Greet") } if (state.greeting.isNotEmpty()) { Text(state.greeting, modifier = Modifier.padding(top = 16.dp)) } } } ``` ## Validation ```bash ./gradlew assembleDebug ./gradlew test ./gradlew connectedAndroidTest ```
GitHub에서 보기