plugins/elixir-phoenix/skills/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 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.development
Ash Framework — resources, actions, policies, aggregates, calculations, AshPhoenix.Form, LiveView, migrations. Use when generating resources via mix ash.codegen, editing changes, checks, types, validations, or domain code interfaces.
development
Reduce mix output noise (5-15% token savings) by installing rtk filters that compress mix test/credo/dialyzer/compile output before it reaches Claude. Use when long mix output floods context.
development
Narrow bare rescue in Elixir so real errors like KeyError and typos propagate instead of being swallowed. Use to audit rescues and refactor error handling.
tools
Elixir testing patterns — ExUnit, Mox, factories, LiveView test helpers. Use when working on *_test.exs, test/support/, factory files, or fixing test failures.