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 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のその他のスキル

improve-codebase-architecture
mattpocock
コードベース内の深化の機会を見つけます。CONTEXT.mdのドメイン言語とdocs/adr/の決定事項に基づきます。ユーザーがアーキテクチャを改善したい、リファクタリングの機会を見つけたい、密結合モジュールを統合したい、またはコードベースをよりテスト可能でAIがナビゲートしやすくしたい場合に使用します。
developmentcode-reviewapi
tdd
mattpocock
テスト駆動開発のレッド・グリーン・リファクタリングループ。ユーザーがTDDを使って機能を構築したりバグを修正したい場合、「レッド・グリーン・リファクタリング」に言及した場合、統合テストを希望する場合、またはテストファースト開発を依頼した場合に使用します。
developmenttesting
handoff
mattpocock
現在の会話を、別のエージェントが引き継ぐためのハンドオフ文書に圧縮します。
communicationproject-managementdocument
prototype
mattpocock
本番実装に入る前に、設計を具体化するための使い捨てプロトタイプを構築します。2つのブランチに分岐します。状態やビジネスロジックの検証用の実行可能なターミナルアプリ、または1つのルートから切り替え可能な複数の根本的に異なるUIバリエーションです。ユーザーがプロトタイプ作成、データモデルやステートマシンの健全性チェック、UIのモックアップ、デザインオプションの探索を希望する場合、または「これをプロトタイプ化して」「試しに触らせて」「いくつかのデザインを試して」と指示した場合に使用します。
developmentdesigncreative
triage
mattpocock
トリアージロールによって駆動されるステートマシンを通じて課題をトリアージします。ユーザーが課題を作成したい、課題をトリアージしたい、新着のバグや機能リクエストをレビューしたい、AFKエージェント向けに課題を準備したい、または課題ワークフローを管理したい場合に使用します。
developmentproject-managementcommunication
obsidian-vault
mattpocock
Obsidianボルト内のノートを検索、作成、管理し、ウィキリンクやインデックスノートを扱います。ユーザーがObsidianでノートを検索、作成、整理したい場合に使用します。
productivitydocument
edit-article
mattpocock
記事のセクションを再構成し、明確さを向上させ、文章を引き締めることで編集・改善します。ユーザーが記事の草稿を編集、修正、または改善したい場合に使用します。
documentcreative
writing-great-skills
mattpocock
スキルを適切に記述・編集するためのリファレンス — スキルを予測可能にする語彙と原則。
documentdevelopment