* feat: add missing pre-tool-check.sh hook to 06-hooks The LEARNING-ROADMAP.md (Milestone 2A) referenced this file in an exercise that copies it to ~/.claude/hooks/, but the file did not exist. This caused confusion for learners following the guide. The new pre-tool-check.sh is a PreToolUse hook for the Bash matcher that: - Blocks unconditionally destructive commands (rm -rf /, dd, fork bomb, etc.) - Warns on high-risk commands (rm -rf, git push --force, DROP TABLE, etc.) - Reads tool input JSON from stdin (matching Claude Code hook protocol) - Requires no external dependencies (pure bash + grep) Fixes #32 * fix(hooks): correct exit code, remove set -e, use portable sed in pre-tool-check.sh - Change `exit 1` to `exit 2` so Claude Code actually blocks the command (exit 1 is treated as a non-blocking error; exit 2 is required to block) - Remove `set -euo pipefail`: `set -e` caused the script to exit on the first non-matching grep result, skipping all remaining pattern checks - Replace non-portable `grep -o '"command"\s*:\s*"[^"]*"'` with `sed -n 's/.*"command"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p'` which works on both macOS (BSD) and Linux without GNU grep extensions Closes #32 --------- Co-authored-by: Luong NGUYEN <luongnv89@gmail.com>
2.9 KiB
2.9 KiB