From a325794309b49aad72bd9a2a8c2b098e7c3e601f Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Wed, 13 May 2026 07:54:22 +0200 Subject: [PATCH] feat: pre-commit hook script --- .husky/pre-commit | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 .husky/pre-commit 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