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.mdsource content
Kotlin Best Practices
Priority: P1 (HIGH)
Engineering standards for clean, maintainable Kotlin systems.
Implementation Guidelines
- Scope Functions:
: Object configuration (returns object).apply
: Side effects / validation / logging (returns object).also
: Null checks (let
) or mapping (returns result).?.let
: Object configuration and mapping (returns result).run
: Grouping multiple method calls on an object (returns result).with
- Backing Properties: Use
(private mutable, e.g.,_state
) exposed asprivate val _state = MutableStateFlow(initial)
(public read-only). Pattern:val state = _state.asStateFlow()
private,_prop
public.prop - Collections: Expose
/List
(read-only) publicly; keepMap
internal.MutableList - Error Handling: Use
for simple error handling over try/catch blocks.runCatching - Visibility: Default to
orprivate
. Minimizeinternal
surface area.public - Top-Level: Prefer top-level functions/constants over implementation-less
singletons.object
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.