Scope-lock file editing to a specific glob pattern. Only files matching the pattern can be edited until /unfreeze is called.
Install
npx skillscat add bdfinst/agentic-dev-team/freeze Install via the SkillsCat registry.
Freeze
Role: worker. This command restricts Write/Edit operations to files matching a glob pattern.
You have been invoked with the /freeze command.
Worker constraints
- Write only the freeze-state file; do not edit source.
- Do not enforce the lock yourself — the pre-tool-guard hook does.
- Be concise. Confirm the locked scope in one line.
Parse Arguments
Arguments: $ARGUMENTS
- Positional:
<glob-pattern>(required) — glob pattern for files that ARE allowed to be edited (e.g.,src/auth/**,*.test.ts)
If no pattern is provided, display usage and exit:
Usage:
/freeze <glob-pattern>
Example:/freeze src/auth/**— only files undersrc/auth/can be edited.
Steps
1. Write freeze state
Write the following JSON to .claude/hooks/freeze-state.json (relative to
the current repo root — not hooks/freeze-state.json, which would sit
inside the plugin's own shared install/cache directory and scope-lock every
other concurrently-running session, worktree, and project on the machine;
see issue #1890):
{
"active": true,
"allowed_patterns": ["<glob-pattern>"],
"frozen_at": "<ISO timestamp>"
}2. Confirm
Display:
Scope locked to
<pattern>. Only matching files can be edited.
Use/unfreezeto lift the restriction.
Notes
- The
hooks/pre_tool_guard.pyhook resolves this same path per invoking
repo viahooks/lib/artifact_paths.py'sresolve_file("hooks", "freeze-state.json")— the same.claude/-scoped convention.review-passed
and other per-repo runtime state already use — and blocks Write/Edit to
files that do NOT match the allowed patterns. - Freeze state persists across tool calls within a session, and is scoped to
the repo it was activated in. - If a session crashes while frozen, use
/unfreezein the next session to clear stale state. - Multiple patterns can be provided as comma-separated:
/freeze src/auth/**,src/middleware/** /buildcan also engage this same.claude/hooks/freeze-state.jsoncontract automatically, per slice, when a plan opts into**Scope enforcement:** freezeand declares slice-level**Files:**(issue #865) — seescripts/build_slice_scope.pyand thebuildskill's "Slice dispatch bookkeeping" section. That path is opt-in metadata, not a manual/freezeinvocation, but writes/clears the identical file this command does.