CC逆引きリファレンス

ファイル保存後に lint したい

10. フック

コマンド / 機能

PostToolUse + Write

概要

Write ツールでファイル保存後に ESLint を実行する設定例です。--fix オプションで自動修正も行えます。

設定例

// settings.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write(*.js)",
        "hooks": [
          {
            "type": "command",
            "command": "npx eslint --fix \"$CLAUDE_FILE_PATH\" 2>&1 | head -30 || true"
          }
        ]
      },
      {
        "matcher": "Write(*.ts)",
        "hooks": [
          {
            "type": "command",
            "command": "npx eslint --fix \"$CLAUDE_FILE_PATH\" 2>&1 | head -30 || true"
          }
        ]
      },
      {
        "matcher": "Edit(*.{js,ts,jsx,tsx})",
        "hooks": [
          {
            "type": "command",
            "command": "npx eslint --fix \"$CLAUDE_FILE_PATH\" 2>&1 | head -30 || true"
          }
        ]
      }
    ]
  }
}

こんな時に使う

  • 保存のたびに自動で lint を実行したい時
  • コード品質を自動的に保ちたい時
  • Claude が生成したコードを自動修正したい時
  • リンターエラーを Claude にフィードバックしたい時

使い方

  1. 1PostToolUse イベントに Write/Edit マッチャーを設定
  2. 2matcher で拡張子を指定してファイルタイプを絞る
  3. 3--fix オプションで自動修正を有効化
  4. 4head -30 で出力を制限し Claude の負担を軽減

Tips

  • || true を付けると lint エラーでも続行する
  • 2>&1 で stderr も stdout に統合して Claude に表示
  • Write と Edit の両方に設定すると漏れなくカバー
  • matcher に {js,ts,jsx,tsx} のブレース展開が使える