← Back to skills
extension
Category: Development & EngineeringAPI key requirement unconfirmed

sdd-spec

Run red-green-refactor TDD loops from an approved spec, one endpoint per loop, plus mutation check. Use for tests-first or implement-from-spec work, or TDD/测试先行/红绿重构. No approved spec — run sdd-spec first.

personAuthor: amberzzzhubModelScope

测试先行(TDD 红 → 绿 → 重构)

测试是退出标准——红转绿才算完,不是智能体说「写好了」就算完。

前置:存在经人确认的 spec(如 spec/<feature>_spec.md)。没有就先走 sdd-spec。

红:只写测试,不写实现

  • 正常路径:每个端点至少 1 条。
  • spec「边界」小节:每条 1 条(空 / 极值 / 重复 / 不存在 / 冲突)。
  • 断言要具体:状态码、返回体字段与值;不要只断言「不报错」。
  • 立即运行测试,确认全红,且失败原因是缺少实现。若有测试在无实现时直接通过,说明测试写错或测了无关行为,先修测试。

绿:补实现,一个端点一个循环

  • 一次只实现一个端点,跑至全绿再开下一个。禁止一次性生成整个服务。
  • 中途有红:回喂失败的具体断言 + 触发输入 + 期望值(例:test_blank_title_rejected_422 红,输入 " ",期望 422),不要只说「有 bug」。
  • 不允许注释、跳过或删改失败测试来凑绿。若发现是规格本身写错,回头改规格并同步测试。

重构:测试保持绿

  • 全绿后才允许清理实现;每小步重构后立即跑测试,必须保持全绿。
  • 不为通过类型检查或 lint 加无意义抽象。

兜底验证(变异检查)

流程末尾故意改坏一处实现(如放宽长度上限、把 404 改成 200),对应测试必须立刻变红。 变不红 = 这条行为没被测住——先补测试,再还原实现。

完成判据

  • spec 的每条规则 / 边界都有对应测试且全绿;
  • 变异检查通过;
  • 测试命令已实际运行验证(如 python -m pytest -q),结果真实,而非口头声称。