# Git 危険コマンド防止 (git-guardrails-claude-code)

> Claude Code に PreToolUse フックを設定し、git push や reset --hard などの危険なコマンドを実行前にブロックします。

- カテゴリ: [ハードニング](https://www.myskills.tools/ja/categories/hardening/)
- 提供元: コミュニティ · Matt Pocock
- リポジトリ: https://github.com/mattpocock/skills/tree/main/skills/misc/git-guardrails-claude-code (commit 3216582)
- SKILL.md: https://github.com/mattpocock/skills/blob/main/skills/misc/git-guardrails-claude-code/SKILL.md
- インストールコマンド: `npx skills add mattpocock/skills --skill git-guardrails-claude-code`
- ライセンス: MIT
- 対応ツール: Claude Code, Codex, Copilot, Gemini CLI
- 権限: read-repo ✓, write-files ✓, shell ✓, network ✗
- 状態: スキャン済み
- ルールスキャンですべてのリスクを検出できるわけではありません。インストール前にこのスキルの SKILL.md を読み、権限を確認してください。
- ⚠ Claude Code のフック設定（プロジェクトまたはグローバル）を変更し、以後 Claude は git push などを実行できなくなります。

## 基本ルール

既存の settings ファイルがある場合は hooks.PreToolUse 配列にフックをマージし、他の設定は上書きしません。

## 実行フェーズ

1. **適用範囲を確認** — このプロジェクトのみ（.claude/settings.json）か、全プロジェクト（~/.claude/settings.json）かをユーザーに確認します。
2. **スクリプトを配置** — 同梱の block-dangerous-git.sh を .claude/hooks/ または ~/.claude/hooks/ にコピーし、chmod +x で実行可能にします。
3. **設定に追加** — 該当する settings.json に matcher が Bash の PreToolUse フックを登録し、既存の設定とマージします。
4. **パターンの調整** — ブロック対象のパターンを追加・削除したいかを確認し、コピーしたスクリプトを編集します。
5. **動作確認** — git push を模した入力をスクリプトに渡し、終了コード 2 で終わり stderr に BLOCKED が出ることを確認します。

## 権限の説明（SKILL.md より）

| 機能 | 必要か | 説明 |
|---|---|---|
| ファイル書き込み | 一部で必要 | フックスクリプト（.claude/hooks/ 配下）と該当する settings.json のみを書き込みます。 |
| コマンド実行 | 一部で必要 | chmod +x と、テスト入力でフックスクリプトを呼び出す検証のみを実行します。 |
| 外部通信 | 不要 | ネットワークアクセスは不要です。 |

## SKILL.md のフロントマター（YAML）

```yaml
---
name: git-guardrails-claude-code
description: Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.
---
```

ホーム: https://www.myskills.tools/ja/ · URL: https://www.myskills.tools/ja/skills/git-guardrails-claude-code/
