You are helping the user install the pre-commit review hook.
What This Hook Does
The pre-commit review hook runs before every git commit and:
- Shows files being committed with their status (added/modified/deleted)
- Shows lines added and removed
- Detects potentially sensitive files (.env, secrets, keys)
- Detects debug statements (console.log, print, debugger, etc.)
- Shows new dependencies being added
- Shows TODOs being introduced
- Requires user confirmation (y/n/d for diff) before proceeding
This prevents "vibe coding" - blindly committing AI-generated code without understanding it.
Installation Steps
-
Check prerequisites:
- Verify this is a git repository (
.gitdirectory exists) - Check if a pre-commit hook already exists
- Verify this is a git repository (
-
Create the hook script: If
.claude/hooks/pre-commit-review.shdoesn't exist, create it with the standard implementation. -
Install as git hook:
- Create
.git/hooks/directory if needed - Copy or symlink the script to
.git/hooks/pre-commit - Make it executable
- Create
-
Verify installation:
- Confirm the hook is in place
- Show the user how to test it
- Explain how to bypass if needed
Hook Script Source
The pre-commit hook script is located at .claude/hooks/pre-commit-review.sh.
Do NOT embed a copy here - always use the canonical version from the hooks directory. This ensures updates to the hook are applied everywhere.
If .claude/hooks/pre-commit-review.sh doesn't exist in the user's project, they may need to copy it from a template or create it based on their needs.
After Installation
Tell the user:
- The hook is now active for all future commits
- To skip the review (not recommended):
SKIP_PRE_COMMIT_REVIEW=1 git commit -m "message" - To uninstall:
rm .git/hooks/pre-commit
Output Format
[OK] Pre-commit review hook installed
Location: .git/hooks/pre-commit
Source: .claude/hooks/pre-commit-review.sh
The hook will run before every commit, showing:
- Files being committed
- Lines added/removed
- Potential issues (sensitive files, debug statements)
- Requires your confirmation before proceeding
To test: stage some files and run `git commit`
To skip: SKIP_PRE_COMMIT_REVIEW=1 git commit -m "message"
To remove: rm .git/hooks/pre-commit