Spec-Driven DevelopmentSDDSpecKitKiroAIGitHub CopilotIDEDevelopment Workflow

比较规格驱动开发(SDD)环境:SpecKit vs Kiro

Sloth255
Sloth255
·4 min read·818 words

介绍

本文比较了实现"规格驱动开发(SDD)"的两种代表性方法,这种方法近期受到了广泛关注。

  • VSCode + GitHub Copilot + SpecKit:向现有编辑器添加 SDD 工具包
  • Kiro IDE:集成了 SDD 功能的一体化 IDE

什么是规格驱动开发(SDD)?

在传统开发中,代码是核心而规格是补充。SDD 反转了这一关系,将规格视为可执行的交付物

SDD 的主要优势

  • 需求的明确化和文档化
  • 为 AI 代理提供精确指令
  • 减少团队之间的偏差
  • 支持迭代改进流程

环境 1:VSCode + GitHub Copilot + SpecKit

概述

SpecKit 是用于在现有开发环境中实现 SDD 的开源工具包。由 GitHub 提供,通过斜杠命令与 AI 代理交互。

设置

# 安装 Specify CLI
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git

# 初始化新项目
specify init my-project --ai copilot

# 或在现有项目中
specify init . --ai copilot

开发流程

1. 建立项目章程

/speckit.constitution Create principles focused on code quality, 
testing standards, user experience consistency, and performance requirements

此命令生成 .specify/memory/constitution.md,定义项目范围的指导方针。

2. 创建规格

/speckit.specify Build an application that can help me organize my photos 
in separate photo albums. Albums are grouped by date and can be re-organized 
by dragging and dropping on the main page.

生成的文件:

  • .specify/specs/001-feature-name/spec.md:功能需求和用户故事

3. 创建技术实施计划

/speckit.plan The application uses Vite with minimal number of libraries. 
Use vanilla HTML, CSS, and JavaScript as much as possible.

生成的文件:

  • plan.md:技术架构
  • data-model.md:数据模型定义
  • contracts/api-spec.json:API 规格
  • research.md:技术研究文档

4. 任务分解

/speckit.tasks

生成的文件:

  • tasks.md:实施任务列表(带依赖关系和并行执行标记)

5. 执行实施

/speckit.implement

基于任务列表按顺序进行实施。

SpecKit 提示文件详情

SpecKit 在 .github/prompts/ 目录中生成多个提示文件。

speckit.constitution.prompt.md

目的:为项目定义基本原则和开发指南

结构

---
description: Create or update project governing principles
---

# Project Constitution

Create a comprehensive constitution document that includes:

1. **Code Quality Standards**
   - Naming conventions
   - Documentation requirements
   - Code review processes

2. **Testing Standards**
   - Unit test coverage requirements
   - Integration test strategies
   - Test documentation

3. **Architecture Principles**
   - Design patterns to follow
   - Technology stack constraints
   - Performance requirements

4. **User Experience Guidelines**
   - Accessibility standards
   - Responsive design requirements
   - Internationalization considerations

特性

  • AI 代理在所有后续阶段都参考此文档
  • 强制执行项目特定的最佳实践
  • 确保团队间的一致性

speckit.specify.prompt.md

目的:以用户故事格式构建功能需求

结构

---
description: Define requirements and user stories
---

# Specification Template

## User Stories

**As a** [user type]
**I want** [goal]
**So that** [benefit]

### Acceptance Criteria
- [ ] Criterion 1
- [ ] Criterion 2

## Functional Requirements

### FR-001: [Requirement Name]
**Priority**: High/Medium/Low
**Description**: Detailed requirement description
**Dependencies**: [Other requirements]

生成流程

  1. 解析用户的自然语言描述
  2. 转换为用户故事
  3. 明确验收标准
  4. 分配功能需求 ID

speckit.plan.prompt.md

目的:详细说明技术实施计划

结构

---
description: Create technical implementation plans
---

# Implementation Plan

## Technology Stack
- Frontend: [Framework/Library]
- Backend: [Framework]
- Database: [Type]
- Deployment: [Platform]

## Architecture Overview
[系统架构图、组件图]

## Data Model
[实体关系图、表定义]

## API Specifications
[端点定义、请求/响应格式]

## Implementation Phases
1. Phase 1: [Core features]
2. Phase 2: [Advanced features]

## Technical Considerations
- Security requirements
- Performance optimization
- Scalability concerns

特性

  • 遵循 constitution.md 原则
  • 技术上解决 spec.md 需求
  • 比较多种技术选择

speckit.tasks.prompt.md

目的:分解为具体可实施的任务

结构

---
description: Generate actionable task lists
---

# Task Breakdown

## User Story: [Story ID]

### Task 1: [Task Name]
**File**: `src/components/Feature.tsx`
**Type**: Implementation
**Dependencies**: None
**Parallel**: [P] (if parallelizable)
**Description**: Detailed task description
**Acceptance**: How to verify completion

### Task 2: [Task Name]
**File**: `tests/Feature.test.tsx`
**Type**: Testing
**Dependencies**: Task 1

生成规则

  • 明确管理依赖关系
  • 具体指定文件路径
  • 考虑测试驱动开发(TDD)顺序
  • 标记可并行执行的任务

speckit.implement.prompt.md

目的:基于任务列表执行实施

执行流程

---
description: Execute implementation plan
---

# Implementation Execution

1. **Validate Prerequisites**
   - Constitution exists
   - Spec is complete
   - Plan is approved
   - Tasks are defined

2. **Parse Tasks**
   - Read tasks.md
   - Build dependency graph
   - Identify parallel tasks

3. **Execute Tasks**
   For each task in order:
   - Create/modify specified files
   - Run tests (if TDD)
   - Validate against acceptance criteria
   - Update task status

4. **Progress Reporting**
   - Mark tasks as In Progress/Done
   - Report errors with context
   - Suggest next steps

speckit.clarify.prompt.md

目的:通过提问澄清规格中的模糊部分

结构

---
description: Clarify underspecified areas
---

# Clarification Questions

## Coverage Analysis
[识别规格中未覆盖的领域]

## Sequential Questions
1. **Question**: [具体问题]
   **Context**: [为什么这很重要]
   **Options**: [可能的答案]

[记录后将答案添加到 Clarifications 部分]

特性

  • 建议在创建计划前执行
  • 通过结构化问题引出答案
  • 将答案整合到规格中

生成文档示例

在实际项目中,目录结构如下:

my-project/
├── .specify/
│   ├── memory/
│   │   └── constitution.md          # 项目原则
│   ├── specs/
│   │   └── 001-photo-albums/
│   │       ├── spec.md               # 功能规格
│   │       ├── plan.md               # 实施计划
│   │       ├── tasks.md              # 任务列表
│   │       ├── data-model.md         # 数据模型
│   │       ├── contracts/
│   │       │   └── api-spec.json    # API 规格
│   │       └── research.md           # 技术研究
│   ├── scripts/
│   │   ├── create-new-feature.sh
│   │   └── setup-plan.sh
│   └── templates/
│       ├── spec-template.md
│       ├── plan-template.md
│       └── tasks-template.md
├── .github/
│   └── prompts/
│       ├── speckit.constitution.prompt.md
│       ├── speckit.specify.prompt.md
│       ├── speckit.plan.prompt.md
│       ├── speckit.tasks.prompt.md
│       ├── speckit.implement.prompt.md
│       ├── speckit.clarify.prompt.md
│       └── speckit.analyze.prompt.md
└── src/
    └── [实施文件]

优势

开源:MIT 许可证下免费使用
灵活性:支持多种 AI 代理(Claude、Gemini、Copilot 等)
渐进采用:可以从需要的功能开始逐步采用

劣势

手动设置:初始配置需要多个步骤
集成复杂性:需要组合多种工具
UI 体验:以命令行为中心,视觉反馈有限
学习曲线:需要理解每个命令的作用和顺序

环境 2:Kiro IDE

概述

Kiro 是支持从原型到生产的 Agentic IDE,原生集成了 SDD 功能。

设置

  1. kiro.dev 下载 IDE
  2. 安装并启动
  3. 可以自动导入 VS Code 设置和插件

开发流程

1. 生成 Steering 文档

从 Kiro 面板选择"Generate Steering Docs",在 .kiro/steering/ 中生成以下内容:

  • 项目技术栈信息
  • 编码规范
  • 工作流指南

2. 规格创建的三个阶段

需求阶段

使用 EARS(Easy Approach to Requirements Syntax)格式描述用户故事和验收标准:

WHEN [condition/event]
THE SYSTEM SHALL [expected behavior]

生成的文件:.kiro/specs/feature-name/requirements.md

设计阶段

记录技术架构和序列图:

生成的文件:.kiro/specs/feature-name/design.md

任务阶段

实施任务的详细计划:

生成的文件:.kiro/specs/feature-name/tasks.md

3. 使用 Hooks 自动化

事件驱动的自动化,在响应文件更改时自动执行任务:

示例:"保存 React 组件时,自动生成测试文件"

{
  "hooks": [
    {
      "trigger": "onFileSave",
      "pattern": "**/*.tsx",
      "action": "generateTests"
    }
  ]
}

Kiro 文档结构

my-project/
├── .kiro/
│   ├── steering/
│   │   ├── tech-stack.md
│   │   ├── coding-standards.md
│   │   └── workflows.md
│   └── specs/
│       └── photo-albums/
│           ├── requirements.md    # EARS 格式需求
│           ├── design.md          # 架构设计
│           └── tasks.md           # 实施任务
└── src/
    └── [实施文件]

优势

集成体验:所有功能原生集成于 IDE
可视化 UI:可视化管理规格列表和任务状态
自动化:使用 Hooks 进行后台任务执行

劣势

需要专用 IDE:需要从现有编辑器迁移
供应商锁定:依赖 Kiro 特定功能

详细比较表

方面 SpecKit Kiro
设置 通过 CLI 手动设置 仅需下载并安装
学习曲线 需要学习命令 直观的 UI
规格格式 带模板的 Markdown EARS + Markdown
任务管理 在 tasks.md 中文本管理 在 IDE 中可视化管理
自动化 基于脚本 使用 Hooks 事件驱动
Git 集成 基于分支的自动管理 手动或 IDE 功能
AI 代理 支持 10+ 种 Kiro 集成代理
可扩展性 模板自定义 MCP + Powers
成本 免费(OSS) 预览期间免费
团队共享 通过 Git 完全共享 Git + Kiro 特定功能

生成文档比较

章程/Steering

SpecKit

  • .specify/memory/constitution.md:单一文件
  • 描述整体项目原则
  • 被所有命令引用

Kiro

  • .kiro/steering/:多个文件
  • 分别存放技术栈、编码规范、工作流
  • 自动生成 + 可自定义

规格

SpecKit

# spec.md

## User Stories
As a user, I want to...

## Functional Requirements
FR-001: Feature description

## Review Checklist
- [ ] Requirements are clear
- [ ] Acceptance criteria defined

Kiro

# requirements.md (EARS format)

WHEN user clicks upload button
THE SYSTEM SHALL display file selection dialog

WHEN file size exceeds 10MB
THE SYSTEM SHALL display error message

实施计划

SpecKit

# plan.md

## Architecture
- Frontend: React
- Backend: Node.js

## Implementation Details
[详细实施指南]

# data-model.md
[数据库架构]

# contracts/api-spec.json
{OpenAPI specification}

Kiro

# design.md

## Component Architecture
[系统架构图]

## Sequence Diagrams
[流程图]

## Technical Considerations
[性能、安全等]

任务

SpecKit

# tasks.md

## User Story: US-001

### Task 1: Setup database schema
File: src/db/schema.sql
Dependencies: None
[P] Parallel: Yes

### Task 2: Create API endpoint
File: src/api/upload.ts
Dependencies: Task 1

Kiro

# tasks.md

## Phase 1: Core Implementation

- [ ] Task 1: Database setup
  Status: Not Started
  Assignee: [Auto]
  
- [ ] Task 2: API development
  Status: Not Started
  Dependencies: Task 1

使用指南

何时选择 SpecKit

  1. 想保持现有 VSCode 环境

    • 原样使用大量插件和设置
    • 避免编辑器迁移成本
  2. 整个团队是 SDD 新手

    • 使用基于命令的方法逐步学习
    • 通过 Git 轻松共享文档
  3. 想尝试多种 AI 代理

    • 在 Claude、Gemini、Copilot 等之间切换
    • 避免供应商锁定
  4. 开源优先

    • 社区驱动的开发
    • 自由定制

何时选择 Kiro

  1. 最大化生产力

    • 使用集成 UI 快速工作
    • 使用 Hooks 自动化重复任务
  2. 注重视觉

    • 可视化管理规格和任务
    • 在仪表盘上查看进度
  3. 需要高级自动化

    • 事件驱动工作流
    • 通过 MCP 与外部服务集成
  4. 新项目

    • 不受现有环境约束
    • 尝试最新 SDD 体验

使用 SpecKit 提示文件的高级用法

创建自定义提示

SpecKit 提示文件可以自由定制:

---
description: Custom quality checklist generator
---

# /speckit.custom-checklist

为以下内容生成质量检查清单:

1. **安全审查**
   - 认证检查
   - 授权验证
   - 输入验证

2. **性能审查**
   - 数据库查询优化
   - 缓存策略
   - 负载测试结果

[输出格式:spec 目录中的 Markdown 检查清单]

管理多个规格

# 功能 1
specify init . --ai copilot
/speckit.specify Build user authentication system

# 功能 2(在新分支上)
git checkout -b feature/002-payment
/speckit.specify Integrate payment gateway

实际工作流示例

使用 SpecKit 的团队开发

graph TD
    A[产品经理] -->|定义需求| B["speckit.specify"]
    B --> C["生成 spec.md"]
    C --> D[技术负责人]
    D -->|技术选择| E["speckit.plan"]
    E --> F["生成 plan.md, data-model.md"]
    F --> G[开发者]
    G -->|审查任务| H["speckit.tasks"]
    H --> I["生成 tasks.md"]
    I --> J["speckit.implement"]
    J --> K["生成代码"]
    K --> L[Pull Request]
    L --> M[代码审查]
    M -->|批准| N[Merge]

使用 SpecKit 的团队开发流程:不同角色使用不同命令,通过 Git 共享文档

使用 Kiro 的个人开发

graph TD
    A[想法] --> B[Spec 聊天]
    B --> C[生成需求]
    C --> D[生成设计]
    D --> E[生成任务]
    E --> F[参考 #spec 编写代码]
    F --> G[保存文件]
    G --> H[触发 Hooks]
    H --> I[自动生成测试]
    I --> J[在后台运行]

使用 Kiro IDE 的个人开发流程:集成 UI 和通过 Hooks 自动化的高效开发周期

结论

SpecKit 适合希望在利用现有开发环境的同时采用 SDD 的团队。它是开源的,高度灵活,允许渐进式采用。

Kiro 适合寻求最新 Agentic IDE 体验的开发者。凭借集成 UI、自动化功能和视觉反馈,它能最大化生产力。

两种环境都旨在摆脱传统的"随意编码",实现以规格为中心的系统化开发流程。根据项目性质、团队组成和现有开发环境进行选择。