
Kotlin Specialist
FreeMaster idiomatic Kotlin with expert patterns and practices.
Free · Opens the source repo
What Kotlin Specialist does
Kotlin Specialist is designed for developers looking to deepen their understanding of Kotlin, particularly in the context of modern application development. This skill provides a comprehensive framework for implementing idiomatic Kotlin patterns, focusing on key areas such as coroutine concurrency, Flow stream handling, and Kotlin Multiplatform (KMP) architecture. With a structured workflow, it guides users through analyzing architecture, designing models, implementing code, validating practices, optimizing performance, and testing applications. This makes it an essential tool for anyone working on Kotlin-based projects, especially those involving Android or server-side development.
The skill emphasizes best practices, ensuring that users adhere to essential Kotlin idioms such as using sealed classes for state modeling, leveraging null safety, and applying structured concurrency with coroutines. It also includes a reference guide that links to detailed documentation on various topics, allowing users to quickly access the information they need based on their current context. This makes it particularly useful for both novice and experienced Kotlin developers who want to ensure their code is robust and maintainable.
Whether you're building a new Android application using Jetpack Compose, developing a server with Ktor, or creating a multiplatform library, Kotlin Specialist provides the patterns and practices necessary to succeed. It is particularly beneficial for teams looking to standardize their Kotlin development practices and for individual developers aiming to refine their skills in Kotlin 1.9+ and beyond.
When to use it
Use this skill when developing Kotlin applications that require modern patterns, particularly for coroutines, multiplatform projects, or Android UI with Compose.
When not to use it
This skill may not be suitable for projects that do not utilize Kotlin or for those that require basic programming guidance rather than advanced Kotlin patterns.
What you can build with it
Building an Android App with Compose
Leverage Kotlin Specialist to implement best practices in your Android app, ensuring a smooth UI experience with Jetpack Compose.
Developing a Ktor Server
Use the skill to set up a Ktor server, following recommended patterns for routing, authentication, and serialization.
Creating a Multiplatform Library
Utilize Kotlin Specialist to guide your architecture decisions and shared code strategies in a Kotlin Multiplatform project.
How to install Kotlin Specialist
View source1. Install with the skills CLI
npx skills add jeffallan/claude-skills/kotlin-specialist --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by jeffallanKotlin Specialist
Senior Kotlin developer with deep expertise in coroutines, Kotlin Multiplatform (KMP), and modern Kotlin 1.9+ patterns.
Core Workflow
- Analyze architecture - Identify platform targets, coroutine patterns, shared code strategy
- Design models - Create sealed classes, data classes, type hierarchies
- Implement - Write idiomatic Kotlin with coroutines, Flow, extension functions
- Checkpoint: Verify coroutine cancellation is handled (parent scope cancelled on teardown) and null safety is enforced before proceeding
- Validate - Run
detektandktlint; verify coroutine cancellation handling and null safety- If detekt/ktlint fails: Fix all reported issues and re-run both tools before proceeding to step 5
- Optimize - Apply inline classes, sequence operations, compilation strategies
- Test - Write multiplatform tests with coroutine test support (
runTest, Turbine)
Reference Guide
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 |
Key Patterns
Sealed Classes for State Modeling
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>()
}
// 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)
}
Coroutines & Flow
// 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) }
Null Safety
// 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" }
Scope Functions
// 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}") }
Constraints
MUST DO
- Use null safety (
?,?.,?:,!!only when contract guarantees non-null) - Prefer
sealed classfor state modeling - Use
suspendfunctions for async operations - Leverage type inference but be explicit when needed
- Use
Flowfor reactive streams - Apply scope functions appropriately (
let,run,apply,also,with) - Document public APIs with KDoc
- Use explicit API mode for libraries
- Run
detektandktlintbefore committing - Verify coroutine cancellation is handled (cancel parent scope on teardown)
MUST NOT DO
- Block coroutines with
runBlockingin production code - Use
!!without documented justification - Mix platform-specific code in common modules
- Skip null safety checks
- Use
GlobalScope.launch(use structured concurrency) - Ignore coroutine cancellation
- Create memory leaks with coroutine scopes
Output Templates
When implementing Kotlin features, provide:
- Data models (sealed classes, data classes)
- Implementation file (extension functions, suspend functions)
- Test file with coroutine test support
- Brief explanation of Kotlin-specific patterns used
Knowledge Reference
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
Frequently asked questions about Kotlin Specialist
Similar skills
Android App Development
Comprehensive guide for Android and cross-platform app development.
Add App Clip to Expo App
Integrate lightweight iOS App Clips into your Expo project.
APK Reverse
Streamline your Android APK reverse engineering process.
Swift Expert
Master iOS/macOS development with Swift and SwiftUI.
React Native Expert
Build and optimize mobile apps with React Native and Expo.
Flutter Expert
Build high-performance cross-platform apps with Flutter.
