Agent Skills › garrytan/gstack › careful

careful

GitHub

提供破坏性命令的安全防护,在运行 rm -rf、DROP TABLE、git push --force 等高风险操作前进行拦截并警告,防止数据丢失或环境损坏。

careful/SKILL.md garrytan/gstack

触发场景

执行 rm -rf 等删除命令 执行 DROP TABLE 等数据库危险操作 执行 git push --force 等强制推送 用户要求开启安全模式

安装

npx skills add garrytan/gstack --skill careful -g -y
更多选项

非标准路径

npx skills add https://github.com/garrytan/gstack/tree/main/careful -g -y

不安装直接使用

npx skills use garrytan/gstack@careful

指定 Agent (Claude Code)

npx skills add garrytan/gstack --skill careful -a claude-code -g -y

安装 repo 全部 skill

npx skills add garrytan/gstack --all -g -y

预览 repo 内 skill

npx skills add garrytan/gstack --list

SKILL.md

Frontmatter
{
    "name": "careful",
    "hooks": {
        "PreToolUse": [
            {
                "hooks": [
                    {
                        "type": "command",
                        "command": "bash -c \"exec bash \\\"$HOME\/.claude\/skills\/gstack\/careful\/bin\/check-careful.sh\\\"\"",
                        "statusMessage": "Checking for destructive commands..."
                    }
                ],
                "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"
            }
        ]
    },
    "version": "0.1.0",
    "triggers": [
        "be careful",
        "warn before destructive",
        "safety mode"
    ],
    "description": "Safety guardrails for destructive commands. (gstack)",
    "allowed-tools": [
        "Bash",
        "Read"
    ]
}

/careful — Destructive Command Guardrails

Safety mode is now active. Every Bash and PowerShell command will be checked for destructive patterns before running. If a destructive command is detected, you'll be warned and can choose to proceed or cancel.

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":"careful","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

What's protected

Pattern Example Risk
rm -rf / rm -r / rm --recursive rm -rf /var/data Recursive delete
DROP TABLE / DROP DATABASE DROP TABLE users; Data loss
TRUNCATE TRUNCATE orders; Data loss
git push --force / -f git push -f origin main History rewrite
git reset --hard git reset --hard HEAD~3 Uncommitted work loss
git checkout . / git restore . git checkout . Uncommitted work loss
kubectl delete kubectl delete pod Production impact
docker rm -f / docker system prune docker system prune -a Container/image loss

PowerShell and cmd (Windows)

The hook also checks the PowerShell tool (Claude Code's main Windows shell) and any pwsh/powershell/cmd launched from Bash. Matching ignores case, covers aliases in command position, accepts parameter prefixes (-r, -fo) and strips cmd ^ escapes. All rows above apply there too.

Pattern Example
Remove-Item/rm/ri/del/erase/rd/rmdir + -Recurse or -Force gci | ri -r -fo
cmd rd /s, rmdir /s, del /s, erase /s cmd /c rd /s /q C:\proj
Format-Volume, Clear-Disk, Clear-Content, [IO.Directory]::Delete, [IO.File]::Delete Clear-Disk -Number 1
-EncodedCommand, iex, Start-Process of a shell, & $cmd (can't be inspected) irm $url | iex

Best-effort on PowerShell. String matching can't see a command built at runtime. For a hard stop, add Claude Code permission deny rules, which parse PowerShell and its aliases: "deny": ["PowerShell(Remove-Item *)"] in .claude/settings.json. The hook runs through bash, so Windows needs Git Bash.

Safe exceptions

These patterns are allowed without warning:

  • rm -rf node_modules / .next / dist / __pycache__ / .cache / build / .turbo / coverage

How it works

The hook reads tool_name and the command from the tool input JSON, checks it against the patterns above, and returns a hookSpecificOutput payload with permissionDecision: "ask" and a warning reason if a match is found (the decision must be nested under hookSpecificOutput — Claude Code ignores a top-level permissionDecision). You can always override a MEDIUM warning and proceed.

HIGH tier (hard deny)

Two catastrophic shapes are denied, not asked: rm -r/-R of exactly /, ~, or $HOME, and force-push to the repo's default branch. SIMPLE commands only (no ;, &&, ||, |, newline) — compound shapes fall through to the MEDIUM ask; --force-with-lease is never HIGH. A best-effort advisory hard-stop, not a policy boundary: the escape hatch is ending the opt-in, session-scoped /careful session.

Project patterns (additive only)

Add warn rules — one POSIX ERE per line, # comments OK — in ~/.gstack/careful-patterns.txt (global) or ~/.gstack/projects/<slug>/careful-patterns.txt (per-project). Consulted after the built-in families, so config can only ADD rules, never suppress a baseline warning. Invalid regex lines are skipped.

To deactivate, end the conversation or start a new one. Hooks are session-scoped.

版本历史

  • 82db89a 当前 2026-11-03 06:42

    移除了 SKILL.md 正文中的 'When to invoke' 部分,优化模板生成逻辑以减少 token 消耗并改进路由机制。

  • 2d42e4e 2026-10-19 13:42

    修复 /careful 仅检查 Bash 工具的问题,增加对 PowerShell 和 cmd 命令的检查支持;修复 NotebookEdit 忽略冻结边界的问题;增加 Windows 平台的测试覆盖。

  • 28d59ad 2026-08-20 05:27

    新增 HIGH 级别硬拒绝机制(禁止删除根目录/主分支强制推送),修复 JSON 提取器缺陷,增加项目级自定义规则支持。

  • a325940 2026-07-25 11:04

同 Skill 集合

autoplan/SKILL.md
browse/SKILL.md
browser-skills/hackernews-frontpage/SKILL.md
captain/SKILL.md
capy/skill/gstack/SKILL.md
context-restore/SKILL.md
cso/SKILL.md
design-consultation/SKILL.md
design-html/SKILL.md
design-motion/SKILL.md
design-review/SKILL.md
design-shotgun/SKILL.md
deslop-shared-libs/SKILL.md
diagram/SKILL.md
eval-plan/SKILL.md
freeze/SKILL.md
guard/SKILL.md
investigate/SKILL.md
ios-clean/SKILL.md
ios-design-review/SKILL.md
ios-sync/SKILL.md
landing-report/SKILL.md
make-pdf/SKILL.md
modernize/SKILL.md
open-gstack-browser/SKILL.md
openclaw/skills/gstack-openclaw-ceo-review/SKILL.md
openclaw/skills/gstack-openclaw-investigate/SKILL.md
openclaw/skills/gstack-openclaw-office-hours/SKILL.md
openclaw/skills/gstack-openclaw-retro/SKILL.md
pair-agent/SKILL.md
plan-design-review/SKILL.md
plan-devex-review/SKILL.md
plan-tune/SKILL.md
qa-only/SKILL.md
qa/SKILL.md
scrape/SKILL.md
setup-browser-cookies/SKILL.md
setup-deploy/SKILL.md
setup-gbrain/SKILL.md
ship/SKILL.md
skillify/SKILL.md
spec/SKILL.md
sync-gbrain/SKILL.md
test-audit/SKILL.md
test/fixtures/context-bill/tree-a/alpha/SKILL.md
test/fixtures/golden/agy-ship-SKILL.md
test/fixtures/golden/claude-ship-SKILL.md
test/fixtures/golden/codex-ship-SKILL.md
test/fixtures/golden/factory-ship-SKILL.md

元信息

文件数
0
版本
82db89a
Hash
f3dfed24
收录时间
2026-07-25 11:04

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.156.0. UTC+08:00, 2026-11-06 21:26
浙ICP备14020137号-1