Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Provides idiomatic Kotlin implementation patterns including coroutine concurrency, Flow stream handling, multiplatform architecture, Compose UI construction, Ktor server setup, and type-safe DSL design. Use when building Kotlin applications requiring coroutines, multiplatform development, or Android with Compose. Invoke for Flow API, KMP projects, Ktor servers, DSL design, sealed classes, suspend function, Android Kotlin, Kotlin Multiplatform.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 67% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 15% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 28% | 0% |
Senior Kotlin developer with deep expertise in coroutines, Kotlin Multiplatform (KMP), and modern Kotlin 1.9+ patterns.
detekt and ktlint; verify coroutine cancellation handling and null safetyrunTest, Turbine)Load detailed guidance based on context:
| Topic | Reference | Load When | |-------|-----------|-----------| | Coroutines & Flow | references/coroutines-flow.md | Async operations, structured concurrency, Flow API | | Multiplatform | references/multiplatform-kmp.md | Shared code, expect/actual, platform setup | | Android & Compose | references/android-compose.md | Jetpack Compose, ViewModel, Material3, navigation | | Ktor Server | references/ktor-server.md | Routing, plugins, authentication, serialization | | DSL & Idioms | references/dsl-idioms.md | Type-safe builders, scope functions, delegates |
kotlinsealed class UiState<out T> { data object Loading : UiState<Nothing>() data class Success<T>(val data: T) : UiState<T>() data class Error(val message: String, val cause: Throwable? = null) : UiState<Nothing>() } // Consume exhaustively — compiler enforces all branches fun render(state: UiState<User>) = when (state) { is UiState.Loading -> showSpinner() is UiState.Success -> showUser(state.data) is UiState.Error -> showError(state.message) }
kotlin// Use structured concurrency — never GlobalScope class UserRepository(private val api: UserApi, private val scope: CoroutineScope) { fun userUpdates(id: String): Flow<UiState<User>> = flow { emit(UiState.Loading) try { emit(UiState.Success(api.fetchUser(id))) } catch (e: IOException) { emit(UiState.Error("Network error", e)) } }.flowOn(Dispatchers.IO) private val _user = MutableStateFlow<UiState<User>>(UiState.Loading) val user: StateFlow<UiState<User>> = _user.asStateFlow() } // Anti-pattern — blocks the calling thread; avoid in production // runBlocking { api.fetchUser(id) }
kotlin// Prefer safe calls and elvis operator val displayName = user?.profile?.name ?: "Anonymous" // Use let to scope nullable operations user?.email?.let { email -> sendNotification(email) } // !! only when the null case is a true contract violation and documented val config = requireNotNull(System.getenv("APP_CONFIG")) { "APP_CONFIG must be set" }
kotlin// apply — configure an object, returns receiver val request = HttpRequest().apply { url = "https://api.example.com/users" headers["Authorization"] = "Bearer $token" } // let — transform nullable / introduce a local scope val length = name?.let { it.trim().length } ?: 0 // also — side-effects without changing the chain val user = createUser(form).also { logger.info("Created user ${it.id}") }
?, ?., ?:, !! only when contract guarantees non-null)sealed class for state modelingsuspend functions for async operationsFlow for reactive streamslet, run, apply, also, with)detekt and ktlint before committingrunBlocking in production code!! without documented justificationGlobalScope.launch (use structured concurrency)When implementing Kotlin features, provide:
Kotlin 1.9+, Coroutines, Flow API, StateFlow/SharedFlow, Kotlin Multiplatform, Jetpack Compose, Ktor, Arrow.kt, kotlinx.serialization, Detekt, ktlint, Gradle Kotlin DSL, JUnit 5, MockK, Turbine
Other measured skills in the registry, with their headline benchmark lift.