From mattpocock-skills
Sets up Claude Code PreToolUse hooks to block dangerous git commands (push, reset --hard, clean, branch -D) before execution. Prevents destructive git ops in AI coding.
npx claudepluginhub joshuarweaver/cascade-content-creation-misc-1 --plugin mattpocock-skills-11This skill uses the workspace's default tool permissions.
Sets up a PreToolUse hook that intercepts and blocks dangerous git commands before Claude executes them.
Installs/uninstalls hooks in Claude Code that block raw git commands like 'git pull' and 'git checkout -b', enforcing git-town alternatives such as 'git town sync' and 'git town hack'.
Installs 695 pre-built safety hooks for Claude Code preventing file deletions, credential leaks, git disasters, and token waste in autonomous AI coding sessions. Use for safe AI-driven development.
Verifies CAS safety hooks in Claude Code settings, cleans legacy manual installations, and confirms automatic protection for git pushes, dangerous bash commands, and secret access.
Share bugs, ideas, or general feedback.
Sets up a PreToolUse hook that intercepts and blocks dangerous git commands before Claude executes them.
git push (all variants including --force)git reset --hardgit clean -f / git clean -fdgit branch -Dgit checkout . / git restore .When blocked, Claude sees a message telling it that it does not have authority to access these commands.
Ask the user: install for this project only (.claude/settings.json) or all projects (~/.claude/settings.json)?
The bundled script is at: scripts/block-dangerous-git.sh
Copy it to the target location based on scope:
.claude/hooks/block-dangerous-git.sh~/.claude/hooks/block-dangerous-git.shMake it executable with chmod +x.
Add to the appropriate settings file:
Project (.claude/settings.json):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
Global (~/.claude/settings.json):
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/block-dangerous-git.sh"
}
]
}
]
}
}
If the settings file already exists, merge the hook into existing hooks.PreToolUse array — don't overwrite other settings.
Ask if user wants to add or remove any patterns from the blocked list. Edit the copied script accordingly.
Run a quick test:
echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>
Should exit with code 2 and print a BLOCKED message to stderr.