strict-tdd について
strict-tdd は、失敗するテストを先に求めることで Red-Green-Refactor を適用するセッション限定のスキルです。TypeScript や JavaScript のプロジェクトで作業するコーディングエージェント向けです。
主な機能
- 01セッション単位の TDD 適用
- 02対象モジュールをカバーするテストファイルの必須化
- 03本番コードの変更前に失敗するアサーションを要求
- 04テストと設定ファイルは書き込み可能
活用シーン
- 01src/ の変更でテスト優先を徹底
- 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 つの失敗するアサーションがある(Red フェーズが確認済み)
これにより、テストと実装を同時に記述してしまうという、エージェントによくある失敗を防ぎます。
有効化
/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 が利用可能であることを確認してください
- エージェントが別のパスに書き込んで回避しようとする可能性があります。フックは本番コードのすべてのパスに一致するようにしてください
コメント
Markdown 対応