Files
agentic-dev/.husky/pre-commit
Danijel Martinek a5355ee9e7 feat(scripts): add pre-commit library-decisions check + tests
Adds scripts/library-decisions/check.mjs that walks staged package.json
diffs, derives tier from path, and fails the commit when a new runtime
dependency in a feature- or core-tier package has no sibling approved
trace staged in docs/library-decisions/.

App-tier additions and devDependency / peerDependency additions are
silently allowed. Wired into .husky/pre-commit as step 4.

check.test.mjs covers all 7 Done-when cases using temp git repo
fixtures (node:test + node:assert, same pattern as schema.test.mjs).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 05:27:12 +00:00

22 lines
828 B
Bash
Executable File

#!/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
# 4. Check library decision traces for new runtime deps in feature/core packages.
node scripts/library-decisions/check.mjs || exit 1