好的 👍 我来帮你把这份 Spec Kit 文档 翻译成中文,保持通俗易懂,同时保留专业名词,并在中英文之间加空格。翻译如下:
🌱 Spec Kit
更快地构建高质量软件
借助 Spec-Driven Development,让组织专注于产品场景,而不是编写那些没有差异化价值的代码。
🤔 什么是 Spec-Driven Development?
Spec-Driven Development 颠覆了传统软件开发的模式。几十年来,代码一直是核心 —— 规范 (specifications) 只是我们在写“真正代码”前搭的脚手架,随后便丢弃。而 Spec-Driven Development 不一样:规范本身可以执行,它们能够直接生成可运行的实现,而不是仅仅作为指导文档。
⚡ 快速上手
1. 安装 Specify
选择你喜欢的安装方式:
选项 1: 持久安装(推荐)
一次安装,到处可用:
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
然后直接使用工具:
specify init <PROJECT_NAME>
specify check
选项 2: 临时使用
无需安装,直接运行:
uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>
持久安装的好处:
- 工具会一直安装好并添加到 PATH
- 不需要创建 shell alias
- 可以通过
uv tool list
,uv tool upgrade
,uv tool uninstall
更好地管理工具 - 保持更干净的 shell 配置
2. 建立项目原则
使用 /constitution
命令,为项目创建治理原则和开发规范,它们会指导后续的所有开发。
/constitution Create principles focused on code quality, testing standards, user experience consistency, and performance requirements
3. 创建规范 (Spec)
使用 /specify
命令描述你要构建的东西。关注 what 和 why,而不是技术栈。
/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. Albums are never in other nested albums. Within each album, photos are previewed in a tile-like interface.
4. 制定技术实现方案
使用 /plan
命令提供技术栈和架构选择。
/plan The application uses Vite with minimal number of libraries. Use vanilla HTML, CSS, and JavaScript as much as possible. Images are not uploaded anywhere and metadata is stored in a local SQLite database.
5. 分解任务
使用 /tasks
把实现方案拆分成可执行的任务列表。
/tasks
6. 执行实现
使用 /implement
执行所有任务,按照方案构建功能。
/implement
更多详细步骤请参阅我们的 完整指南。
📽️ 视频介绍
想看看 Spec Kit 的实际效果?请观看 视频介绍!
🤖 支持的 AI 代理
代理 | 支持 | 备注 |
---|---|---|
Claude Code | ✅ | |
GitHub Copilot | ✅ | |
Gemini CLI | ✅ | |
Cursor | ✅ | |
Qwen Code | ✅ | |
opencode | ✅ | |
Windsurf | ✅ | |
Kilo Code | ✅ | |
Auggie CLI | ✅ | |
Roo Code | ✅ | |
Codex CLI | ⚠️ | Codex 不支持 斜杠命令的自定义参数。 |
🔧 指定 CLI 参考
specify
命令支持以下选项:
命令
命令 | 描述 |
---|---|
init |
从最新模板初始化一个新的 Specify 项目 |
check |
检查已安装的工具(git 、claude 、gemini 、code /code-insiders 、cursor-agent 、windsurf 、qwen 、opencode 、codex ) |
specify init
参数与选项
参数/选项 | 类型 | 描述 |
---|---|---|
<project-name> |
参数 | 新项目目录的名称(如果使用 --here 则为可选,或使用 . 表示当前目录) |
--ai |
选项 | 要使用的 AI 助手:claude 、gemini 、copilot 、cursor 、qwen 、opencode 、codex 、windsurf 、kilocode 、auggie 或 roo |
--script |
选项 | 要使用的脚本变体:sh (bash/zsh)或 ps (PowerShell) |
--ignore-agent-tools |
标志 | 跳过对 AI 代理工具(如 Claude Code)的检查 |
--no-git |
标志 | 跳过 git 仓库初始化 |
--here |
标志 | 在当前目录初始化项目,而不是创建新目录 |
--force |
标志 | 在当前目录初始化时强制合并/覆盖(跳过确认) |
--skip-tls |
标志 | 跳过 SSL/TLS 验证(不推荐) |
--debug |
标志 | 启用详细调试输出以进行故障排除 |
--github-token |
选项 | 用于 API 请求的 GitHub 令牌(或设置 GH_TOKEN/GITHUB_TOKEN 环境变量) |
示例
# 基本项目初始化
specify init my-project
# 使用特定 AI 助手初始化
specify init my-project --ai claude
# 使用 Cursor 支持初始化
specify init my-project --ai cursor
# 使用 Windsurf 支持初始化
specify init my-project --ai windsurf
# 使用 PowerShell 脚本初始化(Windows/跨平台)
specify init my-project --ai copilot --script ps
# 在当前目录初始化
specify init . --ai copilot
# 或使用 --here 标志
specify init --here --ai copilot
# 强制合并到当前(非空)目录且无需确认
specify init . --force --ai copilot
# 或
specify init --here --force --ai copilot
# 跳过 git 初始化
specify init my-project --ai gemini --no-git
# 启用调试输出以进行故障排除
specify init my-project --ai claude --debug
# 使用 GitHub 令牌进行 API 请求(适用于企业环境)
specify init my-project --ai claude --github-token ghp_your_token_here
# 检查系统要求
specify check
可用的斜杠命令
运行 specify init
后,你的 AI 编码代理将可以使用这些斜杠命令进行结构化开发:
命令 | 描述 |
---|---|
/constitution |
创建或更新项目治理原则与开发指南 |
/specify |
定义你要构建的内容(需求与用户故事) |
/clarify |
澄清未明确的部分(必须在 /plan 之前运行,除非明确跳过;原 /quizme ) |
/plan |
使用你选择的技术栈创建技术实现计划 |
/tasks |
生成可执行的任务列表以进行实现 |
/analyze |
跨工件一致性与覆盖分析(在 /tasks 之后、/implement 之前运行) |
/implement |
执行所有任务以根据计划构建功能 |
环境变量
变量 | 描述 |
---|---|
SPECIFY_FEATURE |
覆盖非 Git 仓库的功能检测。设置为功能目录名称(例如 001-photo-albums )以在不使用 Git 分支时处理特定功能。**必须在使用 /plan 或后续命令之前,在你所使用的代理上下文中设置。 |
📚 核心哲学
Spec-Driven Development 是一个结构化过程,强调:
- 意图驱动开发,规范在“怎么做”之前定义“做什么”
- 使用护栏与组织原则创建丰富规范
- 多步细化,而非一次性提示生成代码
- 高度依赖高级 AI 模型能力进行规范解释
🌟 开发阶段
阶段 | 重点 | 关键活动 |
---|---|---|
0 到 1 开发(“绿地”) | 从零生成 |
|
创意探索 | 并行实现 |
|
迭代增强(“棕地”) | 棕地现代化 |
|
🎯 实验目标
我们的研究与实验聚焦于:
技术独立性
- 使用多样化技术栈创建应用
- 验证假设:Spec-Driven Development 是一种不绑定特定技术、编程语言或框架的流程
企业约束
- 演示关键业务应用开发
- 融入组织约束(云提供商、技术栈、工程实践)
- 支持企业设计系统与合规要求
用户为中心开发
- 为不同用户群体与偏好构建应用
- 支持多种开发方法(从 vibe-coding 到 AI 原生开发)
创意与迭代流程
- 验证并行实现探索的概念
- 提供健壮的迭代功能开发工作流
- 扩展流程以处理升级与现代化任务
🔧 前置条件
- Linux/macOS(或 Windows 上的 WSL2)
- AI 编码代理:Claude Code、GitHub Copilot、Gemini CLI、Cursor、Qwen CLI、opencode、Codex CLI 或 Windsurf
- uv 用于包管理
- Python 3.11+
- Git
如果你遇到代理问题,请提 issue 以便我们改进集成。
📖 了解更多
- 完整的 Spec-Driven Development 方法论 - 深入完整流程
- 详细演练 - 逐步实施指南
📋 详细过程
点击展开详细逐步演练
你可以使用 Specify CLI 引导项目,它会将所需工件引入你的环境。运行:
specify init <project_name>
或在当前目录初始化:
specify init .
# 或使用 --here 标志
specify init --here
# 目录已有文件时跳过确认
specify init . --force
# 或
specify init --here --force
系统会提示你选择正在使用的 AI 代理。你也可以直接在终端中指定:
specify init <project_name> --ai claude
specify init <project_name> --ai gemini
specify init <project_name> --ai copilot
specify init <project_name> --ai cursor
specify init <project_name> --ai qwen
specify init <project_name> --ai opencode
specify init <project_name> --ai codex
specify init <project_name> --ai windsurf
# 或在当前目录:
specify init . --ai claude
specify init . --ai codex
# 或使用 --here 标志
specify init --here --ai claude
specify init --here --ai codex
# 强制合并到非空当前目录
specify init . --force --ai claude
# 或
specify init --here --force --ai claude
CLI 会检查你是否安装了 Claude Code、Gemini CLI、Cursor CLI、Qwen CLI、opencode 或 Codex CLI。如果没有,或你希望在不检查正确工具的情况下获取模板,请在命令中使用 --ignore-agent-tools
:
specify init <project_name> --ai claude --ignore-agent-tools
步骤 1: 建立项目原则
进入项目文件夹并运行你的 AI 代理。示例中我们使用 claude
。
如果看到 /constitution
、/specify
、/plan
、/tasks
和 /implement
命令可用,说明配置正确。
第一步应使用 /constitution
命令建立项目治理原则。这有助于确保后续所有开发阶段决策一致:
/constitution 创建专注于代码质量、测试标准、用户体验一致性与性能要求的原则。包括治理方式,说明这些原则应如何指导技术决策与实现选择。
此步骤会创建或更新 .specify/memory/constitution.md
文件,包含项目基础指南,AI 代理在规范、规划与实现阶段会引用。
步骤 2: 创建项目规范
建立项目原则后,即可创建功能规范。使用 /specify
命令并提供你要开发项目的具体需求。
[!重要] 尽可能明确说明你要构建的是什么以及为什么。此时不要关注技术栈。
示例提示:
开发 Taskify,一个团队生产力平台。它应允许用户创建项目、添加团队成员、
分配任务、评论并以看板风格在面板间移动任务。在此功能的初始阶段,
我们称之为“创建 Taskify”,支持多用户但用户需预先声明。
我希望有五个用户分为两类,一名产品经理和四名工程师。创建三个不同的示例项目。
使用标准看板列表示任务状态,如“待办”、“进行中”、“审核中”和“已完成”。
此应用无需登录,因为这仅是确保基本功能可用的最初测试。
在 UI 中的每个任务卡片上,你应能在看板工作流的不同列间更改任务状态。
你应能在特定卡片上留下无限数量的评论。你应能从该任务卡片中
分配一个有效用户。首次启动 Taskify 时,会给出五个用户供选择。
无需密码。点击用户后进入主视图,显示项目列表。点击项目后
打开该项目的看板。你将看到列。你可以拖放卡片在不同列间移动。
你会看到分配给你(当前登录用户)的卡片以不同颜色显示,以便快速识别。
你可以编辑自己发布的评论,但不能编辑他人的评论。
你可以删除自己发布的评论,但不能删除他人的评论。
输入此提示后,你会看到 Claude Code 启动规划与规范起草流程。Claude Code 还会触发一些内置脚本以设置仓库。
此步骤完成后,应会创建一个新分支(例如 001-create-taskify
),以及在 specs/001-create-taskify
目录中的新规范。
生成的规范应包含一组用户故事与功能需求,如模板中所定义。
此时,你的项目文件夹内容应类似如下:
└── .specify
├── memory
│ └── constitution.md
├── scripts
│ ├── check-prerequisites.sh
│ ├── common.sh
│ ├── create-new-feature.sh
│ ├── setup-plan.sh
│ └── update-claude-md.sh
├── specs
│ └── 001-create-taskify
│ └── spec.md
└── templates
├── plan-template.md
├── spec-template.md
└── tasks-template.md
步骤 3: 功能规范澄清(规划前必须)
创建基线规范后,你可澄清首次尝试中未正确捕获的任何需求。
在创建技术计划之前,应运行结构化澄清工作流,以减少下游返工。
推荐顺序:
- 使用
/clarify
(结构化)——顺序、基于覆盖的提问,将答案记录在“澄清”部分。 - 如有需要,可随后进行临时自由形式细化。
如你故意想跳过澄清(例如 spike 或探索性原型),请明确说明,以免代理因缺失澄清而阻塞。
示例自由形式细化提示(如需在 /clarify
后使用):
对于你创建的每个示例项目,应有可变数量的任务,每个项目 5 到 15 个任务,
随机分布到不同的完成状态。确保每个完成阶段至少有一个任务。
你还应让 Claude Code 验证审查与验收清单,勾选已验证/符合要求的项,未符合的留空。可使用以下提示:
阅读审查与验收清单,如果功能规范符合标准,则勾选每一项。不符合则留空。
务必利用与 Claude Code 的交互来澄清并提出关于规范的问题——不要将其首次尝试视为最终版本。
步骤 4: 生成计划
现在你可以明确技术栈及其他技术要求。可使用项目模板内置的 /plan
命令,提示如下:
我们将使用 .NET Aspire,数据库用 Postgres。前端使用
Blazor 服务器,支持拖放任务板与实时更新。创建 REST API,包括项目 API、
任务 API 与通知 API。
此步骤的输出将包含若干实现细节文档,你的目录树将类似:
.
├── CLAUDE.md
├── memory
│ └── constitution.md
├── scripts
│ ├── check-prerequisites.sh
│ ├── common.sh
│ ├── create-new-feature.sh
│ ├── setup-plan.sh
│ └── update-claude-md.sh
├── specs
│ └── 001-create-taskify
│ ├── contracts
│ │ ├── api-spec.json
│ │ └── signalr-spec.md
│ ├── data-model.md
│ ├── plan.md
│ ├── quickstart.md
│ ├── research.md
│ └── spec.md
└── templates
├── CLAUDE-template.md
├── plan-template.md
├── spec-template.md
└── tasks-template.md
检查 research.md
文档,确保根据你的指示使用了正确的技术栈。如有组件异常,可让 Claude Code 细化,甚至让它检查本地安装的版本(如 .NET)。
此外,如技术栈变化较快(如 .NET Aspire、JS 框架),你可让 Claude Code 研究细节,提示如下:
我希望你通读实现计划与实现细节文件,寻找可受益于额外研究的领域,因为 .NET Aspire 是一个快速变化的库。对于你识别出需要进一步研究的领域,
请在研究文档中更新我们正在 Taskify 应用中使用的具体版本的详细信息,并启动并行研究任务,使用网络研究澄清任何细节。
在此过程中,如 Claude Code 研究跑偏,你可这样引导:
我认为我们需要将其分解为一系列步骤。首先,列出你在实现过程中
需要做但不确定或会受益于进一步研究的任务清单。写下这些任务清单。然后对于每个任务,
我希望你启动单独的研究任务,以便最终我们并行研究所有这些非常具体的任务。我看到你做的是
看起来你在研究 .NET Aspire 本身,我认为这对我们没什么帮助。
研究过于宽泛。研究需要帮助你解决具体的、有针对性的问题。
[!注意] Claude Code 可能过于积极,添加你未请求的组件。请其说明理由及变更来源。
步骤 5: 让 Claude Code 验证计划
计划就位后,你应让 Claude Code 检查确保没有遗漏。可使用如下提示:
现在我希望你去审核实现计划与实现细节文件。
通读时,判断是否存在你需要执行的一系列显而易见任务。
因为我不确定是否有足够信息。例如,当我查看核心实现时,
引用实现细节中的适当位置会很有用,以便在执行核心实现或细化中的每一步时能找到信息。
这有助于细化实现计划,并避免 Claude Code 在规划周期中遗漏的潜在盲点。初始细化完成后,再次让 Claude Code 检查清单,然后进入实现。
如已安装 GitHub CLI,你还可以让 Claude Code 从当前分支创建拉取请求到 main
,并附带详细描述,确保工作被妥善跟踪。
[!注意] 在让代理实现之前,也值得提示 Claude Code 交叉检查细节,看是否存在过度工程的部分(记住——它可能过于积极)。如存在过度工程的组件或决策,可要求 Claude Code 解决。确保 Claude Code 遵循 constitution 作为建立计划时必须遵守的基础文件。
步骤 6:实现
准备就绪后,使用 /implement
命令执行实现计划:
/implement
/implement
命令将:
- 验证所有前提条件已就位(constitution、规范、计划与任务)
- 从
tasks.md
解析任务分解 - 按正确顺序执行任务,尊重依赖与并行执行标记
- 遵循任务计划中定义的 TDD 方法
- 提供进度更新并适当处理错误
[!重要] AI 代理将执行本地 CLI 命令(如
dotnet
、npm
等)——请确保你本地已安装所需工具。
实现完成后,测试应用并解决任何运行时错误(如浏览器控制台错误),这些错误可能在 CLI 日志中不可见。可将此类错误复制粘贴回 AI 代理以解决。
🔍 故障排除
Linux 上的 Git 凭据管理器
如在 Linux 上遇到 Git 身份验证问题,可安装 Git 凭据管理器:
#!/usr/bin/env bash
set -e
echo "正在下载 Git 凭据管理器 v2.6.1..."
wget https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.deb
echo "正在安装 Git 凭据管理器..."
sudo dpkg -i gcm-linux_amd64.2.6.1.deb
echo "正在配置 Git 以使用 GCM..."
git config --global credential.helper manager
echo "清理中..."
rm gcm-linux_amd64.2.6.1.deb
👥 维护者
💬 支持
如需支持,请打开 GitHub issue。我们欢迎错误报告、功能请求以及有关使用 Spec-Driven Development 的问题。
🙏 致谢
本项目深受 John Lam 的研究与工作影响。
📄 许可证
本项目采用 MIT 开源许可证授权。请参阅 LICENSE 文件了解完整条款。