ファイル保存後に 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 にフィードバックしたい時
使い方
- 1PostToolUse イベントに Write/Edit マッチャーを設定
- 2matcher で拡張子を指定してファイルタイプを絞る
- 3--fix オプションで自動修正を有効化
- 4head -30 で出力を制限し Claude の負担を軽減
Tips
- || true を付けると lint エラーでも続行する
- 2>&1 で stderr も stdout に統合して Claude に表示
- Write と Edit の両方に設定すると漏れなくカバー
- matcher に {js,ts,jsx,tsx} のブレース展開が使える