SECCIÓN 09

Git Hooks

ixtli puede instalarse como hook pre-commit y pre-push para que el review ocurra automáticamente antes de cada commit o push.

Instalar hooks

ixtli hooks install

Instala ambos hooks (pre-commit y pre-push). Si el proyecto usa Husky o el framework pre-commit, ixtli se integra con ellos. Si ya existe un hook ajeno, ixtli pregunta si quieres agregar su bloque al final, reemplazar el hook, o saltarlo (--force responde "reemplazar" sin preguntar).

Configurar el comportamiento — todo se decide en el CLI, localmente

La configuración de los hooks (severidad mínima y si bloquean o solo avisan) se define enteramente en tu máquina, con los flags de ixtli hooks install — no depende de ninguna configuración de la plataforma web ni se descarga de un servidor. Lo que le pasas al instalar queda embebido en el propio script del hook (.git/hooks/pre-commit / .git/hooks/pre-push) y guardado en .ixtli/hooks.json para que ixtli hooks status lo muestre.

ixtli hooks install --pre-commit-only     # solo pre-commit
ixtli hooks install --pre-push-only       # solo pre-push
ixtli hooks install --force               # reemplazar hook existente sin preguntar
ixtli hooks install --block-on-critical   # bloquear el commit/push si hay issues ≥ umbral
ixtli hooks install --no-block            # nunca bloquear, solo reportar (default)
ixtli hooks install --min-severity-commit high    # umbral para pre-commit (default: high)
ixtli hooks install --min-severity-push critical  # umbral para pre-push (default: critical)

Por default los hooks no bloquean nada — modo warning. Solo pasan a modo blocking si instalas explícitamente con --block-on-critical (y no pasaste --no-block a la vez).

Override en tiempo de ejecución — sin reinstalar

El script instalado lee IXTLI_MIN_SEVERITY e IXTLI_BLOCK como variables de entorno antes de usar los valores fijados al instalar. Esto te deja cambiar el comportamiento puntualmente sin correr ixtli hooks install de nuevo:

# Bloquear solo para este push, sin cambiar la config instalada
IXTLI_BLOCK=true git push

# Bajar el umbral a "low" solo para este commit
IXTLI_MIN_SEVERITY=low git commit -m "wip"

Comportamiento del hook pre-commit

Cuando corres git commit:

  1. El hook ejecuta ixtli review --quiet --min-severity <nivel> sobre lo que está staged.
  2. Si hay issues con severidad ≥ al umbral: los muestra y, si el modo es blocking, cancela el commit (exit 1).
  3. Si no hay issues que bloqueen: el commit procede normalmente.
  4. Si ixtli no está en el PATH, no hay sesión autenticada, o falla la conexión con el backend: el hook deja pasar el commit sin bloquear (fail-open) — nunca te deja atascado por un problema de red.

Comportamiento del hook pre-push

Se ejecuta antes de git push y corre ixtli commit-review --range <rango> sobre todos los commits que se están por pushear (no solo el último) — el rango se calcula automáticamente comparando tu rama local contra la remota. Mismo comportamiento fail-open que pre-commit si ixtli no está disponible o falla la conexión.

Ver el estado de los hooks

ixtli hooks status

Muestra, por hook, si está instalado, en qué modo (warning/blocking) y con qué min-severity — reflejando exactamente lo que se instaló localmente.

Deshabilitar temporalmente

ixtli hooks disable    # deshabilita sin desinstalar
ixtli hooks enable     # vuelve a habilitar

# Saltarse los hooks en un commit específico
git commit --no-verify -m "WIP"

Desinstalar hooks

ixtli hooks uninstall          # pide confirmación
ixtli hooks uninstall --yes    # sin confirmación

Actualizar hooks

ixtli hooks update

Regenera los scripts instalados a partir de la configuración local guardada (.ixtli/hooks.json) — útil después de actualizar ixtli, para que el hook use la versión más reciente de la plantilla sin perder tu min-severity/modo configurados.

Project Intelligence Layer (PIL)Issue Trackers