Agent skill · operations · affaan-m
gateguard
强制事实的门控,阻止编辑/写入/Bash(包括MultiEdit),并要求在允许操作之前进行具体调查(导入器、数据模式、用户指令)。与无门控代理相比,可测量地将输出质量提高2.25分。
Why this skill is useful
Adds a comprehensive pre-editing gatekeeping mechanism that enhances output quality through enforced fact-checking and investigation scripts.
What it needs
Requires pip installed locally. About 2k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.
What this skill does
GateGuard — 事实驱动的前置操作门控 一个 PreToolUse 钩子,强制 Claude 在编辑前进行调查。不同于自我评估("你确定吗?"),它要求具体的事实。调查行为本身创造了自我评估永远无法带来的认知。 何时激活 处理任何文件编辑会影响多个模块的代码库时 项目包含具有特定模式或日期格式的数据文件时 团队要求 AI 生成的代码必须匹配现有模式时 任何 Claude 倾向于猜测而非调查的工作流程中 核心概念 LLM 的自我评估不起作用。问"你是否违反了任何策略?"答案永远是"没有"。这已通过实验验证。 但问"列出所有导入此模块的文件"会迫使 LLM 运行 Grep 和 Read。调查本身创造了改变输出的上下文。 三阶段门控: 没有竞争对手能同时做到这三步。大多数止步于拒绝。 证据 两个独立的 A/B 测试,相同的代理,相同的任务: 任务 有门控 无门控 差距 --- --- --- --- 分析模块 8.0/10 6.5/10 +1.5 Webhook 验证器 10.0/10 7.0/10 +3.0 平均 9.0 6.75 +2.25 两个代理生成的代码都能运行并通过测试。区别在于设计深度。 门控类型 编辑/多编辑门控(每个文件的首次编辑) 多编辑的处理方式相同——批次中的每个文件都单独进行门控。 写入门控(首次创建新文件) 破坏性 Bash 门控(每个破坏性命令) 触发条件:rm -rf、git reset --hard、git push --force、drop table 等。 常规 Bash 门控(每个会话一次) 按目标类别提问与已完成调查的认定 以上编辑/写入门控的问题适用于 code 类目标。完整规则见英文版 skills/gateguard/SKILL.md,要点如下: 目标类别: 首次编辑/写入按项目相对路径(去掉开头的 .claude/worktrees/<name>/)依次判定为 instruction(CLAUDE.md、AGENTS.md、SKILL.md、.mdc、.cursorrules、.github/copilot-instructions.md 等)、test、prose(.md 等)、config(.json、.yaml、.env / .env. 等,.env.example.ts 仍属 code)或 code,并提出相应的问题。 按变更内容提问: 对 code 类目标还会读取变更内容:未触及公开声明的编辑改问"本文件或其模块中依赖所改行为的调用点",不涉及数据的变更省略数据格式问题;无法可靠判断(不支持的扩展名、超过 64 KiB 等)以及敏感目标时仍问原来的四个问题。 事先搜索抵免: 若当前人类回合内已有成功完成(非错误结果)的 Glob、Grep、LS 或 rg/grep/find 等搜索命中该文件,则以附注代替拒绝。Read 从不计入;与被门控调用同批次的搜索、重复的 tooluse id、压缩(compaction)之前的搜索均不计入。文件名词干须按单词边界匹配(测试目标先去掉一个测试词缀:.test、.spec,以及 Python/Go 的 test/test,因此 rg tokenizer src tests 可抵免 tests/tokenizer.test.js,而 index.test.js 仍是通用词干 index),且目标须位于所搜索目录之内(shell 片段按其路径参数或 cwd 判定范围;参数前的输入重定向 < 视为读取 stdin)。仅"创建尚不存在的文件"的写入可按目录匹配,且 shell 参数须是真实存在的目录;回合内出现 cd 等切换目录命令时不再按 shell 目录匹配。相对路径按工具的 cwd 解析。排除规则从不计入:Grep 的 glob 中以 ! 开头的项,以及 shell 中 rg -g '!x'、grep --exclude/--exclude-dir、fd -E、ls -I、tree -I、git ls-files -x、git :!x 路径规格、带 -not/! 或后接 -prune 的 find -name/-path、PowerShell -Exclude 都不作为词干来源;若排除项覆盖目标(文件名、路径上的目录或词干),该搜索完全不能为其抵免(rg -g '!widget.py' TODO . 不抵免 widget.py,rg -g '!.md' widget . …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills affaan-m/gateguard--11771c