La herramienta más subestimada en tu caja de herramientas de desarrollo: Ganchos pre-commit (Sí, esa característica de Git de hace 20 años)
He estado escribiendo código más tiempo del que me gusta admitir y hay algo que nunca deja de sorprenderme: equipos gastando un dineral en pipelines de CI enormes solo para atrapar errores ridículos que podrían evitarse fácilmente. Se hace push a propósito con código roto esperando a que GitHub Actions o un runner en la nube nos diga que somos malos desarrolladores. Es como pagar un portero para que te diga que tienes los cordones sueltos después de haberte caído por las escaleras.
Existe una alternativa mejor, instantánea, local, gratuita y que no te hace esperar ocho minutos para enterarte de que ESLint volvió a enojarse. Se llama ganchos pre-commit y sí, son antiguos, pero funcionan de forma brutalmente efectiva.
Qué es un gancho pre-commit En esencia es un script que Git ejecuta justo antes de confirmar un commit. Si el script sale con código 0 el commit continúa. Si sale con cualquier otro código el commit se aborta y debes arreglarlo. Sin YAML, sin runners, sin subir a main para ver qué se rompe. Aplicación local y prevención inmediata.
El coste real de dejarlo todo para CI Hemos normalizado un ritual raro donde las comprobaciones básicas ocurren después de que el código ya está en el repositorio. Formateo, linting, fallos de tipos, secretos filtrados, desalineación de OpenAPI, código generado obsoleto: todo eso se detecta tarde y tiene un coste real en minutos de CI, cambios de contexto, rework y riesgo de seguridad. Todo eso puede y debe pillarse en milisegundos en la máquina del desarrollador. CI es para verificación. Pre-commit es para prevención.
Shift left de verdad Los hooks pre-commit son la puerta más temprana en tu ciclo de desarrollo. Corren antes de que exista el PR, antes de que se levante CI, antes de que empiecen las revisiones y mucho antes de que algo llegue a producción. Estás haciendo cumplir normas justo cuando la intención se convierte en código.
Un ejemplo práctico y minimalista para subir el listón Añade esto como script en .git/hooks/pre-commit y hazlo ejecutable con chmod +x .git/hooks/pre-commit: #!/usr/bin/env bash; set -e; echo Ejecutando verificaciones locales; npm run lint || { echo Lint falla; exit 1; }; npm run format:check || { echo Formato incorrecto; exit 1; }; npm run typecheck || { echo Errores de tipos; exit 1; }; npm test -- --runTestsByPath $(git diff --cached --name-only) || { echo Tests fallaron en archivos cambiados; exit 1; }; echo Commit OK Con eso aplicas linting, formateo, comprobación de tipos y tests dirigidos solo a los archivos cambiados sin coste alguno en minutos de nube.
Evitar commits con secretos Esto paga por sí solo la primera vez que evita una filtración. Añade una comprobación sencilla al hook: if git diff --cached | grep -E AWS_SECRET|API_KEY|PRIVATE_KEY|PASSWORD; then echo Posible secreto detectado; exit 1; fi Detectar secretos en CI ya es tarde. Si el commit no llega a existir estás salvado.
Ganchos como mecanismo de cumplimiento de arquitectura Aquí es donde los pre-commit hooks dejan de ser un gusto y pasan a ser esenciales. Úsalos para obligar a regenerar clientes cuando cambia openapi.yaml, impedir migraciones sin rollback, exigir changelog al subir versión, etc. Por ejemplo si aparece openapi.yaml en el commit puedes ejecutar la generación de clientes y abortar si los clientes generados no han sido incluidos en el commit. Resultado: menos comentarios en PR, menos fallos en CI y contratos correctos por construcción.
Comparativa rápida Pre-commit hooks frente a pipelines CI: velocidad de feedback instantánea frente a minutos, coste cero frente a facturación por minutos de nube, interrupción mínima del flujo de trabajo frente a context switches, y enforcement duro frente a comprobaciones que a menudo se ignoran. Sí, es cierto que un desarrollador determinado puede usar --no-verify y saltarse el gancho, pero la realidad es que buscamos configurar la ruta correcta por defecto para la mayoría del equipo, no detener a agentes malintencionados.
Es también una cuestión de cultura Implantar ganchos pre-commit envía señales claras: respetamos el tiempo de los desarrolladores, no externalizamos disciplina básica a servicios cloud, prevenimos problemas en vez de reaccionar y valoramos corrección sobre métricas de velocidad vacías. Si es barato comprobarlo y caro arreglarlo después, debería estar en un hook pre-commit.
Cómo Q2BSTUDIO puede ayudarte En Q2BSTUDIO somos especialistas en desarrollo de software a medida y aplicaciones a medida, y aplicamos estas buenas prácticas en cada proyecto para ahorrar costes operativos y riesgos. Integramos ganchos pre-commit en pipelines locales y remotos, y combinamos estas medidas con servicios de ciberseguridad y pentesting para evitar filtraciones, así como con soluciones de inteligencia artificial e IA para empresas que automatizan validaciones y mejoran la calidad del código. También ofrecemos servicios cloud aws y azure, servicios inteligencia de negocio y soluciones con power bi, agentes IA y automatización para que tu organización obtenga valor real sin gastar de más en minutos de CI innecesarios.
Recomendación final Si estás por añadir otra GitHub Action solo para comprobaciones básicas, para y escribe un hook. Para equipos grandes considera usar el framework pre-commit para gestionar hooks en múltiples repositorios. Pero incluso los ganchos Git simples representan un ahorro enorme en minutos de CI, ciclos de revisión, respuesta a incidentes y desgaste de los desarrolladores. Tu yo futuro, tu equipo y tu factura en la nube te lo agradecerán. Ve y conecta tus commits de forma responsable.
Comentarios