安装方式
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add qwert702/skill-engineering-audit --skill engineering-audit 对代码库进行全面的工程和安全审计,涵盖代码质量、安全、架构、性能、依赖和合规六个维度。 此技能适用于以下场景: - "对代码库进行全面审计" / "做一次工程审计" / "代码库健康检查" - "代码质量检查" / "代码异味检测" - "安全审计" / "安全检查" / "OWASP" - "架构审查" / "架构评审" / "重构前检查" - "性能分析" / "性能瓶颈分析" - "依赖检查" / "依赖安全审计" - "合规审计" / "审计报告" - 需要系统性了解代码库整体质量水平的场景 - 代码审查发现的漏洞需要进行系统性分类和追踪的场景 - 重构或大版本升级前需要评估现有代码质量的场景
75
下载量
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add qwert702/skill-engineering-audit --skill engineering-audit name: engineering-audit
description: |
对代码库进行全面的工程和安全审计,涵盖代码质量、安全、架构、性能、依赖和合规六个维度。
此技能适用于以下场景:
- "对代码库进行全面审计" / "做一次工程审计" / "代码库健康检查"
- "代码质量检查" / "代码异味检测"
- "安全审计" / "安全检查" / "OWASP"
- "架构审查" / "架构评审" / "重构前检查"
- "性能分析" / "性能瓶颈分析"
- "依赖检查" / "依赖安全审计"
- "合规审计" / "审计报告"
- 需要系统性了解代码库整体质量水平的场景
- 代码审查发现的漏洞需要进行系统性分类和追踪的场景
- 重构或大版本升级前需要评估现有代码质量的场景
version: 2.2.0
platforms: [macos, windows, linux]
context: fork
allowed-tools: Read, Glob, Grep, Bash
metadata:
hermes:
tags: [audit, security, code-quality, architecture, performance, compliance, engineering]
category: engineering
related_skills: [code-review, security-review, verify]
user-invocable: true版本 2.2.0 — 项目全面分析:严重等级对齐、工作流健壮性增强、CI/CD 加固、文档修复
本技能对目标代码库进行系统性的多维度审计,从代码质量、安全、架构、性能、依赖和合规六个维度全面评估代码健康状况。
此技能与现有的CLAUDE.md工程标准配合使用。CLAUDE.md定义了"编码时的规范",本技能定义了"如何审计已完成的内容"。
| 维度 | 覆盖范围 |
|---|---|
| 🔍 代码质量 | 死代码、重复代码、圈复杂度、命名约定、注释质量、类型安全、错误处理、资源泄漏 |
| 🔒 安全 | OWASP Top 10:注入、认证、敏感数据、XXE、越权、安全配置、XSS/CSRF、依赖漏洞 |
| 🏗 架构 | 分层违规、循环依赖、接口滥用、单一职责、抽象程度 |
| ⚡ 性能 | N+1 查询、内存泄漏、不必要分配、低效算法、缺失缓存 |
| 📦 依赖 | 过时版本、已知漏洞、废弃包、未使用依赖 |
| 📋 合规 | 许可合规、编码标准、日志标准、数据隐私 |
---
# 完整审计(标准深度)
/engineering-audit
# 指定审计路径
/engineering-audit --path src/
# 指定焦点维度(只审计某一维度)
/engineering-audit --focus security
# 指定审计深度
/engineering-audit --depth quick # 快速扫描,仅高风险项
/engineering-audit --depth standard # 标准深度(默认)
/engineering-audit --depth deep # 深度审计,含子代理并发分析
# 多焦点组合
/engineering-audit --focus security,quality
# ---- 新增功能 ----
# 增量审计(只审计上次审计后有变更的文件)
/engineering-audit --incremental
/engineering-audit --incremental --since 2025-06-01 # 自指定日期后的变更
/engineering-audit --incremental --since HEAD~5 # 近 5 次提交
# 输出为 JSON 格式(可被 CI 解析)
/engineering-audit --output-format json --output ./audit-report.json
# 使用自定义检查规则
/engineering-audit --rules .auditrules.yaml
# 查看审计历史趋势
/engineering-audit --history # 展示所有历史摘要
/engineering-audit --history --trend # 生成趋势分析报告
| 参数 | 可选值 | 默认 | 说明 |
|---|---|---|---|
--path | 任意路径 | .(当前目录) | 审计目标路径 |
--focus | quality,security,architecture,performance,dependencies,compliance,all | all | 审计焦点,逗号分隔 |
--depth | quick,standard,deep | standard | 审计深度 |
--output | 文件路径 | 终端输出 | 审计报告输出路径 |
--output-format | markdown,json | markdown | 报告输出格式 |
--incremental | 无值 | 关闭 | 增量模式,仅审计 git 历史中有变更的文件 |
--since | git 引用/日期 | — | 与 --incremental 配合,指定增量起点 |
--rules | 文件路径 | — | 自定义检查规则文件路径 |
--history | 无值 | 关闭 | 查看审计历史记录 |
--trend | 无值 | 关闭 | 与 --history 配合,生成趋势分析 |
---
遵循以下六个阶段执行审计:
--path、--focus、--depth、--incremental 等)--history),如是则跳转到历史分析流程--rules),如是则读取规则文件--incremental):git rev-parse --git-dir,失败则输出错误信息 "错误:--incremental 需要 git 仓库,已回退到全量模式",然后跳过增量流程继续全量审计--since:--since:先尝试解析为日期(git log --before=<date>),再尝试 commit hash/HEAD~N--since:读取 .audit-history.yamlgit diff --name-only <since> HEAD 获取变更文件列表<since> 超出 git reflog 范围(git 返回错误),捕获错误并输出 "警告:增量起点 <since> 超出 git 历史范围,尝试 git log --all",尝试在全部引用中搜索;仍失败则回退到全量模式git cat-file -e HEAD:<path> 或 test -f <path>)根据 --focus 选定的维度,对每个维度进行系统分析:
#### 3.1 代码质量审计
references/code-quality-checklist.md 逐项检查#### 3.2 安全审计
references/audit-dimensions.md 的安全部分#### 3.3 架构审计
#### 3.4 性能审计
#### 3.5 依赖审计
#### 3.6 合规审计
#### 3.7 自定义规则检查(如果指定了 --rules)
如果用户通过 --rules 指定了自定义规则文件,在所有内置维度分析完成后执行:
.auditrules.yaml(或指定路径)中的规则定义--depth deep 模式下,对每个维度启动独立子代理并行分析,最后汇总结果。references/severity-classification.md 按严重等级分类AUDIT-{序号})参考 templates/audit-report-template.md 生成最终报告。
根据 --output-format 选择输出格式:
markdown(默认):使用 templates/audit-report-template.md 生成 Markdown 报告json:使用 JSON 结构输出,便于 CI 工具解析(结构定义见后文)报告结构:
记录审计历史(如果未使用 --history 模式):
.audit-history.yaml.audit-history.yaml 不存在则创建,存在则追加当用户要求跟踪修复进度时:
templates/fix-tracking-template.md---
当用户指定 --history 时,不执行新的审计,而是分析已有的 .audit-history.yaml 记录:
/engineering-audit --history
输出内容:
/engineering-audit --history --trend
生成趋势报告,包含:
#### 发现数量趋势
发现数
↑
12 │ █
10 │ █ █
8 │ █ █ █
6 │ █ █ █ █
4 │ █ █ █ █ █
0 └─────────────────→ 审计轮次
1 2 3 4 5
#### 严重等级分布趋势
#### 修复率统计
#### 健康度评分
计算一个简易健康度指标(每次审计后输出):
修正分 = 原始分 × (1 - 0.3 × (审计文件数 / 总文件数)),覆盖文件少不等于更健康输出趋势表格:
| 轮次 | 日期 | 发现总数 | 严重 | 高危 | 中危 | 低危 | 信息 | 健康分 | 增量/全量 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 2025-06-01 | 23 | 3 | 8 | 7 | 3 | 2 | 42 | 全量 |
| 2 | 2025-06-15 | 18 | 2 | 5 | 6 | 3 | 2 | 58 | 增量 |
| 3 | 2025-07-01 | 12 | 1 | 3 | 4 | 3 | 1 | 76 | 增量 |
---
当 --output-format json 时,输出标准 JSON 结构:
{
"meta": {
"version": "2.2.0",
"timestamp": "2025-07-03T10:30:00Z",
"duration_seconds": 45,
"mode": "full" | "incremental",
"incremental_since": null | "<git-ref>"
},
"scope": {
"path": "src/",
"focus": ["quality", "security"],
"depth": "standard",
"files_audited": 128,
"total_files": 156
},
"summary": {
"total_findings": 15,
"by_severity": {
"critical": 2,
"high": 4,
"medium": 6,
"low": 2,
"info": 1
},
"by_dimension": {
"quality": 5,
"security": 7,
"architecture": 1,
"performance": 2,
"dependencies": 0,
"compliance": 0
},
"health_score": 58
},
"findings": [
{
"id": "AUDIT-001",
"severity": "critical",
"dimension": "security",
"subcategory": "sql-injection",
"title": "SQL 查询使用字符串拼接",
"description": "...",
"file": "src/api/users.ts",
"line_start": 45,
"line_end": 47,
"recommendation": "使用参数化查询",
"verification": "运行静态分析检查 SQL 拼接模式",
"custom_rule": null
}
],
"history": {
"previous_findings": 23,
"previous_health_score": 46,
"change": {
"findings_delta": -8,
"health_score_delta": 12,
"by_severity_delta": {
"critical": -2,
"high": -3,
"medium": -2,
"low": -1,
"info": 0
}
}
}
}
此 JSON 结构可直接被 CI 脚本解析,用于:
critical > 0 时让 CI pipeline 失败---
用户可以创建 .auditrules.yaml 文件,定义项目特有的检查规则。在审计时通过 --rules 指定:
/engineering-audit --rules .auditrules.yaml
# .auditrules.yaml - 自定义审计规则
version: "1.0"
rules:
- id: "CUSTOM-001"
title: "禁止使用 console.log"
description: "生产代码中不允许出现 console.log,应使用项目日志框架"
severity: medium # critical | high | medium | info
dimension: quality
match:
pattern: "console\\.(log|debug|warn|error)\\("
include: "src/**/*.ts" # 搜索范围 glob
exclude: "src/**/*.test.ts" # 排除范围 glob
remediation: "替换为 logger.info / logger.warn / logger.error"
verification: "grep -r 'console\\.' src/ 确认无输出"
- id: "CUSTOM-002"
title: "API 路由必须加鉴权中间件"
description: "所有 /api/ 下新增的路由必须使用 authMiddleware"
severity: critical
dimension: security
match:
pattern: "router\\.(get|post|put|delete)\\(\\s*['\"]/"
include: "src/routes/**/*.ts"
# 排除已有鉴权的路由
not_after:
pattern: "\\.use\\(authMiddleware\\)"
within_lines: 5
remediation: "在路由定义后添加 .use(authMiddleware)"
- id: "CUSTOM-003"
title: "禁止硬编码敏感配置"
description: "密码、密钥、Token 必须从环境变量读取"
severity: critical
dimension: security
match:
patterns:
- "password\\s*[=:]\\s*['\"][^'\"]+['\"]"
- "apiKey\\s*[=:]\\s*['\"][^'\"]+['\"]"
- "secret\\s*[=:]\\s*['\"][^'\"]+['\"]"
include: "src/**/*.ts"
remediation: "替换为 process.env.VARIABLE_NAME"
- id: "CUSTOM-004"
title: "函数长度限制"
description: "函数不应超过 60 行,超过应考虑拆分"
severity: medium
dimension: quality
check_type: "metric"
metric:
type: "function_length"
threshold: 60
include: "src/**/*.ts"
remediation: "将大函数按单一职责拆分为多个小函数"
- id: "CUSTOM-005"
title: "TODO 标记不可合入生产"
description: "生产代码中不允许存在 TODO、FIXME、HACK 标记"
severity: low
dimension: quality
match:
pattern: "(TODO|FIXME|HACK|XXX)\\s*:"
include: "src/**/*.ts"
exclude: "**/*.md"
remediation: "完成待办项或创建 Issue 跟踪"
| 字段 | 必须 | 类型 | 说明 |
|---|---|---|---|
id | 是 | 字符串 | 规则唯一标识,CUSTOM- 开头 |
title | 是 | 字符串 | 规则标题 |
description | 是 | 字符串 | 规则详细说明 |
severity | 是 | 枚举 | critical/high/medium/info |
dimension | 是 | 枚举 | quality/security/architecture/performance/dependencies/compliance |
match.pattern | 否 | 字符串 | 正则匹配模式(单模式) |
match.patterns | 否 | 字符串列表 | 正则匹配模式(多模式,任一匹配即触发) |
match.include | 否 | glob | 搜索范围 |
match.exclude | 否 | glob | 排除范围 |
match.not_after | 否 | 对象 | 排除匹配后 N 行内存在另一模式的命中 |
check_type | 否 | 枚举 | pattern(默认)/metric(度量值) |
metric | 否 | 对象 | 度量规则定义(type + threshold) |
remediation | 是 | 字符串 | 修复建议 |
verification | 否 | 字符串 | 验证方法 |
如未指定 --rules,默认尝试查找以下路径:
./.auditrules.yaml./.audit/.auditrules.yaml引用 references/severity-classification.md 确定等级:
| 等级 | 判定标准 | 响应时限 |
|---|---|---|
| 🔴 严重 | 直接影响安全性或核心功能,可能导致数据泄露、服务不可用、权限绕过 | 24小时内 |
| 🟠 高危 | 显著影响代码质量或可用性,可能导致性能退化、维护困难、部分功能异常 | 1周内 |
| 🟡 中危 | 轻微违反最佳实践或编码规范,不影响功能正确性 | 1月内 |
| 🔵 低危 | 观察性发现,无直接风险,供参考或未来改进 | 酌情 |
| ⚪ 信息 | 纯信息性提示,不构成风险 | 无需响应 |
---
审计报告必须使用 templates/audit-report-template.md 结构。输出为格式化的 Markdown,确保:
---
code-review 发现问题后,立即用 --incremental --since HEAD~1 确认本次变更是否引入相关问题--incremental,尽早发现新增问题--depth quick --output-format json --output audit.json,当 critical > 0 时阻断合入findings_delta > 0(发现数增加)时自动通知团队| 技能 | 本技能 vs 它 |
|---|---|
code-review | code-review 审查当前 diff,本技能做全量代码库审计 |
security-review | security-review 关注变更的安全影响,本技能做完整安全态势评估 + 其他五个维度 |
review | review 针对 GitHub PR 输出评论,本技能输出独立审计报告 |
verify | verify 验证变更效果,本技能专注发现和分析,不验证修复 |