Skip to content
cccskills
FreePublished on GitHub

careful

Check shell commands before they run and warn about destructive actions such as file deletion, database removal, and Git history changes. Users can approve ordinary warnings, while certain catastrophic command patterns are denied.

OriginalShow the original description

Safety guardrails for destructive commands. (gstack)

Works withKubernetes
See how to install

Good for

  • Check destructive commands in production
  • Review deletion commands in shared environments
  • Catch Git operations that discard work
  • Add project-specific command warnings

Files included (4)

  • SKILL.md5.0 KB
  • bin/check-careful.sh19.4 KB
  • bin/hook-extract.sh10.2 KB
  • SKILL.md.tmpl4.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly --> <!-- Regenerate: bun run gen:skill-docs -->

When to invoke this skill

Warns before rm -rf, DROP TABLE, force-push, git reset --hard, kubectl delete, and similar destructive operations. User can override each warning. Use when touching prod, debugging live systems, or working in a shared environment. Use when asked to "be careful", "safety mode", "prod mode", or "careful mode".

/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

PatternExampleRisk
rm -rf / rm -r / rm --recursiverm -rf /var/dataRecursive delete
DROP TABLE / DROP DATABASEDROP TABLE users;Data loss
TRUNCATETRUNCATE orders;Data loss
git push --force / -fgit push -f origin mainHistory rewrite
git reset --hardgit reset --hard HEAD~3Uncommitted work loss
git checkout . / git restore .git checkout .Uncommitted work loss
kubectl deletekubectl delete podProduction impact
docker rm -f / docker system prunedocker system prune -aContainer/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.

PatternExample
Remove-Item/rm/ri/del/erase/rd/rmdir + -Recurse or -Forcegci | ri -r -fo
cmd rd /s, rmdir /s, del /s, erase /scmd /c rd /s /q C:\proj
Format-Volume, Clear-Disk, Clear-Content, [IO.Directory]::Delete, [IO.File]::DeleteClear-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.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

autoplan

FreeSummary

Run sequential reviews of a plan from business, design, engineering, and developer experience perspectives. Apply six principles to intermediate decisions, then bring close choices, scope questions, and reviewer disagreements to a final approval step.

  • Reviewing a plan from several perspectives
  • Running reviews without answering every intermediate question
  • Considering close choices and disagreements at final approval
garrytan/gstack136.9KUpdated Oct 18, 2026

benchmark

FreeSummary

Measure web page loading times, rendering milestones, and resource sizes in a real browser. Save baseline measurements, compare results before and after code changes, and inspect historical trends to spot performance regressions.

  • Saving performance baselines before changes
  • Checking page speed after a code change
  • Finding slow resources and large transfers
garrytan/gstack136.9KUpdated Oct 18, 2026

benchmark-models

FreeSummary

Compare Claude, GPT, and Gemini on the same skill or prompt. Get a table of response times, token usage, and costs, with optional AI scoring to help choose a model for the task.

  • Choosing a model for a specific skill
  • Comparing response times and costs
  • Comparing output quality with optional AI scoring
garrytan/gstack136.9KUpdated Oct 18, 2026

browse

FreeSummary

Open web pages, follow navigation, and check form flows in a browser. Capture screenshots at different screen sizes, compare pages before and after actions, and collect console errors, the technical messages that can reveal page problems.

  • Checking navigation and form flows
  • Capturing mobile, tablet, and desktop views
  • Recording screenshots and console errors
garrytan/gstack136.9KUpdated Oct 18, 2026

canary

FreeSummary

Monitor a live app after deployment for console errors, slower performance, and page failures. Periodic screenshots and comparisons with pre-deployment baselines help identify anomalies and check whether the release is behaving as expected.

  • Monitoring a live app after deployment
  • Checking for performance regressions after a release
  • Comparing screenshots before and after deployment
garrytan/gstack136.9KUpdated Oct 18, 2026

codex

FreeSummary

Use OpenAI Codex CLI to review code changes, challenge an implementation by looking for ways it could fail, or discuss technical questions. Three modes provide an independent opinion, with follow-up questions supported in ongoing consultations.

  • Get an independent review of code changes
  • Challenge code to uncover possible failures
  • Continue a technical consultation with follow-up questions
garrytan/gstack136.9KUpdated Oct 18, 2026

See all skills by garrytan

Report a problem with this skill