Skill v1.0.1
currentAutomated scan100/100+3 new
version: "1.0.1" name: phx:freeze description: Scope or freeze which files Claude can edit during debugging, a refactor, or review. Use when edits should stay in specific dirs, or for a read-only investigate lock. Backed by a sentinel + PreToolUse hook. effort: low
Freeze — scoped edit lock
Toggle a project-local edit lock so Claude can only modify the files you intend during a focused task (debugging, a tight refactor, a review pass). Enforced by the freeze-gate.sh PreToolUse hook, which denies Edit/Write/NotebookEdit outside the allow-list. No sentinel = no lock; the hook stays dormant.
The lock lives in .claude/.freeze — one allowed path prefix per line, project-relative. Empty file = freeze everything.
Usage
/phx:freeze [args] — resolve $ARGUMENTS and run the matching Bash branch.
| Invocation | Effect | |
|---|---|---|
/phx:freeze | Freeze ALL edits — read-only investigation mode | |
/phx:freeze lib/app_web priv/repo | Allow edits only under these dirs | |
/phx:freeze status | Show current lock state | |
/phx:freeze off | Lift the lock (delete the sentinel) |
Freeze all edits (investigation mode)
mkdir -p .claude && : > .claude/.freezeecho "Freeze ON — all edits blocked. Lift with /phx:freeze off"
Scope edits to specific directories
mkdir -p .claudeprintf '%s\n' lib/app_web priv/repo > .claude/.freezeecho "Freeze ON — edits limited to: lib/app_web priv/repo"
Map $ARGUMENTS to the dirs the user named. Include any directory you still need to write to — e.g. add .claude if progress/scratchpad logging must continue.
Show status
if [ -f .claude/.freeze ]; thenif [ -s .claude/.freeze ]; then echo "Freeze ON — limited to:"; cat .claude/.freezeelse echo "Freeze ON — ALL edits blocked"; fielse echo "Freeze OFF — no edit lock"; fi
Lift the lock
rm -f .claude/.freeze && echo "Freeze OFF — edits unlocked"
Iron Laws
- MANAGE the sentinel via Bash only (
:>,printf,rm) — NEVER via
Edit/Write. The freeze hook gates Edit/Write and would block you from re-scoping or clearing the lock.
- NEVER leave a freeze active across unrelated tasks — it persists until
/phx:freeze off, including into later sessions. Clear it when the task ends.
- PATHS ARE PROJECT-RELATIVE PREFIXES, one per line —
lib/fooallows
lib/foo and everything under it; it does NOT allow lib/foobar.
Notes
- The hook denies with a reason and tells Claude not to retry, so a frozen edit
surfaces clearly instead of failing silently.
- Pairs with
/phx:investigate(freeze all while root-causing) and/phx:work
(scope to the plan's dirs). The lock is advisory tooling, not a security boundary — anyone can run /phx:freeze off.