Token-Saver Configuration
ppgranger/token-saver
Checks and tunes token-saver output compression: reads stats, explains why a command was or was not compressed, and edits config files or environment variables.
Locks file edits for the session to one directory by blocking Edit and Write calls anywhere else, useful when debugging or scoping a change.
$ npx skills add garrytan/gstack --skill freeze -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install garrytan/gstack freeze --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/freeze .claude/skills/freeze && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "freeze" agent skill from https://github.com/garrytan/gstack/tree/main/freeze into .claude/skills/freeze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "freeze", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/garrytan/gstack/tree/main/freezeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add garrytan/gstack --skill freeze -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install garrytan/gstack freeze --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .agents/skills && cp -r skills-src/freeze .agents/skills/freeze && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "freeze" agent skill from https://github.com/garrytan/gstack/tree/main/freeze into .agents/skills/freeze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "freeze", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garrytan/gstack --skill freeze -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install garrytan/gstack freeze --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/freeze .cursor/skills/freeze && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "freeze" agent skill from https://github.com/garrytan/gstack/tree/main/freeze into .cursor/skills/freeze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "freeze", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/garrytan/gstack.git --path freeze--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add garrytan/gstack --skill freeze -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install garrytan/gstack freeze --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/freeze .gemini/skills/freeze && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "freeze" agent skill from https://github.com/garrytan/gstack/tree/main/freeze into .gemini/skills/freeze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "freeze", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install garrytan/gstack freezeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add garrytan/gstack --skill freeze -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .github/skills && cp -r skills-src/freeze .github/skills/freeze && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "freeze" agent skill from https://github.com/garrytan/gstack/tree/main/freeze into .github/skills/freeze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "freeze", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garrytan/gstack --skill freeze -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install garrytan/gstack freeze --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/freeze .opencode/skills/freeze && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "freeze" agent skill from https://github.com/garrytan/gstack/tree/main/freeze into .opencode/skills/freeze/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "freeze", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
freezeLocks file edits for the session to one directory by blocking Edit and Write calls anywhere else, useful when debugging or scoping a change.
Run /freeze and the agent asks, with a typed path rather than a menu, which directory edits should be limited to. From then on any Edit or Write call that targets a file outside that directory is blocked, not merely warned about. It is meant for debugging, so the agent does not wander off and fix unrelated code, or for confining a change to one module.
The boundary is stored through freeze-state.sh, and success is reported only if that helper succeeds. A hook reads file_path from the tool input, checks whether it starts with the frozen directory and returns a deny decision otherwise. It fails closed: a payload it cannot parse is denied, while one without a file path, from a non-file tool, is allowed. Symlinks are resolved.
Run /freeze again to move the boundary and /unfreeze to remove it. The parsing code is shared with the /careful skill, and the skill depends on the gstack setup being installed, since its state and helper scripts live there.
Read from SKILL.md and the folder at commit 20eb620. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Ships script files (Shell), which the agent can run.
Shell commands in SKILL.md call:
gitbashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Freeze Edit Boundary loads about 1.1k tokens when it runs. Until then it costs about 19 tokens; SKILL.md has 436 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, AskUserQuestionAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from garrytan/gstack at commit 20eb620, republished under its MIT licence (© garrytan). 436 words, ~1,138 tokens.
.claude/skills/freeze/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly -->
<!-- Regenerate: bun run gen:skill-docs -->
Blocks Edit, Write and NotebookEdit outside the allowed path. Use when debugging to prevent accidentally "fixing" unrelated code, or when you want to scope changes to one module. Use when asked to "freeze", "restrict edits", "only edit this folder", or "lock down edits".
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).
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 || trueAsk the user which directory to restrict edits to. Use AskUserQuestion:
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 "$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."
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.
/ on the freeze directory prevents /src from matching /src-oldsed or Set-Content can still modify files outside the boundary/unfreeze; ending or killing a conversation does not remove persisted state© garrytan, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files in freeze of garrytan/gstack.
Open the folder on GitHubat commit 20eb620
Freeze Edit Boundary next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Freeze Edit Boundary this skillgarrytan/gstack | 136k | — | ~1.1k | Automated safety check: Notes | MIT | |
| Token-Saver Configurationppgranger/token-saver | 153 | — | ~1k | Automated safety check: Pass | Apache-2.0 | |
| Verify Setup Health Checkdiet103/claude-code-infrastructure-showcase | 10k | — | ~363 | Automated safety check: Pass | MIT | |
| LazyCodex Doctorcode-yeongyu/oh-my-openagent | 70k | — | ~2.6k | Automated safety check: Pass | Custom licence | |
| Braintrust Tracingparcadei/Continuous-Claude-v3 | 3.9k | 1 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Debug Hooksparcadei/Continuous-Claude-v3 | 3.9k | 1 repos | ~863 | Automated safety check: Notes | MIT |
ppgranger/token-saver
Checks and tunes token-saver output compression: reads stats, explains why a command was or was not compressed, and edits config files or environment variables.
diet103/claude-code-infrastructure-showcase
Run the infrastructure health check and fix anything that fails
code-yeongyu/oh-my-openagent
Audits a local LazyCodex and Codex CLI install against the latest upstream sources and reports PASS, WARN or FAIL per check without changing anything.
parcadei/Continuous-Claude-v3
Braintrust tracing for Claude Code - hook architecture, sub-agent correlation, debugging
parcadei/Continuous-Claude-v3
Systematic hook debugging workflow. An agent skill from parcadei/Continuous-Claude-v3.
manaflow-ai/cmux
Runs a read-only health check for cmux and explains what it finds, covering the CLI and socket, settings, agent hooks, session restore and notifications.
garrytan/gstack
Router for the gstack skill suite. (gstack)
garrytan/gstack
Investigates bugs, errors and stack traces in phases and requires a root-cause hypothesis to be confirmed before any fix is written.
garrytan/gstack
Builds a weekly engineering retrospective from git history: commit counts, per-person contributions, work patterns and code quality numbers over a chosen window.
garrytan/gstack
Drives a real browser through Aside so the agent can open a page, read it, click through a flow, take screenshots and check console errors.
garrytan/gstack
Tests a SwiftUI app on a real iPhone connected by USB, reading the Swift source and then looping through screenshot, analysis and action to find bugs.
garrytan/gstack
Sends one prompt to Claude, GPT through the Codex CLI and Gemini, then tabulates response time, token use and cost, with an optional judged quality score.
Categories
Locks file edits for the session to one directory by blocking Edit and Write calls anywhere else, useful when debugging or scoping a change. Run /freeze and the agent asks, with a typed path rather than a menu, which directory edits should be limited to. From then on any Edit or Write call that targets a file outside that directory is blocked, not merely warned about.
Freeze Edit Boundary fits situations like: keeping an agent inside one module while debugging a bug; scoping a refactor so nothing outside a chosen folder is edited; setting a hard edit boundary before handing a task to an agent.
Run `npx skills add garrytan/gstack --skill freeze -a claude-code`. Or copy the skill folder (freeze in garrytan/gstack) into .claude/skills/freeze in your project. Claude Code loads it when a task matches its description.
Run `npx skills add garrytan/gstack --skill freeze -a codex`. Or copy the skill folder (freeze in garrytan/gstack) into .agents/skills/freeze in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add garrytan/gstack --skill freeze -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/freeze, .gemini/skills/freeze, .github/skills/freeze and .opencode/skills/freeze in your project.
Going by SKILL.md and its folder, Freeze Edit Boundary needs a shell for the scripts in its folder and the command-line tools its instructions call (git and bash). Our summary lists: The gstack skill set installed, which provides the freeze helper scripts; Bash. Its frontmatter pre-approves these tools: Bash, Read, AskUserQuestion.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Freeze Edit Boundary is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.1k tokens (SKILL.md is roughly 4.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Freeze Edit Boundary: Token-Saver Configuration (ppgranger/token-saver, 153 stars), Verify Setup Health Check (diet103/claude-code-infrastructure-showcase, 10k stars), LazyCodex Doctor (code-yeongyu/oh-my-openagent, 70k stars) and Braintrust Tracing (parcadei/Continuous-Claude-v3, 3.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
garrytan (a GitHub user) maintains it in garrytan/gstack, which has 135,670 GitHub stars. The repository holds 56 skills in this directory. The repository was last updated on October 9, 2026.
Source: garrytan/gstack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.