mcpField
K
kotlin-best-practices

kotlin-best-practices

github.com/c0x12cDevelopment109119 installsUpdated 19w ago
Repository

About kotlin-best-practices

A Kotlin quick-reference skill for developers working with a codebase that follows the listed conventions. It covers null safety, error handling, ORM usage, transactions, and DTO conversion patterns.

Key features

  1. 01Avoids non-null assertions and exception-based manager errors
  2. 02Uses enums instead of hardcoded values
  3. 03Defines Exposed ORM and soft-delete conventions
  4. 04Separates replica reads from primary writes
  5. 05Specifies response DTO conversion patterns

Use cases

  1. 01Reviewing Kotlin changes against project conventions
  2. 02Implementing manager and controller error handling
  3. 03Writing Exposed ORM tables and queries
  4. 04Structuring transactional multi-table writes

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/c0x12c/ai-toolkit --skill kotlin-best-practices

After installing, type/kotlin-best-practicesin Claude Code to confirm it loaded.

Bundled filescode-patterns.md

Details

From the project README

Kotlin Best Practices — Quick Reference

Null Safety

!! is banned. Use ?., ?:, or null check for smart cast.

See code-patterns.md for all null safety examples.

Either Error Handling

Managers return Either<ClientException, T> -- never throw. Controllers unwrap with .throwOrValue().

See code-patterns.md for manager + controller examples.

Enum Usage

Never hardcode strings when an enum exists. Use EnumName.VALUE.value everywhere.

See code-patterns.md for enum definition and usage patterns.

Exposed ORM Patterns

Extend UUIDTable, use text() not varchar(). Always filter deletedAt.isNull(). Soft delete via timestamp update, never hard delete.

See code-patterns.md for table, query, and soft delete examples.

Transaction Rules

Reads use db.replica, writes use db.primary. Multi-table writes go in one transaction block -- all succeed or all rollback.

See code-patterns.md for transaction examples.

Conversion Pattern

Put companion object { fun from(entity) } inside Response DTOs. Never create separate mapper files.

See code-patterns.md for the full pattern.

What to Avoid

  • !! -- always use ?., ?:, or null check
  • @Suppress -- fix the root cause
  • Throwing exceptions -- return Either.left() instead
  • VARCHAR in SQL -- use TEXT
  • Hardcoded strings for enum values
  • Table base class -- use UUIDTable
  • Field injection -- use constructor injection

Comments

Markdown supported