mcpField
S
safe-repo

safe-repo

github.com/helderberto安全1949 次安装2 天前更新
代码仓库

关于 safe-repo

用于仓库安全审计的技能,可检查已跟踪文件中的凭据、公司专属信息和个人信息。它支持结合历史记录的完整扫描,也可仅扫描变更文件。

主要功能

  1. 01扫描凭据模式
  2. 02检查敏感文件名
  3. 03审查 Git 历史
  4. 04仅扫描变更文件
  5. 05检查 Gitignore 规则
  6. 06报告中隐藏密钥值

适用场景

  1. 01发布前审计仓库
  2. 02提交前检查待提交变更
  3. 03查找历史记录中已删除的密钥

安装

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

$npx skills add https://github.com/helderberto/agent-skills --skill safe-repo

安装后在 Claude Code 中输入/safe-repo确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
report-template.md
scripts/
scan-secrets.sh
scan-secrets.test.sh

详细介绍

安全仓库检查

背景

审计仓库中的敏感数据。检查凭据、API 密钥、公司专属信息和个人身份信息(PII)。

模式

  • 默认(全量扫描):扫描所有 Git 跟踪文件及历史记录。适用于定期审计或首次检查仓库。
  • --diff [<base>]:仅扫描变更内容:分支自 <base> 以来的提交,以及已暂存和未暂存的变更。未指定 <base> → 仅扫描已暂存和未暂存的变更。适用于提交前、从 review 执行或从 to-pr --safe 执行。速度快,不会因已有文件产生误报。

工作流

默认(全量扫描)
  1. 运行 bash ${CLAUDE_SKILL_DIR}/scripts/scan-secrets.sh,扫描所有受跟踪文件中的凭据模式
  2. 按名称检查敏感的受跟踪文件:.env*(.env.example 除外)、*.pem、*.key、*_rsa*、*secret*、*credential*
  3. 分析 Git 历史记录中已删除的密钥:git log --all --full-history -- "*.env" "*.pem" "*.key" "*secret*" "*credential*"
  4. 检查 .gitignore 中的模式是否适当
  5. 报告发现的问题(参见 assets/report-template.md)
--diff 模式
  1. 计算变更文件:指定基准时运行 git diff --name-only <base>...HEAD,并加上 git diff --name-only HEAD 和 git diff --name-only --cached
  2. 仅使用 ${CLAUDE_SKILL_DIR}/scripts/scan-secrets.sh 中的正则表达式扫描这些文件(直接 grep),并执行上述文件名检查
  3. 跳过历史分析(与正在进行的变更无关)
  4. 仅报告变更文件范围内的问题

规则

  • 仅检查 Git 跟踪文件(git ls-files)——忽略本地配置
  • 检查当前受跟踪文件和 Git 历史记录
  • 过滤误报:压缩后的 JS、node_modules、测试夹具、文档
  • 验证 .gitignore 是否涵盖敏感模式
  • 报告包含密钥的受跟踪文件及相关历史提交
  • 切勿在报告中输出实际密钥值

错误处理

  • 如果 Git 历史扫描速度较慢 → 使用 git log --oneline -100 限制为最近 100 次提交

评论

支持 Markdown