Zenn Dev Owayo Articles B9dcbf7322b329
Claude Code, Curosr, Windsurf のHooks設定を10倍楽にする claw-hooks
- URL: https://zenn.dev/owayo/articles/b9dcbf7322b329
- 日付: 2026-06-26
- Tier: Tier 3
- 要旨: Claude Code・Cursor・WindsurfなどのAIコーディングエージェントのHooks設定を、PythonやBashスクリプトを書かずにTOML設定だけで定義できるRust製ツール「claw-hooks」が公開された。エージェントごとに異なるJSON形式を内部で吸収するため、1つの設定ファイルで複数エージェントに対応できる。危険コマンドのブロックは rm_block = true の1行で完結し、AST解析(tree-sitter-bash)によってsudoやパイプ経由の間接的なコマンドも正確に検出する。ファイル保存時の拡張子別フォーマッター実行も extension_hooks に1行ずつ書くだけで設定でき、従来の複雑なスクリプトを大幅に簡素化できる。
詳細
claw-hooks は複数AIコーディングエージェントのHooks設定を統一するRust製シングルバイナリ(起動時間 <10ms)。
解決する問題:
- エージェントごとにHooksのJSON構造が異なり(Claude Code: tool_input.command、Cursor: command直下、Windsurf: tool_info.command_line)、同じ機能でも別々のスクリプトが必要だった問題を解消
主な機能:
- rm_block = true、kill_block = true、dd_block = true の1行でデフォルトメッセージ付き危険コマンドブロック
- [[custom_filters]] でカスタムフィルターを定義。コマンドのみ(全ブロック)と command + args の組み合わせ(サブコマンド単位制御)の2モード
- [extension_hooks] マップで拡張子別フォーマッター自動実行(例: “.rs” = [“rustfmt {file}"])
- [[stop_hooks]] でエージェント終了時通知
- –format cursor / –format windsurf フラグで各エージェントのJSON形式に自動変換
- tree-sitter-bash によるAST解析で sudo rm、echo “setup” | xargs rm なども検出可能
設定の伝達方法:
- Claude Code: ~/.claude/settings.json に claw-hooks hook を登録
- Cursor: ~/.cursor/hooks.json に claw-hooks hook –format cursor を登録
- Windsurf: ~/.codeium/windsurf/hooks.json に claw-hooks hook –format windsurf を登録
インストール: brew install owayo/claw-hooks/claw-hooks