项目快照:github/spec-kit,约 129,421 个 Star,11,576 个 Fork;最新推送时间 2026-08-14T16:44:52Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/github/spec-kit · https://github.github.com/spec-kit/

项目速览(TL;DR)
spec-kit 是 GitHub 发布的开源工具包,用于帮助团队采用规范驱动开发(Spec-Driven Development,SDD)。它将需求描述、项目原则、技术方案、任务拆分与代码实现组织为一条可由人工智能编码代理执行的工作流。
仓库主要使用 Python,许可证为 MIT,默认分支为 main。根据给定 GitHub 元信息,仓库拥有 129421 个 Star 和 11576 个 Fork;这些数据属于资料提供时的仓库状态,不能视为持续不变的项目指标。
- 项目定位:面向人工智能编码代理的规范驱动开发工具包。
- 命令行工具:
specify-cli,安装后提供specify命令。 - 运行要求:Python
>=3.11,安装流程要求使用uv。 - 核心流程:
constitution、specify、plan、tasks、implement。 - 扩展方式:扩展(Extensions)、预设(Presets)和社区包(Bundles)。
定位与目标用户
Spec Kit 的价值不在于替代编码代理,而在于为编码代理提供可重复的上下文、约束与阶段划分。使用者先定义要构建的内容和原因,再补充技术栈与架构,最后将实现工作拆成任务并执行。
README 将规范描述为可执行的开发输入,而不是编码开始前写完即丢弃的文档。需要注意的是,仓库资料没有给出团队规模、项目并发量或交付效率的量化承诺,因此这些维度不能作为项目效果的事实结论。
“Define what to build before building it — with any AI coding agent.”
来源:README
典型使用方式
- 团队希望在使用编码代理时,先固定项目原则、测试标准、用户体验一致性和性能要求。
- 项目需求适合用自然语言说明,再通过技术方案、任务清单和实现阶段逐步落地。
- 组织需要将自己的术语、模板、命令或角色工作流封装为可复用组件。
- 开发者使用的人工智能编码代理属于 README 所列的集成范围,或者能够按照项目生成的命令和技能工作。
核心功能
核心功能由一组面向工作流阶段的命令构成。每条命令的输入既可以来自用户的自然语言,也可以来自前一阶段生成的规范、计划或任务文件;输出则继续成为后续阶段的上下文。
项目原则:/speckit.constitution
该命令用于创建项目的治理原则和开发指南。README 的示例输入包含代码质量、测试标准、用户体验一致性和性能要求,说明它的触发条件是项目初始化后、具体功能开发前建立约束。
输出是项目级原则内容,后续规范、计划和实现阶段都应据此保持一致。资料没有提供生成文件的完整路径、字段签名或命令参数表,因此这些细节应以仓库最新文档为准。
需求规范:/speckit.specify
该命令用于描述要构建的内容及其原因,README 明确要求关注“做什么”和“为什么做”,而不是在此阶段决定技术栈。示例以照片相册应用为例,描述相册分组、拖放排序、嵌套限制和照片预览等用户可观察行为。
它的输入是自然语言需求,输出是供后续技术规划使用的规范。这样做可以将业务目标与实现选型分开;但规范是否完整、是否存在冲突,仍需要使用者审查,仓库资料没有声明自动验证能够覆盖所有业务语义。
技术方案:/speckit.plan
该命令接收技术栈和架构选择,用来把规范转化为实现计划。README 示例指定 Vite、尽量少的库、原生 HTML、CSS 和 JavaScript,以及本地 SQLite 元数据存储,同时明确图片不上传到外部位置。
输入通常包括框架、语言、数据存储和架构边界,输出是技术实现计划。计划阶段依赖前一步的需求规范;资料未给出该计划的固定章节、校验规则或自动化性能评估,因此不能据此推断项目会自动完成架构审查。
任务拆分:/speckit.tasks
该命令根据实现计划生成可执行任务清单。其触发条件是已有技术计划,输出是按实现顺序组织的任务项,便于编码代理逐项处理,也便于人工检查范围是否完整。
README 没有公布任务清单的具体格式、任务粒度算法或依赖关系语法。使用者应将生成结果视为待审查的工程输入,而不是未经审核即可合并的变更集合。
执行实现:/speckit.implement
该命令用于执行全部任务并按照计划构建功能。它依赖前序阶段形成的原则、规范、技术计划和任务清单,最终输出是编码代理在工作区中产生的实现变更。
README 将它描述为执行阶段,并未承诺自动部署、自动发布或自动通过所有测试。运行后仍需由项目维护者检查代码、测试、依赖变更、数据处理方式和版本控制状态。
系统架构与关键模块
从仓库资料可确认的架构边界是 Python 命令行入口加上随 Python 包分发的核心模板、命令、脚本、扩展、工作流、预设和社区包目录快照。该设计使 specify init 能够在没有网络连接的环境中使用核心资源。
下面的模块关系来自 pyproject.toml 的打包配置和 README 的工作流说明;未列出的内部类、函数、文件路径和运行时调用图,官方仓库资料未提供该信息。
命令行入口
pyproject.toml 将项目脚本映射为 specify = "specify_cli:main"。这意味着安装 Python 包后,用户通过 specify 进入命令行程序,而不是直接调用某个内部 Python 模块。
核心资源包
构建配置将模板复制到 specify_cli/core_pack/templates,将命令模板复制到 specify_cli/core_pack/commands,并分别打包 Bash、PowerShell 和 Python 脚本。配置注释明确指出,核心资源会被打包,以支持无网络、隔离网络或企业环境中的初始化。
工作流、扩展与预设
构建配置中包含 workflows/speckit,其用途是初始化时自动安装内置工作流。内置扩展包括 git、agent-context、assess 和 bug;内置预设包括 lean 与 constitution-sync,还包含可通过命令添加或初始化时选择的社区包目录快照。
这些资源说明 Spec Kit 不是只包含一组固定提示词的单一命令。它同时提供模板化资源、可安装组件和可组合工作流,但每个组件的详细输入输出契约仍应以仓库对应文档和源代码为准。
文档构建模块
docs/README.md 说明文档使用 DocFX 构建,主要配置包括 docfx.json、index.md、toc.yml 和 installation.md。文档构建命令带有 --serve 选项,资料明确给出的本地访问地址是 http://localhost:8080。
依赖与运行环境
项目的 Python 运行要求由 pyproject.toml 明确规定为 Python >=3.11。README 的安装步骤要求使用 uv,并提供从 Git 仓库发行标签或从 PyPI 安装 specify-cli 的方式。
运行时依赖包括 Typer、Click、Rich、Platformdirs、Readchar、PyYAML、Packaging、Pathspec 和 JSON5。测试可选依赖包括 pytest 和 pytest-cov;这些依赖来自项目配置,资料没有给出各依赖在目标机器上的系统级安装要求。
| 类别 | 名称 | 版本约束 | 资料中的用途或状态 |
|---|---|---|---|
| 运行时 | Python | >=3.11 | 项目解释器要求 |
| 安装工具 | uv | 未提供 | README 安装流程要求 |
| 运行时依赖 | typer | >=0.24.0 | 命令行应用框架依赖 |
| 运行时依赖 | click | >=8.2.1 | 命令行相关依赖 |
| 运行时依赖 | pyyaml | >=6.0 | 配置或结构化文本处理依赖 |
| 运行时依赖 | packaging | >=23.0 | 版本及打包相关处理依赖 |
| 测试可选依赖 | pytest | >=7.0 | 测试框架 |
| 测试可选依赖 | pytest-cov | >=4.0 | 测试覆盖率支持 |
表中“用途”对依赖类别的描述以项目配置和常见包职责为基础;如果需要核对项目内部具体调用位置,应直接检查仓库源代码。项目没有在给定资料中声明 Docker 镜像、数据库服务、云平台、操作系统版本或生产部署规格。
快速开始:安装、运行与验证
最小闭环是安装 specify-cli、初始化项目,再使用自管理检查命令验证命令行是否可用。下面只使用 README 中出现的命令,并将发行版本写成占位符,以避免把资料之外的版本号当成当前稳定版本。
第一步:安装 CLI
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.ZvX.Y.Z 必须替换为 Releases 页面中的实际发行标签,并保留开头的 v。README 同时给出了 PyPI 安装方式:
uv tool install specify-cli如果使用 Git 引用安装,应以仓库 Releases 页面确认具体标签;资料没有在本文输入中给出可直接固定的最新稳定版本号。
第二步:初始化本地项目
specify init my-project --integration copilot
cd my-project该示例会初始化名为 my-project 的目录,并指定 copilot 集成。README 没有在给定内容中列出所有集成名称,因此替换集成参数前应查阅官方支持列表。
第三步:验证 CLI 状态
specify self checkself check 是只读检查,不修改已安装内容。README 还给出了升级预览和升级命令;验证阶段不需要执行升级,因此不应把 self upgrade 当成初始化的必需步骤。
第四步:启动编码代理并建立原则
/speckit.constitution Create principles focused on code quality, testing standards, user experience consistency, and performance requirements命令需要在项目目录中、由相应编码代理解释。README 说明,多数代理暴露为 /speckit.* 斜杠命令;Codex CLI 和 Command Code 的技能模式使用 $speckit-*,GitHub Copilot CLI 使用 /agents 选择或直接寻址代理。
配置说明
给定资料没有提供独立的 .env、config.yaml 或项目初始化参数配置文件。可核查的配置主要位于 pyproject.toml,因此下表只列出该文件中的真实字段,不把未经资料证明的环境变量或配置项补充进去。
| 字段名 | 类型 | 默认值 | 作用 |
|---|---|---|---|
project.name |
字符串 | "specify-cli" |
Python 项目及发行包名称 |
project.version |
字符串 | "0.16.5.dev0" |
当前源码配置中的开发版本标识 |
project.requires-python |
版本约束字符串 | ">=3.11" |
允许的 Python 版本范围 |
project.scripts.specify |
入口映射字符串 | "specify_cli:main" |
生成 specify 命令并调用 CLI 入口 |
build-system.build-backend |
字符串 | "hatchling.build" |
Python 包构建后端 |
tool.pytest.ini_options.testpaths |
列表 | ["tests"] |
pytest 测试目录 |
tool.pytest.ini_options.addopts |
列表 | ["-v", "--strict-markers", "--tb=short"] |
pytest 默认运行选项 |
tool.coverage.run.source |
列表 | ["src"] |
覆盖率统计源目录 |
tool.coverage.report.precision |
整数 | 2 |
覆盖率报告的小数精度 |
上述“默认值”是配置文件中的字面值,不代表命令行所有选项的默认行为。README 明确提到 SPECIFY_UPGRADE_TIMEOUT_SECS 可限制升级安装子进程时长,默认是不设置超时;除该说明外,项目没有提供更多环境变量的完整类型和取值表。
进阶用法
进阶使用集中在自管理、扩展、预设和社区包组合。它们适合已经能够运行基础工作流的团队,用来将组织规范或角色分工固化为可重复资源。
检查与升级
# 只检查是否有新版本,不修改本地安装
specify self check
# 预览升级操作,不实际执行
specify self upgrade --dry-run
# 升级到最新稳定版本
specify self upgrade
# 固定到指定发行标签
specify self upgrade --tag vX.Y.ZREADME 说明,直接执行 specify self upgrade 不会再次询问确认;对于 uv tool 安装,它会使用带 --force 的安装方式。uvx 临时运行方式和源码检出方式会被识别,并提供路径相关提示,而不是直接运行安装器。
扩展与预设
扩展用于加入命令、钩子或其他能力,预设用于覆盖模板和术语。资料给出的内置扩展和预设名称可以作为可核查的资源清单,但具体安装命令的完整参数应参考官方扩展和预设文档。
- 内置扩展:
git、agent-context、assess、bug。 - 内置预设:
lean、constitution-sync。 - README 说明扩展可通过
specify extension add <name>安装。 - README 说明预设可通过
specify preset add <name>安装,或通过specify init --preset <name>在初始化时选择。
编码代理集成
README 声明支持 30 多个人工智能编码代理,包括 CLI 工具和 IDE 内助手,但给定资料中的支持列表链接内容被截断,未提供完整名称和版本兼容表。选择具体代理时,应以官方集成页面中的说明、调用形式和限制为准。
文档、测试与源码维护
文档源文件位于 docs 目录,构建工具是 DocFX。文档工作流会在 main 分支发生变更时构建并部署到 GitHub Pages,这是 docs/README.md 明确描述的仓库维护方式。
本地构建文档
dotnet tool install -g docfx
cd docs
docfx docfx.json --serve启动后,资料明确给出的访问地址是 http://localhost:8080。该端口只用于文档本地服务;项目资料没有声明 specify CLI 自身会启动 HTTP 服务,也没有提供生产文档服务配置。
测试配置
项目配置将 tests 设置为 pytest 测试目录,匹配 test_*.py 文件、Test* 类和 test_* 函数。默认 pytest 选项包含详细输出、严格标记和短 traceback;覆盖率源目录设置为 src,并排除测试与缓存目录。
这些配置能够说明项目如何组织测试入口,但给定资料没有提供测试数量、覆盖率结果、持续集成耗时或发布门禁,因此不能据此推导质量指标。
可观测性与运维
可确认的运维能力主要是 CLI 自管理检查、升级预览和升级执行,而不是在线服务监控。specify self check 只读检查新版本,--dry-run 用于预览升级动作,两者可以降低直接修改安装环境的风险。
README 还说明升级安装子进程可以通过 SPECIFY_UPGRADE_TIMEOUT_SECS 设置超时时间,默认不设置超时,执行过程中可用 Ctrl+C 中断。资料没有提供日志格式、日志级别、指标名称、追踪协议、健康检查接口、SLA 或集中式运维后台。
- 升级前:使用
specify self check获取只读状态。 - 变更前:使用
specify self upgrade --dry-run查看计划执行的升级动作。 - 版本控制:固定发行标签时保留标签开头的
v。 - 受限环境:利用打包进 Python wheel 的核心资源执行初始化,具体网络隔离策略需由部署环境自行确认。
- 故障排查:遇到安装器长时间运行时,可按 README 设置
SPECIFY_UPGRADE_TIMEOUT_SECS,其单位和非法值处理规则官方仓库未提供。
安全与合规边界
Spec Kit 会驱动编码代理生成或修改项目文件,因此安全边界取决于代理权限、工作目录、依赖来源和人工审核流程。它不是安全审计工具,资料没有声明能够自动识别恶意代码、敏感数据泄露、依赖漏洞或许可证冲突。
在授权的本地或测试环境中使用时,应把生成的规范、计划、任务和代码视为需要审查的工程产物。不要将未授权目标、生产凭据、个人敏感数据或组织机密交给编码代理;本文不提供面向未授权目标的攻击、绕过检测或权限提升方法。
- 权限隔离:为编码代理提供完成当前任务所需的最小目录和命令权限。
- 数据隔离:避免把生产数据库、访问令牌或个人信息放入规范、提示词、日志和代码仓库。
- 变更审查:在合并前检查代理生成的代码、依赖、脚本和文件删除操作。
- 网络控制:在企业或离线环境中核对安装来源,并确认打包资源是否满足内部供应链要求。
- 合规判断:数据驻留、行业监管、代码归属和第三方依赖义务不由 Spec Kit 自动决定,应由使用组织自行审查。
根据本文作者的经验判断,将 constitution 中的安全编码规则、测试要求和数据处理边界写成可审查的项目原则,比只在单次提示词中提出要求更便于团队复核;这属于使用建议,不是仓库声明的安全保证。
许可证与商用条款
仓库许可证为 MIT License,版权声明为 GitHub, Inc.。许可证授予获得软件和文档副本者使用、复制、修改、合并、发布、分发、再许可和销售副本的权利,因此从许可证文本看,商业使用属于允许范围。
分发软件或其重要部分时,必须保留版权声明和许可声明。MIT License 同时明确软件按“原样”提供,不提供适销性、特定用途适用性和不侵权保证,作者或版权持有人不承担由使用软件产生的责任;具体义务以仓库 LICENSE 为准。
- 可以商用:MIT 文本授予销售和分发副本的权利。
- 需要保留声明:复制或分发软件的重要部分时,应包含版权声明和许可条件。
- 不应误读为担保:许可证不提供质量、可用性、安全性或适用性承诺。
- 第三方资源另行核对:社区扩展、预设和社区包由各自作者独立创建和维护,README 要求安装前审查源代码并自行承担使用判断。
局限性与已知限制
项目资料清晰描述了工作流和打包资源,但没有提供完整的代理兼容矩阵、规范格式规范、生成结果验证算法或实现质量指标。使用者不能把命令存在等同于需求一定正确、代码一定安全或任务一定完整。
- 版本信息存在语境差异:仓库
pyproject.toml中是0.16.5.dev0开发版本标识,README 安装示例要求从 Releases 选择带v的发行标签,二者不能直接当作同一个稳定版本结论。 - 支持列表不完整:给定 README 片段只说明支持 30 多个编码代理,完整清单和各代理差异未在资料中展开。
- 运行规模未说明:没有并发、项目数量、文件规模、执行耗时或内存占用数据。
- 部署方式未说明:没有 Docker、Kubernetes、云服务、后台服务或生产 SLA 配置。
- 内容质量依赖审查:规范、计划、任务和代码都由工作流衔接,但人工仍需确认业务正确性和合规性。
- 社区组件边界:社区扩展、预设和包的维护主体不同,兼容性与安全性不能仅凭被收录就推断。
对于资料未覆盖的命令参数、生成目录、代理版本、性能指标和故障码,官方仓库未提供该信息,建议以最新 README 和官方文档为准。
适合谁 / 不适合谁
是否采用 Spec Kit,关键取决于团队是否愿意把需求、原则和技术计划作为实现前的正式输入。下面的判断信号用于决策筛选,不是对项目效果的保证。
适合的具体信号
- 团队已经使用或计划使用人工智能编码代理,并需要统一代理接收需求和执行任务的方式。
- 项目存在明确的代码质量、测试标准、用户体验一致性或性能要求,且愿意在项目原则中记录这些约束。
- 需求经常需要从业务描述逐步转化为技术计划和任务清单,团队希望保留这一转换过程。
- 组织需要通过扩展、预设或社区包复用术语、模板、命令和角色工作流。
- 运行环境要求离线或受限网络初始化,并且团队愿意审核打包进 wheel 的资源。
不适合的具体信号
- 团队不允许编码代理写入本地项目,或无法提供生成代码的人工审查和版本控制流程。
- 项目要求仓库资料中未提供的生产级 SLA、监控指标、并发基准或自动化合规证明。
- 工作内容主要是一次性、极小范围的手工修改,不需要规范、计划和任务阶段。
- 组织只能使用未被官方集成说明覆盖的代理,并且无法自行验证命令或技能模式的兼容性。
- 项目需要固定的企业内部流程,但团队不愿维护自定义扩展、预设或原则模板。
常见问题与排查(FAQ / Troubleshooting)
排查时应先区分安装问题、代理集成问题和工作流内容问题。资料给出了安装、升级和文档构建的明确路径,但没有提供完整错误码手册。
为什么安装命令中的版本写成 vX.Y.Z?
这是 README 使用的占位写法。实际安装时应从 Releases 选择发行标签,并保留开头的 v;仓库资料未指定本文发布时应使用的最新标签。
是否必须从 Git 安装?
不是。README 同时说明 specify-cli 已发布到 PyPI,并给出 uv tool install specify-cli。在需要固定某个 Git 发行标签时使用 README 的 Git 安装形式;选择 PyPI 时应以包源当前可用版本为准。
specify self check 会修改环境吗?
README 明确将其定义为只读检查,不修改内容。需要预览升级动作时使用 specify self upgrade --dry-run,不要把检查和升级视为同一操作。
为什么代理没有显示 /speckit.* 命令?
先确认是否在 specify init 初始化后的项目目录中启动代理,再核对代理对应的调用方式。README 指出 Codex CLI 和 Command Code 技能模式使用 $speckit-*,GitHub Copilot CLI 使用 /agents;其他代理的具体行为应查官方集成文档。
升级命令长时间不返回怎么办?
README 说明默认不设置升级安装子进程超时,可以使用 Ctrl+C 中断,并设置 SPECIFY_UPGRADE_TIMEOUT_SECS 限制等待时间。该环境变量的精确格式、最小值和错误处理规则,官方仓库未提供该信息。
文档本地服务使用哪个端口?
DocFX 本地构建命令是 docfx docfx.json --serve,资料给出的浏览器地址为 http://localhost:8080。这是文档服务端口,不应推断为 CLI 或其他组件的服务端口。
社区扩展是否等同于官方功能?
不是。README 明确说明社区贡献由各自作者独立创建和维护,安装前应审查源代码并自行判断是否使用。使用组织还应核对扩展的许可证、依赖、维护状态和与当前 Spec Kit 版本的兼容性。
项目地址与资源
以下链接均来自项目元信息、README 或文档源文件,适合用于源码、安装说明、扩展生态和本地文档构建的进一步核查。
- GitHub 仓库 spec-kit
- Spec Kit 官网与文档
- Spec Kit 文档站点
- uv 安装与使用文档
- Spec Kit Releases 页面
- 社区扩展文档
- 社区预设文档
- 社区包文档
- 社区工作流示例
- 相关扩展项目
- DocFX 官方文档
项目的许可证文本位于仓库根目录的 LICENSE 文件,Python 包与测试配置位于 pyproject.toml。当官网文档、发行标签或社区组件与本文所依据的资料发生变化时,应以对应官方页面和仓库当前内容为准。



