Versión 0.1 disponible · open source, Apache 2.0

Una sola vara de calidad para todo tu código.

kerbo revisa Java, TypeScript, Python y Go con un binario de 7 MB: las mismas reglas y un solo reporte, contando igual que Checkstyle, PMD, ESLint, ruff y golangci-lint. Corre en segundos, ocupa megas y está pensado para que los agentes de IA no puedan zafar de las reglas.

curl -fsSL https://kerbo.matiascaliz.com.ar/install.sh | sh

Por qué

Cinco herramientas, cinco configuraciones y un servidor en swap.

Un repo con backend en Java, front en TypeScript y un servicio en Python carga hoy con un linter por lenguaje, cada uno con sus plugins, su runtime, su formato de reporte y su manera de contar lo mismo. kerbo es un solo motor nativo que aplica las mismas reglas en todos.

2,25 s
para revisar un monorepo de 5.810 archivos en Java y TypeScript
11 MB
de memoria pico, todo el análisis incluido
1,9 GB
pico de ESLint solo, sobre el mismo monorepo

Medido el 19 de octubre de 2026 con la versión 0.1, que aplica cinco reglas (largo de archivo y de función, complejidad ciclomática y cognitiva y parámetros). ESLint corre todas las suyas: la comparación justa, regla por regla, es el próximo paso y se va a publicar acá.

Qué hace

Reglas escritas una vez, aplicadas igual en todos los lenguajes.

01 · un binario

Sin runtimes ni plugins

Nada de node_modules con ESLint por repo, venvs de herramientas ni plugins de Gradle y Maven. Un ejecutable en Rust, el mismo para todos tus repos.

02 · misma vara

Reglas universales

Largo de archivo y de función, complejidad ciclomática y cognitiva y parámetros: una definición y un umbral en los cuatro lenguajes. En camino: anidamiento, números mágicos y duplicación.

03 · paridad

Da lo mismo que lo que reemplaza

Cada regla se valida contra la herramienta original sobre repos reales. Si no marca exactamente lo mismo, no sale: la 0.1 da cero diferencias en diez repos de producción.

Para agentes de IA

Guardarraíles para el código que escriben Claude Code, Cursor y Copilot. En camino

Los linters de hoy le hablan a una persona. Un agente que escribe y corrige en ciclos cortos necesita otra cosa: saber exactamente qué arreglar, y que nadie le deje "arreglarlo" escondiéndolo.

  • Antitrampa. Avisa cuando un cambio zafa en vez de arreglar: un eslint-disable, noqa o @SuppressWarnings nuevo, un umbral bajado, un test borrado o salteado, un any.
  • Salida para agentes. JSON compacto, priorizado y con el arreglo como parche, sin relleno que gaste tokens.
  • Identificadores estables. En la vuelta siguiente el agente sabe qué arregló, qué sigue y qué es nuevo.
  • Errores típicos del código generado. Imports que no existen, funciones que duplican otra del repo, tests sin aserciones.
  • Servidor MCP y modo instantáneo sobre los archivos recién tocados, para engancharlo después de cada edición.

El ruff de Java

Checkstyle, PMD y SpotBugs, sin JVM y sin compilar.

Python tiene ruff y JavaScript tiene Oxlint y Biome. Java sigue con tres herramientas que arrancan una JVM cada una, y SpotBugs obliga a compilar antes de analizar.

  • Hoy: complejidad, largo y parámetros contados exactamente como Checkstyle y PMD, sin arrancar ninguna JVM.
  • En camino: todas las reglas de forma de Checkstyle y PMD, y el análisis de flujo de SpotBugs sobre el código fuente (nulos, recursos sin cerrar, excepciones tragadas) sin pasar por el bytecode.
  • Segundos en vez de minutos en el gate, y sin pelearse por la memoria con el build.
CheckstylePMDSpotBugsESLintruffgolangci-lint→kerbo

Hoja de ruta

Dónde está y qué sigue.

Hoy · 0.1

Las reglas universales

Cinco reglas en Java, TypeScript, Python y Go, con cero diferencias contra las herramientas originales en diez repos de producción.

Próximo

Núcleo y Java

Configuración, caché, SARIF, todas las reglas de forma de Checkstyle y PMD, y la capa para agentes.

Después

Flujo de datos y más

Lo de SpotBugs sin compilar, formateo propio, tests que corren sólo si los afecta el cambio, dependencias y secretos.

Open source con licencia Apache 2.0, gratis también para uso comercial. La hoja de ruta completa está en el repo.

Instalar

Probalo en tu repo en un minuto.

En Linux, un comando: baja el binario estático, verifica el sha256 y lo deja en ~/.local/bin. En macOS y Windows, con Rust: cargo install --git https://github.com/mati-caliz/kerbo --locked.

curl -fsSL https://kerbo.matiascaliz.com.ar/install.sh | sh
kerbo check

¿Lo querés probar con tu equipo, usás Java o trabajan con agentes de IA? Escribinos y lo corremos juntos sobre tu repo.