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で見る