关于 spec-kit-plan
spec-kit-plan 根据功能规格生成技术实施计划,面向负责设计变更方案的开发者。它强调结合项目规范、现有代码与相关文档核验计划,并记录决策、例外和受影响记录。
主要功能
- 01从规格和项目文档加载上下文
- 02调查并记录待决技术问题
- 03编写架构与验证计划
- 04核对现有代码及其读取方
- 05检查计划是否符合项目规范
适用场景
- 01为已明确的功能规格制定实施方案
- 02确定变更涉及的现有测试和文档
- 03在设计阶段发现架构规范冲突
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aircury/ ai-framework --skill spec-kit-plan安装后在 Claude Code 中输入/spec-kit-plan确认已加载。
详细介绍
根据功能规格制定技术实施计划。
输入:可选指定变更名称。如果省略,请根据上下文推断或询问。 用户添加的其他内容(如首选技术栈、约束)均作为计划的输入。
步骤
-
选择变更并加载资料
加载
specs/changes/<name>/spec.md。如果文件不存在,请提示先使用spec-kit-specify技能。同时加载
FRAMEWORK.md(如果存在,还要加载FRAMEWORK.local.md)、其中链接的已启用标准相关能力文档、与变更领域相关的specs/features/文档,以及specs/decisions/中对其有约束的决策记录。 -
调查未知事项
如果规格中包含未解决的
[NEEDS CLARIFICATION]标记,请暂停,并建议先使用spec-kit-clarify技能,除非用户明确表示希望继续。列出计划本身的未知事项——需要选择的依赖项、集成模式、现有代码的行为等——并通过阅读代码或依赖项文档逐一确定。 在
## Decisions & Rationale下记录每项已确定的未知事项及考虑过的备选方案。 -
编写
specs/changes/<name>/plan.md结构:
# Plan: <Feature Name> ## Technical Context <Language and versions, main dependencies, storage, testing tools, target platform, constraints. Only what the code or the user establishes.> ## Architecture <Bounded context, layers affected, dependency direction. Must comply with FRAMEWORK.md dependency rule.> ## Data Models <Entities, value objects, aggregates. Identity vs. structural equality. Invariants. Field constraints: required or optional, limits, allowed values, validation rules.> ## Interface Contracts <Ports, use case signatures, domain events, and what the project exposes to users or other systems (commands, endpoints, public APIs, messages). Technology-agnostic where the layer requires it.> ## Implementation Phases 1. <Phase name> — <what it establishes> 2. ... ## Decisions & Rationale | Decision | Rationale | Alternatives Considered | |----------|-----------|------------------------| ## Exceptions | Rule | Trade-off | Simpler alternative rejected | Verification | |------|-----------|------------------------------|--------------| ## Record Search | Record | Search | Disposition | |--------|--------|-------------| ## Validation Scenarios <Runnable scenarios that prove the feature works end to end: prerequisites, the commands to run, expected outcomes.> ## Constraints & Risks <Known constraints, open technical risks.>规则:
- 依赖方向必须是
infrastructure -> application -> domain。绝不可反向依赖。 - 影响业务行为的外部依赖必须置于端口之后。
- 仓储按聚合根划分,而不是按表划分。
- 领域层或应用层设计中不得出现框架名称。
- 上下文之间必须通过共享内核中的契约或领域事件交互,绝不可相互导入(包括导入其他上下文的应用服务)。
- 对约束性规则的例外必须在
## Exceptions下记录,并填写全部四列;否则不得记录。没有例外时填写None.。spec-kit-analyse接受已记录且权衡合理、验证方式存在的例外;缺少任一列则视为违规。 ## Record Search必须列出变更会使其内容失实的所有现行规格、决策记录和文档。通过搜索specs/features/、specs/decisions/和项目文档中与变更相关的术语来查找——既要搜索概念词语,也要搜索其拼写形式,因为仅搜索路径会漏掉写着“位于功能规格旁边”的页面,而这种表述说明了文档位置。 每行都要说明查找方式和处理方式:由变更更新(以及如何更新),或不受影响(以及原因)。 如果变更推翻某项决策记录,必须明确说明并引用用户的决定;计划不得自行推翻已记录的决策。 如果没有任何内容受影响,请填写None found.,并注明所做的搜索。## Validation Scenarios用于指导验证,而非描述实现:链接到契约和数据模型,不要重复其内容;不得包含实现代码、迁移或完整测试套件。
- 依赖方向必须是
-
根据现有实际内容检查计划
如果变更会修改现有内容,请先阅读该内容,再进行描述。 计划具有权威性,因此如果不在此处检查,以下错误都可能在评审中遗留下来:
- 阈值和比较。 引用代码中的运算符和常量,不要换一种说法转述。
如果计划写着“达到或超过上限”,而代码测试的是
> limit,就会让实施者去修改正常工作的代码,或编写一项按计划中规则判定的测试。 - 需求暗中依赖的配置。 在将某项记录为范围外之前,检查需求是否需要它:权限、构建或部署设置、缓存键、检出深度。
- 代码中的数量、枚举和位置。 使用搜索从代码中推导集合(“执行 X 的文件”),不要依据示例推断,并记录搜索方式,以便实施者重复操作。 用可搜索的内容来指明代码位置,例如函数、类型或具有辨识度的字符串;绝不要使用行号,因为其他地方的编辑会导致行号变化。
- 变更所影响内容的读取方,而不仅是生成方。 在确定变更所涉及的标识符、消息、格式、标志或端点的形式之前,按代码中的拼写在整个代码库中搜索所有读取方,包括代码和测试,并记录搜索方式。
如果代码的其他部分已经会解析某段文本,那么它就是一种格式:只有找到并检查解析器后,才能安全地向其中添加字段或标记;而解析器通常不在正在编辑的文件中。
列出变更范围之外所有会读取变更内容的测试名称,以便
spec-kit-tasks能为其安排任务:否则变更会让这些测试过时。 - 特殊情况必须检查每一步读取其所变更事实的流程, 而不仅是引入该事实的步骤,并在计划中说明每一步现在会如何处理。
- 出现相同结果,并不能证明所有生成方都处理了新情况。 如果某个结果(状态、错误、停止)可能由多个触发条件产生,请逐一检查并列出每个生成方;而即使某个使用方会通用地处理新值,它旁边仍可能输出一句对新情况不属实的硬编码文本。
- 规则的例外必须指出该规则的每一处重述。 一条规则通常会在多个地方表述——标准、技能、文档——而这些重述之处都必须修改以纳入例外;请搜索该规则的措辞。
- 安全检查的豁免应以确保安全的状态为依据, 并在豁免适用之处观察该状态;绝不能以可能在该状态结束后仍然存在的记录为依据。
- 承诺的提交必须可以分开。 在规划将一个文件中的两种行为拆成两个提交之前,先检查它们能否清晰分离;如果它们交织在同一个函数中,就规划一个同时说明两者的提交。
- 项目自身的模板决定计划的章节。 如果
FRAMEWORK.local.md或项目文档要求计划包含更多章节,就添加这些章节。
- 阈值和比较。 引用代码中的运算符和常量,不要换一种说法转述。
如果计划写着“达到或超过上限”,而代码测试的是
-
宪章检查
在完成之前,以及设计完成之后,再次确认计划没有违反
FRAMEWORK.md中任何不可协商的规则。 发现违规时,必须在计划中修正,或将其记录为## Exceptions下的例外;不得不作说明。
输出
编写计划后:
- 确认文件位置。
- 着重说明值得用户关注的架构决策、例外和受影响记录。
- 下一步:“使用
spec-kit-tasks技能生成任务列表。”也可以先使用spec-kit-checklist技能,对某个领域(安全、用户体验、API)的需求进行审查。
护栏
- 不生成代码——只编写计划。
- 如果规范中有影响架构、尚未解决的澄清事项,应明确指出,不要自行猜测。
- 优先保护领域模型;围绕它调整基础设施。
- 绝不要改变规范的要求;计划无法满足的要求必须交由用户处理。