Skip to content
Back to skills

Kotlin Patterns

ASecurity

Kotlin 2.0+ discipline — null safety (no !! force-unwrap; safe call + Elvis), immutability (val over var; data class + copy), sealed classes for closed hierarchies, scope functions (let/run/apply/also/with) used purposefully, structured concurrency via coroutines (no GlobalScope.launch; supervisor scopes + Job cancellation), CoroutineExceptionHandler for unhandled errors, ktlint + detekt at strict ruleset, expression bodies for one-liners, KDoc on public API. Select explicitly when this guida...

  • 12 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentsgokotlinnodeexpressspringtestinggitapisecurity

Works with

  • api

Security analysis

A100/100

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

Scanned October 6, 2026

npx -y skills add Nmor/the-council --skill kotlin-patterns --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Kotlin Patterns?

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

Security grade badge for Kotlin Patterns
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nmor-kotlin-patterns-the-council/badge)](https://www.skillsdirectory.com/skills/nmor-kotlin-patterns-the-council)

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-patterns
description: Kotlin 2.0+ discipline — null safety (no !! force-unwrap; safe call + Elvis), immutability (val over var; data class + copy), sealed classes for closed hierarchies, scope functions (let/run/apply/also/with) used purposefully, structured concurrency via coroutines (no GlobalScope.launch; supervisor scopes + Job cancellation), CoroutineExceptionHandler for unhandled errors, ktlint + detekt at strict ruleset, expression bodies for one-liners, KDoc on public API. Select explicitly when this guidance applies.
paths:
  - "**/*.kt"
  - "**/*.kts"
  - "build.gradle.kts"
  - "settings.gradle.kts"
  - "**/build.gradle.kts"
disable-model-invocation: true
---

# kotlin-patterns

> **Size budget: 25 KB.** Check: wc -c. Gate: node ~/.claude/scripts/token-budget.mjs --check
>
> Migrated 2026-06-02 from `~/.claude/rules-library/kotlin/` as part of the lazy-rules-loading plan.
> Phase H will delete the source files.

## Purpose

Kotlin 2.0+ discipline for any `*.kt` / `*.kts` / Gradle-Kotlin-DSL file: null
safety, immutability, sealed hierarchies, structured concurrency, strict
ktlint + detekt, and the security / testing / CI gates that go with them.

This file is a ROUTING TABLE. It is `paths:`-gated, so it is added to the
always-on Floor in full every time one of its globs matches — the detail
therefore lives in `references/`, and you read only the row you need.

## Reference map

| Topic | Read | It holds |
| --- | --- | --- |
| **Coding style** | [`references/coding-style.md`](references/coding-style.md) | Naming · null safety (no `!!`) · immutability (`val`, `data class`, `copy()`) · sealed classes · scope-function table (`let`/`run`/`apply`/`also`/`with`) · expression bodies · coroutine basics · file length · KDoc · ktlint/detekt/compiler flags |
| **No-discards + detekt baseline** | [`references/no-discards.md`](references/no-discards.md) | The 13 banned patterns with detekt rule names · the strict `detekt.yml` (complexity, empty-blocks, exceptions, potential-bugs, style, coroutines) · the Kotlin sweep verification block |
| **Architecture patterns** | [`references/patterns.md`](references/patterns.md) | Hexagonal layering (Spring Boot / Ktor) · `Result<T, E>` types · builder vs DSL · constructor DI · Flow / StateFlow · MVI for Compose · `@JvmInline value class` · common-pitfalls table · reuse-first library shortlist |
| **Security** | [`references/security.md`](references/security.md) | OWASP A02/A03/A05/A07/A09/A10 in Kotlin · Spring Security 6 filter chain · Android network-security config, secrets, Lint checks · server + mobile secret storage · tooling commands |
| **Testing** | [`references/testing.md`](references/testing.md) | Test pyramid · JUnit 5 + MockK · Kotest · parameterised tests · `runTest` virtual time · Testcontainers (no H2) · property tests · Compose UI tests · five hard rules incl. coverage gates |
| **Hooks, Gradle + CI** | [`references/hooks-and-ci.md`](references/hooks-and-ci.md) | `.githooks/pre-commit` + `pre-push` · `build.gradle.kts` wiring for ktlint / detekt / dependency-check / jacoco · GitHub Actions workflow · Android + Spring Boot additions |

## Fast path

Writing or reviewing Kotlin source → **Coding style** + **No-discards**.
Designing a service or screen → **Architecture patterns**. Touching auth,
crypto, HTTP egress or secrets → **Security**. Writing tests or a coverage
gate → **Testing**. Touching `build.gradle.kts`, a git hook or CI →
**Hooks, Gradle + CI**.

Files in this skill

  • SKILL.md3.5 KB
  • references/coding-style.md6 KB
  • references/hooks-and-ci.md3.8 KB
  • references/no-discards.md7.2 KB
  • references/patterns.md6.4 KB
  • references/security.md6 KB
  • references/testing.md7 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…