mcpField
G
guard

guard

github.com/garrytanAgent 工作流138.1k353 次安装今天更新
代码仓库

关于 guard

guard 是 gstack 技能,可同时启用破坏性命令警告和指定目录的编辑限制,适合需要集中开启这两项保护的用户。

主要功能

  1. 01破坏性命令警告
  2. 02拦截灾难性命令模式
  3. 03限制指定目录外的编辑

适用场景

  1. 01运行 rm -rf 或强制推送前显示警告
  2. 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