Two git hooks, tracked in .githooks and wired with core.hooksPath so a
fresh clone gets them with one config line.
pre-commit refuses master and refuses more than 300 changed lines in
non-markdown files. Markdown is exempt because docs land as one batch.
This is a commit-time guard, which diff-budget.sh is not: that hook
blocks the agent's edits and says nothing when either of us commits.
commit-msg requires (V-<id>), not (#<id>). Gitea autolinks # to its own
issues, and Vikunja is the tracker.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>