## Spec **「在编写代码之前赋予结构」** - 完全遵循 Kiro 的规格驱动开发 与传统代码生成工具不同,实现 Kiro 的规格驱动开发,重点是为开发的混沌赋予结构。从最少的需求输入,逐步展开到产品经理级别的详细规格和可实施的设计,**从原型到生产环境**保证一致的质量。 ### 使用方法 ```bash # 请求 Claude 的 Spec Mode(最少需求输入) 「创建[功能描述]的 spec」 # Kiro 式分阶段展开: # 1. 简单需求 → 自动生成详细用户故事 # 2. 使用 EARS 记法的结构化需求描述 # 3. 通过分阶段对话精细化规格 # 4. 生成 3 个独立文件: # - requirements.md: EARS 记法的需求定义 # - design.md: 包含 Mermaid 图、TypeScript 接口的设计 # - tasks.md: 自动应用最佳实践的实施计划 ``` ### 实证效果 (Kiro 实绩) **2 天完成安全文件共享应用** ```bash 「创建文件共享系统 (支持加密) 的 spec」 → 2 天完成生产级别的加密文件共享应用 → 自动应用安全最佳实践 → 无需额外提示 ``` **新手一晚开发游戏** ```bash 「创建 2D 益智游戏的 spec」 → 游戏开发新手的开源开发者 → 一晚完成游戏创建 → 实现逻辑由 Kiro 处理,开发者专注创造性 ``` **周末从原型到生产** ```bash 「创建电商网站商品管理系统的 spec」 → 一个周末从概念到可运行的原型 → 从原型到生产环境的一致质量 → 通过 spec-driven development 的结构化方法 ``` ### 基本示例 ```bash # 新功能的 spec 创建 (最少输入) 「商品评论系统 - 星级评分功能 - 评论发布 - 图片上传」 # 系统功能的 spec 创建 「用户认证 - OAuth 支持 - 多因素认证」 # API 功能的 spec 创建 「支付系统 API - Stripe 集成 - 重视安全性」 ``` ### 与 Claude 配合 ```bash # 复杂功能 spec 「创建聊天功能的 spec。包括 WebSocket、实时通知、历史管理」 # 数据库关联功能 spec 「创建电商网站库存管理功能的 spec。包括商品添加、库存更新、警报功能」 # 前端功能 spec 「创建 React 仪表板的 spec。包括图表显示、筛选器、导出功能」 # 后端功能 spec 「创建 RESTful API 的 spec。包括认证、验证、日志记录」 ``` ### Spec Mode 的特点 **分阶段对话工作流** - 完全再现 Kiro 的核心价值——分阶段讨论 - 在各阶段与用户合作精细化规格 - 经过疑问解决、选项讨论、批准流程后生成文件 **3 阶段的交互式展开** - **Phase 1**: Requirements Discovery → 讨论 → 批准 → 生成 `requirements.md` - **Phase 2**: Design Exploration → 讨论 → 批准 → 生成 `design.md` - **Phase 3**: Implementation Planning → 讨论 → 批准 → 生成 `tasks.md` **动态规格制定** - 通过对话解决需求的模糊性 - 提示和讨论技术选项 - 说明权衡并确认判断 ### 详细示例 ```bash # 复杂系统功能 「创建在线支付系统的 spec。包括 Stripe 集成、安全性、错误处理」 # 前端功能 「创建 React 组件的 spec。包括状态管理、属性设计、测试」 # 后端功能 「创建 GraphQL API 的 spec。包括 Schema 设计、解析器、认证」 # DevOps 功能 「创建 CI/CD 管道的 spec。包括测试自动化、部署、监控」 ``` ### 分阶段对话工作流 (Phase by Phase) #### Phase 1: Requirements Discovery & Discussion **1. 从最少输入自动扩展 (Kiro 式)** ```text 用户:「用户管理系统 - 登录功能 - 个人资料编辑 - 管理员权限」 Claude:「从需求生成详细用户故事。 这个理解正确吗? 自动生成的用户故事: - 用户注册和认证功能 (支持 OAuth) - 个人资料管理功能 (头像、设置) - 权限管理功能 (RBAC) - 密码重置功能 - 安全审计日志 已补充未明确的细节。还需要其他功能吗?」 ``` **2. 使用 EARS 记法的结构化需求描述** ```text Claude:「使用 Kiro 的 EARS 记法结构化需求: EARS 记法需求定义: WHEN 用户尝试登录时 GIVEN 输入正确的邮箱和密码 THEN 系统确认认证 AND 成功时重定向到仪表板 WHILE 用户在个人资料编辑页面时 THE SYSTEM SHALL 实时执行验证 AND 预览显示更改内容 WHERE 需要管理员权限的功能 IS 尝试访问时 THE SYSTEM SHALL 确认权限级别 AND 不足时拒绝访问」 ``` **3. 边缘情况和安全需求的自动补充** ```text Claude:「基于 Kiro 的最佳实践,还考虑了以下情况: 安全需求 (自动补充): - 暴力攻击对策 - 会话管理和超时 - CSRF 保护和 XSS 对策 - 密码强度要求 边缘情况 (自动检测): - 同时登录限制 - 账户锁定功能 - 数据迁移时的一致性保证 - 大量请求时的负载均衡 这些需求合适吗?」 ``` **5. Phase 1 完成和批准** ```text Claude:「Requirements Phase 已完成。 可以生成 requirements.md 吗?」 → 「继续」→ 生成 requirements.md ``` #### Phase 2: Design Exploration & Discussion **1. 代码库分析 + 自动设计建议 (Kiro 式)** ```text Claude:「分析现有代码库,提出最佳架构: 代码库分析结果: - 认证:JWT + Express.js(v4.18.x) - 数据库:PostgreSQL(v14+) - 前端:React + TypeScript(v18+) - 现有模式:Repository 模式、Service 层分离 Kiro 推荐架构: - 符合 Clean Architecture - Domain-Driven Design 元素 - 部分应用 CQRS 模式 - 自动化的安全最佳实践 使用这个设计吗?」 ``` **2. 使用 Mermaid 图的可视化设计** ```text Claude:「自动生成系统设计的 Mermaid 图: 自动生成的架构图: graph TB Client[React Client] --> API[Express API Gateway] API --> Auth[Auth Service] API --> User[User Service] API --> Profile[Profile Service] Auth --> AuthDB[(Auth Database)] User --> UserDB[(User Database)] Profile --> ProfileDB[(Profile Database)] Auth --> JWT[JWT Service] Auth --> OAuth[OAuth Provider] 还需要生成数据流图吗?」 ``` **3. TypeScript 接口自动生成** ```text Claude:「基于设计自动生成 TypeScript 接口: 自动生成的 TypeScript 接口: // Domain entities interface User { readonly id: UserId; readonly email: Email; readonly profile: UserProfile; readonly auth: AuthSettings; readonly permissions: Permission[]; readonly createdAt: Date; readonly updatedAt: Date; } interface UserProfile { readonly displayName: string; readonly avatar: AvatarUrl; readonly preferences: UserPreferences; } interface AuthSettings { readonly passwordHash: PasswordHash; readonly mfaEnabled: boolean; readonly lastLoginAt: Date; readonly failedAttempts: number; } // Use cases interface UserRepository { findById(id: UserId): Promise; findByEmail(email: Email): Promise; save(user: User): Promise; } interface AuthenticationService { authenticate(credentials: LoginCredentials): Promise; refreshToken(token: RefreshToken): Promise; } 使用这个接口设计吗?」 ``` **4. Phase 2 完成和批准** ```text Claude:「Design Phase 已完成。 可以生成 design.md 吗?」 → 「继续」→ 生成 design.md ``` #### Phase 3: Implementation Planning & Discussion **1. 最佳实践自动应用 (Kiro 式)** ```text Claude:「生成了自动应用 Kiro 最佳实践的实施计划: 自动生成的实施策略: 1. 安全第一开发 - 自动集成 OWASP Top 10 对策 - 自动实现加密和哈希 - 自动生成安全测试 2. 强制清洁架构 - 自动实现层分离 - 自动应用依赖倒置 - 强制可测试设计 3. 性能优化 - 自动实现缓存策略 - 数据库优化 - 利用异步处理 使用这个方法吗?」 ``` **2. 质量检查点自动设置** ```text Claude:「自动设置各实施阶段的质量检查点: 自动质量保证流程: Phase 3a: 后端实施 - [ ] 安全扫描 (SAST/DAST) - [ ] API 规范测试 (OpenAPI 合规) - [ ] 性能测试 (负载和响应) - [ ] 漏洞扫描 (依赖关系和 CVE) Phase 3b: 前端实施 - [ ] 无障碍测试 (WCAG 2.1 AA) - [ ] 浏览器兼容性测试 - [ ] 响应式设计验证 - [ ] 安全头确认 Phase 3c: 集成和部署 - [ ] E2E 测试套件 - [ ] CI/CD 管道配置 - [ ] 监控和日志设置 - [ ] 生产环境安全审计 全部自动执行。有额外的质量标准吗?」 ``` **3. 依赖关系和风险缓解的自动分析** ```text Claude:「自动分析实施顺序和风险缓解策略: 优化的实施顺序: Week 1: 基础设施和安全基础 - 数据库设计和模式创建 - 认证基础 (JWT + 会话管理) - 安全中间件实施 - 基本 API 端点 Week 2: 核心功能实施 - 用户管理功能 - 个人资料管理功能 - 权限管理系统 - 验证和错误处理 Week 3: 高级功能和优化 - 多因素认证实施 - 审计日志功能 - 性能优化 - 前端集成 自动检测的风险缓解策略: - 多因素认证:分阶段引入 (SMS→应用认证) - 会话管理:Redis 集群配置 - 大量访问:速率限制 + CDN 利用 - 数据一致性:加强事务管理 这个计划没有问题吗?」 ``` **4. Phase 3 完成和批准** ```text Claude:「Implementation Planning Phase 已完成。 可以生成 tasks.md 吗?」 → 「继续」→ 生成 tasks.md ``` ### Kiro 特有的功能 **EARS 记法 (Easy Approach to Requirements Syntax)** ```text # Kiro 标准的 EARS 记法模式 WHEN [情况・触发器] GIVEN [前提条件] THEN [系统行为] AND [额外行为] WHILE [状态・流程] THE SYSTEM SHALL [必须行为] AND [相关行为] WHERE [功能・组件] IS [条件・状态] THE SYSTEM SHALL [对应行为] ``` **自动生成功能** - **Mermaid 图**: 自动生成架构和数据流图 - **TypeScript 接口**: 基于设计自动创建类型定义 - **最佳实践**: 自动集成安全和性能对策 - **质量检查点**: 自动设置分阶段质量标准 **hooks 联动** - 文件保存时的自动质量检查 - 自动应用代码标准 - 自动执行安全扫描 - 自动验证 OWASP Top 10 对策 **原型→生产质量保证** - 通过结构化方法的一致设计 - 强制安全第一开发 - 自动应用可扩展架构 - 集成持续质量管理 ### 注意事项 **适用范围** - Spec Mode 最适合功能实施 - 简单修复或小规模更改使用常规实施形式 - 推荐用于新功能开发或复杂功能改造 **质量保证** - 明确各阶段的完成标准 - 实施前的设计审查 - 包括测试和无障碍的全面质量标准 **执行注意事项** - 解决需求的模糊性后再进入设计阶段 - 设计完成后生成实施任务 - 重视各阶段的批准流程 ### 触发短语和控制 #### 分阶段工作流控制 **开始触发器** - 「创建[功能名]的 spec」 - 「想用 spec 驱动开发[功能名]」 - 「从规格书设计[功能名]」 **阶段进度控制** - **「继续」**: 完成当前阶段并生成文件,进入下一阶段 - **「修改」**: 在当前阶段内调整和改进内容 - **「重做」**: 从头开始当前阶段 - **「详细说明」**: 提供更详细的说明或选项 - **「跳过」**: 跳过当前阶段进入下一个 (不推荐) **文件生成时机** ```text Phase 1 完成 → 「继续」 → 生成 requirements.md Phase 2 完成 → 「继续」 → 生成 design.md Phase 3 完成 → 「继续」 → 生成 tasks.md ``` ### 执行示例 (分阶段流程) ```bash # 使用示例 用户:「创建用户管理系统的 spec」 # Phase 1: Requirements Discovery Claude: [开始需求确认和讨论] 用户: [响应・讨论・修改] Claude: 「Requirements Phase 已完成。可以继续吗?」 用户: 「继续」 → 生成 requirements.md # Phase 2: Design Exploration Claude: [开始设计提案和讨论] 用户: [技术选择・架构讨论] Claude: 「Design Phase 已完成。可以继续吗?」 用户: 「继续」 → 生成 design.md # Phase 3: Implementation Planning Claude: [开始实施计划讨论] 用户: [优先级・风险・工时讨论] Claude: 「Implementation Phase 已完成。可以继续吗?」 用户: 「继续」 → 生成 tasks.md # 完成 Claude: 「spec 驱动开发的准备已完成。可以开始实施。」 ``` ### 与 /plan 的区别 | 特征 | /plan | /spec | | -------- | ---------------- | --------------------------------------------------- | | 对象 | 一般实施计划 | 功能规格驱动开发 | | 输出格式 | 单一计划文档 | 3 个独立文件 (requirements.md、design.md、tasks.md) | | 需求定义 | 基本需求整理 | 使用 EARS 记法的详细验收标准 | | 设计 | 以技术选型为中心 | 基于代码库分析 | | 实施 | 一般任务分解 | 考虑依赖关系的序列 | | 质量保证 | 基本测试策略 | 全面质量要求 (测试、无障碍、性能) | | 同步 | 静态计划 | 动态 spec 更新 | ### 推荐用例 **推荐使用 spec** - 新功能开发 - 复杂功能改造 - API 设计 - 数据库设计 - UI/UX 实施 **推荐使用 plan** - 系统整体设计 - 基础设施构建 - 重构 - 技术选型 - 架构变更