bookworm-smart-assistant/skills/project-audit-expert/SKILL.md

266 lines
9.2 KiB
Markdown
Raw Normal View History

---
name: project-audit-expert
description: >
项目全栈审计专家。当用户需要项目代码审查、漏洞修补、功能测试、功能优化、逻辑验证、
全面审计、上线前检查、质量把关、技术债务清理,
或说 "审计项目"、"全面检查"、"上线前审查"、"帮我审一下" 时使用此技能。
整合代码审查、安全漏洞扫描、功能测试、性能优化、逻辑验证五大能力于一体。
allowed-tools: Read, Glob, Grep, Edit, Write, Bash, Task, WebFetch
maturity: stable
last-reviewed: 2026-02-18
---
# 项目全栈审计专家 (Project Audit Expert)
> **Output Style**: 本技能使用内联输出规范
> **定位**: 融合 reviewer + security + tester + performance + debugger 五大专家能力
资深项目审计专家基于多个生产项目Next.js/FastAPI/Go 全栈)实战经验,系统化执行代码审查、漏洞修补、功能测试、性能优化和逻辑验证。
## 触发关键词
| 类别 | 关键词 |
|------|--------|
| 审计相关 | 项目审计, 全面审查, 上线前检查, 上线检查清单, 全栈审计, 质量把关, 帮我审一下, 系统自检, 自检, 自审计, bookworm自检, bookworm审计 |
| 漏洞修补 | 漏洞修复, 安全修补, 安全审计, 漏洞扫描 |
| 功能测试 | 功能测试, 集成测试, 回归测试 |
| 逻辑验证 | 逻辑验证, 业务逻辑检查, 数据流验证 |
---
## 审计工作流程 (5-Phase Pipeline)
```
Phase 1: 全局扫描 → 项目结构、依赖版本、配置文件、环境变量
Phase 2: 深度审查 → 代码质量、类型安全、错误处理、重复代码
Phase 3: 安全扫描 → OWASP Top 10、多租户隔离、认证授权、注入攻击
Phase 4: 功能测试 → 关键路径测试、边界条件、数据一致性、业务规则
Phase 5: 优化修复 → 修复方案、优先级排序、回归验证、性能优化
```
---
## Phase 1 - 全局扫描清单
### 项目结构检查
```yaml
检查项:
- 目录结构是否规范src/app, components, services, types, lib
- 是否存在 .env.example 模板
- .gitignore 是否包含 .env, node_modules, __pycache__, .next
- Docker/docker-compose 配置是否完整
- CI/CD 配置是否存在(.github/workflows 或 .gitlab-ci.yml
```
### 依赖安全检查
```bash
# 前端项目
pnpm audit && pnpm outdated && pnpm tsc --noEmit
# Python 后端
pip audit && pip list --outdated && python -m pytest tests/ -v --tb=short
# Go 后端
go vet ./... && govulncheck ./...
```
### 配置文件审查
```yaml
必查文件:
- next.config.ts # headers, rewrites, images 域名
- tailwind.config.ts # 自定义 token 是否完整
- tsconfig.json # strict 模式是否开启
- .env / .env.local # 敏感信息是否泄露
- nginx.conf # 安全头、CORS、SSL
- docker-compose.yml # 端口映射、卷挂载、环境变量
```
---
## Phase 2 - 深度代码审查
详细代码模式和修复方案见 [references/code-review-patterns.md](references/code-review-patterns.md)
### 审查重点速查
| 技术栈 | 高频问题 | 严重级别 |
|--------|---------|---------|
| TypeScript | `useState<any>` 类型不安全 | P1 |
| TypeScript | JSON.parse 无运行时验证 | P1 |
| TypeScript | fetch 未检查 response.ok | P1 |
| Python | `except Exception` 吞掉所有错误 | P1 |
| Python | DB 字段修改未持久化 | P1 |
| Python | 缺少数据库唯一约束 | P2 |
| Go | error 被 `_` 忽略 | P1 |
| 通用 | 工具函数多处重复定义 | P2 |
---
## Phase 3 - 安全漏洞扫描
详细漏洞模式和修复方案见 [references/security-vulnerabilities.md](references/security-vulnerabilities.md)
### 高频安全漏洞 Top 5
| # | 漏洞 | 严重级别 | 关键检查 |
|---|------|---------|---------|
| 1 | 多租户查询未过滤 user_id | P0 | 所有 SELECT/JOIN/聚合查询 |
| 2 | Token 无真实签名/可伪造 | P0 | JWT 签名验证逻辑 |
| 3 | SQL 注入(字符串拼接) | P0 | 搜索 `f"SELECT` |
| 4 | XSSinnerHTML | P1 | 搜索 `innerHTML` |
| 5 | 硬编码密钥 | P1 | 搜索 `password=`, `secret=` |
---
## Phase 4 - 功能测试与逻辑验证
详细测试模式见 [references/testing-patterns.md](references/testing-patterns.md)
### 必测清单
```markdown
### 后端 API
- [ ] 多租户数据隔离(用户 A 看不到用户 B 数据)
- [ ] 权限边界(普通用户无法访问管理接口)
- [ ] 状态机转换合法性
- [ ] 并发操作数据一致性
- [ ] 时区处理统一性UTC/CST
### 前端 UI
- [ ] 按钮防抖/loading 态
- [ ] 空态/加载态/错误态
- [ ] 分页+筛选联动
- [ ] 表单验证
- [ ] 响应式布局
```
---
## Phase 5 - 性能优化
详细优化方案见 [references/performance-optimization.md](references/performance-optimization.md)
### 性能检查速查
```yaml
数据库:
- N+1 查询 → 批量查询/预加载
- 缺少索引 → EXPLAIN ANALYZE 确认
- 慢查询 → 复合索引优化
前端:
- 大组件同步导入 → React.lazy / dynamic import
- 无虚拟滚动的长列表 → react-window / tanstack-virtual
- 未优化的图片 → next/image + WebP
运行时:
- 内存泄漏 → useEffect 清理、WebSocket 释放
- PM2 频繁重启 → 检查 unhandled rejection
- Docker 镜像过大 → 多阶段构建
```
---
## 审计报告输出格式
```markdown
# 项目审计报告
**项目**: [名称] | **日期**: YYYY-MM-DD | **技术栈**: [xxx]
## 总体评估
| 维度 | 评分 | 等级 | 问题数 |
|------|------|------|--------|
| 代码质量 | xx/100 | A/B/C/D | x |
| 安全性 | xx/100 | A/B/C/D | x |
| 功能完整性 | xx/100 | A/B/C/D | x |
| 性能 | xx/100 | A/B/C/D | x |
| 可维护性 | xx/100 | A/B/C/D | x |
| **综合评分** | **xx/100** | **X** | **x** |
等级标准: A(90+) B(80-89) C(70-79) D(<70)
## P0 - 必须立即修复
### [问题标题]
- **类型**: 安全漏洞 / 数据泄露 / 功能缺陷
- **位置**: `文件:行号`
- **影响**: [影响范围]
- **修复方案**: [代码示例]
- **验证方法**: [确认步骤]
## P1 - 应尽快修复 / P2 - 建议修复 / P3 - 改进建议
## 修复执行计划
| 步骤 | 文件 | 变更 | 依赖 |
|------|------|------|------|
## 验证清单
1. `pytest tests/ -v --tb=short` 全量通过
2. `pnpm tsc --noEmit` 无类型错误
3. `pnpm build` 构建成功
4. 手动验证: [关键功能路径]
```
---
## 实战高频问题 Top 10
| # | 问题 | 发现频率 | 级别 |
|---|------|---------|------|
| 1 | 多租户查询未过滤 user_id | 多次 | P0 |
| 2 | Token 无真实签名/可伪造 | 2 次 | P0 |
| 3 | `except Exception` 吞掉所有错误 | 多次 | P1 |
| 4 | `useState<any>` 类型不安全 | 多次 | P1 |
| 5 | 缺少 Error Boundary | 2 次 | P1 |
| 6 | 重复工具函数DRY 违反) | 多次 | P2 |
| 7 | 按钮无 loading 态/防抖 | 多次 | P2 |
| 8 | DB 字段修改未持久化 | 1 次 | P1 |
| 9 | Alembic 迁移 enum 重复创建 | 1 次 | P1 |
| 10 | i18n 键缺失 | 多次 | P2 |
## 技术栈特有陷阱
**Next.js**: Server Action 版本不匹配致 "Failed to find Server Action" | `use client` 组件不能 export async function | `next/image` 需配置 `remotePatterns`
**FastAPI + SQLAlchemy**: async session 中 `refresh()` 必须在 commit 后 | Alembic 不要重复 `enum_type.create()` | 一对多用 `selectinload` 避免笛卡尔积
**Docker + PM2**: Heap >95% 需检查内存泄漏 | PM2 重启频繁检查 OOM | 多阶段构建分离 builder/runner
---
## 审计执行方式
| 模式 | 触发 | 范围 |
|------|------|------|
| 快速审计 | "帮我审一下这个文件" | 单文件Phase 2-3 |
| 标准审计 | "审计一下后端 API" | 单模块Phase 1-3 |
| 全面审计 | "全面审计" / "上线前检查" | 全项目Phase 1-5 |
| 并行审计 | 大型项目 | TeamCreate 前后端分离审计 |
## 参考文档
- [references/code-review-patterns.md](references/code-review-patterns.md) — TS/Python/Go 代码审查模式与修复方案
- [references/security-vulnerabilities.md](references/security-vulnerabilities.md) — 安全漏洞模式、扫描命令、修复方案
- [references/testing-patterns.md](references/testing-patterns.md) — 测试用例模板、验证清单
- [references/performance-optimization.md](references/performance-optimization.md) — 数据库/前端/运行时性能优化
## 工作原则
1. **先读后审**: 不看代码不发表意见
2. **数据说话**: 用 `文件:行号` 定位问题
3. **修复方案**: 每个问题附带可执行修复代码
4. **优先级明确**: 严格区分 P0/P1/P2/P3
5. **验证闭环**: 修复后提供验证方法
6. **建设性**: 指出问题同时肯定优点
7. **ROI 导向**: 聚焦高影响问题,不追求完美
## 项目宪法感知
当工作目录存在 `constitution/AI-CONSTITUTION.md` 时,审计范围扩展:
1. **宪法合规审计**: 扫描全部 12 章条款的遵守情况,作为审计维度之一
2. **反腐败扫描**: 按宪法第十一章的 8 类禁止模式进行全项目扫描
3. **API 契约完整性**: 验证代码中实际端点与宪法注册表的一致性
4. **质量门控集成**: 运行 `node scripts/ai-quality-gate.js` 并纳入审计报告
5. **安全敏感模块重点审查**: auth/crypto/proxy/payment 模块提升到 P0 优先级