git-guardrails-claude-code

作成者: mattpocock

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

npx skills add https://github.com/mattpocock/skills --skill git-guardrails-claude-code

Setup Git Guardrails

Sets up a PreToolUse hook that intercepts and blocks dangerous git commands before Claude executes them.

What Gets Blocked

  • git push (all variants including --force)
  • git reset --hard
  • git clean -f / git clean -fd
  • git branch -D
  • git checkout . / git restore .

When blocked, Claude sees a message telling it that it does not have authority to access these commands.

Steps

1. Ask scope

Ask the user: install for this project only (.claude/settings.json) or all projects (~/.claude/settings.json)?

2. Copy the hook script

The bundled script is at: scripts/block-dangerous-git.sh

Copy it to the target location based on scope:

  • Project: .claude/hooks/block-dangerous-git.sh
  • Global: ~/.claude/hooks/block-dangerous-git.sh

Make it executable with chmod +x.

3. Add hook to settings

Add to the appropriate settings file:

Project (.claude/settings.json):

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

Global (~/.claude/settings.json):

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

If the settings file already exists, merge the hook into the existing hooks.PreToolUse array. Don't overwrite other settings.

4. Ask about customization

Ask if user wants to add or remove any patterns from the blocked list. Edit the copied script accordingly.

5. Verify

Run a quick test:

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

Should exit with code 2 and print a BLOCKED message to stderr.

mattpocockのその他のスキル

writing-for-agents
mattpocock
エージェント向けのドキュメント作成。スキルの作成・編集、またはAGENTS.mdやCLAUDE.mdの修正時に使用する。
wait-what
mattpocock
止まれ。直前のメッセージは伝わらなかった — 言い直せ。
communication
to-questionnaire
mattpocock
完全に答えられない決定を、他の誰かが記入するためのアンケートに変換する。
grill-me
mattpocock
ユーザーの計画や設計について、決定木の各分岐を解決しながら、相互理解に達するまで執拗に質問を続けます。ユーザーが計画をストレステストしたい、設計について詰められたい、または「grill me」と言った場合に使用します。
researchcommunicationproject-management
tdd
mattpocock
テスト駆動開発のレッド・グリーン・リファクタリングループ。ユーザーがTDDを使って機能を構築したりバグを修正したい場合、「レッド・グリーン・リファクタリング」に言及した場合、統合テストを希望する場合、またはテストファースト開発を依頼した場合に使用します。
developmenttesting
handoff
mattpocock
現在の会話を、別のエージェントが引き継ぐためのハンドオフ文書に圧縮します。
communicationproject-managementdocument
prototype
mattpocock
本番実装に入る前に、設計を具体化するための使い捨てプロトタイプを構築します。2つのブランチに分岐します。状態やビジネスロジックの検証用の実行可能なターミナルアプリ、または1つのルートから切り替え可能な複数の根本的に異なるUIバリエーションです。ユーザーがプロトタイプ作成、データモデルやステートマシンの健全性チェック、UIのモックアップ、デザインオプションの探索を希望する場合、または「これをプロトタイプ化して」「試しに触らせて」「いくつかのデザインを試して」と指示した場合に使用します。
developmentdesigncreative
triage
mattpocock
トリアージロールによって駆動されるステートマシンを通じて課題をトリアージします。ユーザーが課題を作成したい、課題をトリアージしたい、新着のバグや機能リクエストをレビューしたい、AFKエージェント向けに課題を準備したい、または課題ワークフローを管理したい場合に使用します。
developmentproject-managementcommunication