📋 OpenSpec 完整工作流程指南

AI 编程助手的规范驱动开发框架
OpenSpec 是一个创新的开发方法论框架,通过在实现前建立明确的需求共识,实现真正的规范驱动开发。 它在人类和 AI 之间架起桥梁,创建结构化的工作流程,有效防止范围蔓延,确保开发过程的确定性和可追溯性。 本指南将详细介绍每个命令、步骤和最佳实践。

💡 核心概念与创新架构

OpenSpec 引入了革命性的双文件夹架构设计:openspec/specs/ 文件夹维护当前的事实来源(已批准的权威规范), 而 openspec/changes/ 文件夹则包含所有提议的更新和变更。这种清晰的分离使得代码差异保持明确和易于管理, 特别适合需要持续演进的功能开发场景。与传统的单一规范文件方法不同,OpenSpec 将每个功能变更的所有相关内容 (提案、任务、设计文档、规范增量)都组织在一个独立的变更文件夹中,这使得它在处理棕地项目改造(1→n 开发模式)时 表现出色,能够精确追踪每一处变更的来龙去脉。

🏗️ 双文件夹架构详解

📁

事实来源文件夹

openspec/specs/
这是项目规范的唯一权威来源,存储按业务领域组织的当前已批准规范。 所有规范都以 Markdown 格式编写,包含需求定义、用户场景和验收标准。 这个文件夹代表了系统的当前状态,是开发和测试的基准。
📄
auth/spec.md - 认证与授权规范
定义用户登录、权限管理、会话处理等
📄
profiles/spec.md - 用户资料管理规范
定义用户信息的创建、更新、查询等功能
📄
billing/spec.md - 计费系统规范
定义订阅、支付、发票等计费相关功能
📂

变更提议文件夹

openspec/changes/
每个功能变更都有自己的独立文件夹,包含该变更的完整上下文:提案说明、任务清单、 技术设计和增量规范。使用明确的差异标记(ADDED/MODIFIED/REMOVED)来精确追踪每一处变更, 确保审查和归档时不会遗漏或混淆任何修改。
📄
proposal.md - 变更提案文档
说明为什么需要这个变更,预期达到什么效果
📄
tasks.md - 实施任务清单
详细的待办任务列表,可逐项标记完成
📄
design.md - 技术设计文档(可选)
记录技术决策、架构选择和实现细节
📁
specs/ - 增量规范文件夹
包含相对于源规范的差异标记

🔄 核心工作流程 4 个步骤

1
📝 Draft(起草阶段)
在这个阶段,AI 助手会根据您的需求创建一个结构化的变更提案。系统会自动在 openspec/changes/ 目录下生成一个新的变更文件夹,其中包含提案文档、 任务列表和规范增量。这个阶段的重点是捕获意图,而不是立即开始编码。
🎯 这个阶段做什么?
  • AI 分析您的需求并创建变更提案
  • 自动生成结构化的文件夹和文档
  • 识别受影响的规范文件
  • 创建初步的任务分解
  • 标记需要添加、修改或删除的内容
💼 实际应用场景
场景 1: 添加新功能
/openspec:proposal 添加用户双因素认证功能
场景 2: 修改现有功能
/openspec-proposal 修改用户搜索,支持按多个条件筛选
🎯 可用命令
/openspec:proposal <功能描述>
/openspec-proposal <功能描述>
自然语言:请帮我创建一个关于xxx的提案
2
🔍 Review & Align(审查与对齐)
这是确保团队达成共识的关键阶段。所有利益相关者(开发者、产品经理、测试人员) 都可以审查提案、任务和规范,通过反馈循环进行迭代完善。这个阶段可以手动编辑文件, 也可以继续与 AI 对话来细化细节。目标是在写代码之前,确保每个人对"要做什么"有清晰一致的理解。
🎯 这个阶段做什么?
  • 团队成员审查 proposal.md,确认需求理解一致
  • 检查 tasks.md,评估工作量和依赖关系
  • 验证规范增量,确保没有遗漏或冲突
  • 使用 validate 命令检查格式规范
  • 反复迭代直到所有人都同意
🔧 可用工具
openspec list - 列出所有变更
openspec show <变更名称> - 查看详情
openspec validate <变更名称> - 验证格式
openspec view - 交互式仪表板
3
⚙️ Implement(实施阶段)
经过充分的审查和对齐后,现在可以开始实际的代码实现了。AI 助手会严格参考已批准的规范, 按照 tasks.md 中的任务列表逐项执行。每完成一个任务,都会在任务列表中标记为完成, 确保整个实现过程透明可追踪
⚡ 执行命令
/openspec:apply <变更名称>
/openspec-apply <变更名称>
4
📦 Archive(归档阶段)
当所有任务都完成并测试通过后,就可以将变更归档了。这个过程会自动将增量规范合并回 openspec/specs/ 中的源规范文件,然后将变更文件夹移至归档目录。 这一步非常重要,它确保事实来源始终保持最新
✅ 归档命令
/openspec:archive <变更名称>
/openspec-archive <变更名称>
openspec archive <变更名称> --yes

🛠️ CLI 命令完整指南

openspec init
初始化 OpenSpec 项目结构。这是使用 OpenSpec 的第一步,会创建所有必需的目录和配置文件, 并为您的 AI 编程助手配置斜杠命令。
📝 使用示例
$ openspec init
openspec list
显示所有活动的变更文件夹列表。快速了解当前有哪些待处理的功能变更, 每个变更的状态如何。这是日常工作中最常用的命令之一。
📝 使用示例
$ openspec list
openspec view
启动交互式仪表板,提供可视化界面来浏览所有规范和变更。 支持搜索、过滤和详细查看,非常适合团队审查会议使用。
📝 使用示例
$ openspec view
openspec show
显示特定变更的完整详情,包括提案说明、任务列表、规范增量等所有相关信息。 用于深入了解某个具体变更的全部内容。
📝 使用示例
$ openspec show add-2fa
openspec validate
验证变更文件夹中的规范格式是否正确。检查必需的节标题、Scenario 块格式、 Delta 标记等是否符合 OpenSpec 规范。
📝 使用示例
$ openspec validate add-2fa
openspec archive
将已完成的变更归档。自动合并规范增量到源规范文件,并将变更文件夹移至归档目录。 支持一次归档多个变更。
📝 使用示例
$ openspec archive add-2fa -y

⚡ 斜杠命令支持 8+ AI 工具

OpenSpec 原生支持多种 AI 编程助手的斜杠命令。初始化后,这些命令会自动在对应工具中可用。
Claude Code
/openspec:proposal
/openspec:apply
/openspec:archive
Cursor
/openspec-proposal
/openspec-apply
/openspec-archive
GitHub Copilot
/openspec-proposal
/openspec-apply
/openspec-archive
Amazon Q
@openspec-proposal
@openspec-apply
@openspec-archive
💡 AGENTS.md 兼容性
OpenSpec 还通过 openspec/AGENTS.md 文件支持其他 AI 工具。 这些工具可以读取 AGENTS.md 中的指令,并通过自然语言来使用 OpenSpec 功能。

📝 Delta 格式详解

OpenSpec 使用"增量(Delta)"概念来精确表达对现有规范的变更。每个变更都用明确的标记来区分添加、修改和删除。

ADDED - 添加新内容

用于标记全新的功能需求、场景或验收标准。这些是之前规范中不存在的内容。
示例格式
## ADDED Requirements ### Requirement: Two-Factor Authentication #### Scenario: User enables 2FA GIVEN a logged-in user WHEN they navigate to security settings AND enable two-factor authentication THEN the system SHALL generate a QR code AND require successful verification before activation
✏️

MODIFIED - 修改现有内容

用于标记对现有需求的修改。必须包含完整的更新后文本,而不是部分修改。 这样可以确保审查者清楚地看到修改后的完整需求。
示例格式
## MODIFIED Requirements ### Requirement: User Login #### Scenario: User logs in with valid credentials GIVEN a user with valid credentials WHEN they enter their email and password AND optionally provide 2FA code THEN the system SHALL authenticate the user AND redirect to the dashboard
🗑️

REMOVED - 删除废弃内容

用于标记需要从规范中移除的功能或需求。这些内容将在归档时从源规范中删除。
示例格式
## REMOVED Requirements ### Requirement: SMS Password Reset #### Scenario: User resets password via SMS (This feature is being replaced by email-only reset)
⚠️ 格式要求
  • 必须使用 ### Requirement: [名称] 格式
  • 每个需求至少包含一个 #### Scenario:
  • 需求描述中使用 SHALLMUST 表示强制性要求
  • 场景使用 GIVEN-WHEN-THEN 格式(Gherkin 风格)
  • MODIFIED 必须包含完整的更新后内容,不能只包含差异部分

🔍 OpenSpec 优势对比

OpenSpec 特别适合棕地项目(Brownfield)改造,在处理对现有功能的迭代优化时表现出色。
特性 OpenSpec spec-kit Kiro.dev
现有项目支持 ✓ 优秀 较弱 一般
多规范变更管理 ✓ 统一文件夹 ✓ 但分散 跨多文件夹
状态与差异分离 ✓ specs/ vs changes/
差异可视化 ✓ ADDED/MODIFIED/REMOVED
绿地项目(0→1) ✓ 支持 ✓✓ 更优 ✓ 支持
💡 为什么选择 OpenSpec?
  • 棕地改造专家:明确的 Delta 标记让对现有功能的修改一目了然
  • 变更隔离:每个功能变更都在独立文件夹中,互不干扰
  • 审查友好:清晰的 ADDED/MODIFIED/REMOVED 分类让团队审查更高效
  • 可追溯性:归档保留完整历史,可以回溯任何变更的来龙去脉
  • 工具无关:支持 20+ AI 编程助手,团队成员可自由选择工具

🚀 完整项目案例

让我们通过一个真实案例,了解如何使用 OpenSpec 为现有的用户管理系统添加双因素认证(2FA)功能。

📖 案例背景

我们有一个在线 SaaS 平台,当前只支持邮箱+密码登录。由于安全性要求提升,产品团队决定添加双因素认证功能。 现有的认证规范位于 openspec/specs/auth/spec.md,我们需要在不破坏现有功能的前提下添加 2FA 支持。

0
⚙️ 环境准备
在开始之前,确保您的开发环境已正确配置 OpenSpec。
安装 OpenSpec
$ npm install -g @fission-ai/openspec@latest $ openspec --version
✓ OpenSpec 1.0.0 installed successfully
初始化项目
$ cd my-saas-platform $ openspec init
? Select your AI coding assistant: Claude Code
✓ Created openspec/ directory structure
✓ Configured slash commands for Claude Code
✓ Generated AGENTS.md protocol file
✓ OpenSpec initialized successfully!
创建 project.md(可选但推荐)
openspec/project.md 中定义项目约定和技术栈信息,帮助 AI 更好地理解项目上下文。
# Project: SaaS Platform

## Tech Stack
- Backend: Node.js + Express + TypeScript
- Database: PostgreSQL
- Authentication: JWT tokens
- Frontend: React + TypeScript

## Conventions
- Use async/await for all async operations
- Follow REST API design principles
- All endpoints must have proper error handling
- Security: OWASP Top 10 compliance required
📁 初始化后的目录结构
my-saas-platform/
├── openspec/
│   ├── project.md           # 项目上下文(新创建)
│   ├── AGENTS.md           # AI 工具协议(自动生成)
│   ├── specs/              # 源规范文件夹
│   │   └── auth/
│   │       └── spec.md     # 现有的认证规范
│   ├── changes/            # 变更文件夹(空)
│   └── archive/            # 归档文件夹(空)
├── .claude/
│   └── commands/
│       ├── openspec-proposal.md
│       ├── openspec-apply.md
│       └── openspec-archive.md
└── ...
1
📝 创建变更提案
产品经理或开发者向 AI 助手描述需求,AI 会分析现有规范并生成结构化的变更提案。
与 AI 的对话
开发者:
"/openspec:proposal 为用户认证系统添加双因素认证(2FA)功能。用户应该能够使用认证器应用(如 Google Authenticator)来增强账户安全性。需要支持启用、禁用和恢复码功能。"
AI 助手:
我将分析现有的 auth/spec.md 规范,并创建一个变更提案来添加 2FA 功能...
✓ 已创建变更文件夹:openspec/changes/add-2fa-authentication/
生成的文件结构
openspec/changes/add-2fa-authentication/
├── proposal.md              # 变更提案
├── tasks.md                # 实施任务清单
├── design.md               # 技术设计(AI 生成)
└── specs/
    └── auth/
        └── spec.md         # 规范增量(Delta)
📄 proposal.md 内容示例
# Change Proposal: Add Two-Factor Authentication

## Problem Statement
Current authentication relies solely on email/password, which is vulnerable to credential theft. Users need an additional security layer.

## Proposed Solution
Implement TOTP-based two-factor authentication using authenticator apps. Include recovery code mechanism for account recovery.

## Impact Analysis
- **Affected Specs**: auth/spec.md
- **New Features**: 2FA setup, verification, recovery codes
- **Modified Features**: Login flow now includes optional 2FA step
- **Security Impact**: Significantly reduces account takeover risk

## Success Criteria
- Users can enable/disable 2FA from settings
- Login requires 2FA code when enabled
- Recovery codes provide backup access method
- No breaking changes to existing authentication
✅ tasks.md 内容示例
# Implementation Tasks

## Backend Tasks
- [ ] Add 2FA fields to user database schema
- [ ] Implement TOTP secret generation
- [ ] Create API endpoint: POST /api/auth/2fa/setup
- [ ] Create API endpoint: POST /api/auth/2fa/verify
- [ ] Create API endpoint: POST /api/auth/2fa/disable
- [ ] Generate and store recovery codes
- [ ] Modify login endpoint to check 2FA status
- [ ] Add unit tests for 2FA logic

## Frontend Tasks
- [ ] Create 2FA setup UI component
- [ ] Display QR code for authenticator apps
- [ ] Create 2FA verification input
- [ ] Add 2FA settings page
- [ ] Show recovery codes after setup
- [ ] Update login flow to handle 2FA
- [ ] Add loading states and error handling

## Documentation
- [ ] Update API documentation
- [ ] Create user guide for 2FA setup
📊 specs/auth/spec.md (Delta) 示例
# Authentication Specification (Delta)

## ADDED Requirements

### Requirement: Two-Factor Authentication Setup

#### Scenario: User enables 2FA
GIVEN a logged-in user without 2FA enabled
WHEN they navigate to security settings
AND request to enable two-factor authentication
THEN the system SHALL generate a TOTP secret
AND display a QR code for authenticator apps
AND show a manual entry key
AND generate 10 recovery codes
AND require successful verification before activation

### Requirement: 2FA Verification During Login

#### Scenario: User with 2FA enabled logs in
GIVEN a user with 2FA enabled
WHEN they provide correct email and password
THEN the system SHALL prompt for 2FA code
AND accept valid TOTP codes
AND accept valid recovery codes
AND grant access only after successful verification

## MODIFIED Requirements

### Requirement: User Login

#### Scenario: User logs in with valid credentials
GIVEN a user with registered credentials
WHEN they provide correct email and password
AND provide 2FA code if 2FA is enabled
THEN the system SHALL authenticate the user
AND issue a JWT token
AND redirect to dashboard
2
🔍 团队审查与迭代
团队成员审查提案、规范和任务清单,通过反馈循环进行完善。
查看变更列表
$ openspec list
Active Changes:
┌─────────────────────────┬──────────────────┬─────────────┐
│ Change Name             │ Affected Specs   │ Tasks       │
├─────────────────────────┼──────────────────┼─────────────┤
│ add-2fa-authentication  │ auth/spec.md     │ 0/15 done   │
└─────────────────────────┴──────────────────┴─────────────┘
查看详细信息
$ openspec show add-2fa-authentication
显示 proposal.md、tasks.md 和 specs/auth/spec.md 的完整内容...
验证格式
$ openspec validate add-2fa-authentication
✓ proposal.md: Valid
✓ tasks.md: Valid format
✓ specs/auth/spec.md: Valid delta format
  - Found 2 ADDED requirements
  - Found 1 MODIFIED requirement
  - All scenarios properly formatted
团队反馈与迭代
产品经理的反馈:
"恢复码功能很好,但我们还需要支持记住设备功能,避免用户每次登录都要输入 2FA。请添加到规范中。"
开发者与 AI 的对话:
"请在 add-2fa-authentication 变更中添加'记住设备'功能,用户可以选择在信任的设备上 30 天内不再要求 2FA。"
AI 更新后:
✓ 已更新 specs/auth/spec.md,添加"记住设备"需求
✓ 已更新 tasks.md,添加相关实施任务
✓ 已更新 design.md,说明设备信任令牌机制
💡 审查最佳实践
  • 安全性审查:确保恢复码加密存储、2FA 密钥安全管理
  • 用户体验审查:验证流程是否清晰、错误提示是否友好
  • 技术审查:评估性能影响、数据库迁移策略
  • 测试覆盖:确认 tasks.md 中包含充分的测试任务
  • 团队共识:所有相关方都理解并同意规范再进入实施阶段
3
⚙️ 执行实施
规范通过审查后,AI 助手按照 tasks.md 中的清单逐项实施功能。
启动实施
开发者:
"/openspec:apply add-2fa-authentication"
AI 助手:
我将开始实施 2FA 功能,按照 tasks.md 中的清单逐项完成。让我先从数据库迁移开始...
实施过程示例
AI 会按照任务列表依次执行:
✓ [已完成] 添加 2FA 相关字段到 users 表
✓ [已完成] 实现 TOTP 密钥生成逻辑
✓ [已完成] 创建 POST /api/auth/2fa/setup 端点
⏳ [进行中] 创建 POST /api/auth/2fa/verify 端点
○ [待处理] 创建 POST /api/auth/2fa/disable 端点
○ [待处理] 生成和存储恢复码...
查看进度
$ openspec list
Active Changes:
┌─────────────────────────┬──────────────────┬─────────────┐
│ Change Name             │ Affected Specs   │ Tasks       │
├─────────────────────────┼──────────────────┼─────────────┤
│ add-2fa-authentication  │ auth/spec.md     │ 12/17 done  │
└─────────────────────────┴──────────────────┴─────────────┘
⚡ 实施阶段提示
  • AI 严格按照规范实施,不会添加未经批准的功能
  • 每完成一个任务,tasks.md 会自动更新标记
  • 可以随时查看进度,必要时可以暂停并稍后继续
  • 如果遇到技术问题,AI 会提出并等待确认
  • 实施过程透明可追踪,符合审计要求
4
✅ 测试与归档
实施完成后,经过测试验证,将变更归档并更新源规范。
测试验证
$ npm test
✓ Auth: 2FA setup generates valid secret (45ms)
✓ Auth: 2FA verification accepts valid codes (123ms)
✓ Auth: Login with 2FA enabled requires code (89ms)
✓ Auth: Recovery codes work correctly (67ms)
✓ Auth: Remember device skips 2FA (95ms)
✓ Auth: All existing auth tests still pass (234ms)

Test Suites: 3 passed, 3 total
Tests:       24 passed, 24 total
执行归档
$ openspec archive add-2fa-authentication --yes
Archiving change: add-2fa-authentication

✓ Validated all tasks completed
✓ Merging delta to openspec/specs/auth/spec.md
  - Added 3 new requirements
  - Modified 1 existing requirement
✓ Moving to archive: openspec/archive/add-2fa-authentication/
✓ Updated archive index

Archive complete! The source spec has been updated.
归档后的目录结构
openspec/
├── specs/
│   └── auth/
│       └── spec.md         # ✨ 已更新,包含 2FA 规范
├── changes/                # 空(变更已归档)
└── archive/
    └── add-2fa-authentication/  # 📦 已归档
        ├── proposal.md
        ├── tasks.md
        ├── design.md
        └── specs/...
🎉 案例完成
通过这个完整的案例,我们看到了 OpenSpec 如何帮助团队:
  • 在实施前达成共识:所有人都清楚要做什么
  • 保持变更可追溯:从提案到实施再到归档全程记录
  • 确保规范最新:源规范始终反映系统当前状态
  • 支持并行开发:不同变更在独立文件夹中互不干扰
  • 便于回溯审计:归档保留了完整的变更历史

🎓 最佳实践建议

🚀

项目启动策略

  • 从新功能开始使用 OpenSpec,不需要为现有功能补写规范
  • 随着每次变更归档,规范覆盖范围自然增长
  • 在 project.md 中记录技术栈和团队约定
  • 配置合适的 AI 工具,确保团队成员熟悉斜杠命令
👥

团队协作建议

  • 建立规范审查流程,产品、开发、测试共同参与
  • 使用 openspec view 在团队会议中展示规范
  • 鼓励在 Code Review 时参考对应的规范文档
  • 团队成员可以使用不同的 AI 工具,OpenSpec 都支持
📊

规范编写技巧

  • 使用 SHALL/MUST 表示强制性需求,MAY 表示可选需求
  • 每个需求至少包含一个具体的使用场景
  • 场景使用 GIVEN-WHEN-THEN 格式,清晰描述前置条件、操作和预期结果
  • MODIFIED 需求必须包含完整的更新后内容
🔄

持续改进流程

  • 定期运行 openspec update 获取最新的 AI 指令
  • 回顾归档的变更,总结成功经验和改进点
  • 根据团队反馈调整 project.md 中的约定
  • 保持规范的简洁性,避免过度设计