targets/codex/skills/phx-freeze/SKILL.md
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.
npx skillsauth add oliver-kriska/claude-elixir-phoenix phx-freezeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
$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) |
mkdir -p .claude && : > .claude/.freeze
echo "Freeze ON — all edits blocked. Lift with $phx-freeze off"
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.
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
rm -f .claude/.freeze && echo "Freeze OFF — edits unlocked"
:>, printf, rm) — NEVER via
Edit/Write. The freeze hook gates Edit/Write and would block you from
re-scoping or clearing the lock.$phx-freeze off, including into later sessions. Clear it when the task ends.lib/foo allows
lib/foo and everything under it; it does NOT allow lib/foobar.$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.tools
Compatibility alias for the Elixir/Phoenix plugin's LiveView assigns audit. Invoke explicitly with /lv:assigns.
development
Trace Elixir call trees from entry points via mix xref. Use when debugging data flow, planning signature changes, or understanding how a bug reaches code.
tools
Compatibility alias for the Elixir/Phoenix plugin's N+1 query checker. Invoke explicitly with /ecto:n1-check.
tools
Compatibility alias for the Elixir/Phoenix plugin's Ecto constraint debugger. Invoke explicitly with /ecto:constraint-debug.