Skillshub 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)

install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/kotlin-best-practices" ~/.claude/skills/comeonoliver-skillshub-kotlin-best-practices && rm -rf "$T"
manifest: skills/HoangNguyen0403/agent-skills-standard/kotlin-best-practices/SKILL.md
source content

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