pre‑commit hooks