1. 基本信息
| 项目 | 内容 |
|---|---|
| 名称 | git-guardrails-claude-code-mattpocock-skills |
| 作者/维护者 | Matt Pocock(个人开发者,mattpocock/skills 仓库维护者) |
| 来源链接 | https://github.com/mattpocock/skills/tree/main/skills/misc/git-guardrails-claude-code |
| 许可证 | MIT(数据来自 GitHub API) |
| GitHub Stars | 合集仓库整体 228,284 stars;该数字属整个合集,不代表本技能自身热度(数据来自 GitHub API) |
| Forks | 合集仓库整体 19,545(数据来自 GitHub API) |
| 最新版本 | 未标注独立版本号——本技能不在官方 Claude Code 插件清单(plugin.json,整体版本 1.2.3)内,随仓库 commit 迭代(数据来自 GitHub API,最近一次改动 2026-08-19) |
| 安装方式 | npx skills@latest add mattpocock/skills --skill=git-guardrails-claude-code(本技能未被打包进官方插件,/plugin install mattpocock-skills 不会安装它) |
2. 功能介绍与亮点
git-guardrails-claude-code 为 Claude Code 配置一个 PreToolUse 钩子,在危险的 Git 命令真正执行前拦截它们,包括 git push(含 --force)、git reset --hard、git clean -f/-fd、git branch -D、git checkout ./git restore .。命令一旦命中拦截规则,Claude 会收到“没有权限执行该命令”的提示,用户需要手动确认才能继续。
核心亮点:
- 纯本地 Shell 脚本:拦截逻辑是一个不到 20 行的 Bash 脚本(
scripts/block-dangerous-git.sh),逐条模式匹配命令文本,无网络调用、无第三方依赖,源码完全公开可审计。 - 安装范围可选:支持按项目(
.claude/settings.json)或全局(~/.claude/settings.json)两种作用域安装,安装脚本会引导用户选择,并在写入前合并而非覆盖已有的 hooks 配置。 - 可自定义拦截规则:安装步骤中明确提示用户可以增删被拦截的命令模式。
- 三方自动化安全审计全部通过:skills.sh 上的 Gen Agent Trust Hub、Socket、Snyk 三项审计均为 Pass。
3. 适用场景
所属分类:元技能与 Agent 增强(配置 Claude Code 自身的行为防线,属于“调教你的 agent”而非某个业务领域)。
任何用 Claude Code 处理真实代码仓库的用户,都可能遇到 agent 在未充分确认的情况下执行 git push --force、git reset --hard 等破坏性命令、造成提交或工作区丢失的场景。该技能适合:
- 让 agent 拥有终端访问权限、又不放心它单独操作远程分支的个人开发者
- 需要为团队统一一套“Claude Code 安全基线”的工程负责人
- 在 CI/自动化流水线之外,仍希望本地会话保留一道人工确认闸门的场景
4. 跨 Agent 兼容性
- Claude Code:原生支持。技能直接生成 Claude Code 的
PreToolUsehook 配置(.claude/settings.json或~/.claude/settings.json),机制是 Claude Code 专有的。 - Codex:需适配。Codex CLI 自 v0.114(2026 年 3 月)起也提供了结构类似的
PreToolUsehooks.json 机制(同样支持按 Bash 命令做拒绝决策),但该机制默认关闭且为实验特性,配置文件路径与 schema 与 Claude Code 不同,本技能的安装步骤未做适配,需要用户手动改写为 Codex 的 hooks.json 格式。仓库为其准备了agents/openai.yaml元数据文件,但内容仅为显示名称,不含功能适配。 - OpenClaw:未验证——未找到该平台是否支持等价的命令级拦截钩子的公开资料。
- Hermes Agent:未验证——同上。
5. 推荐理由
对任何授权 Claude Code 直接操作终端与 Git 的用户来说,一次误判的 git push --force 或 git reset --hard 就可能造成不可逆的提交丢失。这个技能把“危险命令需要人工确认”这条防线从口头约定变成了机器强制执行的钩子,而且实现本身足够小、足够透明,可以在装上之前完整读完全部源码。相比单纯依赖 Claude Code 内置的 deny 规则或提示词约束,钩子在工具调用发生前就会执行,不依赖模型在运行时“记得”要谨慎。
6. 评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 受欢迎程度 | 8 | skills.sh 平台安装量约 249.8K,在该合集仓库数十个子技能中处于中等偏上水平;发布方为个人开发者,不适用官方保底条款;目前未找到专门针对该子技能的独立第三方媒体评测 |
| 可用性 | 8 | 单条命令安装、步骤清晰、近期(2026-08-19)有提交维护;但存在一个已知未修复的功能缺陷(见下方注意事项),已在文档之外单独核实 |
| 安全性 | 8 | 拦截脚本纯本地执行、无外联、无凭据索取,源码公开可完整审计,License 明确为 MIT;三方自动化审计(Gen Agent Trust Hub / Socket / Snyk)均为 Pass |
安全检查清单逐项结果: ① Shell 命令执行——有,且范围明确:脚本只读取 Claude Code 传入的候选命令文本做模式匹配,本身不执行任何 Git 操作,仅决定放行或拦截。 ② 运行时联网——无,纯本地文本匹配,零外发。 ③ API Key/凭据——不涉及,技能本身不索取任何凭据。 ④ 可疑指令——未发现 prompt injection 或隐蔽外发迹象,脚本逻辑完全透明。 ⑤ 作者信誉——个人开发者,无造假或刷星迹象。 ⑥ License——MIT,明确。 ⑦ 最近维护——仓库整体每日均有提交,本技能所在文件最近一次改动为 2026-08-19。
7. 跟同类 Skills 相比的优势
| 技能 | 定位 | 与本技能的差异 |
|---|---|---|
| cc-safety-net | 面向 Claude Code 的另一套安全防护技能 | 覆盖范围更泛化(不限于 Git 命令),但不专门针对 Git 破坏性操作做逐条模式识别 |
| hookify(Anthropics 官方) | Claude Code hook 配置的通用辅助工具 | 提供的是“如何写 hook”的通用能力,本身不内置任何具体的危险命令拦截规则,需要用户自己设计规则 |
Claude Code 内置 deny 规则 |
Claude Code 原生的工具调用权限控制 | 需要用户手写权限表达式且粒度较粗,本技能提供的是开箱即用、针对 Git 场景预先调好的规则集,并支持二次自定义 |
8. 用户评价
该技能目前在 GitHub Issues、Reddit、Hacker News 等平台尚无具名用户评价;仓库整体因 2026 年初一次性开源获得广泛关注(GitHub Trending 全球第一、24 小时内新增约 2.2 万星),但相关报道均围绕仓库整体,未见针对本技能的单独讨论。
9. 其他补充
无。
10. 安装使用方式
渠道一(推荐,适用于 Codex 等其他 agent 或希望直接编辑技能文件的用户):
npx skills@latest add mattpocock/skills --skill=git-guardrails-claude-code
安装器会写入可编辑的技能文件到项目目录;后续可用 npx skills update 拉取上游更新。
渠道二(Claude Code 用户,需额外手动获取):由于本技能不在官方插件(/plugin install mattpocock-skills)的默认清单内,即使已安装该插件,也需要用上面的 npx skills@latest add 命令单独获取本技能,或直接从仓库复制 skills/misc/git-guardrails-claude-code/ 目录下的 SKILL.md 与 scripts/block-dangerous-git.sh 到自己的 .claude/skills/ 目录。
安装后注意事项:
- 技能运行时会询问安装作用域(当前项目 or 全局),并据此把
scripts/block-dangerous-git.sh复制到.claude/hooks/或~/.claude/hooks/,同时把 hook 配置合并进对应的settings.json;无需重启 Claude Code,新开会话即生效。 - 安装完成后建议按文档给出的验证命令手动测试一次拦截是否生效。
11. 注意事项
- 已知未修复缺陷(截至 2026-08-21,GitHub issue #898,2026-08-18 提出):拦截脚本依赖
jq解析输入,但脚本未检查jq是否安装、也未在解析失败时报错——如果运行环境缺少jq,脚本会静默放行所有命令,包括本应被拦截的危险操作;同时,脚本按原始文本做模式匹配,像git -C /tmp push origin main(携带全局选项)、git branch --delete --force(-D的等价长写法)、git clean -d -f(-fd的顺序调换写法)这类常见拼写变体目前不会被识别为危险命令,会被直接放行。使用前建议确认本机已安装jq,并了解该拦截规则不是穷举式的。 - 另有一条较早的 open issue(#465,2026-08-04 提出)指出文档未说明该技能相比 Claude Code 内置
deny规则的具体优势,截至复核仍未补充。 - 该技能只拦截其规则列表中列出的命令模式,不能替代仓库层面的分支保护、备份或代码评审等纵深防御手段。