mcpField
G
git-guardrails-claude-code

git-guardrails-claude-code

github.com/akillnessエージェントワークフロー5364 回インストール1 日前に更新
リポジトリ

git-guardrails-claude-code について

Claude Code に Git の安全フックを設定し、危険なコマンドの実行前に遮断するスキルです。破壊的な Git 操作を制限したいユーザー向けで、プロジェクト単位とグローバル設定、ルールのカスタマイズに対応します。

主な機能

  1. 01危険な Git コマンドの遮断
  2. 02プロジェクト単位・グローバル設定
  3. 03遮断パターンのカスタマイズ
  4. 04テストコマンドによるフック検証

活用シーン

  1. 01Claude Code による git push の防止
  2. 02ハードリセットや作業領域の削除対策
  3. 03複数プロジェクトでの共通制限

インストール

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

$npx skills add https://github.com/akillness/jeo-skills --skill git-guardrails-claude-code

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

同梱ファイルscripts/block-dangerous-git.sh

詳細

Claude Code の Git ガードレール

危険な Git コマンド(push、reset --hard、clean、branch -D など)が実行される前にブロックする Claude Code フックを設定します。破壊的な Git 操作を防止したい場合、Git の安全フックを追加したい場合、または Claude Code で git push/reset をブロックしたい場合に使用します。

このスキルは mattpocock/skills(MIT)からインポートされており、上流ではモデルによって呼び出されます。

このスキルを使用するタイミング

  • 危険な Git コマンド(push、reset --hard、clean、branch -D など)が実行される前にブロックする Claude Code フックを設定します。
  • 破壊的な Git 操作を防止したい場合、Git の安全フックを追加したい場合、または Claude Code で git push/reset をブロックしたい場合に使用します。

手順

Git ガードレールの設定

Claude が実行する前に危険な Git コマンドを検出してブロックする PreToolUse フックを設定します。

ブロック対象
  • git push(--force を含むすべての形式)
  • git reset --hard
  • git clean -f / git clean -fd
  • git branch -D
  • git checkout . / git restore .

ブロックされると、これらのコマンドにアクセスする権限がないことを伝えるメッセージが Claude に表示されます。

手順
1. 適用範囲を確認する

ユーザーに質問します。このプロジェクトのみ(.claude/settings.json)にインストールしますか、それともすべてのプロジェクト(~/.claude/settings.json)にインストールしますか?

2. フックスクリプトをコピーする

同梱のスクリプトは次の場所にあります:scripts/block-dangerous-git.sh

適用範囲に応じて、対象の場所にコピーします。

  • プロジェクト:.claude/hooks/block-dangerous-git.sh
  • グローバル:~/.claude/hooks/block-dangerous-git.sh

chmod +x で実行可能にします。

3. 設定にフックを追加する

該当する設定ファイルに追加します。

プロジェクト(.claude/settings.json):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-dangerous-git.sh"
          }
        ]
      }
    ]
  }
}

グローバル(~/.claude/settings.json):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/block-dangerous-git.sh"
          }
        ]
      }
    ]
  }
}

設定ファイルがすでに存在する場合は、既存の hooks.PreToolUse 配列にフックを追加してください。他の設定を上書きしないでください。

4. カスタマイズについて確認する

ブロック対象のリストにパターンを追加または削除したいか、ユーザーに確認します。必要に応じて、コピーしたスクリプトを編集します。

5. 検証する

簡単なテストを実行します。

echo '{"tool_input":{"command":"git push origin main"}}' | <path-to-script>

終了コード 2 で終了し、標準エラー出力に BLOCKED メッセージが表示されるはずです。

例

  • まず適用範囲を限定してこのスキルを適用し、出力が上記の形式と一致することを確認してから、対象範囲をタスク全体に広げます。
  • 手順でリポジトリや環境の情報が必要な場合は、ユーザーに尋ねずに調べてください。

ベストプラクティス

  • 上流の手順をそのまま維持し、変更する場合は独自に判断して進めず、変更点を明記してください。
  • このスキルでユーザーの判断が必要とされている箇所では、作業を止めてユーザーに判断を委ねてください。
  • 元に戻しやすい小さな変更を優先し、前提条件は隠さずに明示してください。

参考情報

  • 上流のスキル:mattpocock/skills の skills/misc/git-guardrails-claude-code/SKILL.md(コミット 3cca18b、MIT)
  • スクリプト:scripts/block-dangerous-git.sh
  • プロジェクト標準:.agent-skills/skill-standardization/SKILL.md
  • 検証スクリプト:.agent-skills/skill-standardization/scripts/validate_skill.sh

コメント