mcpField
G
git-guardrails-claude-code

git-guardrails-claude-code

github.com/timschochAgent 工作流0142 次安装4 天前更新
代码仓库

关于 git-guardrails-claude-code

此技能为 Claude Code 配置 PreToolUse 钩子,在执行前拦截危险的 Git 命令。适合希望按项目或全局范围阻止特定操作,并可自定义拦截规则的用户。

主要功能

  1. 01拦截危险 Git 命令
  2. 02支持项目级或全局配置
  3. 03可自定义拦截规则
  4. 04提供脚本验证步骤

适用场景

  1. 01阻止 Claude 执行 git push
  2. 02避免硬重置或强制删除分支
  3. 03按项目配置 Git 操作限制

安装

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

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