Hookifyルールの作成
概要
Hookifyルールは、YAMLフロントマターを持つMarkdownファイルで、監視するパターンとそのパターンが一致したときに表示するメッセージを定義します。ルールは.claude/hookify.{rule-name}.local.mdファイルに保存されます。
ルールファイルの形式
基本構造
---
name: rule-identifier
enabled: true
event: bash|file|stop|prompt|all
pattern: regex-pattern-here
---
このルールがトリガーされたときにClaudeに表示するメッセージ。
Markdownの書式、警告、提案などを含めることができます。
フロントマターフィールド
| フィールド | 必須 | 値 | 説明 |
|---|---|---|---|
| name | はい | ケバブケース文字列 | 一意の識別子(動詞優先:warn-、block-、require-*) |
| enabled | はい | true/false | 削除せずに有効/無効を切り替える |
| event | はい | bash/file/stop/prompt/all | どのフックイベントがトリガーされるか |
| action | いいえ | warn/block | warn(デフォルト)はメッセージを表示、blockは操作を阻止 |
| pattern | はい* | 正規表現文字列 | 一致させるパターン(*または複雑なルールにはconditionsを使用) |
高度な形式(複数条件)
---
name: warn-env-api-keys
enabled: true
event: file
conditions:
- field: file_path
operator: regex_match
pattern: \.env$
- field: new_text
operator: contains
pattern: API_KEY
---
.envファイルにAPIキーを追加しています。このファイルが.gitignoreにあることを確認してください!
イベントごとの条件フィールド:
- bash:
command - file:
file_path、new_text、old_text、content - prompt:
user_prompt
演算子: regex_match、contains、equals、not_contains、starts_with、ends_with
ルールが発動するにはすべての条件が一致する必要があります。
イベントタイプガイド
bashイベント
Bashコマンドパターンに一致:
- 危険なコマンド:
rm\s+-rf、dd\s+if=、mkfs - 権限昇格:
sudo\s+、su\s+ - 権限の問題:
chmod\s+777
fileイベント
編集/書き込み/マルチ編集操作に一致:
- デバッグコード:
console\.log\(、debugger - セキュリティリスク:
eval\(、innerHTML\s*= - 機密ファイル:
\.env$、credentials、\.pem$
stopイベント
完了チェックとリマインダー。パターン.*は常に一致します。
promptイベント
ワークフロー強制のためにユーザープロンプトの内容に一致。
パターン作成のヒント
正規表現の基本
- 特殊文字のエスケープ:
.→\.、(→\( \s空白、\d数字、\w単語文字+1回以上、*0回以上、?オプション|OR演算子
よくある落とし穴
- 広すぎる:
logは「login」「dialog」にも一致する —console\.log\(を使用 - 狭すぎる:
rm -rf /tmp—rm\s+-rfを使用 - YAMLエスケープ: 引用符なしのパターンを使用。引用符付き文字列の場合は
\\sが必要
テスト
python3 -c "import re; print(re.search(r'your_pattern', 'test text'))"
ファイル構成
- 場所: プロジェクトルートの
.claude/ディレクトリ - 命名:
.claude/hookify.{説明的な名前}.local.md - Gitignore:
.claude/*.local.mdを.gitignoreに追加
コマンド
/hookify [説明]- 新しいルールを作成(引数なしの場合は会話を自動分析)/hookify-list- すべてのルールをテーブル形式で表示/hookify-configure- 対話的にルールのオン/オフを切り替え/hookify-help- 完全なドキュメント
クイックリファレンス
最小限のルール:
---
name: my-rule
enabled: true
event: bash
pattern: dangerous_command
---
警告メッセージをここに