Mira a Madu explicarlo en dos minutos

Conocimiento sobre tu código, desde la terminal.

Kimün mide la salud de un proyecto con un solo comando: te da una nota, te dice qué archivos necesitan atención y cuánto alcanza cada cambio antes de fusionarlo.

cargo install kimun

¿por qué este nombre?

Madu, la mascota de Kimün: una pudú con un cintillo rosado
km score
$ km score

 Project Score:  A (91.0)
 Files Analyzed: 127
 Total LOC:      18,594

 Dimension                 Weight   Score   Grade
 Cognitive Complexity         30%    83.6   B+
 Duplication                  20%    97.3   A++
 Indentation Complexity       15%    93.5   A+
 Halstead Effort              20%    87.4   A-
 File Size                    15%    99.6   A++

 Files Needing Attention
  57.9  D-   src/deps/analyzer.rs      Cognitive: 36
  63.9  D+   src/cogcom/analyzer.rs    Cognitive: 35
  72.3  C    src/smells/rules.rs       Cognitive: 20

salida real: kimün midiéndose a sí mismo

Qué mide

Seis formas de conocer tu código

Cada una responde una pregunta distinta, y todas salen del mismo programa.

01

Una nota para el proyecto

De A++ a F--, calculada con cinco dimensiones: complejidad cognitiva, duplicación, indentación, esfuerzo de Halstead y tamaño de los archivos. Y la lista de archivos que conviene mirar primero.

$ km score
 Project Score:  A (91.0)
 Files Analyzed: 127
 Total LOC:      18,594
02

Un comando para cada medida

Líneas de código en más de cuarenta lenguajes, código duplicado, complejidad ciclomática y cognitiva, índice de mantenibilidad, code smells y dependencias entre archivos.

$ km loc
 Language     Files   Blank  Comment    Code
 Rust           126    2490     3502   18579
 Markdown         3     562        0    1394
 YAML             3      36        1     179
03

La historia, leída desde git

Hotspots: archivos complejos que cambian seguido. Mapa de conocimiento: quién domina cada archivo. Acoplamiento temporal: archivos que cambian siempre juntos, aunque el código no lo diga.

$ km hotspots --top 3
 File            Commits  Total Indent  Score
 src/main.rs          67          1259  84353
 src/cli.rs           36           588  21168
 src/git/mod.rs       22           808  17776
04

El impacto de un cambio

Antes de fusionar, pregunta qué alcanza tu cambio: qué archivos llaman a las funciones que tocaste, cuáles tienen tests y dónde probablemente falta uno.

El radio a nivel de funciones funciona hoy para Elixir, JavaScript/TypeScript y Kaikai.

$ km impact --since-ref main
 3 files call what changed, 1 of them with no test
 Changed: lib/shop/orders.ex
 Functions: total

 Tests  Dependent
  none  lib/shop/workers/report_worker.ex
     1  lib/shop/cart.ex
     1  lib/shop/receipt.ex

No test reaches 1 of the files that call what changed;
an integration test is probably missing
05

Una compuerta en CI

Compara tu rama con la principal. Si un archivo empeora o crece el código duplicado, el cambio no pasa.

$ km score --trend main --fail-if-worse \
           --gate-scope changed
error: quality gate failed:
  src/cart.rs dropped 88.73 → 86.62 (-2.11),
  below the project score and more than
  the 0.5 tolerance
06

Hecho para agentes de código

Todos los comandos pueden responder en JSON, y con un comando instalas una skill para que tu agente mida antes de cambiar.

$ km ai skill claude
$ km score --format json
{
  "score": 90.98,
  "grade": "A",
  "files_analyzed": 127,
  "dimensions": [ … ]
}

Video

Kimün explicado por Madu

Dos minutos para ver qué mide, cómo se usa y por qué importa. Madu es machi: la que guarda el conocimiento de su pueblo.

Watch it in English

Comandos

Todo lo que trae km

Cada comando acepta una ruta y, con --format json, responde para una máquina.

Métricas estáticas

km score
La nota general del proyecto, de A++ a F--
km loc
Líneas de código, comentarios y blancos por lenguaje
km dups
Código duplicado entre archivos
km cycom
Complejidad ciclomática por archivo y por función
km cogcom
Complejidad cognitiva por archivo y por función
km indent
Complejidad por indentación
km hal
Métricas de Halstead
km mi
Índice de mantenibilidad, en dos variantes (mi y miv)
km smells
Code smells: funciones largas, números mágicos, deuda pendiente
km deps
Dependencias entre archivos y sus ciclos
km report
Un informe con todas las métricas juntas

Historia en git

km hotspots
Archivos complejos que cambian seguido
km churn
Cuánto cambia cada archivo
km knowledge
Quién domina cada archivo, y dónde hay riesgo
km authors
Resumen por autor
km tc
Archivos que cambian juntos
km impact
Qué alcanza un cambio o un pull request
km age
Archivos activos, quietos o congelados

Herramientas

km init
Crea un .kimun.toml calibrado para tu proyecto
km ai
Skill y análisis para agentes de código
km completions
Autocompletado para tu shell

¿Lo probamos?

Se instala con un comando y no necesita configuración. Parte con km score en la carpeta de tu proyecto.

cargo install kimun