AGENT SKILL

mk:freeze

Session-scoped edit restriction blocking Edit and Write outside one allowed path. NOT for mk:careful.

适用职业开发工程师
License 许可
MIT
最近更新
2026-11-11
Stars
★ 16
Forks
3

01 前言 Front Matter

name
mk:freeze
hooks
{ "PreToolUse": [ { "hooks": [ { "args": [ "${CLAUDE_PROJECT_DIR}/.claude/skills/freeze/bin/check-freeze.cjs" ], "type": "command", "command": "node", "statusMessage": "Checking freeze boundary..." } ], "matcher": "Edit" }, { "hooks": [ { "args": [ "${CLAUDE_PROJECT_DIR}/.claude/skills/freeze/bin/check-freeze.cjs" ], "type": "command", "command": "node", "statusMessage": "Checking freeze boundary..." } ], "matcher": "Write" } ] }
owner
lifecycle
source
gstack
status
active
runtime
claude-code
version
0.1.0
keywords
[ "freeze", "scope-edits", "directory-restriction", "session-scope", "edit-lockdown" ]
criticality
medium
description
Session-scoped edit restriction blocking Edit and Write outside one allowed path. NOT for mk:careful.
when_to_use
Keeping a debugging session from touching code outside one folder.
allowed-tools
[ "Bash", "Read", "AskUserQuestion" ]
user-invocable
true

02 资源文件 2

03 SKILL.md 正文

/freeze — Restrict Edits to a Directory

Lock file edits to a specific directory. Any Edit or Write operation targeting a file outside the allowed path will be blocked (not just warned).

mkdir -p .meowkit/telemetry
echo '{"skill":"freeze","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}'  >> .meowkit/telemetry/skill-usage.jsonl 2>/dev/null || true

Setup

Ask the user which directory to restrict edits to. Use AskUserQuestion:

  • Question: "Which directory should I restrict edits to? Files outside this path will be blocked from editing."
  • Text input (not multiple choice) — the user types a path.

Once the user provides a directory path:

  1. Resolve it to an absolute path:
FREEZE_DIR=$(cd "<user-provided-path>" 2>/dev/null && pwd)
echo "$FREEZE_DIR"
  1. Ensure trailing slash and save to the freeze state file:
FREEZE_DIR="${FREEZE_DIR%/}/"
STATE_DIR="${CLAUDE_PLUGIN_DATA:-.meowkit/state}"
mkdir -p "$STATE_DIR"
echo "$FREEZE_DIR" > "$STATE_DIR/freeze-dir.txt"
echo "Freeze boundary set: $FREEZE_DIR"

Tell the user: "Edits are now restricted to <path>/. Any Edit or Write outside this directory will be blocked. To change the boundary, run /mk:freeze again. Freeze persists for the session — end the session or start a new one to clear it."

How it works

See references/freeze-mechanics.md for technical details on path resolution, symlink handling, state file persistence, and tool scope.

Hooks

  • PreToolUse on Edit/Write: Blocks writes outside the frozen directory path
  • Activated by /mk:freeze <path>. Deactivated when session ends.
  • Bash commands are NOT restricted — freeze only guards Edit and Write tools

Gotchas

  • Symlinked files bypass freeze check: Edit tool resolves symlinks, writing outside frozen directory → Check resolved path, not just the stated path
  • Test files in frozen directory can't update fixtures: Freeze prevents fixture updates needed for new test cases → Use --exclude pattern for test fixtures within frozen scope

04 同仓库更多 Skills