SKILL.md
2.56 KB
name: feature-tdd description: 功能循环第 3 步。按 plan 逐任务做 TDD(失败测试 → 实现 → 通过 → commit),测试运行强制派发到子会话。 user-invocable: false
allowed-tools: Read Write Edit Agent Skill Bash(git add *) Bash(git commit *)
所有输出必须使用中文。
feature-tdd
按 plan 文件逐任务做 TDD:写失败测试 → 写最小实现 → 确认通过 → commit。所有测试运行强制派发到 Agent 子会话,主会话只接收 JSON 结果。
执行步骤
- 加载计划文件
docs/superpowers/plans/<YYYY-MM-DD>-<REQ-id>.md。 -
Schema 改动前置(仅当 plan 声明需要):第一个任务必须是写 migration 文件 + 同步更新 docs/03,并一起 commit。
- 文件命名
V<n>__<snake_case>.sql,<n>= 现有sql/migrations/V*.sql最大版本号 + 1;文件只含 DDL -
同步把新 CREATE / ALTER 反向更新到
docs/03-数据库设计文档.md对应表小节,保持 docs/03 是 schema 的 SSoT;新增表按表小节模板追加 - migration + docs/03 改动同一 commit,避免 SSoT 与 migration 分裂
- 测试运行时 Spring Boot 启动 Flyway 会自动 apply 这个新 migration;
scripts/setup-test-db.sh只负责清库
- 文件命名
- 按顺序处理每个代码类任务:
a. 在
test_file::test_name处写失败测试 b. 派发 Agent 子会话(general-purpose)运行测试确认失败,子会话只返回{command, exit_code, failing_assertion}JSON c. 在impl_file处写最小实现使测试通过 d. 再次派发子会话确认通过 e. 同一测试 >10 次修复仍失败 → 调用interrupt-check(中断 #1:测试反复失败) f. 按${CLAUDE_SKILL_DIR}/templates/commit-message-template.md格式 commit(scope= 任务模块;subject≤ 50 字符;req_id必填) - 全部任务完成 → 调用
Skill(feature-verify)。
护栏
-
绝不在主会话直接跑
mvn test/pnpm test/scripts/test.sh,必须通过子会话 -
绝不在主会话直接
mysql -e "ALTER ...";业务 schema 改动一律走sql/migrations/V*.sql文件(只读查询 / 临时调试除外) - 每次 commit 必须含
REQ-XXX-NNN标签;不混合无关改动到同一 commit
参考
${CLAUDE_SKILL_DIR}/templates/commit-message-template.md- 守门:
interrupt-check(仅在步骤 3.e 触发,条件 1) - 原则参考:
superpowers:test-driven-development(外部 TDD 原则手册,本 skill 已固化"子会话跑测试 + REQ-tagged commit"流程,不做运行时 invoke)