guard — скилл для Claude Code: что делает и как установить
Включает режим полной защиты: предупреждает об опасных командах в терминале и ограничивает редактирование файлов одной выбранной директорией.
npx skills add garrytan/gstack --skill guard -a claude-codeЧто делает guard
Скилл объединяет возможности двух других инструментов набора gstack — /careful и /freeze. При запуске агент через AskUserQuestion запрашивает путь к рабочему каталогу. Скрипт freeze-state.sh фиксирует эту границу и блокирует операции Edit, Write и NotebookEdit для любых внешних файлов.
Перед вызовом Bash или PowerShell хук запускает проверку check-careful.sh. Опасные действия вроде DROP TABLE или git push --force потребуют подтверждения. Критические операции вроде удаления корня или домашней директории блокируются намертво. Без установленных рядом каталогов careful и freeze скилл работать не сможет, потому что его хуки обращаются напрямую к их скриптам. Снять ограничение на запись можно отдельной командой /unfreeze.
Какие задачи решает
- Блокировать случайное удаление файлов командами вроде
rm -rf - Ограничить правки кода рамками конкретной директории проекта
- Предотвратить форс-пуш в основную ветку репозитория
- Защитить базу данных от случайного выполнения
DROP TABLE
Примеры запросов агенту
- Включи режим полной безопасности и ограничь изменения папкой
src - Защити проект от разрушительных команд в терминале
- Запусти guard для текущего репозитория
Как установить guard
1Через Skills CLI (Vercel)
npx skills add garrytan/gstack --skill guard -a claude-code2Вручную: положить файлы
~/.claude/skills/guard/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/guard/
1Через Skills CLI (Vercel)
npx skills add garrytan/gstack --skill guard -a codex2Вручную: положить файлы
.agents/skills/guard/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add garrytan/gstack --skill guard -a cursor2Вручную: положить файлы
.cursor/skills/guard/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install garrytan/gstack guard2Вручную: положить файлы
.github/skills/guard/SKILL.md1Через Skills CLI (Vercel)
npx skills add garrytan/gstack --skill guard -a gemini-cli2Командой платформы
gemini skills install https://github.com/garrytan/gstack --path guardВручную: положить файлы
.devin/skills/guard/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add garrytan/gstack --skill guard -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о guard
Как установить guard в Claude Code?
Выполните в терминале команду npx skills add garrytan/gstack --skill guard -a claude-code.
Что делает скилл guard?
Он проверяет вызовы командной строки на деструктивные действия и блокирует любые изменения файлов за пределами указанной директории.
Какие зависимости нужны для работы guard?
Скиллу требуются скрипты из соседних модулей careful и freeze, входящих в репозиторий gstack. Без них проверки завершатся ошибкой.
Исходный текст
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