关于 quality-gates
quality-gates 是面向开发者和评审者的工程规范技能,用于在合并或部署前执行一致的检查。它按 Standard、Strict 和 Critical 三个级别组织测试、安全、性能、文档及集成门槛。
主要功能
- 01三级质量门槛
- 02测试、Lint、类型与构建检查
- 03安全与性能审查
- 04覆盖率和文档要求
- 05失败分级与整改指引
适用场景
- 01合并日常变更前检查
- 02评估重要功能的发布准备情况
- 03审查安全敏感的生产变更
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ duyet/ codex-claude-plugins --skill quality-gates安装后在 Claude Code 中输入/quality-gates确认已加载。
详细介绍
本技能提供工程规范原则和结构化质量门禁流程,用于在交付前验证代码质量、安全性、性能和生产就绪情况。
何时调用此技能
在以下情形下自动启用:
- 代码审查与验证
- 合并前质量检查
- 部署前验证
- 发布就绪情况评估
- 实施后的质量审计
- 任何需要严谨工程实践的工作
工程规范
核心规则
1. 不走捷径
- 每个解决方案都必须具备长期可持续性
- 临时修复会演变成永久负债
- 如果感觉像是在绕过问题,那它就是
2. 最小化改动
- 每次提交只包含一个逻辑改动
- 只改动必要的内容
- 优先编辑而非重写(保留上下文)
3. 完成前验证
- 测试通过
- Lint 检查无误
- 必要时进行手动验证
决策规则
何时重构
以下情况应重构:
- 添加功能的过程很痛苦
- Bug 会连锁出现
- 代码令人困惑
以下情况不应重构:
- 代码可用且很少变动
- 没有紧迫需求
何时抽象
以下情况应进行抽象:
- 同一模式出现 3 次或更多
- 抽象能降低复杂度
以下情况不应进行抽象:
- 只出现 1~2 次
- 抽象带来的复杂度更高
反模式
| 不良做法 | 原因 | 良好做法 |
|---|---|---|
| 魔法数字 | 含义不明确 | 使用命名常量 |
| 上帝对象 | 难以维护 | 单一职责 |
| 复制粘贴 | Bug 成倍增加 | 提取共用部分 |
| 注释掉的代码 | 令人困惑 | 使用 Git 历史 |
| 过早优化 | 方向错误 | 先测量 |
质量门禁级别
标准(默认)
适用于常规改动、Bug 修复和小型功能:
┌─────────────────────────────────────────────────────────┐
│ STANDARD GATES │
├─────────────────────────────────────────────────────────┤
│ ✓ All tests pass │
│ ✓ Linting clean (no errors) │
│ ✓ TypeScript compiles (no type errors) │
│ ✓ Code follows project patterns │
│ ✓ No obvious security issues │
│ ✓ Changes match requirements │
└─────────────────────────────────────────────────────────┘
严格
适用于重要功能、重构和公共 API:
┌─────────────────────────────────────────────────────────┐
│ STRICT GATES │
├─────────────────────────────────────────────────────────┤
│ All Standard gates PLUS: │
│ ✓ Test coverage ≥ 90% for new code │
│ ✓ Security scan passes (no high/critical) │
│ ✓ Performance benchmarks met │
│ ✓ API documentation updated │
│ ✓ Breaking changes documented │
│ ✓ Peer review completed │
└─────────────────────────────────────────────────────────┘
关键
适用于涉及安全、对生产至关重要或风险较高的改动:
┌─────────────────────────────────────────────────────────┐
│ CRITICAL GATES │
├─────────────────────────────────────────────────────────┤
│ All Strict gates PLUS: │
│ ✓ Security audit by security-focused review │
│ ✓ Load testing completed │
│ ✓ Rollback procedure documented and tested │
│ ✓ Monitoring and alerting configured │
│ ✓ Stakeholder sign-off obtained │
│ ✓ Incident response plan updated │
└─────────────────────────────────────────────────────────┘
质量门禁流程
1. 代码质量门禁
# Run these checks in sequence
npm run lint # or: bun run lint
npm run type-check # or: bun run type-check
npm run test # or: bun run test
npm run build # Verify build succeeds
验证清单:
- Lint 错误为零
- TypeScript 错误为零
- 所有测试通过
- 构建成功完成
- 生产代码中没有 console.log 语句
- 没有阻碍发布的 TODO 注释
- 没有硬编码值
- 已添加错误处理
- 已在边界处验证输入
2. 测试覆盖率门禁
npm run test:coverage
各级别的覆盖率要求:
| 级别 | 行覆盖率 | 分支覆盖率 | 函数覆盖率 |
|---|---|---|---|
| 标准 | ≥ 70% | ≥ 60% | ≥ 70% |
| 严格 | ≥ 90% | ≥ 80% | ≥ 90% |
| 关键 | ≥ 95% | ≥ 90% | ≥ 95% |
测试内容:
- 正常流程场景
- 错误处理路径
- 边界情况(null、空值、边界值)
- 集成点
- 面向用户的行为
- 测试结果具有确定性
3. 安全门禁
自动化检查:
npm audit # Dependency vulnerabilities
npm run lint:security # Security-focused lint rules (if configured)
手动审查清单:
- 没有硬编码的密钥或凭据
- 对所有用户输入进行验证
- 对输出进行编码以防止 XSS
- 防止 SQL/NoSQL 注入
- 对受保护路由进行身份验证检查
- 验证敏感操作的授权
- 对敏感数据强制使用 HTTPS
- 不记录敏感数据
- 正确配置 CORS
严格/关键级别:
- 已完成 OWASP Top 10 审查
- 由第二位工程师进行以安全为重点的代码审查
- 渗透测试(仅限关键级别)
4. 性能门禁
需要验证的指标:
| 指标 | 标准 | 严格 | 关键 |
|---|---|---|---|
| 页面加载 | < 3s | < 2s | < 1s |
| API 响应 | < 500ms | < 200ms | < 100ms |
| Bundle 大小 | < 500KB | < 300KB | < 200KB |
| 内存泄漏 | 无 | 无 | 无 |
验证步骤:
- 没有引入 N+1 查询
- 数据库查询使用索引
- 对大型列表进行分页
- 优化图像
- 在适当情况下实现缓存
- 主线程上没有阻塞操作
- 妥善清理资源
5. 文档门禁
必需文档:
| 级别 | README | API 文档 | 变更日志 | 架构 |
|---|---|---|---|---|
| 标准 | ✓ | - | ✓ | - |
| 严格 | ✓ | ✓ | ✓ | - |
| 关键 | ✓ | ✓ | ✓ | ✓ |
检查清单:
- README 已更新,包含新功能/变更
- 已记录 API 端点(严格及以上)
- 已明确注明破坏性变更
- 已提供迁移指南(如适用)
- 已记录架构决策(关键级别)
6. 集成门禁
验证步骤:
- 功能端到端运行正常
- 现有功能没有回归问题
- 已进行跨浏览器测试(如果是前端)
- 已验证移动端响应式效果(如适用)
- 已测试第三方集成
严格/关键级别:
- E2E 测试套件通过
- 已验证预发布环境
- 已完成用户验收测试
质量门禁报告模板
## Quality Gate Report
**Feature**: [Feature Name]
**Level**: [Standard | Strict | Critical]
**Date**: [YYYY-MM-DD]
**Reviewer**: [Name]
### Summary
| Gate | Status | Notes |
|------|--------|-------|
| Code Quality | ✅ PASS | All checks clean |
| Test Coverage | ✅ PASS | 92% coverage |
| Security | ✅ PASS | No vulnerabilities |
| Performance | ⚠️ WARN | API slightly slow |
| Documentation | ✅ PASS | Updated |
| Integration | ✅ PASS | E2E passing |
### Detailed Results
#### Code Quality
- Lint: 0 errors, 0 warnings
- TypeScript: 0 errors
- Tests: 47 passed, 0 failed
- Build: Success
#### Test Coverage
- Lines: 92% (target: 90%)
- Branches: 85% (target: 80%)
- Functions: 94% (target: 90%)
#### Security
- npm audit: 0 vulnerabilities
- Manual review: Completed, no issues
- [x] Input validation verified
- [x] Auth checks verified
#### Performance
- Page load: 1.8s (target: < 2s)
- API response: 180ms (target: < 200ms)
- Bundle size: 287KB (target: < 300KB)
#### Issues Found
1. [WARN] API endpoint `/api/users` responds in 450ms under load
- Recommendation: Add caching layer
- Severity: Low
- Blocking: No
### Verdict
**✅ APPROVED FOR MERGE**
All critical gates pass. Performance warning noted for future optimization.
门禁失败处理
门禁失败时:
1. 确定严重程度
| 严重程度 | 描述 | 处理方式 |
|---|---|---|
| 阻断级 | 阻止部署 | 合并前必须修复 |
| 关键 | 安全/数据风险 | 合并前必须修复 |
| 重大 | 严重问题 | 应修复;经批准后可延期 |
| 次要 | 质量问题 | 可延期后续处理 |
2. 记录问题
### Gate Failure: [Gate Name]
**Severity**: [Blocker | Critical | Major | Minor]
**Description**: [What failed and why]
**Impact**: [What happens if not fixed]
**Remediation**: [How to fix]
**Timeline**: [When it will be fixed]
**Approved By**: [If deferring, who approved]
3. 解决路径
Blocker/Critical → Fix immediately → Re-run gates
Major → Fix or get approval → Document decision
Minor → Create follow-up ticket → Proceed with caution
快速参考命令
# Standard gate check
npm run lint && npm run type-check && npm run test && npm run build
# Coverage check
npm run test:coverage
# Security audit
npm audit
# Full strict gate
npm run lint && npm run type-check && npm run test:coverage && npm run build && npm audit
检查清单摘要
评审前(作者)
- 已自行评审代码变更
- 已添加/更新测试
- 已更新文档
- 未遗留调试代码
- 提交消息清晰明确
代码评审(评审者)
- 逻辑正确
- 代码易于阅读
- 遵循项目规范
- 没有安全隐患
- 测试有意义
- 错误处理得当
合并前
- 所有 CI 检查均已通过
- 已获得所需审批
- 已解决冲突
- 分支已保持最新
部署前(关键级别)
- 已记录回滚计划
- 已配置监控
- 已通知相关方
- 已确认部署窗口
评论
支持 Markdown