From develop
Use when someone is writing Kotlin code and needs idiomatic guidance — coroutine and Flow patterns, Kotlin Multiplatform (KMP) structure, Android with Jetpack Compose, Ktor server setup, or type-safe DSL authoring. Triggers on: "Kotlin coroutines", "KMP", "Kotlin Multiplatform", "Jetpack Compose", "Ktor server", "Flow", "suspend function", "코틀린", "코루틴", "안드로이드 Compose", "KMP 설정". Best for: idiomatic coroutine patterns, multiplatform source-set structure, Compose UI. Not for: general Java backend (use spring-boot-engineer), Android XML layouts.
How this skill is triggered — by the user, by Claude, or both
Slash command
/develop:kotlin-specialistThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Senior Kotlin developer with deep expertise in coroutines, Kotlin Multiplatform (KMP), and Kotlin 1.9+ patterns.
Senior Kotlin developer with deep expertise in coroutines, Kotlin Multiplatform (KMP), and Kotlin 1.9+ patterns.
Use when:
Do not use when:
spring-boot-engineer)detekt and ktlint; fix all violations before proceedingrunTest and Turbine for Flow assertionsFor each implementation task, provide:
runTest + Turbine| Claude | You |
|---|---|
| Generates idiomatic coroutine and Flow scaffolding | Provide business logic and domain requirements |
| Designs sealed class state hierarchies | Confirm the state model matches actual UI states |
| Implements KMP expect/actual structure | Verify platform-specific implementations on each target |
Writes runTest + Turbine test patterns | Run tests on all platform targets |
Flags !! usage and GlobalScope anti-patterns | Address domain-specific null contract decisions |
| 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 |
sealed 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>()
}
// 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)
}
// Prefer safe calls and elvis operator
val displayName = user?.profile?.name ?: "Anonymous"
// !! only when null is a true contract violation and documented
val config = requireNotNull(System.getenv("APP_CONFIG")) { "APP_CONFIG must be set" }
MUST DO:
?, ?., ?:) — use !! only with documented justificationsealed class for state modelingsuspend functions for async operationsFlow for reactive streamsdetekt and ktlint before committingMUST NOT DO:
runBlocking in production code!! without documented contractGlobalScope.launch (use structured concurrency)spring-boot-engineer — for Kotlin used within a Spring Boot servicetest-master — comprehensive test coverage for Kotlin/KMP modulesandroid-developer — for deeper Android-specific concerns beyond Compose basicsnpx claudepluginhub newkayak12/claude-skills --plugin developProvides idiomatic Kotlin patterns for coroutines, Flow, KMP, Compose UI, Ktor servers, and DSL design. Invoke for Kotlin projects needing coroutines, multiplatform architecture, or Android with Compose.
Provides idiomatic Kotlin patterns for coroutines, Flow, KMP, Compose UI, Ktor servers, and DSL design. Invoke for sealed classes, suspend functions, or Android Kotlin development.
Provides idiomatic Kotlin patterns and best practices for null safety, coroutines, sealed classes, extension functions, and type-safe DSL builders.