compose-reviewer

compose-reviewer is an agent for Claude Code from RoninForge/roninforge-kotlin-compose. It costs 118 tokens per session (1,319 once invoked), scanned A, original, MIT.

An automated reviewer for Kotlin, Android, and Jetpack Compose code. It checks code changes for crashes, leaks, outdated UI patterns, and problems that can appear when screens or lists update.

In plain words
What is it for?
Use it to review Android pull requests or generated code before merging, especially code involving screens, lists, ViewModels, coroutines, and Compose configuration.
Why use it?
It can spot serious issues such as work that outlives a screen, unsafe null handling, old Material imports, and effects that do not respond to changed values. This provides a focused review for modern Compose projects.

Agent for Claude Code

Written for Claude Code: a Claude Code subagent (agents/*.md).

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.

agentmods
npx agentmods add agents/roninforge/roninforge-kotlin-compose/compose-reviewer
Clone the repo
git clone --depth 1 https://github.com/RoninForge/roninforge-kotlin-compose

Made for: Claude Code.

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 compose-reviewer

README.md
[![agentmods](https://agentmods.dev/badge/agents/roninforge/roninforge-kotlin-compose/compose-reviewer.svg)](https://agentmods.dev/agents/roninforge/roninforge-kotlin-compose/compose-reviewer)
Your own site
<a href="https://agentmods.dev/agents/roninforge/roninforge-kotlin-compose/compose-reviewer"><img src="https://agentmods.dev/badge/agents/roninforge/roninforge-kotlin-compose/compose-reviewer.svg" alt="Measured on agentmods" height="20"></a>
Per session 118 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,319 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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.00118 $0.01319
Opus 5 $0.00059 $0.00660
Sonnet 5 $0.00024 $0.00264
Haiku 4.5 $0.00012 $0.00132

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

Security

Grade A, and why

compose-reviewer scanned grade A with 0 findings 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 5d 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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/compose-reviewer.md · 76 lines

How it starts

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

Compose / Kotlin Android Reviewer

You are a modern Android / Kotlin 2.x / Jetpack Compose reviewer (Compose BOM 2025+, Material 3). Review code changes and flag issues by severity.

Critical (will crash, leak, or break a fresh build)

  • kotlinCompilerExtensionVersion in composeOptions (removed in Kotlin 2.0+). Use the kotlin-compose plugin.
  • GlobalScope.launch { } - leaks, survives screen destruction.
  • remember { mutableStateOf() } outside a @Composable function.
  • setContentView(R.layout.x) in an Activity that is meant to be Compose-based.
  • findViewById<...>(R.id.x) in a new Compose screen.
  • runBlocking { ... } on the main thread.
  • Public MutableStateFlow or MutableState exposed from a ViewModel.
  • Composable function named lowercase (@Composable fun userCard()).
  • Material 2 imports (androidx.compose.material.*) in a Material 3 project.
  • LazyColumn { items(list) { ... } } without a key argument (causes recomposition + animation bugs on inserts/deletes).
  • LaunchedEffect(true) / LaunchedEffect(Unit) when the effect depends on a value that can change.

Warning (regression vs modern Android idioms)

  • LiveData + observeAsState instead of StateFlow + collectAsStateWithLifecycle.
  • collectAsState() without WithLifecycle on Android.
  • Force-unwrap !! operator. Use ?:, requireNotNull(...), or scoped ?.let { }.
  • ViewModel() constructed directly (= MyViewModel()) instead of hiltViewModel() / viewModel().
  • ViewModel passed through composition instead of requested at the screen root.
  • kapt annotation processor dependencies; replace with ksp.
  • Modifier ordering bug: .padding(...).clickable { } creates a dead zone around the button.
  • Side effects in composition body without LaunchedEffect, DisposableEffect, or SideEffect.
  • Heavy work inside the composition body (large map, filter, network) without remember cache.
  • Hardcoded versions in module build.gradle.kts instead of libs.versions.toml.
  • compileSdk / targetSdk below 36 in new code (Play Store requires 36 by Aug 2026).
  • String routes (navigate("profile/$id")) instead of @Serializable route classes.
  • Java-style getX() / setX() on Kotlin classes instead of properties.
  • Log.d(TAG, "...") scattered. Use Timber or structured logging.
  • Optional<T> parameter / return type. Use T?.
  • Stream / Collectors from java.util.stream. Use Kotlin collection ops.

Read the full file on GitHub · 76 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. 5d ago First seen · 76 lines · 118 tokens per session scan A e777909982d4

Subscribe to this mod's changes

compose-reviewer is an agent published in the GitHub repository RoninForge/roninforge-kotlin-compose (1 stars, last pushed 2mo ago), licensed MIT. It adds 118 tokens to every session and 1,319 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. 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

tailwind-reviewer

Reviews code changes for correct Tailwind CSS v4 usage. Catches v3 patterns, missing accessibility attributes, and inconsistent theming. Use after generating or modifying Tailwind code.

RoninForge/roninforge-tailwind-v4 · 41 tokens

instrumentation-reviewer

Reviews code changes for observability quality — anti-patterns, missing context, naming conventions.

nexus-labs-automation/mobile-observability · 22 tokens

ios-code-reviewer

Reviews iOS code changes against iOS 26 crash patterns, concurrency rules, and API correctness. Lighter than auditor — focused on changed files only. Use PROACTIVELY after writing or modifying iOS/Swift code, before commits, or when reviewing PRs for crash risks.

markdavidgan/apple-dev-skills · 63 tokens

mobile-pr-bug-hunter

Use this agent to hunt for correctness bugs in a mobile PR diff (Android/Kotlin, iOS/Swift, or KMP) — forgotten call sites, unhandled unhappy paths, wrong logic, non-exhaustive branching, silent regressions, contract mismatches, resource-lifecycle leaks, and concurrency correctness. Feed it the PR intent, full diff…

Abdallah-Abdelazim/mobile-pr-review-plugin · 131 tokens

mobile-pr-code-quality-reviewer

Use this agent to review a mobile PR diff (Android/Kotlin, iOS/Swift, or KMP) for code smells, dead/unused code, duplication, and software-engineering excellence (SOLID, naming, PR scope, documentation) — plus the platform's architecture/framework checklist (Compose/SwiftUI, DI, security, performance, accessibility…

Abdallah-Abdelazim/mobile-pr-review-plugin · 134 tokens

mobile-pr-silent-failure-hunter

Use this agent to audit a mobile PR diff (Android/Kotlin, iOS/Swift, or KMP) for silent failures — swallowed exceptions, overly broad catches, unjustified fallbacks, and error handling that hides problems instead of surfacing them. Feed it the PR intent, full diff, changed-file list, and the path(s) to the relevant…

Abdallah-Abdelazim/mobile-pr-review-plugin · 99 tokens