openspec技能介绍

3 阅读4分钟

OpenSpec 技能完整介绍

OpenSpec 是一套结构化的软件开发工作流技能系统,帮助团队从想法到实现再到归档的全过程。



┌─────────────────────────────────────────────────────────────────────┐

│ OpenSpec 工作流全景图 │

└─────────────────────────────────────────────────────────────────────┘

  


┌──────────────┐ ┌──────────────┐ ┌──────────────┐

│ EXPLORE │────▶│ PROPOSE │────▶│ APPLY │

│ 探索想法 │ │ 创建提案 │ │ 实现任务 │

└──────────────┘ └──────────────┘ └──────────────┘

│ │ │

│ │ │

▼ ▼ ▼

思考、调研 proposal.md tasks.md

画图、分析 design.md 逐步实现

不写代码 tasks.md 标记完成

│

▼

┌──────────────┐

│ ARCHIVE │

│ 归档变更 │

└──────────────┘


四大核心技能

| 技能 | 命令 | 用途 |

|------|------|------|

| openspec-explore | /opsx:explore | 思考伙伴 - 探索想法、分析问题、画图可视化 |

| openspec-propose | /opsx:propose | 一键提案 - 创建 proposal + design + tasks |

| openspec-apply | /opsx:apply | 执行任务 - 按任务列表逐步实现代码 |

| openspec-archive | /opsx:archive | 归档变更 - 完成后打包存档 |


工作流详解

1️⃣ EXPLORE - 探索模式


/opsx:explore

角色: 思考伙伴,不写代码

做什么:

  • 澄清需求、挑战假设

  • 画架构图、数据流图

  • 比较技术方案

  • 发现风险和未知

输出: 思考结晶,不是代码


2️⃣ PROPOSE - 创建提案


/opsx:propose <change-name>

或

/opsx:propose "描述你想构建什么"

生成三个核心文件:


openspec/changes/<change-name>/

├── proposal.md # 做什么 & 为什么

├── design.md # 怎么做

└── tasks.md # 实现步骤清单

示例输出:


## proposal.md

### What

添加用户认证系统

  


### Why

当前系统无认证,任何人可访问所有API

  


---

  


## design.md

### Architecture

使用 JWT + Spring Security

  


### Components

- AuthController: /login, /register

- JwtService: 生成/验证 token

- SecurityFilter: 请求拦截

  


---

  


## tasks.md

- [ ] 添加 Spring Security 依赖

- [ ] 创建 User 实体和 Repository

- [ ] 实现 JwtService

- [ ] 创建 AuthController

- [ ] 配置 SecurityFilterChain

- [ ] 添加单元测试


3️⃣ APPLY - 执行实现


/opsx:apply

/opsx:apply <change-name>

流程:


┌─────────────────────────────────────────────────────────┐

│ APPLY 执行流程 │

└─────────────────────────────────────────────────────────┘

  


读取 tasks.md

│

▼

┌─────────────┐

│ 任务 1: [ ] │──────▶ 写代码 ──────▶ [x] 完成

└─────────────┘

│

▼

┌─────────────┐

│ 任务 2: [ ] │──────▶ 写代码 ──────▶ [x] 完成

└─────────────┘

│

▼

...

│

▼

全部完成 ──────▶ 建议归档

实时反馈:


## Implementing: add-user-auth

  


Working on task 3/6: 实现 JwtService

[...代码实现...]

✓ Task complete

  


Working on task 4/6: 创建 AuthController

[...代码实现...]

✓ Task complete


4️⃣ ARCHIVE - 归档


/opsx:archive

操作:

  1. 检查所有任务是否完成

  2. 可选: 同步 delta specs 到主 specs

  3. 移动到归档目录

结果:


openspec/changes/archive/

└── 2026-04-15-add-user-auth/

├── proposal.md

├── design.md

└── tasks.md # 全部 [x]


目录结构


openspec/

├── changes/ # 活跃变更

│ ├── add-user-auth/ # 变更目录

│ │ ├── proposal.md

│ │ ├── design.md

│ │ └── tasks.md

│ │

│ └── archive/ # 归档变更

│ └── 2026-04-15-add-user-auth/

│

└── specs/ # 能力规格 (可选)

└── authentication/

└── spec.md # 认证能力的规格说明


快速对比

| 场景 | 用什么 |

|------|--------|

| "我想添加 X 功能" | /opsx:propose add-x-feature |

| "帮我分析一下这个问题" | /opsx:explore |

| "开始实现吧" | /opsx:apply |

| "做完了" | /opsx:archive |


技能详细说明

openspec-explore

核心立场:

  • 好奇而非教条 - 自然地提出问题

  • 开放线程而非审问 - 展示多个有趣方向

  • 可视化 - 自由使用 ASCII 图表

  • 适应性强 - 跟随有趣线索,根据新信息调整方向

  • 有耐心 - 不急于下结论

  • 脚踏实地 - 相关时探索实际代码库

适用场景:

  • 用户带来模糊的想法

  • 用户遇到具体问题

  • 实现过程中卡住了

  • 用户想比较选项

守则:

  • 不实现代码

  • 不假装理解

  • 不着急

  • 不强制结构

  • 不自动捕获

  • 要可视化

  • 要探索代码库

  • 要质疑假设


openspec-propose

步骤:

  1. 如果没有明确输入,询问用户想构建什么

  2. 创建变更目录 (openspec new change "<name>")

  3. 获取工件构建顺序 (openspec status --change "<name>" --json)

  4. 按顺序创建工件直到可实施

  5. 显示最终状态

工件创建指南:

  • 遵循每个工件类型的 instruction 字段

  • 在创建新工件之前读取依赖工件

  • 使用 template 作为输出文件结构

  • contextrules 是对你的约束,不是文件内容


openspec-apply

步骤:

  1. 选择变更(提供名称或从上下文推断)

  2. 检查状态了解 schema

  3. 获取 apply 指令

  4. 读取上下文文件

  5. 显示当前进度

  6. 实现任务(循环直到完成或阻塞)

  7. 完成或暂停时显示状态

处理状态:

  • blocked(缺少工件): 显示消息,建议使用 openspec-continue-change

  • all_done: 祝贺,建议归档

  • 否则: 继续实现


openspec-archive

步骤:

  1. 如果没有提供变更名称,提示选择

  2. 检查工件完成状态

  3. 检查任务完成状态

  4. 评估 delta spec 同步状态

  5. 执行归档

  6. 显示摘要

归档结果:

  • 变更目录移动到 openspec/changes/archive/YYYY-MM-DD-<name>/

  • 可选同步 specs

  • 保留所有工件


命令别名

OpenSpec 技能支持两种命令格式:

| 简短命令 | 完整命令 |

|---------|---------|

| /opsx:explore | /openspec-explore |

| /opsx:propose | /openspec-propose |

| /opsx:apply | /openspec-apply-change |

| /opsx:archive | /openspec-archive-change