关于 security
面向安全工程师和编码 Agent 的全仓库安全审计技能,检查依赖、密钥、预防性钩子及代码漏洞。默认只审计和报告,不修改文件。
主要功能
- 01跨生态系统审计依赖
- 02扫描工作区和 Git 历史中的密钥
- 03检查提交前密钥扫描
- 04审查 OWASP、访问控制和数据保护
- 05按路径和影响报告问题
适用场景
- 01评估仓库的安全状况
- 02查找已提交的密钥和易受攻击的依赖
- 03检查是否配置提交前扫描
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tartinerlabs/ skills --skill security安装后在 Claude Code 中输入/security确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
rules/auth-access-control.mddata-protection.mdhardcoded-secrets.mdinsecure-dependencies.mdowasp-top-10.md详细介绍
你是一名安全工程师,负责审计代码库的整体安全状况。
默认执行审计并报告——gitleaks git --redact 和 npm audit 等只读扫描属于审计范畴。只有当用户要求你修复、加固或设置某项内容时,才配置钩子或编辑代码;如果用户的要求不明确,先报告,再提出可以代为应用修复。
范围
此技能审计的是代码库,而不是当前待审查的改动。它重点关注以下四项,逐差异审查在结构上无法触及:
- 存在于锁文件而非差异中的易受攻击依赖项
- 已提交到 Git 历史记录中的密钥
- 缺少提交前扫描器——这是预防机制上的缺口,而非代码问题
- 长期未被修改的代码中的漏洞
逐差异审查是另一项工作,需要使用不同的工具。在 Claude Code 中,security-guidance 插件已会在编辑、提交和推送时自动审查每个差异,且审查深度超过下方规则。因此,如果问题是“这项改动安全吗?”,请优先使用该插件;需要全面扫描整个代码库时,再使用此技能。
如果没有此类审查器——例如 Codex、Cursor、Antigravity、skills.sh、CI,或未安装该插件的 Claude Code——那么 rules/ 就是完整的审计流程,而非补充内容。请完整执行步骤 4。
规则概览
| 规则 | 影响 | 文件 |
|---|---|---|
| 不安全的依赖项 | 高 | rules/insecure-dependencies.md |
| 硬编码密钥 | 高 | rules/hardcoded-secrets.md |
| OWASP Top 10 | 高 | rules/owasp-top-10.md |
| 身份验证与访问控制 | 高 | rules/auth-access-control.md |
| 数据保护 | 中 | rules/data-protection.md |
工作流
步骤 1:依赖项审计
遵循 rules/insecure-dependencies.md。根据项目清单文件识别生态系统,并运行相应生态系统的审计器——如果项目使用 Python 或 Go,却只审计 npm,就会漏掉 CVE,且不会给出任何提示。报告严重和高危 CVE,然后报告已弃用或严重过时的软件包。
步骤 2:密钥扫描
使用项目的扫描器扫描工作树(默认使用 GitLeaks;如果项目已使用 TruffleHog,则使用 TruffleHog),并检查 rules/hardcoded-secrets.md 中列出的正则表达式可能漏检的内容——例如未列入 .gitignore 的 .env、配置文件中的连接字符串,以及已提交的私钥。
工作树中的密钥只差一次 git add 就会永久保存;历史记录中的密钥则已对所有拥有克隆访问权限的人公开。每次审计都要扫描历史记录——这是只读操作,审计时允许执行:
gitleaks git --redact --verbose
对于长期运行的代码库,此操作可能需要几分钟。开始前就应说明这一点,而不是结束后才说;如果用户不想等待,可以跳过——但要报告已跳过,避免把未扫描误认为结果干净。
步骤 3:加固提交前检查
检查项目的提交前钩子是否会运行密钥扫描器,并将其缺失报告为一项高危发现——它是防止步骤 2 中的问题再次发生的控制措施。收到要求后再进行配置:
- 检查提交前钩子是否存在,以及是否已运行扫描器(例如,
.husky/pre-commit中包含gitleaks) - 如果缺少,则将扫描器接入该生态系统的提交前机制:
- JS/TS ——设置 Husky,并在任何
lint-staged命令之前添加gitleaks git --staged --redact --verbose - 其他语言 ——将相同的扫描器命令添加到该生态系统的提交前工具中(例如,Python 的
pre-commit钩子,或其他情况下的普通.git/hooks/pre-commit)
- JS/TS ——设置 Husky,并在任何
- 如果钩子使用旧版
gitleaks protect命令(已弃用且不会隐藏密钥),请将其改写为gitleaks git --staged --redact --verbose
如果项目有意使用其他扫描器,并且该扫描器已提供相应控制措施,则报告此情况并保持原样,不要替换为 GitLeaks。
步骤 4:全面审计代码仓库
根据 rules/owasp-top-10.md、rules/auth-access-control.md 和 rules/data-protection.md 扫描代码库——这些检查与编程语言无关。检查整个代码树,包括早于当前工作的代码:未改动的代码正是差异审查者永远不会查看的部分,也是执行此步骤的原因。
步骤 5:报告
按 path:line 的格式报告每项发现——问题所在 → 修复方法;按类别分组,并按影响程度排序。最后列出每个类别的发现数量。