关于 strict-tdd
strict-tdd 是一个会话级技能,通过要求先有失败测试来执行 Red-Green-Refactor,适用于 TypeScript 或 JavaScript 项目中的编码 Agent。
主要功能
- 01会话级 TDD 执行规则
- 02要求存在覆盖目标模块的测试文件
- 03生产代码写入前要求断言失败
- 04测试文件和配置文件可照常写入
适用场景
- 01在 src/ 中执行测试优先的修改
- 02避免同时编写测试和实现
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ proffesor-for-testing/ agentic-qe --skill strict-tdd安装后在 Claude Code 中输入/strict-tdd确认已加载。
附带文件scripts/enforce-red-phase.sh
详细介绍
严格 TDD 模式
激活后,此技能会注册一个仅对当前会话生效的钩子,用于强制执行 Red-Green-Refactor 流程。
功能说明
除非满足以下条件,否则会阻止写入 src/(生产代码):
- 存在一个覆盖目标模块的测试文件
- 该测试至少包含一个失败的断言(已确认 Red 阶段)
这可以防止 Agent 同时编写测试和实现代码这一常见问题。
激活
/strict-tdd
仅在当前会话中保持启用。
钩子配置
{
"hooks": {
"PreToolUse": [
{
"matcher": "Write|Edit",
"hook": ".claude/skills/strict-tdd/scripts/enforce-red-phase.sh",
"condition": "file matches src/**/*.{ts,js} AND NOT src/**/*.test.{ts,js}"
}
]
}
}
强制执行逻辑
#!/bin/bash
# enforce-red-phase.sh
# Called before any Write/Edit to src/ files
TARGET_FILE="$1"
TEST_FILE="${TARGET_FILE%.ts}.test.ts"
if [ ! -f "$TEST_FILE" ]; then
echo "BLOCKED: No test file found at $TEST_FILE"
echo "Write a failing test first (Red phase), then implement."
exit 1
fi
# Check if tests are currently failing (Red phase)
npx jest "$TEST_FILE" --passWithNoTests 2>/dev/null
if [ $? -eq 0 ]; then
echo "WARNING: Tests are passing. Are you in Green/Refactor phase?"
echo "If adding new behavior, write a failing test first."
fi
注意事项
- 仅阻止写入
src/文件;测试文件和配置文件始终可写 - 在 Refactor 阶段,测试仍应通过——这是预期行为,不要将其视为违规
- 如果未安装测试运行器,钩子会报错——请确保可以使用 jest/vitest
- Agent 可能会尝试写入其他路径以绕过限制——钩子应匹配所有生产代码路径
评论
支持 Markdown