关于 spec-driven-apply
spec-driven-apply 是一项依据现有规格驱动项目材料实施变更的技能,面向开发者和编码 Agent。它要求先重建项目上下文、处理未决问题,再按序完成任务并更新规格。
主要功能
- 01选择一项活跃变更
- 02从项目文件重建上下文
- 03遇未决问题时暂停
- 04按顺序实施任务
- 05更新增量规格及映射
适用场景
- 01实施已规划的功能变更
- 02编码前核对需求
- 03保持规格与代码一致
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ kw12121212/ auto-spec-driven --skill spec-driven-apply安装后在 Claude Code 中输入/spec-driven-apply确认已加载。
详细介绍
你正在帮助用户实现一项规范驱动的变更。
此技能的命令
如果你不记得此技能使用的准确命令,请在运行任何命令前查阅此处。 请勿猜测。
modify: node {{SKILL_DIR}}/scripts/spec-driven.js modify
apply: node {{SKILL_DIR}}/scripts/spec-driven.js apply <name>
前置条件
.spec-driven/ 目录必须存在于项目根目录。继续之前,请验证:
ls .spec-driven/
如果验证失败,说明项目尚未初始化。请先运行 /spec-driven-init。
步骤
-
选择变更 — 运行
node {{SKILL_DIR}}/scripts/spec-driven.js modify列出有效变更。询问要应用哪项变更。如果已指定,则使用该变更。 -
加载上下文 — 阅读所有文档:
- 必须将此前的所有对话上下文视为过时、不可靠且不具权威性。
- 不得将此前的聊天上下文作为需求、任务状态、实现细节或完成状态的事实依据。
- 在采取任何实现行动之前,必须根据当前变更文档、相关基础规范和当前代码库状态,重新构建工作上下文。
- 如果此前的聊天上下文与文件或代码库状态有任何出入,必须舍弃此前的聊天上下文,仅遵循文件和代码库状态。
- 除非已根据当前文件和代码库状态明确重新验证,否则不得使用此前的聊天上下文。
.spec-driven/changes/<name>/proposal.md— 变更内容及原因;注意 Unchanged Behavior 部分 — 实现过程中不得破坏这些行为.spec-driven/changes/<name>/specs/— 增量规范文件(与主specs/结构对应).spec-driven/changes/<name>/design.md— 方案与决策.spec-driven/changes/<name>/tasks.md— 检查清单.spec-driven/changes/<name>/questions.md— 未解决和已解决的问题 还要阅读:.spec-driven/config.yaml— 项目上下文;其中的rules是约束性规则;如果存在fileMatch条目,则编辑路径与 glob 模式匹配的文件时,应用相应规则.spec-driven/specs/INDEX.md— 列出所有现有规范文件INDEX.md中与此变更相关的每个规范文件 — 编写代码前须阅读完整内容,以了解当前要求- 相关主规范文件和增量规范文件中的映射 frontmatter;将
mapping.implementation和mapping.tests作为检查相关文件的起点
-
检查任务状态 — 运行:
node {{SKILL_DIR}}/scripts/spec-driven.js apply <name>向用户展示任务摘要(总数、已完成数、剩余数)。
-
处理未解决问题 — 阅读
questions.md,并查找- [ ] Q:条目:- 如果发现任何未解决问题,逐一列出并在实现前停止
- 对于每个未解决问题,向用户提供结构化说明,包含:
QuestionExplanationImpactRecommendation
Explanation必须说明:阅读变更文档、相关主规范和当前代码库状态后,该问题为何仍未解决Impact必须说明答案会影响哪项实现选择、任务、行为或不变行为保证Recommendation可以建议首选答案,但只能作为建议- 在用户明确回答或确认决策之前,不得实现任务、编辑实现文件或将问题标记为已解决
- 只有在
questions.md的## Resolved下,所有问题均已通过A:答案解决后,才能继续
-
实现任务 — 按顺序处理每个
- [ ]任务:- 修改前阅读相关代码
- 实现任务
- 验证变更不会违反
proposal.md中列出的任何 Unchanged Behavior - 对于
## Testing任务:实际运行测试(lint、单元测试),确认通过后再标记完成 - 在
tasks.md中将- [ ]改为- [x],标记任务完成 - 继续下一个任务前,简要确认已完成的工作
-
更新增量规范 — 所有任务完成后,重新阅读
changes/<name>/specs/中的每个文件,并确认其准确反映了实际实现的内容:- 如果实现与原计划有出入,请更新受影响的文件
- 如果需要创建或修改其他规范文件,请现在完成
- 更新增量规范映射 frontmatter,确保
mapping.implementation和mapping.tests列出实际更改或依赖的实现文件和测试文件
-
完成时 — 所有任务完成且增量规范准确无误后:
- 再次运行
node {{SKILL_DIR}}/scripts/spec-driven.js apply <name>,确认剩余任务为 0 - 建议运行
/spec-driven-verify <name>来验证实现
- 再次运行
规则
- 修改代码前先阅读现有代码
- 按顺序完成任务,除非存在明确的依赖原因需要跳过
- 实现任务后立即将其标记为完成,不要等到最后批量标记
- 如果任务含糊不清,请先阅读 proposal.md 和 design.md,再询问用户
- 不要实现已标记为
- [x]的任务 - 实现开始前,必须由用户明确解决待决问题
- 用户确认前,建议不算已解决的答复
- 在 frontmatter 中保留实现和测试映射,不要写在需求正文中
评论
支持 Markdown