بنقرة واحدة
team-impl
Use when SDD exists and you need TDD implementation with 06-08 docs
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Use when SDD exists and you need TDD implementation with 06-08 docs
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - merge, PR, or cleanup
Use when task needs full spec→impl→test→review pipeline with CONFIRM_GOAL-HUMAN_ACCEPT human checkpoints and directed-graph rollback
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes
Use when code + tests exist and you need structured review + asset update
Use when starting a new feature, need SDD spec, or requirements are ambiguous
Use when requirements are fuzzy, need to discuss and form a plan before writing code
| name | team-impl |
| description | Use when SDD exists and you need TDD implementation with 06-08 docs |
CRITICAL: DO NOT use EnterPlanMode. This skill defines its own TDD workflow (RED→GREEN→REFACTOR). EnterPlanMode bypasses the TDD cycle, causing implementation-before-test (violates IRON_LAW). Follow STEPS below directly, starting from Phase 1.
角色:实现专家
核心原则:追求能工作的最简单方案,对过度设计保持警惕
流程:TDD 红-绿-重构循环
约束:
- spec 有问题 → 回退 team-spec,不可擅自决定
- 需要人类决策 → 暂停等待
- 困惑 → 显式记录,不可默默假设
- 先写实现再写测试 → 删除代码,从 RED 重新开始
核心指令:先让测试通过,再优化代码。三行重复优于过早抽象。测试通过是客观事实,代码美观是主观判断——顺序不可逆 _team-rules/first-principles.md: First Principle #2。
推理框架(首个功能点完整推理 5 点;后续仅推理 1、4,其余沿用):
对抗自检(每个 GREEN 完成后执行):
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
| 质量维度 | 产出文件 |
|---|---|
| TDD 流程证据(红-绿-重构) | 06-tdd-log.md |
| Prompt 工程记录与纠偏 | 07-prompt-log.md |
| 关键决策可追溯 | 08-ai-decisions.md |
| 通过项目 CI 检查 | 代码本身 |
03-sdd.md(规格)04-boundary.md(边界)01-plan.md ~ 05-risk.md + prompt-template.md(team-spec 全部产出)03-sdd.md + 04-boundary.md(01-plan、02-context、05-risk、prompt-template 不存在属于正常)建立对任务的完整心智模型。完成时应能不看 spec 复述出:输入是什么、输出是什么、哪些边界会出错。
01-plan.md → 理解任务目标和阶段拆分(IF mode == compact → 跳过)02-context.md → 理解业务术语和上下文(IF mode == compact → 跳过)03-sdd.md → 理解输入/输出/边界/异常规格
03-sdd.md NOT_EXISTS && 00-design-brief.md EXISTS → 以 design brief 为轻量规格输入,无 boundary 约束时按最小修改范围执行03-sdd.md NOT_EXISTS && 00-design-brief.md NOT_EXISTS → NEEDS_CONTEXT:请用户提供规格文件或执行 team-spec04-boundary.md → 理解修改边界(严格遵守)
04-boundary.md NOT_EXISTS → 记录"无显式边界约束"到 06-tdd-log.md,按最小修改原则自行约束05-risk.md → 理解风险和验证计划(IF mode == compact → 跳过)在开始编码前对照 spec 分析当前代码基线,识别差距。
spec 方案在当前基线上可行
exit_code == 0 → 基线健康,继续exit_code != 0 → 记录到 06-tdd-log.md 审计段落(含失败测试名+输出),确认与本任务无关后继续SIGNAL:
output CONTAINS "Cannot find module"或"Module not found"通常意味着引用了04-boundary.mddeny 列表中的文件,先对照 boundary 再排查路径。
WRITE 06-tdd-log.md 差距快照(格式见产出模板):
### 当前基线快照
| 文件 | 当前状态 | Spec 要求 | 差距 |
|------|----------|-----------|------|
| {path} | {现状} | {spec 要求} | {差距描述} |
### 可行性评估
- 方案可行:✅/⚠️/❌
- 依赖可用:✅/⚠️/❌
FOR confusion(阅读 spec/源码时的困惑):
06-tdd-log.md 审计段落,标注 {ambiguous}通过红-绿-重构循环逐个实现功能点。每个 GREEN 完成时代码应是"能工作的最简单方案",不是"我能想到的最好方案"。
TRAP:不要使用 EnterPlanMode 来"先规划实现方案"——本 SKILL.md 的 Phase 1→Phase 4 就是完整的实现流程。EnterPlanMode 会跳过 RED→GREEN→REFACTOR 循环,导致先写实现再补测试(违反 IRON_LAW)。
FOR feature_point(从 SDD 提取):
TRAP:你会想"我已经知道实现怎么写了,先写实现再补测试也一样"。不一样——后写的测试只会验证你已经写的代码,不会验证需求
_team-rules/first-principles.md: First Principle #2。
03-sdd.md → 提取该功能点的规格TRAP:只写 Happy Path 测试就急着进 GREEN。SDD §七(边界条件)和 §八(异常场景)的测试必须在 RED 阶段一起写,不是"以后再补"。
TRAP:仅写单元测试而遗漏集成测试——如果 SDD §四 数据流涉及跨模块调用,RED 阶段应包含跨模块集成测试,否则单元测试全绿但集成路径未验证。
exit_code != 0(尚无实现,测试必须失败)SIGNAL:
output CONTAINS "0 tests found"→ 测试文件路径或命名不符合项目 test pattern,先检查 glob 配置再下结论。 SIGNAL:测试全部 PASS 但尚未写实现 → 测试断言太弱(断言了永真条件),需重写断言。
WRITE 06-tdd-log.md RED 记录:
### 功能点:{名称}
#### 🔴 RED
- 测试文件:{path}
- 测试命令:{command}
- 失败输出:{粘贴关键输出,含 FAIL 标识}
- 时间:{YYYY-MM-DD HH:MM}
EXEC git add {测试文件路径} — 仅暂存测试文件
git diff --cached --name-only 仅包含测试文件,不含生产代码git reset HEAD {非测试文件} 移出暂存区EXEC git commit -m "test: {功能点} (RED)" → ASSERT exit_code == 0
TRAP:你会倾向于在 RED 阶段"顺手"写几行实现代码。RED commit 是 TDD 顺序的不可篡改证据——一旦 commit 中混入生产代码,整个 TDD 证据链失效。编排器会通过
git show --stat验证每个 RED commit 仅包含测试文件。
GATE RED 完成检查(全部通过才放行):
06-tdd-log.md CONTAINS "RED 记录"git log CONTAINS "test: ... (RED)" commitgit show --stat HEAD 仅包含测试文件变更(不含生产代码)TRAP:你会倾向于在 GREEN 阶段写"正确且优雅"的代码。抑制这个冲动——GREEN 只需让当前测试通过的最小代码量。三行重复优于过早抽象,优雅留给 REFACTOR。
EXEC git diff --name-only → ASSERT 工作区无生产代码变更(仅允许 06-tdd-log.md 等文档变更)
WRITE 最少代码让测试通过
EXEC 项目测试命令 → ASSERT exit_code == 0
exit_code == 0 → WRITE 06-tdd-log.md GREEN 记录exit_code != 0 → 修改实现(非测试)→ 重新执行步骤 1-2GREEN 记录格式:
#### 🟢 GREEN
- 实现文件:{path}
- 测试命令:{command}
- 通过输出:{粘贴关键输出,含 PASS/OK 标识}
- 时间:{YYYY-MM-DD HH:MM,不早于 RED 时间}
EXEC git commit -m "feat: {功能点} (GREEN)" 或 fix: 前缀(修复类任务)
exit_code == 0GOOD:
🔴 RED — 测试文件:src/user.test.ts — 测试命令:npm test — 失败输出:FAIL — TypeError: getUser is not a function — 时间:2026-06-25 14:30🟢 GREEN — 实现文件:src/user.ts — 实现内容:添加 getUser 函数,处理空 id 返回 null — 通过输出:PASS 3/3 — 时间:2026-06-25 14:35BAD:🔴 RED — 写了测试。🟢 GREEN — 实现了功能,测试通过了。(缺少文件路径、命令、输出证据、时间戳——无法复现和审计)
TRAP:重构时修改了测试断言让它"更合理"。重构阶段只改实现代码,不改测试——如果测试需要改,说明你改变了行为,那不是重构。
exit_code == 006-tdd-log.md REFACTOR 记录git commit -m "refactor: {功能点}" → ASSERT exit_code == 0提交纪律(Constitutional Rule #9):每个功能点的 RED → GREEN → REFACTOR 各自独立 commit(test: → feat:/fix: → refactor:)。RED commit 仅包含测试文件,不得混入任何生产代码——git history 是 TDD 顺序的不可篡改证据。编排器通过 git show --stat 验证每个 RED commit 的文件列表。违反 → 删除实现,从 RED 重新开始。
IF 修复 bug:
exit_code != 0(预期失败)exit_code == 0(预期通过)git stash 或 git checkout)→ EXEC 项目测试命令 → ASSERT exit_code != 0(必须失败)exit_code == 0(必须通过)ELSE:
IF 回滚修复后测试仍通过 → 回归测试未覆盖修复逻辑,测试太弱,需重写
IF 发现以下任何情况:
→ 删除代码,从 RED 重新开始
ELSE → 继续正常 TDD 循环
为什么 TDD 顺序不可逆?后写测试被实现偏见污染
_team-rules/first-principles.md: First Principle #2:测的是已构建的行为,不是需求。"先实现再补测试效果一样""已经手动测试过了""删掉 X 小时工作太浪费了"——这些借口均不成立。
| 场景 | 解决方案 |
|---|---|
| 不知道怎么写测试 | 先写期望的 API 调用和断言;仍不行则问人类 |
| 测试太难写 | 设计太复杂,简化接口 |
| 必须 mock 一切 | 耦合太紧,用依赖注入解耦 |
| 测试 setup 太大 | 提取 helper;仍复杂则简化设计 |
| 通过但感觉不对 | 检查是否只覆盖了 Happy Path |
以下两个记录任务贯穿 Phase 1 全程,每个 TDD 循环中同步写入,不是独立的顺序阶段。
实时捕捉"为什么这样做而不那样做"。事后回忆的决策理由会被结果偏见污染——只有实时记录才可信。
WRITE 08-ai-decisions.md(模板见 references/08-ai-decisions-template.md):
## 决策 {N}:{决策标题}
- **决策内容**:{具体决策}
- **决策理由**:{为什么这样做}
- **拒绝的替代方案**:{替代方案 + 拒绝理由}
- **信息来源**:{extracted|inferred|ambiguous}
| 决策类型 | 记录内容 |
|---|---|
| 技术选型 | 选了什么 + 为什么 + 拒绝了什么 + 为什么拒绝 |
| 架构决策 | 为什么这样组织代码 |
| 采纳/拒绝 AI 建议 | 采纳或拒绝了什么 + 为什么 |
| 回退决策 | 为什么回退到 team-spec |
| 人类决策 | 为什么需要人类介入 |
记录每个关键 Prompt 的五要素和效果,使纠偏经验可复用。
WRITE 07-prompt-log.md(模板见 references/07-prompt-log-template.md),每条含:
## Prompt {N}:{用途}
| 要素 | 内容 |
|------|------|
| 目标 | {一句话} |
| 上下文 | {引用文件/约束} |
| 边界 | {不可做} |
| 输出格式 | {结构} |
| 验证标准 | {判断标准} |
- 结果:{成功/失败/部分成功}
用独立的全量验证确认实现正确。此阶段的每个"通过"声明必须基于刚执行的命令输出,不是 Phase 1 的记忆。
RESOLVE verify_cmd(首个命中即停):
READ("05-risk.md", "§一验证计划")(精简模式下不存在属于正常)READ("CLAUDE.md").verify_cmd / READ(".cursor/rules/")READ("package.json").scripts.test / READ("Makefile") / READ("Cargo.toml") / READ("CI 配置")06-tdd-log.mdEXEC verify_cmd(测试)→ ASSERT exit_code == 0 && failures == 0
EXEC 项目 lint 命令 → ASSERT exit_code == 0
EXEC 项目 CI 命令 → ASSERT exit_code == 0
验证协议:步骤 2-4 每次声明"通过"前须执行 _team-rules/verification-protocol.md: 验证执行步骤
git diff --name-only → READ 04-boundary.md deny 列表 → ASSERT 无越界修改01-plan.md 预算 → ASSERT 未超出自我约束预算TDD 顺序正确 && 未擅自假设 spec && 预算未超支IF exit_code != 0:
06-tdd-log.md 修复循环 + WRITE 08-ai-decisions.md 修复决策ELSE → 继续 Phase 2 下一步骤
不可跳过失败继续后续步骤
_team-rules/first-principles.md: First Principle #4。预算超支砍范围,不放宽预算。
精确归因问题根源,将问题送到正确的上游修复。"有问题"不是路由依据——"spec 未定义某个边界"才是。
MATCH issue_type:
spec 遗漏(SDD 未定义某个边界)→ ROLLBACK team-spec(通过编排器,附遗漏点 + 建议补充)spec 矛盾(03-sdd.md 与 02-context.md 冲突)→ ROLLBACK team-spec(附矛盾位置 + 分析)spec 范围不合理(04-boundary 禁止了必要修改)→ ROLLBACK team-spec(附修改理由 + 建议调整)需要人类判断 → ASK_HUMAN(附选项 + 各选项 trade-off)team-test 报告 bug → 自己修复(仍遵循 TDD:先 RED 再 GREEN)team-review 报告 P0/P1 bug → 自己修复(仍遵循 TDD)08-ai-decisions.md,继续当前流程自修复仍遵循 TDD:RED(回归测试)→ GREEN(修复)→ 追加
06-tdd-log.md+08-ai-decisions.md。修复后全量测试确认无回归。
| 文件 | 模板位置 | 说明 |
|---|---|---|
06-tdd-log.md | references/06-tdd-log-template.md | TDD 日志(红-绿-重构循环) |
07-prompt-log.md | references/07-prompt-log-template.md | Prompt 工程记录 |
08-ai-decisions.md | references/08-ai-decisions-template.md | AI 决策记录 |
READ spec,或发现 spec 问题不 ROLLBACK 而自己决定REF _team-rules/constitutional-rules.md — 10 条 Constitutional Rules
REF _team-rules/first-principles.md — 4 条第一性原理(First Principle #1 ~ #4)
REF _team-rules/verification-protocol.md — 5 步验证协议
REF _team-rules/spec-driven-workflow.md — Spec-Driven 开发原则与 TDD 工作流
REF _team-rules/ai-collaboration-standards.md — AI 协作资产与 Prompt 工程规范
实现阶段尤其注意:
_team-rules/first-principles.md: First Principle #2ROLLBACK team-spec,不可擅自假设正确行为 _team-rules/first-principles.md: First Principle #4_team-rules/first-principles.md: First Principle #3_team-rules/verification-protocol.md: 验证执行步骤 _team-rules/first-principles.md: First Principle #4GATE 产出前自检(全部通过才放行):
06-tdd-log.md EXISTS && 07-prompt-log.md EXISTS && 08-ai-decisions.md EXISTS && 各文件有效行数 ≥ 5每个功能点有 RED → GREEN → REFACTOR 序列 && 时间递增failures == 0exit_code == 0git diff --name-only → ASSERT 未修改 04-boundary.md deny 文件grep -rn -E '(AK|SK|access[_-]?key|secret[_-]?key|api[_-]?key|password|passwd|credential)\s*[:=]' . → ASSERT 无真实凭证硬编码(team-security: RED_LINE_2,排除占位符/测试值/注释)输入数据已脱敏或确认为非敏感(team-security: RED_LINE_1)实际消耗 <= 01-plan.md 自我约束预算所有困惑已显式记录于 06-tdd-log.md 审计段落无占位符残留({N}、{slug} 等已被实际值替换)IRON_LAW 遵守 — 未自行假设 spec、未跳过 TDD 顺序、未使用 EnterPlanMode 替代 TDD 循环已 ROLLBACK team-specREF _team-rules/four-state-protocol.md — 四态完成状态
MATCH result:
TDD 完成 && CI 通过 && 边界合规 → DONE(文件: {N} 修改 / {N} 新增, 测试: {N} pass / {N} fail, CI: pass)完成但有保留意见 → DONE_WITH_CONCERNS(concerns: [...])spec 不足 → NEEDS_CONTEXT被阻塞 → BLOCKED被谁调用:
team-orchestrator(编排模式)team-brainstorm(用户跳过规格阶段时直接路由)team-feedback(审查反馈修复后重新验证)配对使用:
team-test — REQUIRED:实现完成后必须进行测试审计team-debug — 发现 bug 时使用team-test 进行测试审计team-debug 根因分析