关于 guard
guard 是 gstack 技能,可同时启用破坏性命令警告和指定目录的编辑限制,适合需要集中开启这两项保护的用户。
主要功能
- 01破坏性命令警告
- 02拦截灾难性命令模式
- 03限制指定目录外的编辑
适用场景
- 01运行 rm -rf 或强制推送前显示警告
- 02阻止编辑所选目录以外的文件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ garrytan/ gstack --skill guard安装后在 Claude Code 中输入/guard确认已加载。
附带文件SKILL.md.tmpl
详细介绍
/guard — 全面安全模式
同时启用破坏性命令警告和目录范围编辑限制。
这是将 /careful + /freeze 合并为一个命令。
依赖说明: 此技能引用了同级 /careful
和 /freeze 技能目录中的钩子脚本。两者都必须已安装(gstack 设置脚本会一并安装它们)。
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
设置
询问用户要将编辑限制在哪个目录。使用 AskUserQuestion:
- 问题:"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."
- 文本输入(非多选)——用户输入一个路径。
用户提供目录路径后:
使用共享写入器设置用户选择的边界;该写入器会解析物理绝对路径,并在替换时串行处理调查清理:
bash "$HOME/.claude/skills/gstack/freeze/bin/freeze-state.sh" set "<user-provided-path>"
如果辅助程序失败,不要声称边界已启用。保留状态并说明如何恢复;绝不要绕过共享写入器直接写入或删除。
告知用户:
- "Guard mode active. 两项保护现已启用:"
- "1. 破坏性命令防护 — 执行 rm -rf、DROP TABLE、强制推送等命令前会发出警告(可覆盖);灾难性操作形式(递归删除 / 或 ~,强制推送到默认分支)会被直接拒绝"
- "2. 编辑边界 — 文件编辑限制在
<path>/内。此目录之外的编辑会被阻止。" - "要移除持久化的编辑边界,请运行
/unfreeze。结束会话会停止其钩子,但不会删除该边界。"
保护范围
破坏性命令模式和安全例外的完整列表,请参阅 /careful。
编辑边界的强制执行方式,请参阅 /freeze。
评论
支持 Markdown