一键导入
feature-implementation
功能编码实现执行器(TDD 驱动)。自动读取任务规划,按 Red-Green-Refactor 循环执行指定阶段的开发任务,完成后更新任务状态并进行质量检查。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
功能编码实现执行器(TDD 驱动)。自动读取任务规划,按 Red-Green-Refactor 循环执行指定阶段的开发任务,完成后更新任务状态并进行质量检查。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | feature-implementation |
| description | 功能编码实现执行器(TDD 驱动)。自动读取任务规划,按 Red-Green-Refactor 循环执行指定阶段的开发任务,完成后更新任务状态并进行质量检查。 |
这是一个执行型 Skill。当用户说"完成 XX 功能的任务 第几阶段"时,使用此 Skill。
请严格遵守项目上下文强制协议:specs/PROJECT-CONTEXT.md 在执行本 Skill 之前,必须先建立项目认知。
根据用户指定的功能和阶段,按照 TDD(测试驱动开发) 流程自动执行对应的开发任务,并在完成后更新任务状态。
本 Skill 强制使用 Red-Green-Refactor 循环来完成每一个开发任务:
RED(红灯)→ GREEN(绿灯)→ REFACTOR(重构)
↑ │
└────────────────────────────────────┘
下一个任务 / 下一组测试
铁律:没有失败的测试,就不写实现代码。
请严格遵守通用边界守卫规则:specs/GUARDRAILS.md 当前阶段: 编码实现阶段 (Implementation)
用户会以以下格式提供指令:
常规任务(来自 feature-task-planning):
增量变更任务(来自 feature-evolution):
示例:
从用户输入中提取:
常规任务:
specs/features/[功能名]_任务规划.mdfeature-task-planning Skill增量变更任务:
specs/features/[功能名]_变更任务_[CR序号].mdfeature-evolution Skillspecs/features/[功能名]_任务规划.md,了解已有任务的完成状态必须按顺序读取以下文档,建立完整的功能上下文:
specs/features/[功能名].mdspecs/features/[功能名]_技术方案.mdspecs/features/[功能名]_任务规划.md如果任何文档缺失,必须停止并提示用户先完成前置步骤。
在开始编码前,必须检查:
如果前置条件不满足,必须停止并告知用户。
按照任务顺序,逐个完成。每个任务严格遵循 Red-Green-Refactor 循环:
在编写任何实现代码之前,先编写测试。
分析测试需求
编写测试文件
tests/unit/[模块名].test.jstests/integration/[功能名].test.jstests/components/[组件名].test.js运行测试,确认失败(RED)
如果测试在没有实现代码的情况下就通过了,说明:
目标:用最少的代码让测试通过,不多不少。
编写实现代码
运行测试,确认通过(GREEN)
在测试保护下,改善代码质量。
代码审视
执行重构(如果需要)
运行测试,确认仍然通过
TDD 循环完成后,必须通过验收测试验证任务成果在真实环境中的正确性。
测试依据:
specs/features/[功能名].md 中的验收标准章节)specs/features/[功能名].md)适用场景:当前任务有 UI 变化或页面可感知的行为变更。
使用 Playwright MCP 对 http://localhost:3300 进行端到端验证。
按照 AC 描述的用户操作路径执行交互,验证页面状态、显示内容、交互反馈是否符合预期,并在关键验证点截图留档。
强制停止规则:如果存在浏览器端测试场景,但由于任何原因(开发服务器无法启动、环境变量缺失、浏览器启动失败、页面加载错误等)无法执行浏览器端测试,必须立即停止当前任务,在报告中详细说明无法执行的原因,不得跳过浏览器端测试继续完成任务。
适用场景:纯后端逻辑、工具函数、数据处理等无法通过浏览器验证的任务。
此类任务在 TDD 阶段已编写单元测试,确认 TDD 测试全部通过即视为验收通过。
适用场景:涉及数据库变更的任务(如创建、修改、删除数据)。
使用 Supabase MCP(execute_sql)查询数据库,验证数据是否符合预期:
注意:数据验证可与浏览器端测试或单元测试组合使用,不互斥。
若验收测试未通过,进入修复循环:
验收测试失败 → 分析失败原因 → 修复代码 → 重跑 TDD 测试(防回归)→ 重跑验收测试 → 仍失败则继续循环
规则:
修复过程中,如果实现逻辑与现有功能文档产生偏差,必须同步更新相关文档:
specs/features/ 下的需求文档和任务规划文档如果未经历修复且代码与文档一致,跳过此步骤。
重要:如果跳过了 RED 阶段(没有先写测试),任务不算完成。
当该阶段的所有任务完成后:
运行完整测试套件
集成测试
验收标准检查
代码质量检查
生成阶段完成报告
[x]assets/stage-completion-report-template.md 作为模板docs/开发记录/[功能名]_阶段[N]_完成报告.md在编写新代码前,必须:
每个任务必须严格遵循 Red-Green-Refactor 循环,不可跳步:
user.js -> user.test.js违反检查清单(出现以下情况必须停止并修正):
如果代码修改影响了文档,必须:
错误:缺少必要的文档
检查结果:
- 需求文档 (specs/features/[功能名].md): [存在 / 缺失]
- 技术方案 (specs/features/[功能名]_技术方案.md): [存在 / 缺失]
- 任务规划 (specs/features/[功能名]_任务规划.md): [存在 / 缺失]
请先执行以下步骤:
1. 使用 feature-requirements-clarification 生成需求文档
2. 使用 feature-tech-design 生成技术方案
3. 使用 feature-task-planning 生成任务规划
然后再使用本 Skill 进行编码实现。
警告:依赖任务未完成
当前任务 Task-05 依赖于:
- Task-02 (未完成)
- Task-04 (未完成)
建议:
1. 先完成依赖任务
2. 或者调整任务顺序(需要用户确认)
警告:技术方案细节不足
任务 Task-03 要求实现 XXX,但技术方案中缺少以下信息:
- API 接口定义
- 数据结构设计
建议:
1. 补充技术方案文档
2. 或者根据现有信息做合理推断(需要用户确认)
警告:测试无法正常运行
错误信息:[具体错误]
可能原因:
1. 测试框架未安装或未配置
2. 依赖库缺失
建议修复方案:
1. 检查并安装测试依赖
2. 检查测试配置文件
测试环境就绪后才能开始 TDD 循环。
错误:代码执行失败
错误信息:[具体错误]
可能原因:
1. [原因分析]
2. [原因分析]
建议修复方案:
1. [方案1]
2. [方案2]
是否继续尝试修复?
用户: 完成用户登录功能的任务 第1阶段
AI:
正在读取相关文档...
需求文档:specs/features/用户登录.md
- 核心需求:支持手机号+密码登录
- 验收标准:AC-001 到 AC-005
技术方案:specs/features/用户登录_技术方案.md
- API: POST /api/auth/login
- 数据库:users 表设计
- 核心逻辑:密码加密、JWT 生成
任务规划:specs/features/用户登录_任务规划.md
- 第1阶段包含 2 个任务
第1阶段:数据层 (Data Layer)
包含以下任务:
- Task-01: 创建 users 表
- Task-02: 实现用户数据访问层
前置检查:
[x] 文档完整性检查通过
[x] 项目环境就绪
[x] 测试环境就绪(Jest 已配置)
[x] 无依赖任务
[x] 已理解需求和技术方案
即将开始执行 Task-02: 实现用户数据访问层
验证标准:
- 能根据手机号查询用户
- 能创建新用户记录
- 密码字段使用 bcrypt 加密存储
是否继续?
用户: 继续
AI:
=== RED 阶段:编写测试 ===
创建测试文件:tests/unit/user-repository.test.js
测试用例:
describe('UserRepository')
it('应能根据手机号查询已有用户')
it('查询不存在的手机号应返回 null')
it('应能创建新用户并返回用户对象')
it('创建用户时密码应使用 bcrypt 加密')
it('创建重复手机号用户应抛出错误')
运行测试...
FAIL tests/unit/user-repository.test.js
UserRepository
x 应能根据手机号查询已有用户 (ReferenceError: UserRepository is not defined)
x 查询不存在的手机号应返回 null
x 应能创建新用户并返回用户对象
x 创建用户时密码应使用 bcrypt 加密
x 创建重复手机号用户应抛出错误
Tests: 5 failed, 0 passed
RED 确认:5 个测试全部失败,原因是功能未实现。进入 GREEN 阶段。
=== GREEN 阶段:编写实现代码 ===
创建文件:src/repositories/user-repository.js
[展示实现代码...]
运行测试...
PASS tests/unit/user-repository.test.js
UserRepository
v 应能根据手机号查询已有用户 (23ms)
v 查询不存在的手机号应返回 null (8ms)
v 应能创建新用户并返回用户对象 (45ms)
v 创建用户时密码应使用 bcrypt 加密 (120ms)
v 创建重复手机号用户应抛出错误 (15ms)
Tests: 5 passed, 0 failed
GREEN 确认:全部测试通过。进入 REFACTOR 阶段。
=== REFACTOR 阶段:优化代码 ===
重构内容:
- 提取数据库连接逻辑为公共方法
- 优化错误信息的可读性
运行测试确认重构安全...
PASS tests/unit/user-repository.test.js (5/5)
REFACTOR 确认:重构完成,所有测试仍然通过。
=== Task-02 完成 ===
TDD 循环记录:
- RED: 5 个测试失败(功能未实现)
- GREEN: 5 个测试通过(实现完成)
- REFACTOR: 5 个测试通过(重构安全)
测试覆盖率: 96%
是否满意?继续下一个任务还是需要调整?
AI:
=== RED 阶段:编写测试 ===
创建测试文件:tests/unit/auth-service.test.js
运行测试...
PASS tests/unit/auth-service.test.js
AuthService
v 应验证正确的密码 (5ms)
警告:测试在没有实现代码的情况下通过了!
分析原因:项目中已存在 src/services/auth-service.js,
其中包含了 validatePassword 方法。
处理方案:
1. 该功能已被之前的任务实现,跳过此测试点
2. 补充更具体的测试用例来验证未覆盖的场景
建议选择方案 2,补充以下测试:
- 测试密码为空时的处理
- 测试超长密码的处理
是否同意?
用户: 完成支付功能的任务 第3阶段
AI:
已定位任务规划文档:specs/features/支付功能_任务规划.md
警告:依赖任务未完成
第3阶段的任务依赖于:
- Task-01 (数据层) - 未完成
- Task-03 (表现层) - 未完成
建议:
1. 先完成第1阶段和第2阶段
2. 或者告诉我"强制执行"(不推荐)
请选择:
docs/开发记录/[功能名]_阶段[N]_完成报告.md)功能开发阶段使用。明确具体功能的业务需求和验收标准,产出功能需求文档 (FRD)。
功能任务规划。将技术方案拆解为细粒度、可执行的开发任务清单 (Task List)。
设计功能的技术实现方案。在功能需求明确后使用,产出包含API、数据库、核心逻辑的详细技术方案 (TDD)。
生成项目导航文档。基于项目核心文档生成 AGENT.md,作为 AI 助手的项目导航。
记录和查阅 AI 错题本。当发生错误或需要预警时使用,建立自我进化的反馈闭环,避免重复错误。
交互式 BUG 排查专家。通过持续提问和引导,逐步缩小问题范围,辅助用户定位 BUG 根源。