Infraestructura de git hooks para el desarrollo de un plugin, editor-agnóstica: corre la suite de tests antes de cada commit en cualquier CLI o editor, y se instala con un solo comando tras clonar.
Los hooks en .git/hooks/ no se versionan (git excluye .git/ por diseño, y
distribuir hooks ejecutables sería un vector de ataque). La solución estándar es
versionar los hooks dentro del repo y distribuir un setup.sh que crea symlinks a
.git/hooks/. Así el desarrollador los instala una vez y corren en cualquier editor.
Un hook de Claude Code (.claude/settings.json) no sirve acá: solo lo lee Claude
Code. Un git hook real corre en Codex, OpenCode, Gemini CLI, o git desde la terminal.
- Copiá los archivos a tu plugin (adaptando idioma/rutas si hace falta):
files/setup.sh → bin/dev/setup.sh files/pre-commit → bin/dev/git-hooks/pre-commit files/test-hooks.sh.example → bin/dev/test-hooks.sh (renombrar, llenar con tus tests) files/ci-test.yml → .github/workflows/test.yml - Escribí tus casos de test reales en
bin/dev/test-hooks.shsiguiendo el patrón del esqueleto (cada caso en un tmpdir aislado, verifica exit code + salida). - Hacé ejecutables los scripts y corré el setup:
chmod +x bin/dev/setup.sh bin/dev/git-hooks/* bash bin/dev/setup.sh setup.shinstala los hooks via symlink. Cada desarrollador lo corre una vez después de clonar (documentalo en el README del plugin — ver featuredocs-conventions).
Nota:
setup.shinstala tantopre-commitcomopost-commit. Elpost-commitlo aporta el featureversioning. Si no usás versionado automático, quitá la líneainstall_hook "post-commit"desetup.sh.
Después de integrar, verificá que el arnés corre:
bash bin/dev/test-hooks.shY que el pre-commit dispara los tests al commitear:
git commit -m "test: verificar hook" # debe correr la suite antes de aceptar- 1.0.0 — versión inicial migrada desde
todo-plugin.