mcpbeat

Freeze

oliver-kriska/freeze

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.

706 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
514
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/oliver-kriska/claude-elixir-phoenix --skill freeze

What it tells the agent to use

found in the instruction text
Write writes files
Edit edits files in place

The instruction itself

8 sections, as written by the author

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/.freeze
echo "Freeze ON — all edits blocked. Lift with /phx:freeze off"

Scope edits to specific directories

mkdir -p .claude
printf '%s\n' lib/app_web priv/repo > .claude/.freeze
echo "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 ]; then
  if [ -s .claude/.freeze ]; then echo "Freeze ON — limited to:"; cat .claude/.freeze
  else echo "Freeze ON — ALL edits blocked"; fi
else 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 linelib/foo allows

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.

How to use it

Copy the folder

Take oliver-kriska/freeze from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.