钩子示例
安全性钩子
提交前安全扫描器
用途:防止敏感信息泄露,在代码提交前进行安全检查
配置:
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日