SuperAPI AI 工具集

review

安全与审计

查看项目

更新于 10-15 09:28

技能介绍

用途

review 是 git-repo-prep 技能集中的一个审计技能,用于在代码仓库公开(开源发布)之前,检查仓库在“开放性”方面是否存在问题。它关注的是让仓库适合公开所需的事项,而不是代码质量本身。技能说明中明确:这是开放性审计,不是代码质量审查,不应评论错误处理、架构、性能、代码风格、测试覆盖质量或设计模式。该技能可重复运行,在任意阶段都可以执行。

主要能力

技能会先建立一份 TodoWrite 检查清单,覆盖全部审计类别,并在每项开始前标记为 in_progress、完成后立即标记为 completed。审计类别包括:

  • 密钥扫描(Secrets scan)
  • 个人信息扫描(Personal info scan)
  • 许可证检查(License check)
  • 文档检查(Documentation check)
  • .gitignore 检查(Gitignore check)
  • CI/CD 检查(CI/CD check)
  • 元数据检查(Metadata check)
  • 呈现发现与总结

在开始前,技能会先做生态检测,根据仓库中的文件判断项目生态,并据此调整检查项:

  • package.json → Node.js
  • pyproject.toml / setup.py / setup.cfg → Python
  • Cargo.toml → Rust
  • go.mod → Go
  • *.csproj / *.sln → .NET
  • Gemfile → Ruby
  • pom.xml / build.gradle → Java/Kotlin

各审计类别的检查内容

1. 密钥(Secrets)

在源码文件中搜索以下模式:sk_live、sk_test、ghp_、AKIA、password\s*=、secret\s*=、token\s*=、api_key、-----BEGIN.PRIVATE KEY、带内嵌凭据的连接字符串。检查仓库任意层级是否存在 .env 文件;检查 .gitignore 是否包含 .env 与 .env. 排除模式;查找 .pem、.key 或凭据文件。

严重级别划分:API key、密码、token、.env 被提交为 Critical;.env 出现在 gitignore 中为 Recommended;git 历史扫描为 Nice-to-have。

2. 个人信息(Personal info)

检查包元数据中的 author 字段(package.json author、pyproject.toml authors、Cargo.toml authors);在源码文件中搜索邮箱模式(\b\S+@\S+.\S+\b),排除 node_modules、vendor 和 lock 文件;查找配置或源码中硬编码的用户名(DEFAULT_USER、AUTHOR、URL 或路径中的用户名)。

严重级别:源码中的真实姓名/邮箱为 Critical;author 字段审查为 Recommended;用户名清理为 Nice-to-have。

3. 许可证(License)

技能说明这是最常被遗漏的领域,需要检查三个位置并相互比对:LICENSE 文件是否存在、包含哪种许可证;包元数据(package.json / pyproject.toml / Cargo.toml)中的 license 字段;README 中是否有许可证章节且指明同一许可证。三者之间任何不一致都要标记,任一位置缺失也要标记。

严重级别:没有 LICENSE 文件为 Critical;LICENSE 文件与包元数据不一致、README 中没有许可证章节为 Recommended;源码文件中的许可证头为 Nice-to-have。

4. 文档(Documentation)

README 是否存在、是否非空、是否包含项目描述、安装/快速开始、使用说明、许可证章节;CONTRIBUTING.md 是否存在;SECURITY.md 是否存在。

严重级别:没有 README 或 README 为空为 Critical;缺少安装/使用章节为 Recommended;CONTRIBUTING.md、SECURITY.md、CLAUDE.md 为 Nice-to-have。

5. .gitignore

检查 .gitignore 是否存在;对照生态最佳实践:

  • Node.js:node_modules/、.env、dist/、coverage/
  • Python:pycache/、.pyc、.env、.egg-info/、dist/、.venv/
  • Rust:target/、.env
  • Go:vendor/(若不使用 vendoring)、.env
  • 通用:.env、.env.、.log、.DS_Store、.pem、.key

检查是否有敏感文件已被 git 跟踪(对 .env、凭据、密钥执行 git ls-files)。

严重级别:敏感文件被跟踪/提交为 Critical;缺少生态常见模式为 Recommended;IDE/OS 文件为 Nice-to-have。

6. CI/CD

查找 .github/workflows/、.gitlab-ci.yml、Jenkinsfile、.circleci/ 等;检查是否有 Dependabot 配置(.github/dependabot.yml)或 Renovate(renovate.json)。

严重级别:该类别没有 Critical 项;没有 CI 流水线、完全没有测试(CI 无法运作)为 Recommended;没有 dependabot、没有 hooks、没有覆盖率为 Nice-to-have。

7. 元数据(Metadata)

按生态检查元数据完整性:

  • Node.js:package.json 中的 repository、engines、keywords、description
  • Python:pyproject.toml 中的 [project.urls]、classifiers、requires-python、keywords、description
  • Rust:Cargo.toml 中的 repository、keywords、categories、description
  • Go:模块路径与仓库 URL 匹配、包文档注释

严重级别:该类别没有 Critical 项;包元数据中没有仓库 URL 为 Recommended;缺少 engine/version、keywords、description 为 Nice-to-have。

使用方式

技能开始时需要声明:“I'm using git-repo-prep:review to audit this repo for openness.” 然后建立 TodoWrite 检查清单,按类别顺序逐项执行。发现结果以对话形式呈现,不写报告文件。结果按严重级别分组,从最紧急的开始:Critical(公开前必须修复)、Recommended(为高质量发布应处理)、Nice-to-have(打磨改进)。每条发现需简要描述问题、用一句话说明它对开放性的影响,并主动提出可以立即修复。最后给出统计:“X critical, Y recommended, Z nice-to-have findings.” 如果存在 Critical 发现,建议在发布前处理;如果没有,则说明仓库看起来已就绪,并建议处理 Recommended 项以进一步打磨。

适用场景

适合在将代码仓库公开(开源发布)之前做发布前自查,也适合在开发过程中任意阶段重复运行,用于持续检查密钥泄露、个人信息、许可证一致性、文档完整性、.gitignore 覆盖、CI/CD 配置和元数据完整性。

限制

技能明确限定为开放性审计,不评估代码质量,不评论错误处理、架构、性能、代码风格、测试覆盖质量或设计模式。严重级别必须严格按技能给出的表格分类,不得自行发明类别,也不得升级或降级严重级别。发现结果以对话形式呈现,不生成报告文件。