# 全面安全模式 (guard)

> 同时开启危险命令警告和按目录限定的编辑范围，相当于把 /careful 与 /freeze 合为一条命令。

- 分类: [安全加固](https://www.myskills.tools/zh/categories/hardening/)
- 来源: 社区 · Garry Tan
- 代码仓库: https://github.com/garrytan/gstack/tree/main/guard (commit 6237994 · v0.1.0)
- SKILL.md: https://github.com/garrytan/gstack/blob/main/guard/SKILL.md
- 安装命令: `npx skills add garrytan/gstack --skill guard`
- 许可证: MIT
- 兼容工具: Claude Code, Codex, Cursor, Copilot
- 权限: read-repo ✓, write-files ✗, shell ✓, network ✗
- 状态: 扫描通过
- 规则扫描无法覆盖所有风险，安装前请阅读此技能的 SKILL.md，确认权限后再使用。
- ⚠ 会注册阻止目录外编辑的 hook，会话结束后边界仍保留，需运行 /unfreeze 解除；使用记录会写入本地 gstack 分析文件。

## 核心规则

边界设置脚本失败时，不得声称边界已生效，也不得绕过共享写入器直接写入或删除。

## 执行阶段

1. **选择目录** — 通过 AskUserQuestion 以文本输入方式询问用户，要把编辑限制在哪个目录。
2. **设置编辑边界** — 用共享的 freeze-state.sh set 写入该路径；若失败则保留现有状态并报告恢复方法。
3. **告知两层保护** — 告诉用户：rm -rf、强制推送等危险命令会先警告，极端情况直接拒绝；目录外的编辑会被阻止，可用 /unfreeze 解除。

## 权限说明（据 SKILL.md 整理）

| 能力 | 是否需要 | 说明 |
|---|---|---|
| 文件写入 | 不需要 | allowed-tools 不含 Write/Edit；该技能反而通过 hook 阻止边界外的文件编辑。 |
| 命令执行 | 部分需要 | 只运行 gstack 的 freeze-state.sh 等辅助脚本，并由 hook 检查危险命令。 |
| 网络外发 | 不需要 | 不需要网络访问。 |

## SKILL.md 头部信息（YAML）

```yaml
---
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..."
---
```

首页: https://www.myskills.tools/zh/ · URL: https://www.myskills.tools/zh/skills/guard/
