Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 0品質スコア 50/100

block-no-verify-hook

`--no-verify` やその他のバイパスフラグを使って git の pre-commit フックをスキップすることを AI エージェントに禁止する `PreToolUse` フックを設定します。コミット品質ゲートを強制する Claude Code プロジェクトのセットアップ時に活用してください。

description の原文を見る

Configure a PreToolUse hook to prevent AI agents from skipping git pre-commit hooks with --no-verify and other bypass flags. Use when setting up Claude Code projects that enforce commit quality gates.

SKILL.md 本文

No-Verify をブロックするフック

PreToolUse フック設定で、実行前にバイパスフラグの使用をインターセプトしてブロックし、AI エージェントが pre-commit フック、GPG 署名、その他の git セーフティメカニズムをスキップできないようにします。

概要

AI コーディングエージェント (Claude Code, Codex など) は --no-verify などのフラグを含むシェルコマンドを実行して、pre-commit フックをバイパスすることができます。これは lint、フォーマット、テスト、pre-commit フックに設定されているセキュリティチェックの目的を無くしてしまいます。block-no-verify フックは、実行前にバイパスフラグを含むツール呼び出しを拒否する PreToolUse ガードを追加します。

問題

AI エージェントがコードをコミットする際、フック失敗を避けるためにバイパスフラグを使用することがあります:

# これらのコマンドは pre-commit フックを完全にスキップします
git commit --no-verify -m "quick fix"
git push --no-verify
git commit --no-gpg-sign -m "unsigned commit"
git merge --no-verify feature-branch

これにより以下が可能になります:

  • フォーマットされていないコードがリポジトリに入る
  • Lint エラーがチェックを回避する
  • セキュリティスキャンがスキップされる
  • 署名されていないコミットが署名ポリシーをバイパスする
  • テストスイートが回避される

ソリューション

.claude/settings.jsonPreToolUse フックを追加して、すべての Bash ツール呼び出しを検査し、バイパスフラグを含むコマンドをブロックします。

設定

プロジェクトの .claude/settings.json に以下を追加します:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hook": {
          "type": "command",
          "command": "if printf '%s' \"$TOOL_INPUT\" | grep -qE '(^|&&|;|\\|)\\s*git\\s+.*--(no-verify|no-gpg-sign)'; then echo 'BLOCKED: --no-verify and --no-gpg-sign flags are not allowed. Run the commit without bypass flags so that pre-commit hooks execute properly.' >&2; exit 2; fi"
        }
      }
    ]
  }
}

動作方法

  1. Matcher: フックは Bash ツール呼び出しのみをターゲットにするため、他のツール (Read、Edit、Grep など) に干渉しません。
  2. 検査: $TOOL_INPUT 環境変数には、エージェントが実行しようとしているフルコマンドが含まれます。フックは printf を使用して入力を安全に渡し (echo の特殊文字の落とし穴を回避)、git コマンドの直後に続く場合のみ --no-verify または --no-gpg-sign フラグをチェックします。
  3. ブロッキング: git コマンド内でバイパスフラグが見つかった場合、フックは終了コード 2 で終了してエラーメッセージを出力します。終了コード 2 は Claude Code にツール呼び出し全体を拒否するよう指示します。
  4. パススルー: バイパスフラグが見つからない場合、フックは終了コード 0 で終了してコマンドは通常通り実行されます。

終了コード

コード意味
0ツール呼び出しの実行を許可
1エラー (ツール呼び出しは進行、警告が表示される)
2ツール呼び出しを完全にブロック

ブロックされるフラグ

フラグ目的ブロック理由
--no-verifypre-commit および commit-msg フックをスキップlint、フォーマット、テスト、セキュリティチェックをバイパス
--no-gpg-signGPG コミット署名をスキップコミット署名ポリシーをバイパス

インストール

プロジェクト単位のセットアップ

プロジェクトルートに .claude/settings.json を作成または更新します:

mkdir -p .claude
cat > .claude/settings.json << 'EOF'
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hook": {
          "type": "command",
          "command": "if printf '%s' \"$TOOL_INPUT\" | grep -qE '(^|&&|;|\\|)\\s*git\\s+.*--(no-verify|no-gpg-sign)'; then echo 'BLOCKED: --no-verify and --no-gpg-sign flags are not allowed. Run the commit without bypass flags so that pre-commit hooks execute properly.' >&2; exit 2; fi"
        }
      }
    ]
  }
}
EOF

グローバルセットアップ

すべてのプロジェクトに適用するには、~/.claude/settings.json に追加します:

mkdir -p ~/.claude
cat > ~/.claude/settings.json << 'EOF'
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hook": {
          "type": "command",
          "command": "if printf '%s' \"$TOOL_INPUT\" | grep -qE '(^|&&|;|\\|)\\s*git\\s+.*--(no-verify|no-gpg-sign)'; then echo 'BLOCKED: --no-verify and --no-gpg-sign flags are not allowed. Run the commit without bypass flags so that pre-commit hooks execute properly.' >&2; exit 2; fi"
        }
      }
    ]
  }
}
EOF

検証

フックがバイパスフラグをブロックすることを確認します:

# これはフックによってブロックされるはずです:
git commit --no-verify -m "test"

# これは通常通り成功するはずです:
git commit -m "test"

フックの拡張

さらにブロックするフラグを追加

追加のフラグ (--force など) をブロックするには、grep パターンを拡張します:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hook": {
          "type": "command",
          "command": "if printf '%s' \"$TOOL_INPUT\" | grep -qE '(^|&&|;|\\|)\\s*git\\s+.*--(no-verify|no-gpg-sign|force-with-lease|force)'; then echo 'BLOCKED: Bypass flags are not allowed.' >&2; exit 2; fi"
        }
      }
    ]
  }
}

他のフックと組み合わせる

block-no-verify フックは他の PreToolUse フックと並行して動作します:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hook": {
          "type": "command",
          "command": "if printf '%s' \"$TOOL_INPUT\" | grep -qE '(^|&&|;|\\|)\\s*git\\s+.*--(no-verify|no-gpg-sign)'; then echo 'BLOCKED: Bypass flags not allowed.' >&2; exit 2; fi"
        }
      },
      {
        "matcher": "Bash",
        "hook": {
          "type": "command",
          "command": "if printf '%s' \"$TOOL_INPUT\" | grep -qE 'rm\\s+-rf\\s+/'; then echo 'BLOCKED: Dangerous rm command.' >&2; exit 2; fi"
        }
      }
    ]
  }
}

ベストプラクティス

  1. 設定ファイルをコミット -- .claude/settings.json をバージョン管理に追加すれば、すべてのチームメンバーがフックの恩恵を受けます。
  2. オンボーディングドキュメント -- プロジェクトの貢献ガイドにフックについて記載して、開発者がバイパスフラグがブロックされる理由を理解できるようにします。
  3. pre-commit フックと組み合わせる -- block-no-verify フックは pre-commit フックが実行されることを保証します。意味のある pre-commit フックが設定されていることを確認してください。
  4. セットアップ後にテスト -- テストコミットで意図的にトリガーしてフックが機能することを確認します。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
wshobson
リポジトリ
wshobson/agents
ライセンス
MIT
最終更新
不明

Source: https://github.com/wshobson/agents / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: wshobson · wshobson/agents · ライセンス: MIT