跳到正文
cccskills
免费在 GitHub 公开中文介绍

tdd

通过先写失败测试、再添加最小实现来开发功能或修复缺陷。从调用方使用的公开接口验证行为,编写不依赖内部结构的测试。

原文查看原文说明

Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.

AI 评分90分/ 100查看安装方法

适用场景

  • 先写测试再添加功能
  • 从缺陷复现测试开始修复
  • 确定集成测试覆盖的接口
  • 审查依赖内部结构的测试

中文介绍

功能

tdd 按先写失败测试、再添加使测试通过的最小实现这一顺序,推进功能开发或缺陷修复。它通过公开接口,也就是调用方使用的入口,检查程序行为,目标是让测试在内部结构变化后仍可继续使用。预期结果依据规格或已知正确的示例确定,不在测试中重复实现里的计算方法。

适用场景

适合希望先写测试再开发,或需要缩小集成测试覆盖范围时使用。它不批量编写测试,而是先选定一个入口,再逐次完成一个测试和一个实现。也适合审查依赖内部方法或过度使用模拟对象的测试。

使用示例

  • “请从失败测试开始,逐步实现这个功能。”
  • “请先编写能复现这个缺陷的测试,再进行修复。”
  • “请和我一起确定集成测试应验证哪些公开接口。”

注意事项

编写测试前会与使用者确认目标入口。如果存在 GLOSSARY.md,会查阅该文件,并遵守相关 ADR,即架构决策记录。重构不属于实现的反复过程,而是在使用 code-review 的审查阶段处理。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

客观评估

AI 仅根据 SKILL.md 的内容,从 4 个方面进行了评估。星标数和热度不计入评估。

指令清晰度能否看出何时使用、做什么
A良好明确用于功能开发、缺陷修复和集成测试,并规定从失败到通过的循环。
步骤具体性步骤、输入输出和示例是否具体
A良好规定预先商定测试边界,每轮一个测试与最小实现,预期结果须有独立依据。
安全性发送数据、删除文件、执行命令等是否有说明
A良好代码变更围绕已商定的公开边界,每轮限于使测试通过的最小实现。
安装难易度所需工具和 API 密钥是否少且有说明
B部分不足以测试环境和其他技能为前提,但未提供配置步骤或运行命令。

总分按每项 A=25 分、B=15 分、C=5 分相加。 由 AI(OpenAI Codex)于 2026年10月19日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(4)

  • SKILL.md3.5 KB
  • agents/openai.yaml87 B
  • mocking.md1.4 KB
  • tests.md2.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Test-Driven Development

TDD is the red → green loop. This skill is the reference that makes that loop produce tests worth keeping: what a good test is, where tests go, the anti-patterns, and the rules of the loop. Every section applies on every cycle: consult them before and during the loop, not after.

When exploring the codebase, read GLOSSARY.md (if it exists) so test names and interface vocabulary match the project's domain language, and respect ADRs in the area you're touching.

What a good test is

Tests verify behavior through public interfaces, not implementation details. Code can change entirely; tests shouldn't. A good test reads like a specification: "user can checkout with valid cart" tells you exactly what capability exists, and it survives refactors because it doesn't care about internal structure.

See tests.md for examples and mocking.md for mocking guidelines.

Seams: where tests go

A seam is the public boundary you test at: the interface where you observe behavior without reaching inside. Tests live at seams, never against internals.

Test only at pre-agreed seams. Before writing any test, write down the seams under test and confirm them with the user. No test is written at an unconfirmed seam. You can't test everything, so agreeing the seams up front is how testing effort lands on the critical paths and complex logic instead of every edge case.

Ask: "What's the public interface, and which seams should we test?" Give each proposed seam a one-line note on what it catches and what it misses.

When the shape of that interface is itself in question (how deep the module is, where the seam belongs, what the interface should expose), call the Skill tool with "codebase-design" for the vocabulary. It is the shared source of the module, interface, depth, seam, adapter, leverage and locality terms, and it is a reference to consult, not a session to run.

Anti-patterns

  • Implementation-coupled: mocks internal collaborators, tests private methods, or verifies through a side channel (querying the database instead of using the interface). The tell: the test breaks when you refactor but behavior hasn't changed.
  • Tautological: the assertion recomputes the expected value the way the code does (expect(add(a, b)).toBe(a + b), a snapshot derived by hand the same way, a constant asserted equal to itself), so it passes by construction and can never disagree with the code. Expected values must come from an independent source of truth: a known-good literal, a worked example, the spec.
  • Horizontal slicing: writing all tests first, then all implementation. Bulk tests verify imagined behavior: you test the shape of things rather than user-facing behavior, the tests go insensitive to real changes, and you commit to test structure before understanding the implementation. Work in vertical slices instead: one test → one implementation → repeat, each test a tracer bullet that responds to what the last cycle taught you.

Rules of the loop

  • Red before green. Write the failing test first, then only enough code to pass it. Don't anticipate future tests or add speculative features.
  • One slice at a time. One seam, one test, one minimal implementation per cycle.
  • Refactoring is not part of the loop. It belongs to the review stage (see the code-review skill), not the red → green implementation cycle.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

ask-matt

免费有简介AI 评分 90分

根据任务的规模和阶段,指导你选择相关技能及其使用顺序,涵盖想法梳理、实现和故障排查,帮助确定下一步以及如何衔接后续工作。

  • 选择从想法到实现的步骤
  • 确定故障排查的起点
  • 规划分多次会话完成的开发
mattpocock/skills29.6万2026年10月13日 更新

chief-of-staff

免费有简介AI 评分 60分

在单次会话中协调承担不同任务的子智能体,推进长期目标。后台工作与用户对话同时进行,并改进共享规范、工作环境和后续任务所需的信息访问条件。

  • 协调长期目标中的任务分工
  • 后台推进工作并持续对话
  • 改进共享规范和工作环境
mattpocock/skills29.6万2026年10月13日 更新

claude-handoff

免费有简介AI 评分 90分

将进行中的对话整理为交接摘要,移除敏感信息,明确后续重点、参考资料和建议技能,再启动新的后台智能体,从当前工作目录继续处理任务。

  • 将后续工作交给新的智能体
  • 限定下一次会话的任务范围
  • 整理下一次会话所需的参考资料
mattpocock/skills29.6万2026年10月13日 更新

code-review

免费有简介AI 评分 90分

以指定提交、分支或标签为基准,从开发规范和原始需求两个角度审查代码变更。分别报告规范问题与需求缺漏,便于独立判断两方面的结果。

  • 审查分支或PR的变更
  • 检查指定提交或标签之后的变更
  • 对照已记录的开发规范
mattpocock/skills29.6万2026年10月13日 更新

codebase-design

免费有简介AI 评分 90分

帮助设计用法精简、内部集中处理复杂逻辑的模块。通过统一术语和判断标准,评估模块是否易用、实现替换位置是否合适,以及是否便于测试。

  • 简化模块的调用方式
  • 集中分散的复杂逻辑
  • 选择可替换实现的位置
mattpocock/skills29.6万2026年10月13日 更新

diagnosing-bugs

免费有简介AI 评分 80分

通过能检测具体症状的测试或脚本,调查难以复现的故障和性能下降。缩小失败条件,验证多个原因假设,完成修复后检查原始复现流程及防止复发的测试。

  • 调查难以复现的错误
  • 查找处理速度下降的原因
  • 重复验证间歇性故障
mattpocock/skills29.6万2026年10月13日 更新

查看 mattpocock 的全部技能

报告此技能的问题