Bus Factor Analysis

SkillDev tools

Detects the Bus Factor per module in a git repository using the CST (change-size-ratio) algorithm. Generates JSON with BF, owners, risk, and warns when a single dev knows a critical module.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Bus Factor Analysis skill

What this skill tells your AI

The instructions your AI receives, as published by gonzalezpazmonica/savia in .claude/skills/bus-factor-analysis/SKILL.md and read by ahel’s review.

Descripcion

Detecta el Bus Factor (BF) de cada modulo de un proyecto analizando el historial git con el algoritmo CST(change-size-ratio):

  • BF=1 → CRITICAL: un solo dev conoce el modulo
  • BF=2 → HIGH: dos devs, riesgo elevado
  • BF=3 → MEDIUM: tres devs, riesgo moderado
  • BF>3 → LOW: riesgo bajo

Cuando usar

  • Pre-sprint si hay devs de vacaciones o baja
  • Tras la salida de cualquier miembro del equipo
  • Mensualmente como revision de riesgo organizativo
  • Cuando un nuevo dev se incorpora (para generar su plan de onboarding)
  • Cuando se detecta siloizacion de conocimiento

Rutas criticas

  • Motor Python: scripts/bus-factor-scan.py
  • Orquestador: scripts/bus-factor-scan.sh
  • Cupulas: scripts/context-dome-generate.sh
  • Distribucion: scripts/bus-factor-distribute.sh
  • Informe: scripts/bus-factor-report.sh
  • Hook PostWrite: .claude/hooks/bus-factor-warn.sh
  • Protocolo: docs/rules/domain/bus-factor-protocol.md
  • DOMAIN: .claude/skills/bus-factor-analysis/DOMAIN.md

Flujo de uso

# 1. Escanear proyecto
bash scripts/bus-factor-scan.sh --project <path>

# 2. Generar cupulas para modulos criticos
bash scripts/context-dome-generate.sh --project <path> --min-risk HIGH

# 3. Plan de distribucion para un dev
bash scripts/bus-factor-distribute.sh --project <path> --target <dev-email>

# 4. Informe ejecutivo
bash scripts/bus-factor-report.sh --project <path> --format markdown

Output esperado

JSON en output/bus-factor/<proyecto>-<timestamp>.json con estructura:

{
  "project": "...",
  "modules": [{"name": "...", "bus_factor": 1, "risk_level": "CRITICAL", ...}],
  "summary": {"critical": 2, "high": 3, "medium": 1, "low": 5}
}

Configuracion

Variables de entorno (o .bus-factor.yml en raiz del proyecto):

VariableDefaultDescripcion
BF_OWNERSHIP_THRESHOLD0.50Score minimo para ser owner
BF_RISK_CRITICAL1BF <= N es CRITICAL
BF_RISK_HIGH2BF <= N es HIGH
BF_MIN_COMMITS5Commits minimos por archivo
BF_MODULE_DEPTH2Profundidad de agrupacion
BF_EXCLUDE_PATTERNSvendor/,node_modules/,*.lockPatrones a excluir
BF_OUTPUT_DIRoutput/bus-factor/Directorio de salida

Limitaciones

  1. Git blame mide lineas, no comprension real
  2. Rebases y merges distorsionan el historial
  3. No detecta conocimiento organizativo (ver org-stakeholder-mapper)
  4. Human decides: el script solo genera findings, no actua

Integraciones

  • context-dome skill: genera CONTEXT_DOME.md con conocimiento tacito
  • human-code-map skill: usa el plan de distribucion para onboarding
  • codebase-memory-mcp: enriquece nodos File con bus_factor property

Signals

GitHub stars
50
Forks
12
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
bus-factor-analysis-gonzalezpazmonica
Source
github.com/gonzalezpazmonica/savia