freeze-tests について
freeze-tests は、リファクタリング中に対象となるテストファイルへの書き込みや編集をブロックするスキルです。テストで定義された動作の維持を支援し、テストを変更する場合は解除できます。
主な機能
- 01対象テストファイルへの書き込みをブロック
- 02対象テストファイルの編集をブロック
- 03有効化と解除に対応
- 04凍結中もテストを実行可能
活用シーン
- 01テスト定義を変えずにリファクタリング
- 02動作を保ちながら性能を最適化
- 03テストを変えずに依存関係を更新
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ proffesor-for-testing/ agentic-qe --skill freeze-testsインストール後、Claude Code で/freeze-testsを入力して読み込まれたか確認します。
同梱ファイルscripts/block-test-edits.sh
詳細
Freeze Tests Mode
有効にすると、テストファイルへの変更をすべてブロックします。テストで捉えられている動作が維持されるよう、リファクタリング中に使用してください。
機能
次のテストパターンに一致するファイルに対する Write と Edit の操作をブロックします。
**/*.test.{ts,js,tsx,jsx}**/*.spec.{ts,js,tsx,jsx}**/__tests__/****/tests/**
有効化
/freeze-tests
/freeze-tests off で無効化します。
フックの設定
{
"hooks": {
"PreToolUse": [
{
"matcher": "Write|Edit",
"hook": ".claude/skills/freeze-tests/scripts/block-test-edits.sh",
"condition": "file matches **/*.test.* OR **/*.spec.* OR **/__tests__/** OR **/tests/**"
}
]
}
}
適用ロジック
#!/bin/bash
# block-test-edits.sh
FILE="$1"
if echo "$FILE" | grep -qP '\.(test|spec)\.(ts|js|tsx|jsx)$|__tests__|/tests/'; then
echo "BLOCKED: Test files are frozen during refactoring."
echo "If tests need updating, deactivate with: /freeze-tests off"
exit 1
fi
使用する場面
- リファクタリング:動作を変えずにコード構造を変更するとき
- パフォーマンスの最適化:ロジックを変えずにコードを高速化するとき
- 依存関係の更新:動作を維持しながらライブラリをアップグレードするとき
注意点
- リファクタリング中にテストが失敗しても、凍結されたテストは修正できません。それが目的です(リファクタリングによって動作が変わったということです)。
- リファクタリングにテストの変更が必要な場合、それは純粋なリファクタリングではありません。無効化して、機能変更として扱ってください。
- テストの実行は妨げません。テストファイルの変更のみをブロックします。
コメント
Markdown 対応