careful について
careful は、実行前に Bash と PowerShell の破壊的なパターンを検査する、セッション単位の安全スキルです。多くの危険な操作には警告し、一部の極めて危険なコマンド形式は拒否します。
主な機能
- 01破壊的なコマンドパターンを検出
- 02危険な操作の前に警告
- 03指定された重大なコマンドを拒否
- 04Bash と PowerShell のコマンドを検査
- 05プロジェクト固有の警告パターンを追加
活用シーン
- 01誤った再帰削除コマンドを検知
- 02危険なデータベースや Git 操作を確認
- 03プロジェクト向けの追加警告を設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ garrytan/ gstack --skill carefulインストール後、Claude Code で/carefulを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
SKILL.md.tmplbin/check-careful.shhook-extract.shmask-commit-message.awk詳細
/careful — 破壊的なコマンドに対するガードレール
セーフティモードが有効になりました。すべての Bash および PowerShell コマンドは、実行前に破壊的なパターンがないかチェックされます。破壊的なコマンドが検出されると警告が表示され、続行するかキャンセルするかを選択できます。
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
保護対象
| パターン | 例 | リスク |
|---|---|---|
rm -rf / rm -r / rm --recursive | rm -rf /var/data | 再帰的な削除 |
DROP TABLE / DROP DATABASE | DROP TABLE users; | データ損失 |
TRUNCATE | TRUNCATE orders; | データ損失 |
git push --force / -f | git push -f origin main | 履歴の書き換え |
git reset --hard | git reset --hard HEAD~3 | コミットされていない作業の損失 |
git checkout . / git restore . | git checkout . | コミットされていない作業の損失 |
kubectl delete | kubectl delete pod | 本番環境への影響 |
docker rm -f / docker system prune | docker system prune -a | コンテナー/イメージの損失 |
PowerShell と cmd(Windows)
このフックは、PowerShell ツール(Claude Code の Windows 向けメインシェル)と、Bash から起動された pwsh/powershell/cmd もチェックします。一致判定では大文字と小文字を区別せず、コマンド位置でのエイリアスにも対応し、パラメーターのプレフィックス(-r、-fo)を許容し、cmd の ^ エスケープを取り除きます。上記のすべての行がここにも適用されます。
| パターン | 例 |
|---|---|
Remove-Item/rm/ri/del/erase/rd/rmdir と -Recurse または -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、& $cmd(検査できません) | irm $url | iex |
PowerShell でのベストエフォートです。 文字列の一致判定では、実行時に組み立てられるコマンドを検出できません。確実に阻止するには、PowerShell とそのエイリアスを解析する Claude Code の権限拒否ルールを追加してください。.claude/settings.json に "deny": ["PowerShell(Remove-Item *)"] と設定します。このフックは bash 経由で実行されるため、Windows では Git Bash が必要です。
安全な例外
次のパターンは警告なしで許可されます。
rm -rf node_modules/.next/dist/__pycache__/.cache/build/.turbo/coverage
仕組み
このフックはツール入力 JSON から tool_name とコマンドを読み取り、上記のパターンと照合します。一致が見つかった場合は、permissionDecision: "ask" と警告理由を含む hookSpecificOutput ペイロードを返します(決定は hookSpecificOutput の下にネストする必要があります。トップレベルの permissionDecision は Claude Code に無視されます)。MEDIUM 警告はいつでも上書きして続行できます。
HIGH ティア(強制拒否)
壊滅的な被害につながる次の 2 つの形式は、確認を求めず拒否されます。/、~、または $HOME を対象とする rm -r/-R と、リポジトリのデフォルトブランチへの強制プッシュです。対象は単純なコマンドのみです(;、&&、||、|、改行を含まないもの)。複合形式は MEDIUM の確認に進みます。--force-with-lease が HIGH になることはありません。これはベストエフォートの警告による強制停止であり、ポリシー上の境界ではありません。オプトインでセッション限定の /careful セッションを終了すれば、この制限を回避できます。
プロジェクトのパターン(追加のみ)
警告ルールを ~/.gstack/careful-patterns.txt(グローバル)または ~/.gstack/projects/<slug>/careful-patterns.txt(プロジェクトごと)に追加してください。1 行に POSIX ERE を 1 つ記述し、# コメントも使用できます。組み込みのパターン群をチェックした後に適用されるため、設定で追加できるのはルールのみで、標準の警告を抑制することはできません。無効な正規表現の行はスキップされます。
無効にするには、会話を終了するか、新しい会話を開始してください。フックはセッション限定です。