diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..dfbf41f --- /dev/null +++ b/.husky/pre-commit @@ -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