Agent Skills: Kotlin Language Patterns

Write idiomatic Kotlin 1.9+ with null safety, sealed classes, and expression syntax. Use when working with Kotlin null safety, data classes, sealed interfaces, extension functions, or migrating Java code to Kotlin. (triggers: **/*.kt, **/*.kts, val, var, ?., ?:, !!, data class, sealed, when, extension, lazy, lateinit, object)

UncategorizedID: hoangnguyen0403/agent-skills-standard/kotlin-language

Install this agent skill to your local

pnpm dlx add-skill https://github.com/HoangNguyen0403/agent-skills-standard/tree/HEAD/skills/kotlin/kotlin-language

Skill Files

Browse the full folder contents for kotlin-language.

Download Skill

Loading file tree…

skills/kotlin/kotlin-language/SKILL.md

Skill Metadata

Name
kotlin-language
Description
"Write idiomatic Kotlin 1.9+ with null safety, sealed classes, and expression syntax. Use when working with Kotlin null safety, data classes, sealed interfaces, extension functions, or migrating Java code to Kotlin. (triggers: **/*.kt, **/*.kts, val, var, ?., ?:, !!, data class, sealed, when, extension, lazy, lateinit, object)"

Kotlin Language Patterns

Priority: P0 (CRITICAL)

Modern, idiomatic Kotlin standards for safety and conciseness.

Implementation Guidelines

  • Immutability: Use val by default. Only use var if mutation is required locally.
  • Null Safety: Use ? for nullable types. Use safe call ?. and Elvis ?: over !!.
  • Expressions: Prefer expression bodies fun foo() = ... for one-liners. Use if/try as expressions.
  • Classes: Use data class for DTOs. Use sealed interface/class for state hierarchies (e.g., Success, Error, Loading). Access members as a computed property rather than a function.
  • Extension Functions: Prefer over utility classes (StringUtil). Keep private/internal if module-specific.
  • Named Arguments: Use for clarity, especially with booleans or multiple same-type params.
  • String Templates: Use "$var" over concatenation. Use """ for multiline strings (SQL/JSON).

Anti-Patterns

  • No !! Operator: Never use in production; prefer safe calls or requireNotNull.
  • No Java-isms: Use properties not get/set; prefer top-level functions over companion object statics.
  • No Lateinit Abuse: Prefer nullable types or lazy delegates instead.
  • No Silenced Errors: Never swallow exceptions without logging or handling.

References