Agent Skills: Kotlin Best Practices

Core patterns for robust Kotlin code including scope functions and backing properties. Use when writing idiomatic Kotlin, choosing between scope functions (let/apply/run/also/with), encapsulating mutable state with backing properties, or exposing read-only collection interfaces. (triggers: **/*.kt, apply, let, run, also, with, runCatching, backing property, MutableList, internal, private set)

UncategorizedID: hoangnguyen0403/agent-skills-standard/kotlin-best-practices

Install this agent skill to your local

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

Skill Files

Browse the full folder contents for kotlin-best-practices.

Download Skill

Loading file tree…

skills/kotlin/kotlin-best-practices/SKILL.md

Skill Metadata

Name
kotlin-best-practices
Description
'Core patterns for robust Kotlin code including scope functions and backing properties. Use when writing idiomatic Kotlin, choosing between scope functions (let/apply/run/also/with), encapsulating mutable state with backing properties, or exposing read-only collection interfaces. (triggers: **/*.kt, apply, let, run, also, with, runCatching, backing property, MutableList, internal, private set)'

Kotlin Best Practices

Priority: P1 (HIGH)

Engineering standards for clean, maintainable Kotlin systems.

Implementation Guidelines

  • Scope Functions:
    • apply: Object configuration (returns object).
    • also: Side effects / validation / logging (returns object).
    • let: Null checks (?.let) or mapping (returns result).
    • run: Object configuration and mapping (returns result).
    • with: Grouping multiple method calls on an object (returns result).
  • Backing Properties: Use _state (private mutable, e.g., private val _state = MutableStateFlow(initial)) exposed as val state = _state.asStateFlow() (public read-only). Pattern: _prop private, prop public.
  • Collections: Expose List/Map (read-only) publicly; keep MutableList internal.
  • Error Handling: Use runCatching for simple error handling over try/catch blocks.
  • Visibility: Default to private or internal. Minimize public surface area.
  • Top-Level: Prefer top-level functions/constants over implementation-less object singletons.

Anti-Patterns

  • No Deep Scope Nesting: Limit let/apply nesting to 2 levels; deeper destroys readability.
  • No Public var: Use private set or backing properties for encapsulation.
  • No Global Mutable State: Avoid mutable top-level variables.

References