Skip to content
Back to skills

Kotlin Best Practices

ASecurity

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.

  • 549 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 6, 2026
developmentkotlin

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add HoangNguyen0403/agent-skills-standard --skill kotlin-best-practices --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Kotlin Best Practices?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Kotlin Best Practices
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hoangnguyen0403-kotlin-best-practices/badge)](https://www.skillsdirectory.com/skills/hoangnguyen0403-kotlin-best-practices)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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.
metadata:
  triggers:
    files:
    - '**/*.kt'
    keywords:
    - apply
    - let
    - run
    - also
    - with
    - runCatching
    - backing property
    - MutableList
    - internal
    - private set
---
# Kotlin Best Practices

## **Priority: P1 (HIGH)**


## 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 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

- [Backing Property & Scope Function Examples](references/example.md)

Files in this skill

  • SKILL.md1.8 KB
  • evals/evals.json2.6 KB
  • references/example.md1.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.