关于 git-guardrails-claude-code
git-guardrails-claude-code 是一项为 Claude Code 安装 Git 安全防护的技能,通过 PreToolUse hook 拦截指定的危险命令。它支持按当前项目或所有项目设置,并可调整拦截规则。
主要功能
- 01拦截指定的危险 Git 命令
- 02支持项目级或全局安装
- 03合并现有 hook 设置
- 04自定义命令拦截列表
- 05运行脚本测试验证拦截
适用场景
- 01防止 Claude 执行强制推送
- 02阻止硬重置或清理文件
- 03为多个项目统一配置 Git 防护
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ vinvcn/ mattpocock-skills-zh-cn --skill git-guardrails-claude-code安装后在 Claude Code 中输入/git-guardrails-claude-code确认已加载。
附带文件agents/openai.yamlscripts/block-dangerous-git.sh
README 原文English
来自项目 READMEREADME 暂无中文译文,以下为英文原文;中文介绍见上方。
设置 Git Guardrails
设置一个 PreToolUse hook,在 Claude 执行危险 git commands 前拦截并阻止它们。
会被阻止的命令
git push(包括--force在内的所有 variants)git reset --hardgit clean -f/git clean -fdgit branch -Dgit checkout ./git restore .
被阻止时,Claude 会看到一条 message,说明它无权访问这些 commands。
步骤
1. 询问安装范围
询问用户:只为当前 project 安装(.claude/settings.json),还是为所有 projects 安装(~/.claude/settings.json)?
2. 复制 hook 脚本
bundled script 位于:scripts/block-dangerous-git.sh
根据 scope 复制到目标位置:
- Project:
.claude/hooks/block-dangerous-git.sh - Global:
~/.claude/hooks/block-dangerous-git.sh
用 chmod +x 让它可执行。
3. 把 hook 加入 settings
添加到对应 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"
}
]
}
]
}
}
如果 settings file 已存在,把 hook merge 到现有 hooks.PreToolUse array 中,不要覆盖其他 settings。
4. 询问是否定制
询问用户是否要在 blocked list 中添加或移除 patterns。相应编辑复制后的 script。
5. 验证
运行快速测试:
echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>
应以 code 2 退出,并向 stderr 打印 BLOCKED message。