mcpField
S
speckit-implement

speckit-implement

github.com/full-stack-skills开发063 次安装4 周前更新
代码仓库

关于 speckit-implement

speckit-implement 是基于 GitHub Spec Kit 官方提示词模板的实现技能,面向按规格推进开发的 Agent。它按任务阶段执行实现,并包含检查清单、扩展钩子和完成验证流程。

主要功能

  1. 01检查实现前扩展钩子
  2. 02扫描并汇总检查清单状态
  3. 03按阶段和依赖执行任务
  4. 04遵循测试优先的实现流程
  5. 05验证结果并更新任务状态
  6. 06支持实现前后钩子

适用场景

  1. 01根据 tasks.md 推进功能开发
  2. 02实现前检查项目规格清单
  3. 03按计划执行并验证开发任务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/full-stack-skills/speckit-skills --skill speckit-implement

安装后在 Claude Code 中输入/speckit-implement确认已加载。

附带文件agents/openai.yamlLICENSE.txt

详细介绍

speckit-implement

本技能内容源自 GitHub Spec Kit 官方提示词模板。

  • 上游:https://github.com/github/spec-kit
  • 许可:MIT License, Copyright GitHub, Inc.(完整文本见同目录 LICENSE.txt)
  • 适配说明:官方模板面向斜杠命令场景;原文中的 $ARGUMENTS 指用户在对话中给出的请求, 跨命令引用(如 speckit.plan)在本技能体系中对应同名的 speckit-* 技能。 其余内容保持与上游一致,未作改写。

用户输入

$ARGUMENTS

如果用户输入不为空,你必须在继续之前考虑用户输入。

执行前检查

检查扩展钩子(实施前):

  • 检查项目根目录中是否存在 .specify/extensions.yml。
  • 如果存在,请读取该文件,并查找 hooks.before_implement 键下的条目
  • 如果 YAML 无法解析或无效,请勿默默跳过:告知用户无法读取 .specify/extensions.yml(包括解析器错误),并说明未检查任何钩子,包括其中注册的任何必需钩子(optional: false),然后正常继续
  • 筛除 enabled 显式设置为 false 的钩子。未设置 enabled 字段的钩子默认视为已启用。
  • 对于其余钩子,不要尝试解释或评估钩子的 condition 表达式:
    • 如果钩子没有 condition 字段,或该字段为 null/空,则视为可执行
    • 如果钩子定义了非空的 condition,则跳过该钩子,并将条件评估留给 HookExecutor 实现处理
  • 对于每个可执行钩子,根据其 optional 标志输出以下内容:
    • 可选钩子(optional: true):
      ## 扩展钩子
      
      **可选的前置钩子**:{extension}
      命令:`/{command}`
      描述:{description}
      
      提示词:{prompt}
      执行方式:`/{command}`
      
    • 必需钩子(optional: false):
      ## 扩展钩子
      
      **自动前置钩子**:{extension}
      正在执行:`/{command}`
      EXECUTE_COMMAND: {command}
      
      继续到大纲之前,请等待钩子命令的结果。
      
      输出上述区块后,你必须实际调用钩子,并等待其完成后再继续。调用方式与在此 Agent/会话中自行运行命令的方式相同(调用方式可能与上面显示的字面 {command} ID 不同,例如,技能模式下的 Agent 会运行 /skill:speckit-... 或 $speckit-...)。仅输出区块并不会运行钩子。
  • 如果没有注册钩子,或 .specify/extensions.yml 不存在,则静默跳过

大纲

  1. 从仓库根目录运行 {SCRIPT},并解析 FEATURE_DIR 和 AVAILABLE_DOCS 列表。所有路径都必须是绝对路径。对于参数中的单引号,例如 "I'm Groot",请使用转义语法:例如 'I'\''m Groot'(或尽可能使用双引号:"I'm Groot")。

  2. 检查清单状态(如果 FEATURE_DIR/checklists/ 存在):

    • 将清单标记视为只读关卡:扫描复选框状态、报告状态,并在需要时询问后再继续;不要修改清单文件或标记

    • checklists/requirements.md 是由 __SPECKIT_COMMAND_SPECIFY__ 和 __SPECKIT_COMMAND_CLARIFY__ 维护的内置规格质量清单;由 __SPECKIT_COMMAND_CHECKLIST__ 生成的自定义清单则是由审核人员维护的需求质量审核材料

    • 对于自定义清单,[x] 表示审核人员判定需求质量标准已满足;它不表示实施工作已完成

    • 扫描 checklists/ 目录中的所有清单文件

    • 对于每份清单,统计:

      • 总项数:所有匹配 - [ ]、- [X] 或 - [x] 的行
      • 已勾选项数:匹配 - [X] 或 - [x] 的行
      • 未勾选项数:匹配 - [ ] 的行
    • 创建状态表:

      | Checklist | Total | Checked | Unchecked | Status |
      |-----------|-------|---------|-----------|--------|
      | ux.md     | 12    | 12      | 0         | ✓ PASS |
      | test.md   | 8     | 5       | 3         | ✗ FAIL |
      | security.md | 6   | 6       | 0         | ✓ PASS |
      
    • 计算总体状态:

      • PASS:所有检查清单都没有未勾选项
      • FAIL:一个或多个检查清单中存在未勾选项
    • 如果任何检查清单中存在未勾选项:

      • 显示包含未勾选项数量的表格
      • 停止并询问:“某些检查清单中存在未勾选项。你仍要继续实施吗?(yes/no)”
      • 等待用户回复后再继续
      • 如果用户说“no”“wait”或“stop”,则停止执行
      • 如果用户说“yes”“proceed”或“continue”,则继续执行步骤 3
    • 如果所有检查清单均已勾选:

      • 显示表格,表明所有检查清单均已通过
      • 自动继续执行步骤 3
  3. 加载并分析实施上下文:

    • 必需:阅读 tasks.md,了解完整任务列表和执行计划
    • 必需:阅读 plan.md,了解技术栈、架构和文件结构
    • 如果存在:阅读 data-model.md,了解实体和关系
    • 如果存在:阅读 contracts/,了解 API 规范和测试要求
    • 如果存在:阅读 research.md,了解技术决策和约束
    • 如果存在:阅读 /memory/constitution.md,了解治理约束
    • 如果存在:阅读 quickstart.md,了解集成场景
  4. 项目设置验证:

    • 必需:根据实际项目设置创建或验证忽略文件:

    检测与创建逻辑:

    • 检查以下命令是否成功,以确定仓库是否为 git 仓库(若是,则创建或验证 .gitignore):

      git rev-parse --git-dir 2>/dev/null
      
    • 检查是否存在 Dockerfile* 或 plan.md 中是否提到 Docker → 创建或验证 .dockerignore

    • 检查是否存在 .eslintrc* → 创建或验证 .eslintignore

    • 检查是否存在 eslint.config.* → 确保配置中的 ignores 条目涵盖必需的模式

    • 检查是否存在 .prettierrc* → 创建或验证 .prettierignore

    • 检查是否存在 .npmrc 或 package.json → 创建或验证 .npmignore(如果要发布)

    • 检查是否存在 Terraform 文件(*.tf)→ 创建或验证 .terraformignore

    • 检查是否需要 .helmignore(存在 Helm chart)→ 创建或验证 .helmignore

    如果忽略文件已存在:验证其中是否包含必要模式,仅追加缺失的关键模式 如果忽略文件不存在:根据检测到的技术创建包含完整模式集的文件

    按技术分类的常见模式(来自 plan.md 中的技术栈):

    • Node.js/JavaScript/TypeScript:node_modules/、dist/、build/、*.log、.env*
    • Python:__pycache__/、*.pyc、.venv/、venv/、dist/、*.egg-info/
    • Java:target/、*.class、*.jar、.gradle/、build/
    • C#/.NET:bin/、obj/、*.user、*.suo、packages/
    • Go:*.exe、*.test、vendor/、*.out
    • Ruby:.bundle/、log/、tmp/、*.gem、vendor/bundle/
    • PHP:vendor/、*.log、*.cache、*.env
    • Rust:target/、debug/、release/、*.rs.bk、*.rlib、*.prof*、.idea/、*.log、.env*
    • Kotlin:build/、out/、.gradle/、.idea/、*.class、*.jar、*.iml、*.log、.env*
    • C++:build/、bin/、obj/、out/、*.o、*.so、*.a、*.exe、*.dll、.idea/、*.log、.env*
    • C:build/、bin/、obj/、out/、*.o、*.a、*.so、*.exe、*.dll、autom4te.cache/、config.status、config.log、.idea/、*.log、.env*
    • Swift:.build/、DerivedData/、*.swiftpm/、Packages/
    • R:.Rproj.user/、.Rhistory、.RData、.Ruserdata、*.Rproj、packrat/、renv/
    • 通用:.DS_Store、Thumbs.db、*.tmp、*.swp、.vscode/、.idea/ 工具特定模式:
    • Docker:node_modules/、.git/、Dockerfile*、.dockerignore、*.log*、.env*、coverage/
    • ESLint:node_modules/、dist/、build/、coverage/、*.min.js
    • Prettier:node_modules/、dist/、build/、coverage/、package-lock.json、yarn.lock、pnpm-lock.yaml
    • Terraform:.terraform/、*.tfstate*、*.tfvars、.terraform.lock.hcl
    • Kubernetes/k8s:*.secret.yaml、secrets/、.kube/、kubeconfig*、*.key、*.crt
  5. 解析 tasks.md 的结构并提取:

    • 任务阶段:设置、测试、核心、集成、润色
    • 任务依赖关系:串行与并行执行规则
    • 任务详情:ID、描述、文件路径、并行标记 [P]
    • 执行流程:顺序和依赖要求
  6. 按照任务计划执行实现:

    • 按阶段执行:完成当前阶段后再进入下一阶段
    • 遵守依赖关系:按顺序执行串行任务,可并行执行带有 [P] 标记的任务
    • 遵循 TDD 方法:先执行测试任务,再执行对应的实现任务
    • 基于文件进行协调:影响相同文件的任务必须串行执行
    • 验证检查点:确认每个阶段已完成后再继续
  7. 实现执行规则:

    • 先进行设置:初始化项目结构、依赖项和配置
    • 先写测试,再编写代码:如果需要为契约、实体和集成场景编写测试
    • 核心开发:实现模型、服务、CLI 命令、端点
    • 集成工作:数据库连接、中间件、日志记录、外部服务
    • 润色和验证:单元测试、性能优化、文档
  8. 进度跟踪和错误处理:

    • 每完成一项任务后报告进度
    • 如果任何非并行任务失败,则停止执行
    • 对于带有 [P] 标记的并行任务,继续执行成功的任务,并报告失败的任务
    • 提供包含调试上下文的清晰错误消息
    • 如果无法继续实现,建议后续步骤
    • 重要:对于已完成的任务,务必在任务文件中将其标记为 [X]。
  9. 完成验证:

    • 确认所有必需任务均已完成
    • 检查已实现的功能是否符合原始规范
    • 验证测试是否通过,以及覆盖率是否符合要求
    • 确认实现遵循技术计划

注意:此命令假设 tasks.md 中包含完整的任务拆解。如果任务不完整或缺失,建议先运行 __SPECKIT_COMMAND_TASKS__ 重新生成任务列表。

必须执行的执行后钩子

向用户报告完成情况之前,必须完成本节。

检查项目根目录中是否存在 .specify/extensions.yml。

  • 如果该文件不存在,或 hooks.after_implement 下未注册任何钩子,则跳转到“完成报告”。
  • 如果该文件存在,请读取文件并查找 hooks.after_implement 键下的条目。
  • 如果 YAML 无法解析或无效,请勿默默跳过:告知用户无法读取 .specify/extensions.yml(包括解析器错误),并说明未检查任何钩子,包括其中注册的任何必需钩子(optional: false),然后继续前往“完成报告”。
  • 筛除 enabled 明确设为 false 的钩子。未设置 enabled 字段的钩子默认视为已启用。
  • 对于其余每个钩子,不要尝试解释或评估钩子的 condition 表达式:
    • 如果钩子没有 condition 字段,或其值为 null/空,则视为可执行
    • 如果钩子定义了非空的 condition,则跳过该钩子,并将条件评估留给 HookExecutor 实现
  • 对于每个可执行钩子,根据其 optional 标志输出以下内容:
    • 必需钩子(optional: false)——每个必需钩子都必须输出 EXECUTE_COMMAND::
      ## 扩展钩子
      
      **自动钩子**:{extension}
      正在执行:`/{command}`
      EXECUTE_COMMAND: {command}
      
      输出上述代码块后,必须实际调用钩子,并等待其执行完成后再继续。调用方式应与在当前 Agent/会话中亲自运行命令相同(实际调用方式可能与上述字面量 {command} 标识不同,例如,技能模式的 Agent 会运行 /skill:speckit-... 或 $speckit-...)。仅输出代码块并不会运行钩子。
    • 可选钩子(optional: true):
      ## 扩展钩子
      
      **可选钩子**:{extension}
      命令:`/{command}`
      描述:{description}
      
      提示词:{prompt}
      执行方式:`/{command}`
      

完成报告

报告最终状态,并概述已完成的工作。

完成条件

  • tasks.md 中的所有任务均已完成并标记为 [X]
  • 已根据规范、计划和测试覆盖情况验证实现
  • 已根据上述“必须执行的执行后钩子”规则分派或跳过扩展钩子
  • 已向用户报告完成情况,并概述已完成的工作

评论

支持 Markdown