GitHub 维护的 Spec Kit 把规范驱动开发收成可安装的命令行和一组 Agent 技能。PyPI 上的包名是 specify-cli,源码仓库是 github/spec-kit。它不替换 Cursor、Claude Code、GitHub Copilot 或 Codex,只规定这些 Agent 先写清行为,再写技术选型,最后才改仓库。2026 年 11 月,Windows 可以直接走 PowerShell 脚本,不必先装 WSL。这篇只讲安装、目录和命令顺序。规格为什么必须先于代码,见 规范驱动开发完全指南。技能文件怎么放,见 Agent Skills 使用指南。
为什么一句「帮我做个看板」已经不够
旧方式和新方式的冲突很具体。旧方式是会话优先:把目标、技术栈、目录结构一次塞进聊天,Agent 边猜边改文件,换一台机器或换一个人,上下文就断了。新方式是制品优先:原则写进 .specify/memory/constitution.md,行为和原因写进 specs/<feature>/spec.md,技术栈留到 plan.md,可执行的顺序留到 tasks.md。当前功能看 .specify/feature.json,不看你记得的上一轮对话。
这件事在 2026 年变成安装问题,而不是态度问题,有三个原因。第一,技能的调用拼法按 Agent 分叉:Cursor、Claude Code 和 Copilot 默认技能模式用 /speckit-specify,Codex 用 $speckit-specify,文档里的点号写法只是参考记法。第二,uv 和 pipx 各装一次会留下两个 specify,PATH 里的旧二进制会让 --integration 直接失败。第三,可选的 git 扩展会建编号分支,但 git checkout 本身不会切换当前功能。三件事都发生在写第一行业务代码之前。
规范驱动开发在 Spec Kit 里分成哪几层
不要把九个斜杠命令当成同一层的清单。它们落在三种制品上,而且只有两条合法路径。
原则层一个仓库做一次。/speckit-constitution 写代码质量、测试、权限和体验上的硬约束,给后面每一步当尺子。功能层每个功能一份。/speckit-specify 只回答用户能观察到什么、为什么要做;/speckit-clarify 把含糊的地方问清楚并写回规格。实现层才允许出现框架和目录。/speckit-plan 产出计划、调研、数据模型和契约;/speckit-tasks 把计划拆成有依赖顺序的任务,可并行的标 [P];/speckit-implement 按任务改文件;/speckit-converge 拿代码和制品对账,缺什么就补任务,直到它报告 Converged。
中间还有两道质量门,不要和「代码写完了」混为一谈。/speckit-checklist 生成的是审阅者手里的需求质量清单,勾选表示这条要求写清楚了,不表示功能已经实现。/speckit-analyze 只读,报告 spec.md、plan.md、tasks.md 之间的冲突,不改文件。内建的 checklists/requirements.md 由 specify 和 clarify 维护;自定义清单归审阅者,implement 只会在未勾选时停下来问你,不会替你打勾。
短路径适合边界已经清楚的小功能:specify、plan、tasks、implement、converge。完整路径适合要上线的功能:constitution(项目里做一次)之后走 specify、clarify、plan、checklist、tasks、analyze、implement、converge。修缺陷走官方的 bug-fixing 快速入门,判断点子值不值得做走 idea assessment。两条都不是这条 SDD 路径的前置步骤。
Windows、macOS、Linux 分别怎么安装
共同前提是 Python 3.11 或更高、Git 可选(只有启用 git 扩展时才需要)、以及你真正会用来写代码的那个 Agent。推荐用 uv 做持久安装。终端里只跑 CLI;斜杠技能在 Agent 聊天里调用。
| 系统 | 入口 | 执行能力 | 上下文 | 适合人群 |
|---|---|---|---|---|
| Windows | PowerShell 安装 uv,--script ps | 脚本进 .specify/scripts/powershell/ | 不必先装 WSL | 日常 Windows 开发机 |
| macOS | zsh 安装 uv,--script sh | 脚本进 .specify/scripts/bash/ | specify 通常在 ~/.local/bin | 本机 Mac,或远程 Mac 节点 |
| Linux | bash 安装 uv,--script sh | 与 macOS 相同的 bash 脚本 | 系统 Python 低于 3.11 时先 uv python install 3.12 | 服务器、CI、云主机 |
| 三系统统一 | --script py | Python 脚本,并保留平台 shell 回退 | 团队不想分 sh 和 ps | 同一仓库、多人多系统 |
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" uv tool install specify-cli specify version specify self check specify init deskboard --integration cursor-agent --script ps
curl -LsSf https://astral.sh/uv/install.sh | sh uv tool install specify-cli specify version specify self check specify init deskboard --integration cursor-agent --script sh
装完先看两件事。specify version 只证明这条命令能跑、并打印版本,不能证明它来自 PyPI 还是 GitHub。specify self check 只读,告诉你有没有更新,不会改安装。文档里的示例标签写成 v0.12.11 这种带 v 的发布号;要从源码钉死某一版,用 uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z,v 不要去掉。PyPI 钉版则是 uv tool install specify-cli==X.Y.Z。升级必须用当初那一个工具:uv tool install --force specify-cli、pipx install --force specify-cli 或 pip install --upgrade specify-cli。
已经有代码的仓库不要在脏工作区上初始化。先提交或备份,再执行 specify init --here --force --non-interactive --integration claude。--force 只表示你知道模板会并进现有文件。没有键盘的 CI 要加 --non-interactive,否则初始化会停在方向键菜单;Agent 装在另一台机器上时再加 --ignore-agent-tools,跳过本机的可执行文件检查。非交互默认集成是 Copilot,除非你写明别的 --integration。
集成键不要猜。Cursor 是 cursor-agent,不是 cursor。常见还有 claude、copilot、gemini、pi、omp、codebuddy。交互终端不传 --integration 时会让你选;脚本和管道必须显式传入。
九步命令:入口、能改什么、留给谁
下面这张表用同一套列。真正的差异在入口和执行边界,不在模型名字。
| 步骤 | 入口 | 执行能力 | 上下文 | 适合人群 |
|---|---|---|---|---|
| constitution | 聊天里的 /speckit-constitution | 写原则文件,不改业务代码 | 一个仓库做一次 | 新项目,或原则变了 |
| specify | /speckit-specify | 创建 spec.md 和内建需求清单 | 只写行为和原因 | 每一个功能 |
| clarify | /speckit-clarify | 追问并写回 Clarifications | 规格里的缺口 | 要上线的功能 |
| plan | /speckit-plan | 计划、调研、数据模型、契约 | 这里才写技术栈 | 规格已经稳定 |
| checklist | /speckit-checklist | 审阅者清单,不代表代码完成 | 需求写得够不够清楚 | 完整路径 |
| tasks | /speckit-tasks | 依赖顺序的 tasks.md,[P] 可并行 | 计划制品 | 准备改文件之前 |
| analyze | /speckit-analyze | 只读,报告三份制品的冲突 | 不改仓库 | implement 之前 |
| implement | /speckit-implement | 按任务改文件、跑命令 | 未勾选的清单会拦住 | 隔离过的环境 |
| converge | /speckit-converge | 对照代码补任务,直到 Converged | 代码与制品 | 每一轮实现之后 |
| Agent | 入口 | 执行能力 | 上下文 | 适合人群 |
|---|---|---|---|---|
| Cursor | --integration cursor-agent,聊天 /speckit-specify | 技能在 .cursor/skills/speckit-*/SKILL.md | 工作流若要自动派发,还要本机的 cursor-agent CLI,并会带上信任和自动批准参数 | 已经在 Cursor 里写代码 |
| Claude Code | --integration claude | 技能在 .claude/skills/ | --no-model-invocation 让核心技能只在你手动调用时出现 | 终端里的 Claude |
| GitHub Copilot | --integration copilot | 默认技能在 .github/skills/ | --integration-options="--commands" 才是 agents/prompts 布局 | VS Code 或 Copilot CLI |
| Codex | $speckit-specify | 技能模式用美元符,不是斜杠 | 不要把文档点号命令贴进 Codex | Codex CLI |
按场景选短路径还是完整路径
| 如果你是 | 就选 | 不要 |
|---|---|---|
| 改一个边界已经写在 issue 里的小函数 | 短路径:specify → plan → tasks → implement → converge | 不要先开一场原则辩论 |
| 功能要上线,有权限或数据边界 | 完整路径,含 clarify、checklist、analyze | 不要拿第一稿 spec 直接 implement |
| 修已经存在的缺陷 | bug-fixing 快速入门,先写复现条件 | 不要把缺陷伪装成新功能规格 |
| 还在判断点子值不值得做 | idea assessment 快速入门 | 不要先建仓库再补规格 |
| 仓库里已经有代码 | specify init --here --force,之前先提交 | 不要在脏工作区上合并模板 |
| 在 CI 或远程节点上初始化 | --non-interactive,需要时加 --ignore-agent-tools | 不要让初始化停在方向键菜单 |
实操用一个只在本机跑的便签看板,不上传、第一期不做密码。三位预设成员,项目下四列:待办、进行中、待确认、完成。拖拽改列。评论只能改自己写的。specify 阶段只说这些行为和原因。plan 阶段再写「本地 SQLite,前端不用远程接口」。把数据库写进 specify,等于让第一份技术直觉变成不可挑战的需求。
推荐组合:Agent、脚本类型、隔离环境
如果你已经在 Cursor 里写这个仓库,就用 cursor-agent 加本机系统的脚本类型:Windows 用 ps,macOS 和 Linux 用 sh。初始化之后在聊天里按短路径或完整路径逐条调用,每条看完制品再下一条。不要把九个命令粘成一条提示词。
如果你主要用 Claude Code,集成键用 claude。技能很多、描述挤占上下文时,初始化加上 --integration-options="--no-model-invocation",核心命令只在你输入 /speckit-specify 时跑。Copilot 用户保持默认技能布局即可;只有要旧的 agent 文件时才加 --commands。
implement 会改文件并执行命令。第一轮不要在存着生产密钥的笔记本上做。把仓库放到远程 Mac,看清 diff 再合回。节点怎么订,见 Mac mini 租用;预算见 套餐定价。规格里如果包含 macOS 构建或签名,把那一段任务放到真机节点,并用 OpenClaw 云端自动化 把构建和日常笔记本分开。安装失败先查 帮助中心 里的连接和系统要求,再怀疑 Spec Kit 本身。
五条会让后续全部返工的误区
- 在 specify 里写框架和数据库。 技术栈属于 plan。规格里出现「必须用某某库」,后面的 clarify 和 analyze 都在替这个选择圆场。
- 在终端输入
/speckit-specify。 斜杠技能只存在于 Agent 聊天。终端只跑specify本身。 - 把文档点号命令贴进 Cursor。 Cursor 里的技能是
/speckit-specify。点号形式是参考记法。 - uv 和 pipx 各装一份。 旧的 0.1.x 会报
No such option: --integration,或在--ai上报No matching release asset found。先which specify,再决定删哪一份。 - 用 git checkout 当功能切换器。 要改
.specify/feature.json,或设置SPECIFY_FEATURE_DIRECTORY。只换分支,命令仍会改上一份规格的目录。
七步落地
- 安装 uv 和 specify-cli,跑
specify version与specify self check,确认 PATH 上只有一个二进制。 - 按系统选
--script,按正在用的 Agent 选--integration,执行specify init。已有仓库先提交,再加--here --force。 - 在 Agent 聊天里运行一次
/speckit-constitution。只写原则:输入要校验、评论只能改作者本人、第一期不上传。 - 用
/speckit-specify写便签看板的行为和原因。要上线就接着/speckit-clarify,把拖拽、权限和空项目这三处问完。 - 规格稳定后再
/speckit-plan。然后 checklist、tasks、analyze。analyze 报冲突就改源头,不要在 implement 里打补丁。 - 在隔离的 Mac 或干净目录运行
/speckit-implement。任务多就按阶段,不要一次吞掉整个tasks.md。 - 跑
/speckit-converge,直到报告 Converged。然后看 diff:有没有越出规格的文件,有没有把密钥写进仓库。
常见问题
Spec Kit 和直接在 Cursor 里聊天有什么区别?
聊天记录留在会话里,换人、换机器就丢。Spec Kit 把原则、规格、计划、任务写成仓库里的 Markdown。当前功能由 .specify/feature.json 指向,不靠你记得上一次聊了什么。
命令到底是 /speckit-specify 还是 /speckit.specify?
Cursor、Claude Code 和 GitHub Copilot 默认技能模式用连字符,在 Agent 聊天里调用,不是在终端里输入。Codex 技能模式用 $speckit-specify。文档里的点号写法是参考记法,不要照抄进 Cursor。
Windows 必须先装 WSL 吗?
不必。2026 年的 Spec Kit 在 Windows 上默认使用 PowerShell。初始化时加 --script ps。macOS 和 Linux 默认是 bash,对应 --script sh。
uv 和 pipx 可以各装一次吗?
不要。两套工具会留下两个 specify。PATH 里排在前面的旧版会让 --integration 报错,或出现 No matching release asset found。升级时用当初那一个工具加 --force 或 --upgrade。
git checkout 会切换当前功能吗?
不会。当前功能看 .specify/feature.json,也可以用 SPECIFY_FEATURE_DIRECTORY 覆盖。可选的 git 扩展会建编号分支,但只切换分支并不会改这份状态。
先把命令装对,再让 Agent 改仓库
Spec Kit 的价值不在多一个斜杠,而在把「先规格、再计划、最后改文件」写成仓库里能复查的文件。Windows 用 PowerShell,macOS 和 Linux 用 bash,Cursor 用 cursor-agent 和连字符技能。小功能走短路径,要上线走完整路径,implement 放在隔离节点上。下一步不是再收集提示词,而是用 specify version 确认你面前这个二进制就是你刚装的那一个。
延伸阅读
implement 会改仓库并执行命令,先放到隔离的 Mac 节点
Spec Kit 的实现步骤不是只生成 Markdown。它会按 tasks.md 改文件、跑脚本。第一轮不要在存着生产密钥的日常电脑上做。远程 Mac 把仓库和凭据按会话隔开,适合先看清 diff,再决定是否合回团队仓库。
查看 Mac mini 租用 · 查看定价 · 帮助中心