unfreeze — Claude Code skill: remove edit restrictions
Clears the freeze boundary set by /freeze, allowing edits to all directories again. Use it when you need to unlock restricted folders or return to unrestricted editing.
npx skills add garrytan/gstack --skill unfreeze -a claude-codeWhat unfreeze does
The skill removes the state file that tracks the freeze. Once cleared, the agent can edit any directory — /freeze restrictions no longer apply. If the state removal conflicts with another process holding a lock, the skill leaves everything untouched and reports the issue instead of deleting files.
Freezes hooks remain active in the session but now pass all checks since there is no state file. To re-freeze directories, run /freeze again.
The skill runs Bash commands and depends on gstack utilities, so make sure gstack is installed and initialised before use.
What it helps with
- remove temporary restrictions on editing files and folders
- unlock all directories after running /freeze
- return to unrestricted editing mode
Example prompts for the agent
- Unfreeze the project, I need to edit everything
- Remove all edit restrictions
- /unfreeze
How to install unfreeze
1Skills CLI (Vercel)
npx skills add garrytan/gstack --skill unfreeze -a claude-code2Manually: put the files in place
~/.claude/skills/unfreeze/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/unfreeze/
1Skills CLI (Vercel)
npx skills add garrytan/gstack --skill unfreeze -a codex2Manually: put the files in place
.agents/skills/unfreeze/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add garrytan/gstack --skill unfreeze -a cursor2Manually: put the files in place
.cursor/skills/unfreeze/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install garrytan/gstack unfreeze2Manually: put the files in place
.github/skills/unfreeze/SKILL.md1Skills CLI (Vercel)
npx skills add garrytan/gstack --skill unfreeze -a gemini-cli2Platform CLI
gemini skills install https://github.com/garrytan/gstack --path unfreezeManually: put the files in place
.devin/skills/unfreeze/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add garrytan/gstack --skill unfreeze -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set12
The whole set →Similar
Questions about unfreeze
How do I install unfreeze in Claude Code?
Run npx skills add garrytan/gstack --skill unfreeze -a claude-code, then open ~/.claude/skills/unfreeze/SKILL.md.
What does unfreeze do?
It removes the freeze set by /freeze, allowing edits to all directories. If the freeze state is locked by another process, the skill reports the error and makes no changes.
Do I need to reinstall /freeze after using unfreeze?
No. To freeze directories again, just run /freeze — it creates a fresh state. Hooks stay in the session memory.
Source text
SKILL.md · MIT
---
name: unfreeze
version: 0.1.0
description: Clear the freeze boundary set by /freeze, allowing edits to all directories again. (gstack)
triggers:
- unfreeze edits
- unlock all directories
- remove edit restrictions
allowed-tools:
- Bash
- Read
---
<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly -->
<!-- Regenerate: bun run gen:skill-docs -->
# /unfreeze — Clear Freeze Boundary
Remove the edit restriction set by `/freeze`, allowing edits to all directories.
```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":"unfreeze","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
```
## Clear the boundary
```bash
bash "$HOME/.claude/skills/gstack/freeze/bin/freeze-state.sh" clear
```
This is explicit user-requested removal, not investigation cleanup. The shared writer serializes it with acquisition, replacement and owner-checked release. On `FREEZE_BUSY` or unexpected state, leave everything untouched and report recovery; never delete state or a possibly active mutation lock directly.
Tell the user the result. Note that `/freeze` hooks are still registered for the
session — they will just allow everything since no state file exists. To re-freeze,
run `/freeze` again.
© garrytan · MIT · garrytan/gstack