mcpField
G
git-guardrails-claude-code

git-guardrails-claude-code

github.com/polya20Agent 工作流042 次安装24 周前更新
代码仓库

关于 git-guardrails-claude-code

用于 Claude Code 的技能,通过安装 PreToolUse 钩子拦截指定的危险 Git 命令。支持按项目或全局配置,并可自定义拦截规则。

主要功能

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

适用场景

  1. 01防止意外推送或硬重置
  2. 02为多个项目配置 Git 防护
  3. 03按工作流调整拦截命令

安装

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

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

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

附带文件scripts/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