钩子示例

安全性钩子

提交前安全扫描器

用途:防止敏感信息泄露,在代码提交前进行安全检查

配置

name: "提交前安全扫描器"
trigger: preCommit
filePattern: "**/*"
description: "扫描所有文件中的敏感信息,防止安全泄露"

详细指令

instructions: |
  执行全面的安全扫描,重点检查以下内容:
  
  1. 敏感信息检测:
     - API 密钥和令牌 (API_KEY, ACCESS_TOKEN)
     - 数据库连接字符串
     - 密码和认证信息
     - 私钥和证书
     - 内部服务 URL 和端点
  
  2. 代码安全检查:
     - SQL 注入漏洞模式
     - XSS 攻击向量
     - 硬编码的安全配置
     - 不安全的函数调用
  
  3. 配置文件审查:
     - 环境变量文件 (.env)
     - 配置文件中的敏感设置
     - Docker 容器安全配置
  
  4. 发现问题时的操作:
     - 标记具体的问题位置
     - 建议使用环境变量替代
     - 提供安全替代方案
     - 阻止提交直到问题解决

实际应用场景

// 被检测到的问题示例
const config = {
  apiKey: "sk-1234567890abcdef", // ❌ 硬编码 API 密钥
  dbUrl: "mongodb://user:password@localhost", // ❌ 明文数据库密码
  secret: process.env.JWT_SECRET || "default-secret" // ❌ 不安全的默认值
};

// 推荐的安全做法
const config = {
  apiKey: process.env.API_KEY, // ✅ 使用环境变量
  dbUrl: process.env.DATABASE_URL, // ✅ 环境变量存储
  secret: process.env.JWT_SECRET // ✅ 必需的环境变量
};

秘密检测钩子

用途:专门检测各种类型的秘密和凭据

配置

name: "秘密检测器"
trigger: onSave
filePattern: "**/*.{js,ts,py,java,go,rb,php}"

检测模式

detection_patterns:
  api_keys:
    - pattern: "(?i)(api[_-]?key|apikey)\\s*[:=]\\s*['\"][^'\"\\s]{16,}['\"]"
    - description: "API 密钥模式"
  
  tokens:
    - pattern: "(?i)(token|access[_-]?token)\\s*[:=]\\s*['\"][^'\"\\s]{20,}['\"]"
    - description: "访问令牌模式"
  
  passwords:
    - pattern: "(?i)(password|passwd|pwd)\\s*[:=]\\s*['\"][^'\"\\s]{8,}['\"]"
    - description: "密码模式"
  
  private_keys:
    - pattern: "-----BEGIN (RSA |DSA |EC )?PRIVATE KEY-----"
    - description: "私钥模式"

国际化钩子

国际化助手

用途:维护多语言项目的翻译一致性

配置

name: "国际化助手"
trigger: onSave
filePattern: "src/locales/en/*.json"
description: "监控英文语言文件变化,维护其他语言的翻译状态"

工作流程

instructions: |
  监控英文语言文件的变化并维护翻译一致性:
  
  1. 变化检测:
     - 识别新增的字符串键
     - 检测修改的字符串内容
     - 发现删除的字符串键
  
  2. 其他语言文件处理:
     - 扫描所有其他语言文件 (zh/, fr/, es/, etc.)
     - 对新增的键添加 "NEEDS_TRANSLATION" 标记
     - 对修改的键添加 "TRANSLATION_OUTDATED" 标记
     - 移除已删除键的翻译
  
  3. 生成变更摘要:
     - 列出需要翻译的新字符串
     - 显示过期的翻译项
     - 提供翻译工作的优先级建议
  
  4. 通知机制:
     - 创建翻译任务清单
     - 通知翻译团队成员
     - 更新翻译进度跟踪

示例场景

// en/common.json - 英文原文件
{
  "welcome": "Welcome to our application",
  "login": "Log in",
  "new_feature": "Try our new feature!" // 新增内容
}

// zh/common.json - 处理后的中文文件
{
  "welcome": "欢迎使用我们的应用",
  "login": "登录",
  "new_feature": "NEEDS_TRANSLATION: Try our new feature!"
}

// 生成的翻译任务清单
Translation Tasks:
1. [HIGH] new_feature: "Try our new feature!"
2. [MEDIUM] Review outdated translations: 0 items
3. [LOW] Cleanup removed keys: 0 items

文档生成钩子

自动文档生成器

用途:为代码自动生成和更新文档

配置

name: "文档生成器"
trigger: manual
description: "为函数、类和 API 自动生成详细文档"

处理流程

instructions: |
  自动分析代码并生成全面的文档:
  
  1. 代码分析:
     - 提取函数和类的签名
     - 分析参数类型和返回值
     - 识别公共 API 接口
     - 检测代码依赖关系
  
  2. 文档生成:
     - 创建 JSDoc 风格的注释
     - 生成参数和返回值说明
     - 添加使用示例代码
     - 包含错误处理说明
  
  3. README 更新:
     - 更新 API 文档部分
     - 添加安装和使用指南
     - 生成功能特性列表
     - 包含代码示例
  
  4. 文档标准化:
     - 确保文档格式一致
     - 验证链接的有效性
     - 检查拼写和语法
     - 维护文档版本号

生成示例

// 原始函数
function calculateTotal(items, taxRate) {
  return items.reduce((sum, item) => sum + item.price, 0) * (1 + taxRate);
}

// 生成的文档
/**
 * 计算订单总金额(包含税费)
 * 
 * @param {Array<Object>} items - 订单商品列表
 * @param {number} items[].price - 商品价格
 * @param {number} taxRate - 税率(小数形式,如 0.1 表示 10%)
 * @returns {number} 包含税费的总金额
 * 
 * @example
 * const items = [
 *   { name: 'Product A', price: 10.99 },
 *   { name: 'Product B', price: 15.50 }
 * ];
 * const total = calculateTotal(items, 0.08);
 * console.log(total); // 28.6092
 * 
 * @throws {TypeError} 当 items 不是数组时抛出错误
 * @throws {RangeError} 当 taxRate 为负数时抛出错误
 */
function calculateTotal(items, taxRate) {
  if (!Array.isArray(items)) {
    throw new TypeError('Items must be an array');
  }
  if (taxRate < 0) {
    throw new RangeError('Tax rate cannot be negative');
  }
  
  return items.reduce((sum, item) => sum + item.price, 0) * (1 + taxRate);
}

测试维护钩子

测试覆盖率维护器

用途:确保新代码具有相应的测试覆盖

配置

name: "测试覆盖率维护器"
trigger: onSave
filePattern: "src/**/*.{js,ts,jsx,tsx}"
description: "监控源代码变化,确保测试覆盖率"

详细逻辑

instructions: |
  维护高质量的测试覆盖率:
  
  1. 新功能检测:
     - 识别新增的函数和方法
     - 检测修改的函数逻辑
     - 分析复杂度变化
  
  2. 测试文件查找:
     - 查找对应的测试文件
     - 检查现有测试的覆盖范围
     - 识别测试缺口
  
  3. 测试用例生成:
     - 为新函数生成基础测试用例
     - 包含边界条件测试
     - 添加错误处理测试
     - 生成性能基准测试
  
  4. 测试执行和验证:
     - 运行相关测试套件
     - 验证测试通过率
     - 检查代码覆盖率指标
     - 生成覆盖率报告
  
  5. 质量检查:
     - 评估测试的有效性
     - 检查测试的可维护性
     - 确保测试与代码同步

生成的测试示例

// 源代码
function validateEmail(email) {
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  return emailRegex.test(email);
}

// 自动生成的测试
describe('validateEmail', () => {
  it('should return true for valid email addresses', () => {
    expect(validateEmail('user@example.com')).toBe(true);
    expect(validateEmail('test.email+tag@domain.co.uk')).toBe(true);
  });

  it('should return false for invalid email addresses', () => {
    expect(validateEmail('invalid-email')).toBe(false);
    expect(validateEmail('user@')).toBe(false);
    expect(validateEmail('@domain.com')).toBe(false);
  });

  it('should handle edge cases', () => {
    expect(validateEmail('')).toBe(false);
    expect(validateEmail(null)).toBe(false);
    expect(validateEmail(undefined)).toBe(false);
  });

  it('should handle special characters', () => {
    expect(validateEmail('user with spaces@domain.com')).toBe(false);
    expect(validateEmail('user@domain with spaces.com')).toBe(false);
  });
});

设计验证钩子

Figma 设计验证钩子

用途:确保前端实现符合设计系统规范

配置

name: "Figma 设计验证钩子"
trigger: onSave
filePattern: "**/*.{html,css,scss,jsx,tsx,vue}"
description: "验证前端实现是否符合 Figma 设计规范"

验证规则

instructions: |
  验证前端实现与设计系统的一致性:
  
  1. 颜色系统验证:
     - 检查是否使用了设计系统中定义的颜色
     - 验证品牌色彩的正确应用
     - 确保对比度符合无障碍标准
  
  2. 排版系统验证:
     - 验证字体大小使用设计令牌
     - 检查行高和字间距规范
     - 确保字体权重的一致性
  
  3. 组件库合规性:
     - 验证按钮样式和状态
     - 检查表单元素的规范性
     - 确保图标使用的一致性
  
  4. 布局和间距:
     - 验证网格系统的使用
     - 检查间距令牌的应用
     - 确保响应式设计的正确实现
  
  5. 品牌一致性:
     - 检查 Logo 的正确使用
     - 验证品牌元素的位置
     - 确保视觉层次的正确性

验证示例

/* ❌ 不符合设计系统 */
.button {
  background-color: #3498db; /* 硬编码颜色 */
  font-size: 14px; /* 未使用设计令牌 */
  padding: 8px 16px; /* 非标准间距 */
}

/* ✅ 符合设计系统 */
.button {
  background-color: var(--color-primary); /* 设计令牌 */
  font-size: var(--font-size-md); /* 标准字体大小 */
  padding: var(--spacing-sm) var(--spacing-md); /* 标准间距 */
}

MCP 集成钩子

增强型钩子功能

MCP 集成优势

mcp_integration_benefits:
  external_tools:
    - 集成代码质量工具 (SonarQube, CodeClimate)
    - 连接设计工具 (Figma, Sketch)
    - 访问项目管理系统 (Jira, Trello)
  
  enhanced_context:
    - 获取项目历史数据
    - 访问团队知识库
    - 集成 CI/CD 管道信息
  
  domain_knowledge:
    - 行业特定的最佳实践
    - 框架特定的优化建议
    - 安全合规性检查

MCP 增强示例

name: "MCP 增强代码审查器"
mcp_integrations:
  - service: "sonarqube"
    purpose: "获取代码质量指标"
  
  - service: "github"
    purpose: "访问 PR 历史和评论"
  
  - service: "slack"
    purpose: "发送通知给相关团队"

instructions: |
  执行全面的代码审查,利用 MCP 服务:
  
  1. 质量分析 (SonarQube):
     - 获取代码复杂度指标
     - 检查技术债务情况
     - 分析安全漏洞风险
  
  2. 历史分析 (GitHub):
     - 查看类似代码的 PR 评论
     - 分析过往的问题模式
     - 参考团队的编码约定
  
  3. 团队协作 (Slack):
     - 通知相关的代码所有者
     - 发送审查摘要
     - 安排代码审查会议

性能监控钩子

性能基准测试钩子

用途:监控代码变更对性能的影响

配置

name: "性能基准测试器"
trigger: preCommit
filePattern: "src/**/*.{js,ts}"

性能检查

instructions: |
  执行性能影响分析:
  
  1. 静态分析:
     - 检测 O(n²) 算法复杂度
     - 识别内存泄漏风险
     - 分析异步操作的效率
  
  2. 基准测试:
     - 运行关键函数的性能测试
     - 比较变更前后的执行时间
     - 测试内存使用情况
  
  3. 性能回归检测:
     - 与基线性能数据对比
     - 标记显著的性能下降
     - 提供优化建议
  
  4. 报告生成:
     - 生成性能影响报告
     - 可视化性能趋势
     - 提供优化建议

依赖管理钩子

依赖安全审计钩子

用途:监控依赖项的安全状况

配置

name: "依赖安全审计器"
trigger: onSave
filePattern: "package.json"

审计流程

instructions: |
  执行全面的依赖安全审计:
  
  1. 漏洞扫描:
     - 检查已知的 CVE 漏洞
     - 分析漏洞的严重程度
     - 评估影响范围
  
  2. 许可证合规:
     - 检查开源许可证兼容性
     - 识别许可证冲突
     - 生成许可证报告
  
  3. 过期依赖检查:
     - 识别过时的包版本
     - 提供安全更新建议
     - 评估更新风险
  
  4. 建议和修复:
     - 提供具体的修复步骤
     - 建议替代包方案
     - 生成更新计划

自定义工作流钩子

发布准备钩子

用途:自动化发布前的检查和准备工作

配置

name: "发布准备助手"
trigger: manual
description: "执行发布前的完整检查清单"

发布检查清单

instructions: |
  执行完整的发布前检查:
  
  1. 代码质量验证:
     - 运行完整的测试套件
     - 执行代码覆盖率检查
     - 验证构建成功
  
  2. 安全性检查:
     - 扫描安全漏洞
     - 检查依赖项安全状态
     - 验证环境配置
  
  3. 文档更新:
     - 更新版本号
     - 生成变更日志
     - 验证文档完整性
  
  4. 部署准备:
     - 验证部署脚本
     - 检查环境变量配置
     - 准备回滚计划
  
  5. 通知和协调:
     - 通知相关团队成员
     - 安排发布时间窗口
     - 准备监控和支持

这些钩子示例展示了 Kiro 代理钩子系统的强大功能和灵活性。您可以根据项目的具体需求调整和组合这些示例,创建适合您团队工作流程的自动化解决方案。

页面最后更新:2025年7月21日