mcpField
Q
quality-gates

quality-gates

github.com/duyet测试与质量1560 次安装2 周前更新
代码仓库

关于 quality-gates

quality-gates 是面向开发者和评审者的工程规范技能,用于在合并或部署前执行一致的检查。它按 Standard、Strict 和 Critical 三个级别组织测试、安全、性能、文档及集成门槛。

主要功能

  1. 01三级质量门槛
  2. 02测试、Lint、类型与构建检查
  3. 03安全与性能审查
  4. 04覆盖率和文档要求
  5. 05失败分级与整改指引

适用场景

  1. 01合并日常变更前检查
  2. 02评估重要功能的发布准备情况
  3. 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. 文档门禁

必需文档:

级别READMEAPI 文档变更日志架构
标准✓-✓-
严格✓✓✓-
关键✓✓✓✓

检查清单:

  • 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