freeze
Hard-block Edit/Write outside a chosen directory. Use to scope-lock edits during a focused fix or refactor. Pair with /unfreeze to release.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Hard-block Edit/Write outside a chosen directory. Use to scope-lock edits during a focused fix or refactor. Pair with /unfreeze to release.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Root-cause native Bannerlord CTDs (AccessViolation in TaleWorlds.Native.dll) via Event Log offsets, offline disassembly, and live debugger forensics. No symbols needed.
Dispatch an independent Codex verification job directly via `codex exec` Bash call, then retrieve and present results
Inspect all changed files, group by logical concern, and guide atomic per-concern commits following TAOM's 50/72 rule and commit trailer convention.
Load a snapshot saved by /context-save and present it so this session can pick up where the last one left off without re-deriving decisions.
Launch parallel deep-dive agents to review completed work for quality, standards, compatibility, completeness, and cross-system data flow
Respond to a Bannerlord engine update (Steam force-bump or deliberate migration) — preserve the decompile baseline, regen, diff, re-verify bindings and creature data, control-battle.
| name | freeze |
| description | Hard-block Edit/Write outside a chosen directory. Use to scope-lock edits during a focused fix or refactor. Pair with /unfreeze to release. |
| allowed-tools | ["Bash","Read","AskUserQuestion"] |
| hooks | {"PreToolUse":[{"matcher":"Edit","hooks":[{"type":"command","command":"bash ${CLAUDE_PROJECT_DIR}/.claude/skills/freeze/check-freeze.sh"}]},{"matcher":"Write","hooks":[{"type":"command","command":"bash ${CLAUDE_PROJECT_DIR}/.claude/skills/freeze/check-freeze.sh"}]},{"matcher":"NotebookEdit","hooks":[{"type":"command","command":"bash ${CLAUDE_PROJECT_DIR}/.claude/skills/freeze/check-freeze.sh"}]}]} |
Hard-block any Edit, Write, or NotebookEdit to a file outside the chosen directory for the remainder of the session.
Adapted from garrytan/gstack/freeze. Uses the inline-hooks-in-skill-frontmatter pattern: the PreToolUse hooks above only fire while this skill is active — no global settings.json change.
/deep-review or feature-builder and want scope-locked/investigate, which auto-engages this hookUse AskUserQuestion to ask the user which directory to lock to:
Main/Features/<FeatureName>/ — single feature scopeMain/Adapters/ — adapter layer onlyMain/_Module/ModuleData/ — XML data onlyTAOM.Tests/ — tests onlyResolve to absolute path and persist to the state file:
FREEZE_INPUT="<user-provided-path>"
# Resolve relative paths against the project root
if [[ "$FREEZE_INPUT" != /* && "$FREEZE_INPUT" != [A-Za-z]:* ]]; then
FREEZE_DIR="$(cd "$FREEZE_INPUT" 2>/dev/null && pwd)"
else
FREEZE_DIR="$(cd "$FREEZE_INPUT" 2>/dev/null && pwd)"
fi
if [[ -z "$FREEZE_DIR" || ! -d "$FREEZE_DIR" ]]; then
echo "Could not resolve '$FREEZE_INPUT' to a directory."
exit 1
fi
STATE_DIR="${CLAUDE_PROJECT_DIR}/.claude/tmp/freeze"
mkdir -p "$STATE_DIR"
echo "$FREEZE_DIR" > "$STATE_DIR/freeze-dir.txt"
echo "Freeze boundary set: $FREEZE_DIR"
Edits are now locked to
<resolved-path>/. Any Edit, Write, or NotebookEdit outside this directory will be hard-blocked. Run/unfreezeto release.
The PreToolUse hooks declared in this skill's frontmatter activate the moment the skill is invoked. On every Edit/Write/NotebookEdit tool call, check-freeze.sh runs:
.claude/tmp/freeze/freeze-dir.txt)file_path from the tool call's JSON input{"permissionDecision":"deny",...} to block{} to allowThe hook is silent on success and verbose only when blocking, so freeze adds zero noise to normal work.
| Tool | Behavior |
|---|---|
| Edit | Blocked outside boundary |
| Write | Blocked outside boundary |
| NotebookEdit | Blocked outside boundary |
| Read, Glob, Grep | Always allowed (read-only) |
| Bash | Always allowed — sed, tee, > etc. can still bypass freeze. This is not a security boundary. |
MCP server tools (Serena's replace_content, etc.) | Not blocked — these are separate tools. Use Edit/Write for changes you want freeze-protected. |
User: /freeze
Skill: Asks "Which directory?" → user answers "Main/Features/CareerSystem/"
Sets boundary to C:/Users/mikew/source/repos/TAOM/Main/Features/CareerSystem/
User: Edit Main/Features/CareerSystem/Services/CareerService.cs
→ ALLOWED (inside boundary)
User: Edit Main/Adapters/HeroAdapter.cs
→ BLOCKED: "[freeze] Blocked: ... is outside the freeze boundary (.../CareerSystem/)"
User: /unfreeze
→ Boundary cleared
/Main from matching /Main_old.claude/tmp/ (gitignored) — boundary clears if you delete the file or run /unfreezeecho > /etc/passwd) can still touch anything the user has write access to. The point is to catch accidental drift by the agent, not to protect against malicious actions.