What problem does it solve? Setting up dependency injection in Android and Kotlin Multiplatform projects involves many decisions — DSL vs KSP annotations, module organization across source sets, ViewModel wiring in Compose, and catching missing bindings before runtime. This Skill provides concrete, tested patterns for each of these so the DI graph is correct and verifiable. ## Core Features & Use Cases - Module Declarations: Declare bindings with the Classic DSL (single, factory, scoped, viewModel) or KSP annotations (@Single, @KoinViewModel, @ComponentScan), with guidance on when to use each lifecycle. - KMP Source Set Layout: Structure shared modules in commonMain with expect/actual platform modules for engines, storage, and platform-typed bindings. - Compose & Navigation Integration: Inject ViewModels with koinViewModel and parametersOf, wire Nav 3 destinations via koinEntryProvider(), and manage flow-scoped state with scopes. - Compile-Time-Style Verification: Use verify() and checkModules() in tests to catch missing bindings as test failures instead of runtime NoDefinitionFoundException. - Use Case: When adding a new feature module to a KMP app, ask for the Koin module, platform bindings, Compose ViewModel injection, and a verification test — all following the patterns in this Skill. ## Quick Start Set up Koin dependency injection for my Android and KMP project, including the app module, Compose ViewModel injection, and a module verification test.