mcpField
S
spec-driven-apply

spec-driven-apply

github.com/kw12121212开发137 次安装26 周前更新
代码仓库

关于 spec-driven-apply

spec-driven-apply 是一项依据现有规格驱动项目材料实施变更的技能,面向开发者和编码 Agent。它要求先重建项目上下文、处理未决问题,再按序完成任务并更新规格。

主要功能

  1. 01选择一项活跃变更
  2. 02从项目文件重建上下文
  3. 03遇未决问题时暂停
  4. 04按顺序实施任务
  5. 05更新增量规格及映射

适用场景

  1. 01实施已规划的功能变更
  2. 02编码前核对需求
  3. 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。

步骤

  1. 选择变更 — 运行 node {{SKILL_DIR}}/scripts/spec-driven.js modify 列出有效变更。询问要应用哪项变更。如果已指定,则使用该变更。

  2. 加载上下文 — 阅读所有文档:

    • 必须将此前的所有对话上下文视为过时、不可靠且不具权威性。
    • 不得将此前的聊天上下文作为需求、任务状态、实现细节或完成状态的事实依据。
    • 在采取任何实现行动之前,必须根据当前变更文档、相关基础规范和当前代码库状态,重新构建工作上下文。
    • 如果此前的聊天上下文与文件或代码库状态有任何出入,必须舍弃此前的聊天上下文,仅遵循文件和代码库状态。
    • 除非已根据当前文件和代码库状态明确重新验证,否则不得使用此前的聊天上下文。
    • .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 作为检查相关文件的起点
  3. 检查任务状态 — 运行:

    node {{SKILL_DIR}}/scripts/spec-driven.js apply <name>
    

    向用户展示任务摘要(总数、已完成数、剩余数)。

  4. 处理未解决问题 — 阅读 questions.md,并查找 - [ ] Q: 条目:

    • 如果发现任何未解决问题,逐一列出并在实现前停止
    • 对于每个未解决问题,向用户提供结构化说明,包含:
      • Question
      • Explanation
      • Impact
      • Recommendation
    • Explanation 必须说明:阅读变更文档、相关主规范和当前代码库状态后,该问题为何仍未解决
    • Impact 必须说明答案会影响哪项实现选择、任务、行为或不变行为保证
    • Recommendation 可以建议首选答案,但只能作为建议
    • 在用户明确回答或确认决策之前,不得实现任务、编辑实现文件或将问题标记为已解决
    • 只有在 questions.md 的 ## Resolved 下,所有问题均已通过 A: 答案解决后,才能继续
  5. 实现任务 — 按顺序处理每个 - [ ] 任务:

    • 修改前阅读相关代码
    • 实现任务
    • 验证变更不会违反 proposal.md 中列出的任何 Unchanged Behavior
    • 对于 ## Testing 任务:实际运行测试(lint、单元测试),确认通过后再标记完成
    • 在 tasks.md 中将 - [ ] 改为 - [x],标记任务完成
    • 继续下一个任务前,简要确认已完成的工作
  6. 更新增量规范 — 所有任务完成后,重新阅读 changes/<name>/specs/ 中的每个文件,并确认其准确反映了实际实现的内容:

    • 如果实现与原计划有出入,请更新受影响的文件
    • 如果需要创建或修改其他规范文件,请现在完成
    • 更新增量规范映射 frontmatter,确保 mapping.implementation 和 mapping.tests 列出实际更改或依赖的实现文件和测试文件
  7. 完成时 — 所有任务完成且增量规范准确无误后:

    • 再次运行 node {{SKILL_DIR}}/scripts/spec-driven.js apply <name>,确认剩余任务为 0
    • 建议运行 /spec-driven-verify <name> 来验证实现

规则

  • 修改代码前先阅读现有代码
  • 按顺序完成任务,除非存在明确的依赖原因需要跳过
  • 实现任务后立即将其标记为完成,不要等到最后批量标记
  • 如果任务含糊不清,请先阅读 proposal.md 和 design.md,再询问用户
  • 不要实现已标记为 - [x] 的任务
  • 实现开始前,必须由用户明确解决待决问题
  • 用户确认前,建议不算已解决的答复
  • 在 frontmatter 中保留实现和测试映射,不要写在需求正文中

评论

支持 Markdown