ワンクリックで
aim-test-driven-development
当需要在 AIM 仓库内实现新功能、修复缺陷、调整行为或补回归保护,并且必须在写实现前执行真实测试优先纪律时使用。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
当需要在 AIM 仓库内实现新功能、修复缺陷、调整行为或补回归保护,并且必须在写实现前执行真实测试优先纪律时使用。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Required entry skill when you are an AIM Developer working on an existing AIM Task and must read the task via AIM Server, validate it against the latest baseline, execute the worktree and PR lifecycle, report field facts, and complete the bound OpenCode session.
Strongly recommended when you need to clarify questions, converge directions and uncertainties, do design or orienting work, or answer open-ended questions before deciding how to proceed and producing a task spec, especially when key clarifications could change the route.
Coordinator decision entry for AIM Task Pool maintenance; form an approvable POST /tasks/batch operations plan from Manager output, latest baseline facts, current Tasks, and rejected Task feedback before applying atomic Task Pool writes.
当用户已经明确批准创建新的 AIM Task,且需要把稳定的用户意图整理成候选 Task Spec 并提交到 POST /tasks 时使用。
Use when judging how README claims compare to the latest origin/main baseline and the coordinator needs direction signals without task creation or execution decisions.
AIM Manager guidance for evaluating README goals against the latest baseline, defining iteration direction and Dimensions, and preparing Coordinator-consumable evaluation signals without creating tasks or executing work.
| name | aim-test-driven-development |
| description | 当需要在 AIM 仓库内实现新功能、修复缺陷、调整行为或补回归保护,并且必须在写实现前执行真实测试优先纪律时使用。 |
这个 skill 用于在 AIM 仓库内执行高压、不可稀释的测试驱动开发。
核心原则只有一句:没有先看到针对目标行为缺口的真实失败,就不得写生产实现。
写任何 RED 测试前,必须先加载并遵守 aim-writing-tests。TDD 只规定顺序;测试本身必须由 aim-writing-tests 约束为行为 / contract 导向,不能退化成实现形状断言。
这里的 TDD 不是“顺手补测试”,而是带顺序约束的执行纪律:RED -> 观测失败 -> GREEN -> REFACTOR。
违反字面规则,就是违反本 skill 的本意。不要用“我理解精神即可”给自己开例外。
没有失败中的测试,就没有生产代码。
没有看见正确原因的失败,就不算 RED。
必须同时满足以下条件,才算进入 GREEN:
aim-writing-tests:验证行为语义,不验证源码片段、私有协作、内部 import、精确 prompt prose 或过量 mock 调用细节。flowchart LR
A[RED\n先写测试] --> B{是否因正确原因失败}
B -- 否 --> A
B -- 是 --> C[GREEN\n写最小实现]
C --> D{测试是否通过}
D -- 否 --> C
D -- 是 --> E[REFACTOR\n在全绿下整理]
E --> F[下一轮 RED]
RED 的目标不是“制造任何红色输出”,而是把目标行为缺口钉死。
要求:
works、test1、handles case。aim-writing-tests,优先验证接口、行为和 contract;只有明确 policy / architecture / generated artifact guard 才能使用源码文本断言。合格 / 不合格示例:
合格:
test('retries failed operation 3 times', async () => {
let attempts = 0
const operation = async () => {
attempts++
if (attempts < 3) throw new Error('fail')
return 'success'
}
await expect(retryOperation(operation)).resolves.toBe('success')
expect(attempts).toBe(3)
})
不合格:
test('retry works', async () => {
const fn = vi.fn()
.mockRejectedValueOnce(new Error('fail'))
.mockRejectedValueOnce(new Error('fail'))
.mockResolvedValueOnce('success')
await retryOperation(fn)
expect(fn).toHaveBeenCalledTimes(3)
})
前者说明了行为和边界;后者名字含糊,且更像在测试 mock 编排是否配合自己,而不是测试真实意图。
这是强制步骤,不能脑补,不能省略。
只有满足下面全部条件,RED 才完成:
如果测试因为错误原因失败,RED 不成立。先修测试或修环境,再重新看到正确原因的失败。
简短示例:
test('empty email returns validation error', async () => {
const result = await submitForm({ email: '' })
expect(result.error).toBe('Email required')
})
合格的 RED 证据应类似:期望 'Email required',实际得到 undefined。
不合格的 RED 证据应类似:Cannot find module、测试语法错误、数据库没连上。
GREEN 只做一件事:让刚才那个失败测试转绿。
要求:
合格 / 不合格示例:
合格:
function submitForm(data: { email?: string }) {
if (!data.email?.trim()) return { error: 'Email required' }
return { ok: true }
}
不合格:
function submitForm(
data: { email?: string },
options?: {
trim?: boolean
locale?: string
validator?: (email: string) => boolean
}
) {
// 先把未来可能会用到的扩展点一起做掉
}
前者只让当前测试通过;后者把未来假设和泛化设计提前塞进了 GREEN。
如果你在 GREEN 阶段想做“更通用一点”“顺便整理架构”“先把后面几种情况都支持掉”,说明你已经偏离 TDD。
只有在当前测试和相关测试都为绿色时,才允许进入 REFACTOR。
REFACTOR 允许做的事:
REFACTOR 不允许做的事:
重构后必须重新运行当前测试和受影响的相关测试,并且它们必须保持绿色。
一旦重构把测试改红,立即停下,先恢复绿色;在恢复全绿之前,不得继续推进。
| 借口或误判 | 正确处理 |
|---|---|
| 我先写实现更快,之后补测试一样 | 不一样。没先看到失败,就没有证明测试真能抓住缺口。 |
| 我已经手工验证过了 | 手工验证不能替代可重复、可回归的自动化测试。 |
| 这次改动太小,不值得走 RED | 小改动同样会引入回归;RED 的成本通常比回滚更低。 |
| 测试已经红了,原因先不管 | 不行。失败原因必须就是目标行为缺口。 |
| 我保留早写的实现当参考,不算正式实现 | 也不行。你会围着已有实现补测试,顺序已经被破坏。 |
| GREEN 多写一点更省事 | 这会把未被测试约束的设计带进生产代码。 |
| 手工点通了页面,再补断言即可 | 不可替代。页面点通只能说明这次碰巧工作,不代表可回归验证。 |
出现以下任一想法时,立即停下,回到 RED:
这些都不是效率,而是绕过纪律。
aim-writing-tests。有任一项无法勾选,就不要声称自己做了 TDD。