Ward vs pre-commit: ¿cuál es la diferencia?
Actualizado
El framework pre-commit gestiona hooks de Git que se ejecutan al hacer commit. Ward revisa el código en cuatro momentos, empezando por cada edición de tu agente de código, e instala sus propios hooks de Git para las capas de commit y push.
¿Qué hace bien el framework pre-commit?
Según la documentación de pre-commit: es un framework para gestionar y mantener hooks de pre-commit en varios lenguajes. Listas hooks de muchos repositorios en .pre-commit-config.yaml y los instala y ejecuta en git commit. Los hooks también pueden ejecutarse en otras etapas de Git, y puedes lanzarlos a mano sobre todos los archivos. Si quieres elegir formateadores y linters de un gran catálogo compartido de hooks, encaja bien.
¿Qué hace Ward de forma distinta?
Ward empieza antes. Tras cada edición del agente, Ward ejecuta una comprobación rápida sobre los archivos editados y le da el fallo al agente, que lo corrige antes de llegar a hacer commit. Ward también tiene reglas propias, tests y cobertura, escáneres de seguridad y capa de CI, todo en un solo ward.toml. Para Git instala hooks con ward init --quality-hooks: pre-commit ejecuta las comprobaciones rápidas sobre los archivos en staging, y pre-push añade compilación, tests y cobertura.
¿Cuándo es mejor pre-commit?
- Tu equipo ya lo usa y los hooks que necesitas existen en su catálogo.
- Solo quieres hooks al hacer commit, sin integración con agentes.
- Quieres mezclar muchos hooks pequeños e independientes de distintos autores.
¿Puedo usar Ward y pre-commit juntos?
Sí. La documentación de Ward dice que un gestor de hooks que reescribe los archivos de hook puede eliminar la sección de Ward, y te indica añadir ward check --profile pre-commit a la configuración de ese gestor. Con el framework pre-commit, eso significa un hook local que llame a Ward. Conservas tus hooks y Ward añade la capa de edición del agente y las capas más estrictas.
ward check --profile pre-commit
¿Qué hago ahora?
¿Listo para probarlo? Instala Ward y ejecuta ward init en tu proyecto.