What problem does it solve? Connecting ViewModels to Jetpack Compose screens often leads to lifecycle bugs, lost one-shot events, leaked state, and tight coupling between composables and ViewModel types. This Skill provides the exact patterns to wire Hilt ViewModels into Compose screens correctly in the Solvyx project. ## Core Features & Use Cases - Lifecycle-safe state collection: Enforces collectAsStateWithLifecycle over collectAsState, with immutable StateFlow exposure and sealed UiState handling for Loading, Loaded, and Error states. - One-shot events via Channel: Implements navigation, snackbar, and dialog effects through Channel/SharedFlow so events are not lost on rotation, unlike StateFlow-based approaches. - Navigation argument handling: Uses SavedStateHandle to receive nav arguments in the ViewModel and LaunchedEffect(key) to reload data when arguments change. - Use Case: When creating a new detail screen that receives a slug from navigation, apply this Skill to inject the ViewModel with hiltViewModel, read the slug via SavedStateHandle, collect uiState lifecycle-aware, and trigger one-shot navigation events safely. ## Quick Start Apply the viewmodel-integration skill to create a new Compose screen that collects StateFlow with collectAsStateWithLifecycle and emits one-shot events through a Channel.