nk-publish-gate:AI Agent 工具实践指南

作者:袖梨 2026-10-02

实际看nk-publish-gate,先要确认它的用途:在存储库或 zip 公开之前的一分钟的隐私门,查找私有但不是秘密的内容:xlsx 中的主路径、.pyc 中的用户名、提交历史记录中的个人地址,保留 gitleaks 的秘密。内容与市场工作里,受众、平台规则和事实依据容易被统一模板抹平。我会选一个已有主题制作可人工复核的样稿,检查事实准确性、平台适配、语气和修改成本。它适合有明确品牌标准并保留人工审校的团队;采用前仍要看维护状态和试跑结果。

NickkkLian/nk-publish-gate 项目截图 1

名称:nk-发布门 描述:“在任何内容公开之前运行的隐私门(存储库、发布 zip、演示文件夹、PDF):它查找私有但不是秘密的内容,例如 xlsx 内的主目录路径、.pyc 中的用户名或提交历史记录中的个人地址。当您要推送到公共存储库、公开私有存储库、将文件附加到帖子或将捆绑包交给外部人员时使用。扫描每个文件,无论扩展名如何,打开三层深度的档案(包括成员名称),膨胀 PDF 流,将二进制文件扫描为字节,并使用 --git-range 扫描每个提交的作者、消息和 blob,因为发布一个存储库会发布其整个历史记录。自己截图。” 许可证:MIT 元数据: 出处:自己的实践(2026-07 至 2026-09);没有外部来源 版本:0.1.4

发布门

发布文件夹会发布其中的每个字节,包括您看不到的字节:存档成员、PDF 流、缓存文件以及历史记录中的每个提交。 该门在推送之前会查看这些字节。

路径。 此技能中的命令以 ${…SKILL_DIR} 开头:此技能自己的文件夹,即包含此 SKILL.md 的文件夹。 Claude Code 会填写该内容。如果您的代理显示所写的占位符(Codex、Cursor、Gemini CLI 等),请在运行命令之前将其替换为该文件夹的绝对路径。如果放任不管,它就会扩展为空,路径就会断裂。

当这适用时

  • 将 git push 连接到公共远程,或将存储库从私有翻转为公共。
  • 即将附加到帖子、电子邮件、问题的 zip / xlsx / docx / pdf / 图像。
  • 交给客户、审阅者、承包商的演示文件夹。

一次性设置(两分钟)

  1. 将您的标识符写入每个存储库外部的配置中: python3 ${CLAUDE_SKILL_DIR}/scripts/publish_gate.py --init-config ~/.config/publish-gate/gate.json 然后填写列表:identifiers(句柄,邮箱名称),legal_names,urls(个人站点, 社交资料)、usernames(登录名、主机名)、private_names(内部项目或存储库) 名称)、allowed_author_emails(您提交的 noreply 地址)、extra_local_paths。
  2. 运行一次自检:python3 ${CLAUDE_SKILL_DIR}/scripts/publish_gate.py --selftest。

如果没有配置,内置规则仍然会运行(秘密、本地路径、电话、电子邮件、垃圾文件),但是 报告在第一行就这样说了——你自己的标识符不会被检查。

程序

  1. 完全按照将要发布的方式扫描树(您将从中推送的克隆,而不是您的工作副本): python3 ${CLAUDE_SKILL_DIR}/scripts/publish_gate.py <dir> --git-range origin/main..HEAD --json gate.json 对于首次公开的存储库,请使用 --git-range HEAD(所有历史记录)。
  2. 按顺序读取四个列表:RED(修复或添加允许条目 RULES::GLOB::REGEX 并给出原因;它必须 覆盖匹配的文本本身,参见references/config-guide.md), ALLOWED(仍然打印 - 每个允许条目都是某人可以审查的决定),NOTE(图像,大 文件,AI 档案内的工具名称:人类的样子),UNSCANNED(大门无法打开的任何东西 - 用手打开或取出)。
  3. 仅当 RED 为空时,判决为绿色。将报告放在推送证据旁边。
  4. 历史是肮脏的,必须公开吗?重写前用references/history-decision.md决定。
  5. 推送后,从公共URL克隆并再次扫描克隆。克隆就是世界所拥有的。

它寻找的是秘密扫描仪无法发现的东西

秘密扫描器(gitleaks、trufflehog)会查找凭据,并且比此门更擅长:运行一个 好吧。这个门主要是关于什么不是凭证,仍然不应该公开:

  • __pycache__/ 中的 .pyc 在路径字符串中包含本地用户名。
  • .xlsx 内的 xl/styles.xml 中的主目录路径,或嵌套在该 xlsx 中的 zip 内。
  • Flate 压缩的 PDF 内容流内的路径。
  • 作者电子邮件是个人邮箱而不是noreply 地址。
  • 您自己的配置标识符:句柄、合法名称、主机名、私有项目名称。
  • 电话号码和电子邮件地址并非官方虚构的。

它还带有一个简短的秘密规则(十四个密钥格式和 api_key = <long value>- 样式分配),并带有 --git-range 它发现一个已提交然后被删除的秘密。该规则是一个保障,而不是一个扫描仪。

边界

  • 在 PDF 中绘制为字形轮廓的文本以及屏幕截图内的任何内容对其不可见(NOTE 列出 图像,以便您查看)。加密档案列为 UNSCANNED。
  • 它不是秘密扫描仪。秘密规则知道十四种关键格式(Anthropic、OpenAI、GitHub、AWS、Slack、 Google、Stripe live 密钥、npm、GitLab、SendGrid、Twilio、Hugging Face、签名 JWTs、PEM 私钥);任何其他 格式通过,除非它位于 api_key =、token =、secret = 或 password = 后面。使用 gitleaks 或 trufflehog 为了秘密; gitleaks 并不是在这个门旁边运行的,因此没有声称有正面交锋的数字。
  • 规则是正则表达式:拼写不同的名称会通过。
  • 它不判断文件的“存在”是否应该公开。这个问题是你的。

出处

自己的实践,2026-07 至 2026-09。规则集一次增长一个事件:种子数据嵌入到 公共应用程序模板;公开的回购协议,其历史记录仍然包含帐户名称和内部注释;一个 .pyc 的用户名通过,因为扫描排除了缓存目录;过时的 README 命令; 作为提交作者的个人地址。现在每一个都是自测样本。没有外部来源。

相关文章

精彩推荐