git-guardrails-claude-code について
Claude Code に Git の安全フックを設定し、危険なコマンドの実行前に遮断するスキルです。破壊的な Git 操作を制限したいユーザー向けで、プロジェクト単位とグローバル設定、ルールのカスタマイズに対応します。
主な機能
- 01危険な Git コマンドの遮断
- 02プロジェクト単位・グローバル設定
- 03遮断パターンのカスタマイズ
- 04テストコマンドによるフック検証
活用シーン
- 01Claude Code による git push の防止
- 02ハードリセットや作業領域の削除対策
- 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 --hardgit clean -f/git clean -fdgit branch -Dgit 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