代码审计与安全检查
每次commit自动扫一遍 —— 安全漏洞无处藏
这个模板干嘛用的?
每次 git commit 之前,AI 自动帮你扫一遍代码 —— 安全漏洞、代码坏味道、依赖风险,全给你揪出来。
不是那种跑完一堆 warning 你看都不想看的工具。AI 会告诉你哪些是真正要改的、为什么要改、怎么改,分好优先级,给出修复代码。
三个模板覆盖三个场景:提交前审计、依赖扫描、代码质量检查。可以单独用,也可以串成流水线。
代码安全的现状
你知道应该做安全检查,但每次都觉得「先上线再说」。等到真出了安全事故才回头看,发现那个 SQL 注入漏洞其实很明显。不是你不想查,是查起来太费劲了 —— 工具报 200 个 warning,你根本分不清哪些重要。
模板一:Git Commit Hook 审计
在 commit 之前自动触发审计。有严重问题直接拦住,不让有漏洞的代码进仓库。
Git Commit Hook 审计 · TASK 模板
TASK
## TASK: Pre-Commit 代码审计
### 触发条件
每次 git commit 前自动执行(pre-commit hook)
### 审计范围
仅审计本次 commit 中修改的文件(git diff --staged)
### 检查项目
1. 安全漏洞
- 硬编码的密钥、token、密码
- SQL 注入风险(拼接 SQL 语句)
- XSS 风险(未转义的用户输入)
- 不安全的反序列化
2. 敏感信息
- .env 文件是否被误提交
- 私钥、证书文件
- 内部 API 地址泄露
### 输出格式
- 严重程度分级:BLOCK(阻止提交)/ WARN(警告)/ INFO(建议)
- 每个问题:文件路径 + 行号 + 问题描述 + 修复建议
- BLOCK 级别问题存在时,commit 被阻止并提示修复
模板二:依赖漏洞扫描
第三方依赖是安全隐患的重灾区。这个模板帮你定期扫描依赖树,看看有没有已知漏洞。
依赖漏洞扫描 · TASK 模板
TASK
## TASK: 依赖安全扫描
### 触发条件
每周一早上 9:00 自动执行 + package.json / requirements.txt 变更时触发
### 扫描目标
- Node.js: package-lock.json
- Python: requirements.txt / Pipfile.lock
- Go: go.sum
### 执行步骤
1. 解析依赖树,列出所有直接和间接依赖
2. 查询 CVE 数据库和 GitHub Advisory
3. 按 CVSS 评分排序
4. 检查是否有可用的修复版本
### 输出格式
- 表格:依赖名 | 当前版本 | 漏洞编号 | 严重程度 | 修复版本
- 高危漏洞单独标注,附修复命令(如 npm audit fix)
- 末尾给出「本周依赖健康度」评分:A/B/C/D
模板三:代码质量检查
不只是安全问题 —— 代码可读性、复杂度、重复度也很重要。技术债越欠越多,这个模板帮你定期盘点。
代码质量检查 · TASK 模板
TASK
## TASK: 代码质量审查
### 触发条件
每次 PR 提交时自动执行
### 检查维度
1. 复杂度
- 单个函数圈复杂度 > 10 标记警告
- 嵌套深度 > 4 层标记警告
2. 可读性
- 函数命名是否语义清晰
- 魔法数字和硬编码字符串
- 注释覆盖率(复杂逻辑必须有注释)
3. 重复代码
- 检测相似代码片段(> 10 行相似)
- 建议提取公共函数或工具类
4. 测试覆盖
- 新增代码是否有对应测试
- 核心逻辑的边界条件是否覆盖
### 输出格式
- 总评一句话:这个 PR 质量如何
- 按维度分块列出问题
- 每个问题给出改进后的代码示例
- 结论:Approve / Request Changes / 建议讨论
配套 Skill 配置
代码审计模板需要文件读取和 Git 操作权限。下面是 pre-commit hook 的配置参考:
代码审计 Git Hook 配置
skill_config:
name: "code-audit"
description: "代码审计 - Pre-commit 自动检查"
version: "1.0"
skills:
- skill: file-ops
settings:
scope: "git-staged"
read_only: true
file_types: [".py", ".js", ".ts", ".go", ".java"]
- skill: git-integration
settings:
hook: "pre-commit"
block_on: ["BLOCK"]
allow_bypass: false
output:
format: "terminal"
color: true
save_report: "./audit-reports/${DATE}.md"
error_handling:
timeout: 60
on_timeout: "warn-and-allow-commit"
建议把 allow_bypass 设成 false —— 不然每次有问题你都会选择跳过,审计就白做了。实在急着提交可以用 git commit --no-verify,但心里要有数。
相关资源
代码审计只是开发流程的一环,这些也值得看看: