freeze
Restrict file edits to a specific directory for the session.
Skill by garrytan
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/garrytan-freeze
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: file-management
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/freeze
What's inside
- Skill name
freeze- Description
- Restrict file edits to a specific directory for the session. (gstack)
- License
- MIT
- Instructions
- 63 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- allowed-tools: must be a space-separated string
Files (4)
- SKILL.md
- SKILL.md.tmpl
- check-freeze.sh · bin/
- freeze-state.sh · bin/
SKILL.md (first lines)
<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly -->
<!-- Regenerate: bun run gen:skill-docs -->
# /freeze — Restrict Edits to a Directory
Lock file edits to a specific directory. Any Edit, Write or NotebookEdit
operation targeting a file outside the allowed path will be **blocked** (not
just warned).
```bash
GSTACK_STATE_ROOT=$(~/.claude/skills/gstack/bin/gstack-paths --get GSTACK_STATE_ROOT); : "${GSTACK_STATE_ROOT:?gstack-paths failed; reinstall with ./setup or /gstack-upgrade}"
mkdir -p "$GSTACK_STATE_ROOT"/analytics
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")'"}' >> "$GSTACK_STATE_ROOT"/analytics/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:
Set the user-selected boundary with the shared state writer. It resolves the physical absolute path and serializes replacement with investigation cleanup:
```bash
bash "$HOME/.claude/skills/gstack/freeze/bin/freeze-state.sh" set "<user-provided-path>"
```
Only report success if the helper succeeds. On `FREEZE_BUSY` or unexpected state, preserve it and ask the user to inspect recovery after any active writer finishes; never write or delete the state file directly.
Tell the user: "Edits are now restricted to `<path>/`. Any Edit, Write or
NotebookEdit outside this directory will be blocked. To change the boundary, run `/freeze`
again. To remove it, run `/unfreeze`."
## How it works
The hook reads `file_path` from the Edit/Write tool input JSON, or
`notebook_path` from a NotebookEdit (Jupyter notebook) call (shared
real-JSON extractor with /careful — one copy, sourced by both hooks), then
checks whether the path starts with the freeze directory. If not, it returns a
`hookSpecificOutput` payload with `permissionDecision: "deny"` to block the
operation (nested under `hookSpecificOutput` — Claude Code ignores a top-level
`permissionDecision`).
Polarity is fail-closed: a tool payload the hook cannot parse is DENIED, not
allowed — a boundary that fails open is not a boundary. A payload that parses
but has neither path field (a non-file tool) is allowed. A deny names the
tool, the path field, the boundary and `/unfreeze`. Symlinks are resolved
through their FINAL component, so an in-boundary symlink pointing outside the
boundary is checked against its target.
The freeze boundary persists until explicitly removed via the state file. The hook
script reads it on every Edit/Write/NotebookEdit invocation. Boundaries containing spaces
are supported.
## Notes
- The trailing `/` on the freeze directory prevents `/src` from matching `/src-old`
- Freeze applies to Edit, Write and NotebookEdit only — Read, Bash, PowerShell, Glob, Grep are unaffected
- This prevents accidental edits, not a security boundary — Bash or PowerShell commands like `sed` or `Set-Content` can still modify files outside the boundary
- To deactivate, run `/unfreeze`; ending or killing a conversation does not remove persisted stateFrom garrytan/gstack, MIT.
More from garrytan/gstack
- 0.846score
gstack
garrytan
Install and use gstack in Capy and Claude Code.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.842score
browse
garrytan
Drive a real browser through Aside: open a page, read it, click through a flow, take screenshots, check console errors.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.837score
diagram
garrytan
Turn an English description (or mermaid source) into a diagram triplet: the source, an editable .excalidraw file you can open on excalidraw.com, and rendered…
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
landing-report
garrytan
Read-only queue dashboard for workspace-aware ship.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
setup-browser-cookies
garrytan
Import cookies from your real Chromium browser into the headless browse session.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
make-pdf
garrytan
Turn any markdown file into a publication-quality PDF.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
scrape
garrytan
Pull data from a web page through the Aside browser — your real, already signed-in sessions.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
cso
garrytan
Security audit: supported static findings; qualified profiles add reproduction and repair candidates.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
deslop-shared-libs
garrytan
Find worthwhile shared-code extractions in recent work.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
open-gstack-browser
garrytan
Launch GStack Browser — AI-controlled Chromium with the sidebar extension baked in.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
unfreeze
garrytan
Clear the freeze boundary set by /freeze, allowing edits to all directories again.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
ios-sync
garrytan
Regenerate the iOS debug bridge against the latest upstream gstack templates.
SkillAFreshness: A★ 137.5KClaude Code +9
Signals
- Stars
- 137,493
- Forks
- 20,378
- Open issues
- 67
- Last commit (this folder)
- Oct 19, 2026 (10 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/garrytan/gstack
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from garrytan
- 0.846score
gstack
garrytan
Install and use gstack in Capy and Claude Code.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.842score
browse
garrytan
Drive a real browser through Aside: open a page, read it, click through a flow, take screenshots, check console errors.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.837score
diagram
garrytan
Turn an English description (or mermaid source) into a diagram triplet: the source, an editable .excalidraw file you can open on excalidraw.com, and rendered…
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
deslop-shared-libs
garrytan
Find worthwhile shared-code extractions in recent work.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
cso
garrytan
Security audit: supported static findings; qualified profiles add reproduction and repair candidates.
SkillAFreshness: A★ 137.5KClaude Code +9 - 0.833score
unfreeze
garrytan
Clear the freeze boundary set by /freeze, allowing edits to all directories again.
SkillAFreshness: A★ 137.5KClaude Code +9
Cite this page
freeze skill. Agent Mart. https://agentmart.dev/skills/garrytan-freeze (last updated 2026-10-24)