What problem does it solve? Setting up networking in Kotlin Multiplatform projects requires juggling per-platform HTTP engines, serialization config, token refresh logic, and testable client factories. This Skill provides a complete, correct Ktor client setup so you avoid common pitfalls like leaking HttpClient instances, silently dropped JSON fields, and infinite token-refresh loops. ## Core Features & Use Cases - Per-platform engine wiring: Select OkHttp for Android, Darwin for iOS, CIO for Desktop, and JS for Web, with version catalog and source set configuration. - Bearer auth with automatic refresh: Use the Auth plugin with loadTokens, refreshTokens, and markAsRefreshTokenRequest to handle 401s without manual retry code. - Error mapping at the repository boundary: Convert ClientRequestException, ServerResponseException, and timeouts into domain DataError types so ViewModels never touch Ktor internals. - MockEngine testing: Inject HttpClientEngine so tests reuse the production client factory with mocked responses. - Use Case: You are building a KMP app targeting Android, iOS, and Desktop. Use this Skill to create a single shared HttpClient configuration with Koin DI, typed service classes, and unit tests that verify DTO mapping and 404 error handling. ## Quick Start Set up a Ktor HttpClient for my Kotlin Multiplatform project with bearer token authentication, kotlinx.serialization, and MockEngine tests.