guard — Claude Code skill: what it does, how to install
Activates full safety mode by catching destructive shell commands and locking file edits to a chosen directory.
npx skills add garrytan/gstack --skill guard -a claude-codeWhat guard does
This skill bundles two safeguards from gstack into a single mode by merging /careful and /freeze. On start, the agent asks for a target path via AskUserQuestion. The freeze-state.sh helper then enforces this boundary, stopping Edit, Write, and NotebookEdit actions on any files located outside that directory.
Every shell run through Bash or PowerShell passes through check-careful.sh. Risky commands such as DROP TABLE or forced Git pushes trigger explicit warnings, while catastrophic patterns like rm -rf / or forced pushes to default branches are blocked outright. The skill fails without its sibling folders careful and freeze, since its hooks invoke their internal scripts directly. You clear the edit boundary later with /unfreeze.
What it helps with
- Block destructive shell executions like
rm -rfor table drops - Restrict file modifications to a single designated folder
- Stop force-push attempts against the default Git branch
- Halt accidental edits to files outside the target workspace
Example prompts for the agent
- Activate full safety mode for the
srcfolder - Guard against mistakes and prevent dangerous shell commands
- Turn on maximum safety for this session
How to install guard
1Skills CLI (Vercel)
npx skills add garrytan/gstack --skill guard -a claude-code2Manually: put the files in place
~/.claude/skills/guard/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/guard/
1Skills CLI (Vercel)
npx skills add garrytan/gstack --skill guard -a codex2Manually: put the files in place
.agents/skills/guard/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add garrytan/gstack --skill guard -a cursor2Manually: put the files in place
.cursor/skills/guard/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install garrytan/gstack guard2Manually: put the files in place
.github/skills/guard/SKILL.md1Skills CLI (Vercel)
npx skills add garrytan/gstack --skill guard -a gemini-cli2Platform CLI
gemini skills install https://github.com/garrytan/gstack --path guardManually: put the files in place
.devin/skills/guard/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add garrytan/gstack --skill guard -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about guard
How to install guard in Claude Code?
Run npx skills add garrytan/gstack --skill guard -a claude-code in your terminal.
What does guard do?
It guards terminal executions against destructive commands and blocks file writes outside a user-defined directory.
What dependencies does guard require?
It requires the sibling /careful and /freeze modules from the gstack suite to run its underlying validation scripts.
Source text
SKILL.md · MIT
---
name: guard
version: 0.1.0
description: "Full safety mode: destructive command warnings + directory-scoped edits. (gstack)"
triggers:
- full safety mode
- guard against mistakes
- maximum safety
allowed-tools:
- Bash
- Read
- AskUserQuestion
hooks:
PreToolUse:
- matcher: "Bash"
hooks:
- type: command
command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/careful/bin/check-careful.sh\""'
statusMessage: "Checking for destructive commands..."
- matcher: "PowerShell"
hooks:
- type: command
command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/careful/bin/check-careful.sh\""'
statusMessage: "Checking for destructive commands..."
- matcher: "Edit"
hooks:
- type: command
command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/freeze/bin/check-freeze.sh\""'
statusMessage: "Checking freeze boundary..."
- matcher: "Write"
hooks:
- type: command
command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/freeze/bin/check-freeze.sh\""'
statusMessage: "Checking freeze boundary..."
- matcher: "NotebookEdit"
hooks:
- type: command
command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/freeze/bin/check-freeze.sh\""'
statusMessage: "Checking freeze boundary..."
---
<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly -->
<!-- Regenerate: bun run gen:skill-docs -->
# /guard — Full Safety Mode
Activates both destructive command warnings and directory-scoped edit restrictions.
This is the combination of `/careful` + `/freeze` in a single command.
**Dependency note:** This skill references hook scripts from the sibling `/careful`
and `/freeze` skill directories. Both must be installed (they are installed together
by the gstack setup script).
```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":"guard","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: "Guard mode: which directory should edits be restricted to? Destructive command warnings are always on. Files outside the chosen 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 writer, which resolves a physical absolute path and serializes replacement with investigation cleanup:
```bash
bash "$HOME/.claude/skills/gstack/freeze/bin/freeze-state.sh" set "<user-provided-path>"
```
On helper failure, do not claim the boundary is active. Preserve the state and report recovery; never bypass the shared writer with a direct write or deletion.
Tell the user:
- "**Guard mode active.** Two protections are now running:"
- "1. **Destructive command guard** — rm -rf, DROP TABLE, force-push, etc. warn before executing (overridable); catastrophic shapes (recursive delete of / or ~, force-push to the default branch) are hard-denied"
- "2. **Edit boundary** — file edits restricted to `<path>/`. Edits outside this directory are blocked."
- "To remove the persistent edit boundary, run `/unfreeze`. Ending the session stops its hooks but does not delete that boundary."
## What's protected
See `/careful` for the full list of destructive command patterns and safe exceptions.
See `/freeze` for how edit boundary enforcement works.
© garrytan · MIT · garrytan/gstack