Claude Code Plugins

Community-maintained marketplace

Feedback

openspec-implementation-cn

@forztf/open-skilled-sdd
2
0

以测试与验证为先的方式,按序执行并实现已批准的规范提案。用于实施变更、应用提案、执行规范任务或按已批准计划构建。触发词包括 "openspec开发", "开发", "实施" "实现提案", "应用变更", "执行规范", "按顺序完成任务", "构建功能", "开始实施"。

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name openspec-implementation-cn
description 以测试与验证为先的方式,按序执行并实现已批准的规范提案。用于实施变更、应用提案、执行规范任务或按已批准计划构建。触发词包括 "openspec开发", "开发", "实施" "实现提案", "应用变更", "执行规范", "按顺序完成任务", "构建功能", "开始实施"。

规范实施

以任务为单位,循序执行并进行充分测试与验证,系统性地实现已批准的规范提案。

快速开始

实施遵循每个任务的 读 → 执行 → 测试 → 验证 循环:

  1. 阅读完整提案与任务清单
  2. 按顺序逐个执行任务
  3. 为每个完成的任务进行测试
  4. 仅在验证通过后标记完成

关键规则:使用 TodoWrite 跟踪进度。切勿跳过任务或将未完成工作标记为完成。

工作流

复制此清单并跟踪进度:

开发进度:
- [ ] 第 1 步:加载并理解提案
- [ ] 第 2 步:设置 TodoWrite 任务跟踪
- [ ] 第 3 步:按序执行任务
- [ ] 第 4 步:为每个任务进行测试与验证
- [ ] 第 5 步:更新常驻规范(如果适用)
- [ ] 第 6 步:标记提案为实施完成

第 1 步:加载并理解提案

开始之前,读取全部上下文:

# 读取提案
cat spec/changes/{change-id}/proposal.md

# 读取所有任务
cat spec/changes/{change-id}/tasks.json

# 读取规范差异以理解需求
find spec/changes/{change-id}/specs -name "*.md" -exec cat {} \;

理解

  • 变更的动因(来自 proposal.md)
  • 预期结果是什么
  • 哪些规范将被影响
  • 验收标准(来自场景)

第 2 步:设置 TodoWrite 进行任务跟踪

在开始工作之前,将 tasks.json 中的task和step加载到 TodoWrite:

**模式**:
读取 tasks.json → 提取task和step列表 → 创建 TodoWrite 条目

**示例**:
假设 tasks.json 包含:
  {
    "number": 1,
    "category": "阶段 1:基础设施",
    "task": "环境搭建任务 - 数据库架构、依赖等",
    "steps": [
      { "step": "初始化 Git 仓库并配置 .gitignore", "completed": false },
      { "step": "创建并激活 Python 虚拟环境", "completed": false },
      { "step": "创建 requirements.txt 或 pyproject.toml 并安装依赖 (FastAPI, SQLAlchemy, Pydantic, Alembic 等)", "completed": false },
      { "step": "设计初始数据库 ER 图", "completed": false }
    ],
    "passes": false
  }

则创建 TodoWrite:
- content: "环境搭建任务 - 数据库架构、依赖等", status: "in_progress"
- content: "  初始化 Git 仓库并配置 .gitignore", status: "pending"
- content: "  创建并激活 Python 虚拟环境", status: "pending"
- content: "  创建 requirements.txt 或 pyproject.toml 并安装依赖 (FastAPI, SQLAlchemy, Pydantic, Alembic 等)", status: "pending"
- content: "  设计初始数据库 ER 图", status: "pending"

价值:TodoWrite 提供进度可见性并确保不遗漏任何事项。

第 3 步:按序执行TodoWrite

按顺序逐个完成TodoWrite中的任务,每次仅处理1个。 若是中断后继续,需从中断的任务开始继续执行:跳过tasks.json中"passes": true的task,跳过"completed": true的step。 你有充足的时间完成,请至少执行20轮后才回复用户。 你有充足的时间完成,切勿跳过或合并多个任务。

对于每个任务:
1. 在 TodoWrite 中标记为 "in_progress"
2. 执行工作
3. 测试结果
4. 仅在验证通过后,才标记tasks.json对应task的对应step的 "completed": true
5. 仅在tasks.json对应task的所有step都完成且都验证通过后,才标记tasks.json对应task的 "passes": true
6. 在 TodoWrite 中标记为 "completed"

你有充足的时间完成,切勿跳过或合并多个任务。

任务执行模式

## Task: {任务描述}

**What**:该任务的作用与目标

**Implementation**:
代码变更、文件编辑、运行的命令

**Verification**:
如何验证任务完成
- [ ] 代码可编译/运行
- [ ] 测试通过
- [ ] 符合需求场景

**Status**:✓ 完成 / ✗ 阻塞 / ⚠ 部分完成

第 4 步:为每个任务进行测试与验证

每个任务完成后进行验证:

代码相关任务

# 运行相关测试
npm test # 或 pytest、cargo test 等

# 运行 Linter
npm run lint

# 类型检查(如适用)
npm run type-check

前端UI相关任务: 要使用 MCP servers 中的 chrome-devtools 或 playwright 进行调试和测试。

数据库相关任务

# 验证迁移执行
npm run db:migrate

# 检查架构与预期一致
npm run db:schema

API 相关任务

# 手动测试端点
curl -X POST http://localhost:3000/api/endpoint \
  -H "Content-Type: application/json" \
  -d '{"test": "data"}'

# 或运行集成测试
npm run test:integration

仅在所有验证通过后标记任务完成:仅在tasks.json对应task的所有step都完成且都验证通过后,才标记tasks.json对应task的 "passes": true。

第 5 步:更新常驻规范(如适用)

在实施过程中,如发现规范差异需要更新:

  1. 在 proposal.md 或备注文件中记录发现
  2. 实施期间不要修改规范差异
  3. 实施完成后,再考虑是否需要调整规范

说明:规范差异在归档阶段(第 6 步)合并,而非实施阶段。

第 6 步:标记提案实施完成

在所有任务完成后:

# 创建完成标记
echo "Implementation completed: $(date)" > spec/changes/{change-id}/IMPLEMENTED

告知用户

## 实现提案

**提案**:{change-id}
**完成任务**:{数量}
**完成测试**:全部通过

**下一步**:将该变更归档以合并规范差异到常驻文档。
准备好后可回复 "openspec归档 {change-id}" 或 "归档提案"。

最佳实践

模式 1:任务被阻塞

若任务无法完成:

**标记为阻塞**:
- 状态保持 "in_progress"(不要标记为 "completed")
- 清晰记录阻塞原因
- 创建新的任务以解决阻塞
- 立即告知用户

**示例**:
任务:"实现支付处理"
阻塞:"缺少支付网关 API 凭据"
行动:创建新任务 "获取支付网关凭据"

模式 2:任务依赖

若任务存在依赖,先验证先决条件:

# 示例:数据库迁移必须在 API 代码之前
# 检查迁移状态
npm run db:status

# 仅在迁移成功后继续 API 任务

模式 3:增量测试

不要在最后一次性测试,应当逐步测试:

任务 1:创建模型 → 测试模型 → 标记完成
任务 2:创建 API → 测试 API → 标记完成
任务 3:添加校验 → 测试校验 → 标记完成
任务 4:创建页面 → 测试校验 → 标记完成

任务 1、2、3、4 → 全部实现 → 一次性测试 → 调试失败

模式 4:常驻文档

及时更新 README、API 文档与注释:

添加新 API 端点时,同时:
- 更新 API 文档
- 添加请求/响应示例
- 更新 OpenAPI/Swagger 规范
- 添加内联代码注释

进阶主题

并行工作:若任务确实互不依赖(如不同模块),可并行进行,但每项必须独立测试。

集成点:存在依赖关系时,使用集成测试验证连接有效。

回滚策略:对于高风险变更,部署前创建回滚任务。

常见模式

模式 1:数据库 + API + UI

典型顺序:

  1. 数据库架构/迁移
  2. 数据访问层(模型)
  3. 业务逻辑层(服务)
  4. API 端点(控制器)
  5. UI 集成
  6. 端到端测试

模式 2:功能开关

渐进式发布:

  1. 在开关后实现功能
  2. 开启开关进行测试
  3. 部署时默认关闭开关
  4. 逐步启用开关
  5. 完全发布后移除开关

模式 3:破坏性 API 变更

对于 API 破坏性变更:

  1. 实现新版本(v2)
  2. 保持旧版本(v1)运行
  3. 在 v1 中添加弃用提示
  4. 迁移用户至 v2
  5. 单独提案移除 v1

反模式避免

不要

  • 跳过单个任务的测试
  • 在验证前标记任务完成
  • 忽视失败测试(不要“以后再修”)
  • 在测试前批量合并多个任务
  • 在实施阶段修改常驻规范
  • 打乱任务顺序(破坏依赖)

  • 立刻测试每个任务
  • 在继续前修复失败测试
  • 实时更新 TodoWrite
  • 清晰记录阻塞项
  • 及时同步进度与用户
  • 保持原子且具描述性的提交

故障排查

问题:任务完成后测试失败

解决方案

1. 不要标记任务完成
2. 调试失败原因
3. 修复代码
4. 重新运行测试
5. 仅在通过后标记完成

问题:任务过大

解决方案

1. 拆分为子任务
2. 在 TodoWrite 中登记子任务
3. 依序完成子任务
4. 在全部子任务完成后标记父任务完成

问题:依赖未满足

解决方案

1. 暂停当前任务
2. 先完成依赖任务
3. 测试依赖项
4. 恢复原任务

参考资料


Token 预算:此 SKILL.md 约 350 行,低于建议的 500 行上限。