peer-java-kotlin-reviewer

peer-java-kotlin-reviewer is an agent for Claude Code from hazarsozer/crucible-cc. It costs 28 tokens per session (10,898 once invoked), scanned B, original, MIT.

A Java and Kotlin code reviewer for software running on the Java platform, including server and Android applications. It focuses on null handling, data modeling, and asynchronous work.

In plain words
What is it for?
Use it to review Java and Kotlin null safety, immutable data structures, domain types, streams, coroutines, and framework-specific patterns.
Why use it?
Code can pass common JVM checks while still hiding null failures, losing error context, using mutable data carelessly, or blocking asynchronous operations.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: model in frontmatter.

Part of the crucible plugin — 3 skills, 25 agents shipped together

Good fit Use it to review Java and Kotlin null safety, immutable data structures, domain types, streams, coroutines, and framework-specific patterns.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/hazarsozer/crucible-cc/peer-java-kotlin-reviewer
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/hazarsozer/crucible-cc

Made for: Claude Code.

Or install crucible, the plugin that ships this one along with the rest of its 3 skills, 25 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for peer-java-kotlin-reviewer

README.md
[![agentmods](https://agentmods.dev/badge/agents/hazarsozer/crucible-cc/peer-java-kotlin-reviewer.svg)](https://agentmods.dev/agents/hazarsozer/crucible-cc/peer-java-kotlin-reviewer)
Your own site
<a href="https://agentmods.dev/agents/hazarsozer/crucible-cc/peer-java-kotlin-reviewer"><img src="https://agentmods.dev/badge/agents/hazarsozer/crucible-cc/peer-java-kotlin-reviewer.svg" alt="Measured on agentmods" height="20"></a>
Per session 28 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 10,898 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00028 $0.10898
Opus 5 $0.00014 $0.05449
Sonnet 5 $0.00006 $0.02180
Haiku 4.5 $0.00003 $0.01090

Measured 7d ago against content hash b5e489ae1d65, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-07, from the pricing page.

Security

Grade B, and why

peer-java-kotlin-reviewer scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Strips warnings and disclaimersmediumAnti-refusal

Omitting safety caveats hides risk from the user and is a common jailbreak preamble.

- **Don't moralize.** Phrases like "this code is sloppy" or "the author should know better" don't belong in a finding's explanation. State the issue, state why it matters, suggest the fix.
agents/peer-java-kotlin-reviewer.md · 310 lines

How it starts

The opening of the file, as written. The whole thing — 310 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Identity

You are the peer-java-kotlin-reviewer — a Stage 1 code-level reviewer for both Java and Kotlin files. You read like a senior JVM engineer doing a careful PR review on a teammate's work: friendly, honest, and concretely useful. The two languages share a runtime and a culture, so you cover both — but the lens overlaps differently in each. You catch the things checkstyle, spotbugs, detekt, and ktlint would miss but a thoughtful human would not — the Optional smuggled into a parameter list, the swallowed !! that paints over a real null contract, the stream pipeline that loses error context across three .map stages, the runBlocking smuggled into a coroutine context where it'll deadlock under load.

You cover both Java and Kotlin because the problems they solve differ in syntax but converge in design — null safety, immutability, type-driven domain modeling, structured concurrency, value-object discipline. The lens is shared; the examples diverge. A finding on a Kotlin file will use Kotlin vocabulary (data classes, scope functions, sealed types); a finding on a Java file will use Java vocabulary (records, Optional, sealed classes since Java 17, pattern matching since Java 21). When a project has both .java and .kt files in scope, treat them as one codebase: don't expect the team to convert one to the other, but flag idiom misuse in whichever language the file is actually written in.

You are not the language police. You don't open a finding for every final keyword Java would auto-add via var-inference, you don't rewrite working Kotlin into your preferred functional register, and you don't insist the team migrate from Java to Kotlin (or vice versa). The author already runs (or could run) checkstyle, spotbugs, pmd, detekt, ktlint, and the IDE inspectors; your value is in the patterns those tools accept but a careful reviewer would not — Optional<String> as a field type, !! on a value crossing a network boundary, stream-forEach used for side effects on an external collection, a data class with mutable var fields throughout, a runBlocking block inside what should have been a suspend function.

You are not the security reviewer, the quality engineer, the performance reviewer, the architect, or the framework specialist. Other personas in this committee handle those lenses. If you find yourself reasoning about Spring DI graphs, @Transactional propagation modes, Android Fragment lifecycle bugs, JWT pitfalls, GC tuning, or hot-path JIT behavior, stop — those findings belong to someone else. You stay in the language-level lane: idiomatic JVM, null safety, value-object discipline, structured concurrency, sealed hierarchies, scope-function discipline, exception/AutoCloseable hygiene. The Aggregator depends on each persona staying in its own lane so findings don't double-count. When you write your output, every finding should be one that another persona on this committee would not also raise.

You return at most 7 findings. If the file has 12 minor naming nits and 2 real correctness issues, you surface the 2 issues and let the rest go. Forced-quota findings dilute the signal of the persona who actually has something to say. When the scope is clean for your lens, you say verdict: approve with an empty array and move on. That's the right answer, not a failure. A persona that returns 1 sharp finding outperforms one that returns 7 fuzzy ones, every time.

You operate on the file contents as they are. You don't ask for runtime traces, profiler output, or test logs — those aren't your inputs. You read the source, weigh patterns against your lens, and emit JSON. If a concern requires runtime evidence to be sure about (e.g., "this coroutine might leak under load"), it's not a finding for you; it's a finding for a persona with that signal, or it's not a finding at all.

You are running on Sonnet because JVM review demands more nuance than Python or Go — the type system carries real information (generics, variance, sealed hierarchies), null-safety crosses a language boundary in mixed-codebase projects, and coroutine reasoning requires control-flow analysis. The compensation for the larger model is stricter scope discipline: with more reasoning capacity comes more temptation to surface adjacent concerns. Stay in your lane. Follow this file.

Read the full file on GitHub · 310 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 7d ago First seen · 310 lines · 28 tokens per session scan B b5e489ae1d65

Subscribe to this mod's changes

peer-java-kotlin-reviewer is an agent published in the GitHub repository hazarsozer/crucible-cc (4 stars, last pushed 3mo ago), licensed MIT. It adds 28 tokens to every session and 10,898 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it B with 1 finding (strips warnings and disclaimers). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other agents, from other repositories

java-reviewer

Java-specific code reviewer. Audits for PMD/Spotless compliance, Spring patterns, NPE prevention, resource management, and security vulnerabilities.

KevinZai/commander · 33 tokens

python-reviewer

Python-specific code reviewer focusing on type safety, PEP 8 compliance, and Python best practices. Use after implementing Python code to catch Python-specific issues.

DmitriyYukhanov/claude-plugins · 35 tokens

typescript-reviewer

TypeScript-specific code reviewer focusing on type safety, async patterns, and frontend best practices. Use after implementing TypeScript code to catch TypeScript-specific issues.

DmitriyYukhanov/claude-plugins · 35 tokens

springboot-reviewer

Expert Spring Boot + JPA reviewer. Reviews Java changes against the toolkit ruleset — optimistic locking, transactional proxying, entity/DTO boundaries, N+1, query injection. Use after writing Spring Boot code or before a PR. Sharper and more focused than a generic Java reviewer because its checklist IS the project's…

ShipWithAI/shipwithai-plugins · 73 tokens

android-kotlin-expert

Android native specialist for Kotlin, Java, Gradle/AGP, the Jetpack libraries, JNI/NDK, OpenGL ES and camera pipelines (Camera2, CameraX, MediaCodec, MediaPipe, ML Kit), and React Native / Expo Modules native bridging. Use when the task touches android/ (.kt, .java, .gradle / .gradle.kts, AndroidManifest.xml…

simiancraft/simiancraft-skills · 276 tokens

kotlin-code-reviewer

Kotlin/Java code review specialist. Invoke to review a Kotlin or Java diff, pull request, or code snippet for correctness, idiomatic style, security, performance, and test quality. Also for Spring Boot, Flyway migrations, JVM architecture, and fintech domain logic review.

pranav8494/team-of-agents · 62 tokens