Files
trailofbits-claude-code-config/hooks/enforce-package-manager.sh
T
Dan Guido 00183c41fe Initial commit
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 01:28:00 -05:00

16 lines
478 B
Bash
Executable File

#!/bin/bash
set -euo pipefail
# EXAMPLE: PreToolUse hook — blocks npm in projects that use pnpm.
# Adapt for any "use X not Y" convention (e.g., yarn vs npm, uv vs pip).
CMD=$(jq -r '.tool_input.command // empty')
[[ -z "$CMD" ]] && exit 0
# Only enforce if this project uses pnpm
[[ ! -f "${CLAUDE_PROJECT_DIR}/pnpm-lock.yaml" ]] && exit 0
if echo "$CMD" | grep -qE '^npm\s'; then
echo "BLOCKED: This project uses pnpm, not npm. Use pnpm instead." >&2
exit 2
fi
exit 0