mcpField
S
strict-tdd

strict-tdd

github.com/proffesor-for-testing测试与质量51961 次安装今天更新
代码仓库

关于 strict-tdd

strict-tdd 是一个会话级技能,通过要求先有失败测试来执行 Red-Green-Refactor,适用于 TypeScript 或 JavaScript 项目中的编码 Agent。

主要功能

  1. 01会话级 TDD 执行规则
  2. 02要求存在覆盖目标模块的测试文件
  3. 03生产代码写入前要求断言失败
  4. 04测试文件和配置文件可照常写入

适用场景

  1. 01在 src/ 中执行测试优先的修改
  2. 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/(生产代码):

  1. 存在一个覆盖目标模块的测试文件
  2. 该测试至少包含一个失败的断言(已确认 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