mcpField
C
careful

careful

github.com/garrytanエージェントワークフロー138.1k379 回インストール今日更新
リポジトリ

careful について

careful は、実行前に Bash と PowerShell の破壊的なパターンを検査する、セッション単位の安全スキルです。多くの危険な操作には警告し、一部の極めて危険なコマンド形式は拒否します。

主な機能

  1. 01破壊的なコマンドパターンを検出
  2. 02危険な操作の前に警告
  3. 03指定された重大なコマンドを拒否
  4. 04Bash と PowerShell のコマンドを検査
  5. 05プロジェクト固有の警告パターンを追加

活用シーン

  1. 01誤った再帰削除コマンドを検知
  2. 02危険なデータベースや Git 操作を確認
  3. 03プロジェクト向けの追加警告を設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/garrytan/gstack --skill careful

インストール後、Claude Code で/carefulを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

SKILL.md.tmpl
bin/
check-careful.sh
hook-extract.sh
mask-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 --recursiverm -rf /var/data再帰的な削除
DROP TABLE / DROP DATABASEDROP TABLE users;データ損失
TRUNCATETRUNCATE orders;データ損失
git push --force / -fgit push -f origin main履歴の書き換え
git reset --hardgit reset --hard HEAD~3コミットされていない作業の損失
git checkout . / git restore .git checkout .コミットされていない作業の損失
kubectl deletekubectl delete pod本番環境への影響
docker rm -f / docker system prunedocker 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 または -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、& $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 つ記述し、# コメントも使用できます。組み込みのパターン群をチェックした後に適用されるため、設定で追加できるのはルールのみで、標準の警告を抑制することはできません。無効な正規表現の行はスキップされます。

無効にするには、会話を終了するか、新しい会話を開始してください。フックはセッション限定です。

コメント