Hook detects staged changes to stack.toml or .woodpecker/templates/, runs gen_config.py, and stages the 5 generated files into the same commit. Zero manual steps — change the domain in stack.toml and commit, everything propagates automatically. Hook source tracked in dev/hooks/pre-commit for reproducibility.