总的来说,如果你想快速上手、灵活迭代,选 OpenSpec;如果你做大型项目、需要完整文档链,选 spec-kit。

官网:

https://github.com/github/spec-kit/:Spec Kit 是一个开源工具包,旨在通过规范驱动开发(Spec-Driven Development) 方法帮助开发者更快速地构建高质量软件。其核心思想是将规范(specifications)变为可执行的内容,直接生成可工作的实现,而非仅作为开发指导。

https://github.com/Fission-AI/openspec

 

背景:Ai  Coding演进

整体来看,AI Coding 的演进遵循一条清晰的路线:人工干预越来越少,AI 自主性越来越高

screenshot-20260318-224633

几个关键转折点值得关注:

从补全到理解(2021→2022):早期 AI 只是”预测下一个 token”,本质是高级自动补全。ChatGPT 之后,AI 开始真正”理解”需求,可以解释代码逻辑、定位 bug、生成完整函数。

从片段到代码库(2022→2023):Cursor 等工具引入了代码库感知能力,AI 不再只看当前文件,而是理解整个项目的结构与上下文,多文件重构成为可能。

从助手到 Agent(2023→2024):这是最重要的跳跃。AI 从”回答问题”变成”自主行动”——能规划步骤、调用工具、运行命令、读取结果、再迭代。Devin、Claude Code 是代表。

Spec Coding 的出现(2025):这是你之前问到的阶段。用户只需写规格(自然语言或结构化描述),AI 负责将其转化为可运行的代码,并自动测试和修复。人的角色从”写代码”转变为”定义 what”。

Spec(specification) 是一份描述软件应该”做什么”的文档,通常包括功能需求、接口定义、行为规则、数据格式等。开发者按照这份规格来实现代码,而不是边想边写。

当前行业争议主要集中在:AI 能否真正替代软件工程师的系统设计模糊需求拆解能力,这也是全自主阶段尚未到来的核心障碍。

 

Vibe Coding VS Spec Coding

  • vibe coding:prd直接给agent,然后开干,生成代码,这个过程就是。 (物料->炒菜)
  • spec coding:通过 需求分析(prd分析出包含哪些功能点,人工查漏不全)、技术方案设计(基于这些功能点生成 具体方案,人工再明确下,比如用到MQ,应该确认哪个选型)、代码生成(基于技术方进行生成)。 (物料->生成菜谱(trd)->炒菜)。 Spec coding通过 human-in-loop来确认具体方案。

一、spec-kit VS openspec

两个都是 Spec-Driven Development(规格驱动开发) 框架,核心理念相同:先写规格、再生成代码,让 AI 编码更可预测。但定位和风格差异明显:


核心区别

维度 spec-kit(GitHub 官方) OpenSpec(Fission-AI)
维护方 GitHub 官方出品 独立开源社区
Stars 68.8k ⭐ 21.9k ⭐
安装方式 Python CLI(uv 安装) npm 包(npm install -g
工作流风格 阶段式、严格的 phase gates 流动式、迭代灵活
复杂度 较重,文档丰富,配置多 轻量,命令简洁
适用场景 企业级、大型项目、Greenfield 个人/团队、Brownfield 友好
命令风格 /speckit.constitution/speckit.specify/speckit.plan/speckit.tasks/speckit.implement /opsx:new/opsx:ff/opsx:apply/opsx:archive

OpenSpec 自己的 README 里也有一句直接的比较:spec-kit 更彻底但也更重,有严格的阶段门控和大量 Markdown,需要 Python 环境;OpenSpec 更轻量,可以自由迭代。

推荐选择

推荐 OpenSpec,原因:

  • npm 安装更简单,无需配置 Python/uv 环境
  • 工作流更简洁,/opsx:ff 一条命令自动生成 proposal、specs、design、tasks
  • 对存量项目(Brownfield)支持更好
  • 命令语义直观,上手快

选 spec-kit 的场景:团队/企业项目,需要严格的 phase gate 和完整的审计文档链,或者已经在用 GitHub Copilot 生态。


二、open-spec 

open-spec 命令流程解析

这四个命令构成了一条完整的 需求 → 开发 → 落地 → 归档 流水线。下面先逐个解释,再用一个完整例子串联。


命令说明

/opsx:new — 创建新规格

从一个需求描述出发,生成结构化的 spec 文档(功能描述、接口定义、边界条件等)。这是整个流程的起点,产出物是一份可供后续命令消费的 spec 文件。

/opsx:ff — Fast Forward(推演/完善)

对已有 spec 做 深化推演。自动补全遗漏的字段、识别潜在冲突、生成示例数据或测试用例。”ff” 取意 “fast forward”,让 spec 从粗糙变得可执行。

/opsx:apply — 应用规格到代码

将 spec 落地为实际代码/配置变更。读取当前 spec 内容,对目标代码库执行 diff/patch,产出可提交的代码改动。

/opsx:archive — 归档规格

将已完成的 spec 打上终态标记并归档,从活跃队列移入历史记录,便于后续溯源和审计。


完整示例:给用户服务新增「手机号登录」功能

需求:用户可以用手机号 + 短信验证码登录,原有邮箱登录保持不变

Step 1 — /opsx:new

产出: specs/phone-login.md(草稿)

Step 2 — /opsx:ff

产出: spec 被补全,open_questions 被决策掉

Step 3 — /opsx:apply

Step 4 — /opsx:archive

代码合并上线后:

产出: spec 状态变更并移入归档目录

流程总览

在 Claude Code 中使用 OpenSpec(推荐)

 

三、speckit

speckit 命令流程解析

spec-kit 提供一套 /speckit.* 斜杠命令,让你在 Claude Code 里按结构化流程开发:

命令 功能
/speckit.constitution 创建项目原则/规范
/speckit.specify 描述要构建什么(需求)
/speckit.plan 生成技术实现方案
/speckit.tasks 拆解成可执行任务清单
/speckit.implement 执行所有任务、开始编码

这五个命令构成了 约束定义 → 需求规格 → 实现计划 → 任务拆解 → 代码落地 的完整研发流水线。

 三个职责:

阶段
回答的问题
输出特点
面向对象
Specify
用户需要什么?
业务导向,技术无关
产品经理/客户
Plan
技术上怎么实现?
技术决策,架构设计
架构师/Tech Lead
Tasks
谁做什么事?
可执行步骤,工作量
开发团队

命令说明

speckit.constitution — 定义项目宪法(约束层)

整个项目的最高约束文档,定义技术栈、编码规范、架构原则、禁止事项等。所有后续命令生成的内容都必须遵守 constitution 的约束。只需定义一次,长期有效。

/speckit.specify — 编写功能规格

基于 constitution 的约束,将一个需求转化为结构化的功能规格(等价于 open-spec 的 new + ff 合并版)。产出接口定义、数据模型、边界条件、验收标准。

/speckit.plan — 生成实现方案

对 specify 产出的规格,生成技术实现路径:涉及哪些模块、改动顺序、依赖关系、风险点。是介于规格和任务之间的架构决策层。

/speckit.tasks — 拆解为可执行任务

将 plan 中的实现方案拆解为具体的开发任务清单,每个 task 有明确的输入、输出、完成标准,可直接分配给开发者或 AI 执行。

/speckit.implement — 执行任务生成代码

逐个执行 tasks 中的任务,生成实际代码变更。每次 implement 对应一个 task,保证改动粒度可控、可回滚。


完整示例:延用「手机号短信验证码登录」

Step 0 — speckit.constitution(一次性定义,全局生效)

constitution 相当于团队的”法律”,后续所有命令的产出都在这个边界内运作。

 

Step 1 — /speckit.specify

对比 open-spec:specify = opsx:new + opsx:ff 二合一,且天然遵守 constitution

产出: specs/phone-login.specify.md

Step 2 — /speckit.plan (技术方案)

plan 是架构师视角——回答”怎么改、改哪里、顺序是什么”,但还不是具体任务。

产出: specs/phone-login.plan.md

Step 3 — /speckit.tasks

tasks 是执行者视角——每个 task 独立、有明确的完成标准,粒度刚好是”一次可提交的改动”。

产出: specs/phone-login.tasks.md

Step 4 — /speckit.implement

每次执行一个 task:

 

两套命令对比总览

 

维度 open-spec speckit
粒度控制 整体一次性 apply 按 task 逐步 implement
约束管理 无全局约束层 constitution 兜底
适合场景 快速原型、单功能交付 团队协作、多模块改动
可追溯性 archive 归档 spec tasks 天然就是变更日志

两套可以组合用:speckit 管理规格和任务,open-spec 的 archive 负责最终归档

在 Claude Code 中使用 spec-kit

 

spec-kit装载Claude的原理是什么呢?screenshot-20260318-231632

核心原理其实非常简单,分三层来理解:

第一层:Claude Code 的 slash command 机制

Claude Code 原生支持一个约定:项目根目录下的 .claude/commands/ 里,每一个 .md 文件就是一条自定义斜杠命令。文件名即命令名,文件内容就是给 Claude 的”提示词指令”。比如 speckit.specify.md 文件存在,Claude Code 启动时就会自动注册 /speckit.specify 命令。这是 Claude Code 本身的能力,不需要任何插件系统。

第二层:specify-cli 做了什么

specify init --ai claude 本质上就是一个”文件复制器”,它从 GitHub 上拉取 spec-kit 的模板,然后在你的项目里生成这几样东西:

  • .claude/commands/speckit.*.md — 各命令的提示词文件(核心)
  • .specify/ — 存放规格文档、脚本、模板的目录
  • CLAUDE.md — 项目级的上下文说明,Claude Code 启动时会读取

第三层:命令执行时发生了什么

当你输入 /speckit.specify 做一个待办应用 时,Claude Code 实际上是把对应 .md 文件的内容 + 你的参数一起作为 prompt 发给模型,模型按照里面的指令执行工作流(创建 git 分支、写 spec 文件、调用 shell 脚本等)。

 

澄清/speckit.clarify 、/speckit.analyze、/speckit.checklist

这三个都是可选的质量门禁命令,分别插入在流程的不同节点。完整 speckit 流程(含可选命令)

完整流程 + 每个命令的定位

命令 类型 核心问题 输入 输出
constitution 必选 我们的约束是什么? 人工定义 全局规则
specify 必选 要做什么? 需求描述 功能规格
clarify 可选 规格里哪些地方会翻车? specify 产出 澄清问卷 + 决策
plan 必选 怎么做? specify 产出 架构方案
checklist 可选 规格够不够好、能不能拆任务? specify + plan 质量报告
tasks 必选 具体做哪些事? plan 产出 任务清单
analyze 可选 三份文档互相对齐了吗? 所有产物 一致性报告
implement 必选 生成代码 tasks 产出 代码变更

/speckit.clarify — 结构化澄清问卷

位置: specify 之后、plan 之前 作用: 在进入技术方案前,针对规格中的模糊区域生成结构化问题,逼出所有隐藏假设。

和我之前说的 specify --clarify 的区别:--clarify 是在写规格之前问业务问题;/speckit.clarify 是规格写完后做二次审查,发现 specify 阶段没察觉的风险点。

/speckit.checklist — 规格质量检查清单

位置: plan 之后、tasks 之前 作用:完整性、清晰度、一致性三个维度验证规格是否达到可拆任务的标准,防止带着残缺规格进入开发。

产出示例:

/speckit.analyze — 跨产物一致性分析

位置: tasks 之后、implement 之前 作用: 把 specify / plan / tasks 三份产物放在一起做横向对齐检查,确保任务清单没有遗漏规格要求、没有和架构方案冲突。是 implement 前的最后一道质量门。

产出示例:

什么时候用这三个可选命令?

场景 建议
需求清晰 + 独立开发 + 快速原型 全部跳过,走最短路径
需求模糊 / 跨团队协作 clarify,把隐藏假设逼出来
多人同时写 spec 和 plan checklist,防止规格带病进入开发
大型功能 / 多模块改动 analyze,implement 前做最后的一致性兜底

 

分类&标签