Skip to content
Development
Command

/kotlin-review

Comprehensive Kotlin code review for idiomatic patterns, null safety, coroutine safety, and security. Invokes the kotlin-reviewer agent.

From plugin
awesome-claude-notes
26460 skills29 agents60 commands7 hooks
Install
> /plugin marketplace add loulanyue/awesome-claude-notes
> /plugin install awesome-claude-notes@awesome-claude-notes

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/kotlin-review

Context preview

What this command does when you run it.

Comprehensive Kotlin code review for idiomatic patterns, null safety, coroutine safety, and security. Invokes the kotlin-reviewer agent.

Command definition

kotlin-review.md
description: Comprehensive Kotlin code review for idiomatic patterns, null safety, coroutine safety, and security. Invokes the kotlin-reviewer agent.

Kotlin Code Review

This command invokes the **kotlin-reviewer** agent for comprehensive Kotlin-specific code review.

What This Command Does

1. **Identify Kotlin Changes**: Find modified `.kt` and `.kts` files via `git diff` 2. **Run Build & Static Analysis**: Execute `./gradlew build`, `detekt`, `ktlintCheck` 3. **Security Scan**: Check for SQL injection, command injection, hardcoded secrets 4. **Null Safety Review**: Analyze `!!` usage, platform type handling, unsafe casts 5. **Coroutine Review**: Check structured concurrency, dispatcher usage, cancellation 6. **Generate Report**: Categorize issues by severity

When to Use

Use `/kotlin-review` when:

  • After writing or modifying Kotlin code
  • Before committing Kotlin changes
  • Reviewing pull requests with Kotlin code
  • Onboarding to a new Kotlin codebase
  • Learning idiomatic Kotlin patterns

Review Categories

CRITICAL (Must Fix)

  • SQL/Command injection vulnerabilities
  • Force-unwrap `!!` without justification
  • Platform type null safety violations
  • GlobalScope usage (structured concurrency violation)
  • Hardcoded credentials
  • Unsafe deserialization

HIGH (Should Fix)

  • Mutable state where immutable suffices
  • Blocking calls inside coroutine context
  • Missing cancellation checks in long loops
  • Non-exhaustive `when` on sealed types
  • Large functions (>50 lines)
  • Deep nesting (>4 levels)

MEDIUM (Consider)

  • Non-idiomatic Kotlin (Java-style patterns)
  • Missing trailing commas
  • Scope function misuse or nesting
  • Missing sequence for large collection chains
  • Redundant explicit types

Automated Checks Run

# Build check
./gradlew build

# Static analysis
./gradlew detekt

# Formatting check
./gradlew ktlintCheck

# Tests
./gradlew test

Example Usage

User: /kotlin-review

Agent:
# Kotlin Code Review Report

## Files Reviewed
- src/main/kotlin/com/example/service/UserService.kt (modified)
- src/main/kotlin/com/example/routes/UserRoutes.kt (modified)

## Static Analysis Results
✓ Build: Successful
✓ detekt: No issues
⚠ ktlint: 2 formatting warnings

## Issues Found

[CRITICAL] Force-Unwrap Null Safety
File: src/main/kotlin/com/example/service/UserService.kt:28
Issue: Using !! on nullable repository result
```kotlin
val user = repository.findById(id)!!  // NPE risk

Fix: Use safe call with error handling

val user = repository.findById(id)
    ?: throw UserNotFoundException("User $id not found")

[HIGH] GlobalScope Usage File: src/main/kotlin/com/example/routes/UserRoutes.kt:45 Issue: Using GlobalScope breaks structured concurrency

GlobalScope.launch {
    notificationService.sendWelcome(user)
}

Fix: Use the call's coroutine scope

launch {
    notificationService.sendWelcome(user)
}

Summary

  • CRITICAL: 1
  • HIGH: 1
  • MEDIUM: 0

Recommendation: ❌ Block merge until CRITICAL issue is fixed


## Approval Criteria

| Status | Condition |
|--------|-----------|
| ✅ Approve | No CRITICAL or HIGH issues |
| ⚠️ Warning | Only MEDIUM issues (merge with caution) |
| ❌ Block | CRITICAL or HIGH issues found |

## Integration with Other Commands

- Use `/kotlin-test` first to ensure tests pass
- Use `/kotlin-build` if build errors occur
- Use `/kotlin-review` before committing
- Use `/code-review` for non-Kotlin-specific concerns

## Related

- Agent: `agents/kotlin-reviewer.md`
- Skills: `skills/kotlin-patterns/`, `skills/kotlin-testing/`

## Navigation

- [Command → Agent / Skill Map](../docs/COMMAND-AGENT-MAP.md)
- [Agents index](../AGENTS.md)
- [Contexts directory](../contexts)
- [Contributing guide](../CONTRIBUTING.md)
Read more
Ships withawesome-claude-notes

Community-maintained distribution of reusable AI coding agents, commands, skills, hooks, and cross-harness workflows.

Get the whole plugin