mcpField
G
git-guardrails-claude-code

git-guardrails-claude-code

github.com/utarnAgent 工作流4968 次安装8 周前更新
代码仓库

关于 git-guardrails-claude-code

为 Claude Code 配置 PreToolUse 钩子的技能,可在执行前拦截指定的危险 Git 命令。支持项目级或全局安装,并可自定义拦截规则。

主要功能

  1. 01拦截指定的破坏性 Git 命令
  2. 02项目级或全局安装
  3. 03将钩子合并到现有设置
  4. 04自定义命令拦截规则
  5. 05验证钩子的测试

适用场景

  1. 01防止意外强制推送
  2. 02保护工作树免遭破坏性命令影响
  3. 03在多个项目中应用 Git 限制

安装

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

$npx skills add https://github.com/utarn/engineer-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