mcpField
G
git-guardrails-claude-code

git-guardrails-claude-code

github.com/akillnessAgent 工作流5364 次安装1 天前更新
代码仓库

关于 git-guardrails-claude-code

为 Claude Code 配置 Git 安全钩子的技能,在危险命令执行前拦截操作。适合希望限制破坏性 Git 操作的项目或用户,并支持项目级与全局安装及规则自定义。

主要功能

  1. 01拦截危险 Git 命令
  2. 02支持项目级或全局配置
  3. 03可自定义拦截规则
  4. 04通过测试命令验证钩子

适用场景

  1. 01阻止 Claude Code 执行 git push
  2. 02防止硬重置或清理工作区
  3. 03为多个项目配置统一限制

安装

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

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

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

附带文件scripts/block-dangerous-git.sh

详细介绍

Claude Code 的 Git 防护栏

设置 Claude Code 钩子,在危险的 Git 命令(push、reset --hard、clean、branch -D 等)执行前将其拦截。适用于用户希望阻止破坏性 Git 操作、添加 Git 安全钩子,或在 Claude Code 中阻止 git push/reset 的场景。

此技能从 mattpocock/skills(MIT)导入,上游通过模型调用。

何时使用此技能

  • 设置 Claude Code 钩子,在危险的 Git 命令(push、reset --hard、clean、branch -D 等)执行前将其拦截。
  • 适用于用户希望阻止破坏性 Git 操作、添加 Git 安全钩子,或在 Claude Code 中阻止 git push/reset 的场景。

说明

设置 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 消息。

示例

  • 先将此技能应用于一个较小的范围,确认输出符合上述格式,再扩大到整个任务。
  • 如果某个步骤需要从代码库或环境中获取信息,请先查找,而不是询问用户。

最佳实践

  • 保持上游流程不变;如有偏离,请明确记录,不要擅自调整。
  • 在此技能标明由用户决策的每个节点暂停,并将控制权交还用户。
  • 优先进行小幅、可撤销的更改,并明确说明假设,不要将其隐去。

参考资料

  • 上游技能:mattpocock/skills skills/misc/git-guardrails-claude-code/SKILL.md(提交 3cca18b,MIT)
  • 脚本:scripts/block-dangerous-git.sh
  • 项目规范:.agent-skills/skill-standardization/SKILL.md
  • 验证器脚本:.agent-skills/skill-standardization/scripts/validate_skill.sh

评论

支持 Markdown