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.
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
$ kerbo check api web edge broker api/src/main/java/billing/InvoiceService.java:88:5: cyclomatic-complexity La función `settle` tiene complejidad ciclomática 11 (máximo 8) web/src/features/orders/use-cart.ts:42:1: cognitive-complexity La función `applyPromotions` tiene complejidad cognitiva 19 (máximo 15) edge/src/ingest/rtsp_source.py:43:5: parameter-count La función `__init__` recibe 8 parámetros (máximo 6) broker/internal/session/store.go:12:1: file-length El archivo tiene 512 líneas (máximo 400) kerbo: 5810 archivos, 4 problemas, 2250 ms
Por qué
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.
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
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.
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.
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
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.
eslint-disable, noqa o @SuppressWarnings nuevo, un umbral bajado, un test borrado o salteado, un any.El ruff de Java
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.
Hoja de ruta
Cinco reglas en Java, TypeScript, Python y Go, con cero diferencias contra las herramientas originales en diez repos de producción.
Configuración, caché, SARIF, todas las reglas de forma de Checkstyle y PMD, y la capa para agentes.
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
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.