mcpField
G
git-guardrails-claude-code

git-guardrails-claude-code

github.com/vinvcnAgent 工作流5.4k5.5k 次安装1 天前更新
代码仓库

关于 git-guardrails-claude-code

git-guardrails-claude-code 是一项为 Claude Code 安装 Git 安全防护的技能,通过 PreToolUse hook 拦截指定的危险命令。它支持按当前项目或所有项目设置,并可调整拦截规则。

主要功能

  1. 01拦截指定的危险 Git 命令
  2. 02支持项目级或全局安装
  3. 03合并现有 hook 设置
  4. 04自定义命令拦截列表
  5. 05运行脚本测试验证拦截

适用场景

  1. 01防止 Claude 执行强制推送
  2. 02阻止硬重置或清理文件
  3. 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

来自项目 README

README 暂无中文译文,以下为英文原文;中文介绍见上方。

设置 Git Guardrails

设置一个 PreToolUse hook,在 Claude 执行危险 git commands 前拦截并阻止它们。

会被阻止的命令

  • git push(包括 --force 在内的所有 variants)
  • git reset --hard
  • git clean -f / git clean -fd
  • git branch -D
  • git 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。

评论

支持 Markdown