Freeze Tests Mode
When activated, blocks all modifications to test files. Use during refactoring to ensure behavior (as captured by tests) is preserved.
What It Does
Blocks Write and Edit operations on any file matching test patterns:
**/*.test.{ts,js,tsx,jsx}**/*.spec.{ts,js,tsx,jsx}**/__tests__/****/tests/**
Activation
/freeze-tests
Deactivate with /freeze-tests off.
Hook Configuration
{
"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/**"
}
]
}
}
Enforcement Logic
#!/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
When to Use
- Refactoring: Changing code structure without changing behavior
- Performance optimization: Making code faster without changing logic
- Dependency updates: Upgrading libraries while preserving behavior
Gotchas
- Frozen tests can't be fixed if they break during refactoring — that's the point (the refactoring broke behavior)
- If a refactoring requires test changes, it's not a pure refactoring — deactivate and treat as a feature change
- This doesn't prevent running tests — only modifying test files