mcpField
G
git-guardrails-claude-code

git-guardrails-claude-code

github.com/leandrocfeAgent 工作流4182 次安装11 周前更新
代码仓库

关于 git-guardrails-claude-code

为 Claude Code 安装 PreToolUse hook,以拦截指定的危险 Git 命令。支持项目级或全局配置,并可调整拦截规则。

主要功能

  1. 01拦截指定的危险 Git 命令
  2. 02支持项目级或全局安装
  3. 03可自定义拦截命令规则
  4. 04提供 hook 验证测试

适用场景

  1. 01防止 Claude Code 意外推送代码
  2. 02拦截破坏性仓库清理命令
  3. 03在项目或全局范围应用 Git 限制

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/leandrocfe/skills --skill git-guardrails-claude-code

安装后在 Claude Code 中输入/git-guardrails-claude-code确认已加载。

附带文件agents/openai.yamlscripts/block-dangerous-git.sh

详细介绍

设置 Git 防护规则

设置一个 PreToolUse 钩子,在 Claude 执行危险的 git 命令前拦截并阻止它们。

会阻止的命令

  • git push(所有变体,包括 --force)
  • git reset --hard
  • git clean -f / git clean -fd
  • git branch -D
  • git checkout . / git restore .

命令被阻止时,Claude 会看到一条消息,告知它无权访问这些命令。

步骤

1. 询问范围

询问用户:是仅为此项目(.claude/settings.json)安装,还是为所有项目(~/.claude/settings.json)安装?

2. 复制钩子脚本

捆绑的脚本位于:scripts/block-dangerous-git.sh

根据范围将其复制到目标位置:

  • 项目:.claude/hooks/block-dangerous-git.sh
  • 全局:~/.claude/hooks/block-dangerous-git.sh

使用 chmod +x 使其可执行。

3. 将钩子添加到设置中

添加到相应的设置文件:

项目(.claude/settings.json):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
          }
        ]
      }
    ]
  }
}

全局(~/.claude/settings.json):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/block-dangerous-git.sh"
          }
        ]
      }
    ]
  }
}

如果设置文件已存在,请将钩子合并到现有的 hooks.PreToolUse 数组中,不要覆盖其他设置。

4. 询问是否需要自定义

询问用户是否要在阻止列表中添加或移除任何模式。相应地编辑复制的脚本。

5. 验证

运行一个快速测试:

echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>

应以代码 2 退出,并向 stderr 打印一条 BLOCKED 消息。

评论

支持 Markdown