kora-project-setup-kotlinlisted
Install: claude install-skill kora-projects/kora-skills
# Kora Project Setup — Kotlin
> **Kora sub-skill — obey the [kora-v1 meta rules](../../SKILL.md) on every task:** **R0** ensure `.kora-agent/` docs+examples are cloned · **R1** read this sub-skill before writing code · **R2** Kora APIs only — no Spring/Micronaut/Quarkus, no invented annotations or config keys · **R3** journal any incorrect Kora usage. Add comments/Javadoc only if asked.
Scaffold a runnable Kotlin Kora service: Gradle Kotlin DSL build, KSP symbol
processors, the `kora-parent` BOM, and a `@KoraApp` interface that plugs in Kora
capabilities by extending `*Module` interfaces.
**Pinned versions** (match `.kora-agent/kora-examples`): Kora BOM `1.2.19`,
Kotlin `1.9.25`, KSP `1.9.25-1.0.20`, Gradle `9.5.1`, JVM toolchain `21`.
Never version individual `ru.tinkoff.kora:*` artifacts — the BOM aligns them all.
---
## Core principle
Kora generates code at compile time. For Kotlin this runs through **KSP** (the
`com.google.devtools.ksp` plugin + the `ru.tinkoff.kora:symbol-processors`
artifact), not Java's `annotationProcessor`. Without KSP, nothing is generated
and the build produces no `ApplicationGraph`. KSP writes generated sources to
`build/generated/ksp/main/kotlin` — register that directory as a source dir so
IDEs and compilation see it.
---
## Project structure
```
my-app/
├── build.gradle.kts
├── settings.gradle.kts
├── gradle.properties
├── gradle/wrapper/gradle-wrapper.properties
├── src/main/
│ ├── kotlin/com/example/Application.kt
│ └── resources