feat: pre-commit hook script

This commit is contained in:
2026-05-13 07:54:22 +02:00
parent 1ebffa68a6
commit a325794309

18
.husky/pre-commit Executable file
View File

@@ -0,0 +1,18 @@
#!/usr/bin/env sh
# Pre-commit gates — fast checks only. Slow checks (full conformance, full
# test, full typecheck) stay in CI.
# 1. lint-staged: format + lint staged files
pnpm exec lint-staged || exit 1
# 2. If any docs/work/ markdown is staged, regenerate _state.json + re-stage it
if git diff --cached --name-only | grep -qE '^docs/work/.*\.md$'; then
pnpm work rebuild-state
git add docs/work/_state.json
fi
# 3. Run the state-sync guard: refuses to commit if _state.json is
# staged but doesn't match what rebuild-state would produce. Catches the case
# where someone hand-edits _state.json without going through rebuild-state.
node scripts/work/state-sync-guard.mjs || exit 1