关于 speckit-implement
speckit-implement 是基于 GitHub Spec Kit 官方提示词模板的实现技能,面向按规格推进开发的 Agent。它按任务阶段执行实现,并包含检查清单、扩展钩子和完成验证流程。
主要功能
- 01检查实现前扩展钩子
- 02扫描并汇总检查清单状态
- 03按阶段和依赖执行任务
- 04遵循测试优先的实现流程
- 05验证结果并更新任务状态
- 06支持实现前后钩子
适用场景
- 01根据 tasks.md 推进功能开发
- 02实现前检查项目规格清单
- 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):
输出上述区块后,你必须实际调用钩子,并等待其完成后再继续。调用方式与在此 Agent/会话中自行运行命令的方式相同(调用方式可能与上面显示的字面## 扩展钩子 **自动前置钩子**:{extension} 正在执行:`/{command}` EXECUTE_COMMAND: {command} 继续到大纲之前,请等待钩子命令的结果。{command}ID 不同,例如,技能模式下的 Agent 会运行/skill:speckit-...或$speckit-...)。仅输出区块并不会运行钩子。
- 可选钩子(
- 如果没有注册钩子,或
.specify/extensions.yml不存在,则静默跳过
大纲
-
从仓库根目录运行
{SCRIPT},并解析 FEATURE_DIR 和 AVAILABLE_DOCS 列表。所有路径都必须是绝对路径。对于参数中的单引号,例如 "I'm Groot",请使用转义语法:例如'I'\''m Groot'(或尽可能使用双引号:"I'm Groot")。 -
检查清单状态(如果 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
-
-
加载并分析实施上下文:
- 必需:阅读 tasks.md,了解完整任务列表和执行计划
- 必需:阅读 plan.md,了解技术栈、架构和文件结构
- 如果存在:阅读 data-model.md,了解实体和关系
- 如果存在:阅读 contracts/,了解 API 规范和测试要求
- 如果存在:阅读 research.md,了解技术决策和约束
- 如果存在:阅读 /memory/constitution.md,了解治理约束
- 如果存在:阅读 quickstart.md,了解集成场景
-
项目设置验证:
- 必需:根据实际项目设置创建或验证忽略文件:
检测与创建逻辑:
-
检查以下命令是否成功,以确定仓库是否为 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
-
解析 tasks.md 的结构并提取:
- 任务阶段:设置、测试、核心、集成、润色
- 任务依赖关系:串行与并行执行规则
- 任务详情:ID、描述、文件路径、并行标记 [P]
- 执行流程:顺序和依赖要求
-
按照任务计划执行实现:
- 按阶段执行:完成当前阶段后再进入下一阶段
- 遵守依赖关系:按顺序执行串行任务,可并行执行带有 [P] 标记的任务
- 遵循 TDD 方法:先执行测试任务,再执行对应的实现任务
- 基于文件进行协调:影响相同文件的任务必须串行执行
- 验证检查点:确认每个阶段已完成后再继续
-
实现执行规则:
- 先进行设置:初始化项目结构、依赖项和配置
- 先写测试,再编写代码:如果需要为契约、实体和集成场景编写测试
- 核心开发:实现模型、服务、CLI 命令、端点
- 集成工作:数据库连接、中间件、日志记录、外部服务
- 润色和验证:单元测试、性能优化、文档
-
进度跟踪和错误处理:
- 每完成一项任务后报告进度
- 如果任何非并行任务失败,则停止执行
- 对于带有 [P] 标记的并行任务,继续执行成功的任务,并报告失败的任务
- 提供包含调试上下文的清晰错误消息
- 如果无法继续实现,建议后续步骤
- 重要:对于已完成的任务,务必在任务文件中将其标记为 [X]。
-
完成验证:
- 确认所有必需任务均已完成
- 检查已实现的功能是否符合原始规范
- 验证测试是否通过,以及覆盖率是否符合要求
- 确认实现遵循技术计划
注意:此命令假设 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::
输出上述代码块后,必须实际调用钩子,并等待其执行完成后再继续。调用方式应与在当前 Agent/会话中亲自运行命令相同(实际调用方式可能与上述字面量## 扩展钩子 **自动钩子**:{extension} 正在执行:`/{command}` EXECUTE_COMMAND: {command}{command}标识不同,例如,技能模式的 Agent 会运行/skill:speckit-...或$speckit-...)。仅输出代码块并不会运行钩子。 - 可选钩子(
optional: true):## 扩展钩子 **可选钩子**:{extension} 命令:`/{command}` 描述:{description} 提示词:{prompt} 执行方式:`/{command}`
- 必需钩子(
完成报告
报告最终状态,并概述已完成的工作。
完成条件
-
tasks.md中的所有任务均已完成并标记为[X] - 已根据规范、计划和测试覆盖情况验证实现
- 已根据上述“必须执行的执行后钩子”规则分派或跳过扩展钩子
- 已向用户报告完成情况,并概述已完成的工作