Code Health Score: Repowise le Pone Números a la Deuda Técnica de tu Repo
Ya mencionamos a Repowise de pasada cuando cubrimos la tendencia de knowledge graphs para código — apareció como uno más en una lista de cinco. Eso le queda chico. Repowise no es solo otra herramienta que arma un grafo sobre tu repo. Es la única de esa lista que hace una afirmación que las demás ni intentan: que puede puntuar tu código de 1 a 10 y que ese puntaje realmente predice dónde van a aparecer los bugs.
Vale la pena mirarlo en detalle.
Qué es Repowise en concreto
pip install repowise, corré repowise init en tu proyecto, y construye cinco cosas a la vez:
- Graph — grafo de dependencias vía tree-sitter en 15 lenguajes, resolución de calls, PageRank/centrality
- Git — hotspots (churn × complejidad), % de ownership, coupling oculto vía co-change pairs, bus factor
- Docs — una wiki generada por LLM por módulo, regenerada incrementalmente en cada commit
- Decisions — architectural decision records minados de ocho fuentes, etiquetados como verified/fuzzy/unverified
- Code Health — 25 biomarkers determinísticos, cero llamadas a LLM, menos de 30 segundos en un repo de 3.000 archivos
Después expone todo eso a Claude Code, Codex o cualquier cliente MCP a través de nueve tools. Esa parte —graph, git, docs, decisions— es en espíritu bastante parecida a lo que ya vimos con codebase-memory-mcp y Context7. La capa de Code Health es donde Repowise está haciendo algo que nadie más en ese espacio está haciendo.
La parte que sí es nueva: un score validado contra defectos reales
La mayoría de las herramientas de “code quality score” —y hay muchas— ajustan sus pesos a mano, según lo que les parece razonable. La propuesta de Repowise es distinta: los pesos detrás de sus 25 biomarkers (McCabe complexity, deep nesting, brain methods, cohesión LCOM4, god classes, clone detection, untested hotspots, churn, ownership dispersion, y más) están calibrados contra un corpus histórico real de defectos, no elegidos a mano.
Para ser claros sobre qué significa esto: es un benchmark propio de Repowise, publicado en su repo repowise-bench con metodología e intervalos de confianza incluidos —no una auditoría independiente de terceros. Vale la pena probarlo en tu propio repo antes de tomar los números como verdad revelada, pero al menos la metodología es lo suficientemente transparente como para poder revisarla.
Esto es lo que reportan, medido sobre los mismos 2.770 archivos en 9 lenguajes, en el mismo commit, contra las mismas etiquetas de defectos, comparado cabeza a cabeza contra una “herramienta comercial líder” que no nombran:
| Eje (paired tests) | Repowise | Herramienta comercial |
|---|---|---|
| Recall @ 20% del presupuesto de líneas | 0,173 | 0,074 |
| Ranking effort-aware (Popt) | 0,607 | 0,462 |
| Densidad de defectos (ratio Alert:Healthy) | 2,18× | 0,56× |
| Discriminación (ROC AUC) | 0,731 | 0,705 |
Por separado, en 21 repos open-source que cubren los nueve lenguajes “Full tier”, reportan un ROC AUC medio cross-project de 0,74 (IC 95%: 0,68–0,79) para identificar qué archivos terminan recibiendo bug fixes en los siguientes seis meses —sin data leakage, ya que los health scores quedan fijados en un commit histórico y los resultados se miden después. También reportan que el score se sostiene aunque controlen por tamaño de archivo (no es solo “marcá los archivos más grandes”) y que aguanta en un dataset externo publicado (PROMISE/jEdit) sobre el que nunca fue ajustado.
Self-reported, sí. Pero es el tipo de afirmación self-reported que viene con un documento de metodología adjunto, lo cual ya lo pone un escalón arriba del típico gráfico de marketing.
Poniéndolo a andar
pip install repowise # o: uv tool install repowise
cd tu-proyecto
repowise init # construye las cinco capas — una sola vez
repowise serve # levanta el MCP server + dashboard local
Las capas de graph, git, dead-code y health se construyen en minutos sin ninguna llamada a LLM — con repowise init --index-only tenés un índice consultable casi al instante. Lo único lento es la capa de generación de docs, que podés dejar corriendo en background. Después del índice inicial, cada actualización disparada por un commit tarda menos de 30 segundos.
Si trabajás específicamente con Claude Code, te podés saltar el setup manual:
/plugin marketplace add repowise-dev/repowise
/plugin install repowise@repowise
Eso registra el MCP server, instala el hook, y agrega los slash commands /repowise:* (init, health, risk, dead-code, decision, …).
Para el health score específicamente, una vez indexado:
repowise health # KPIs + archivos con peor puntaje
repowise health --coverage cov.lcov # ingesta LCOV/Cobertura/Clover → detección de untested-hotspots
repowise health --refactoring-targets # ranking por impacto/esfuerzo
repowise health --trend # snapshots + alertas de declive/declive predicho
Las nueve MCP tools
La mayoría de las tools de código para MCP están armadas alrededor de entidades individuales —un archivo, un símbolo— lo que obliga a tu agente a encadenar una docena de calls. Las tools de Repowise están armadas alrededor de tareas: le pasás múltiples targets y te devuelve contexto completo en un solo round-trip.
| Tool | Para qué sirve |
|---|---|
get_overview() |
Resumen de arquitectura, mapa de módulos, entry points — el primer call en cualquier repo desconocido |
get_answer(question) |
Retrieval híbrido + expansión de grafo → una respuesta citada con score de confianza |
get_context(targets, include?) |
Ficha de contexto por archivo/módulo/símbolo — batch de varios targets a la vez |
get_symbol("file.py::Name") |
Código fuente crudo de un símbolo, con límites de línea exactos |
search_codebase(query, kind?) |
Búsqueda semántica filtrable por implementation/test/config/doc |
get_risk(targets, changed_files?) |
Hotspot scores, dependientes, co-change partners — con modo PR incluido |
get_why(query?, targets?) |
Architectural decision records + cadena de supersession |
get_dead_code(...) |
Código inalcanzable por nivel de confianza |
get_health(targets?, include?) |
El score de 25 biomarkers, por archivo o a nivel dashboard |
Su ejemplo de referencia —agregar rate limiting a todos los endpoints de una API— afirma 5 tool calls en vez de unos 30 greps-y-reads. Eso va en línea con el patrón general de “índice estructurado le gana a la exploración archivo por archivo” que venimos viendo en casi todas estas herramientas, incluyendo el ~70% de reducción en tool calls y ~89% menos file reads que Repowise reporta en sus propios benchmarks de eficiencia de agente.
Dónde queda parado frente a las alternativas
Repowise es self-hostable (AGPL-3.0), no necesita cloud, y es BYOK para las llamadas a LLM que sí hace (la generación de docs). Comparado con DeepWiki, Swimm y CodeScene —los puntos de comparación más cercanos— es el único que combina inteligencia de comportamiento vía git, un health score validado contra defectos, docs auto-generadas, tools MCP-native y tracking de decisiones arquitectónicas en un solo paquete self-hosted. CodeScene es el análogo más cercano del lado del health score, pero no es MCP-native y no hace decisiones arquitectónicas ni docs auto-generadas.
También hay una versión hosted (repowise.dev) para equipos que no quieren correrlo ellos mismos, más un PR bot gratuito de GitHub que comenta hotspots y declive de health por PR sin ninguna llamada a LLM.
¿Vale la pena?
Si ya estás convencido de la propuesta de “dale a tu agente un mapa persistente en vez de hacerlo reexplorar tu repo cada sesión” que vimos con codebase-memory-mcp, Repowise hace lo mismo y le suma una capa genuinamente diferenciada arriba —una que intenta contestar “qué archivos realmente van a romperse” en vez de solo “qué archivos están relacionados”. Esa es una afirmación más difícil de sostener y más difícil de fingir. Vale la pena apuntarlo a tu propio repo y comparar los archivos con peor puntaje de repowise health contra tus últimos seis meses de commits de bug fixes —esa es la prueba que realmente importa acá, más que cualquier gráfico en su README.
¿Ya lo probaste en tu propio repo, o te quedás con el knowledge graph puro por ahora? Contanos qué tan bien te predijo el health score tus dolores de cabeza reales ![]()