Home › Kotlin Multiplatform › Kotlin Multiplatform Copilot path instructions
Kotlin Multiplatform Copilot path instructions
Path-specific Copilot instructions for Kotlin Multiplatform modules: commonMain first, expect/actual, and coroutines.
GitHub CopilotKotlin Multiplatform
How to use
Save this as .github/instructions/kotlin.instructions.md in your repository root, commit it, and your agent will pick it up automatically. Edit the commands to match your project.
.github/instructions/kotlin.instructions.mdDownload ---
applyTo: "**/*.kt,**/*.kts"
description: Kotlin Multiplatform conventions
---
# Kotlin Multiplatform
- Put code in `commonMain` by default. Only platform APIs go in `androidMain`, `iosMain`, `jvmMain`, `wasmJsMain`.
- Prefer interfaces + DI for platform services; use `expect`/`actual` only for small primitives (e.g. `expect fun platformName(): String`).
- Use multiplatform libraries: Ktor client, kotlinx.serialization, kotlinx.coroutines, kotlinx-datetime, SQLDelight or Room KMP. No `java.*` imports in common code.
- Coroutines: expose `suspend` functions and `Flow`; inject dispatchers; never `GlobalScope`.
- For iOS consumers, keep public API Swift-friendly (avoid deep generics, sealed hierarchies are fine with SKIE if configured).
- Versions in `gradle/libs.versions.toml`.
- Immutable `data class` models with `@Serializable`.
- Tests in `commonTest` using `kotlin.test` and `kotlinx-coroutines-test` (`runTest`).
## Check
`./gradlew check` (runs all target tests) passes, and `./gradlew :shared:linkDebugFrameworkIosSimulatorArm64` if iOS is a target.