🔧
Claude Code の EditorConfig 違反を PostToolUse Hook で自動修正する
はじめに
Claude Code が生成するコードで、以下のような EditorConfig のルール違反が発生していた。
- 空白スペースが含まれる空行
- 最終行に改行が入らない
CLAUDE.md で EditorConfig を参照するよう指示しても、実際には守られないことが多く効果的ではなかった。
解決方法
PostToolUse hookとeditorconfig-checkerを組み合わせることで、ファイル編集時に自動的にEditorConfigのルールチェックと修正を行う。
実装内容
1. editorconfig-checker のインストール (Mac)
brew install editorconfig-checker
2. Claude Code の設定
.claude/settings.json
{
...
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/editorconfig-autofix.sh"
}
]
}
]
}
}
3. Hook スクリプト
.claude/hooks/editorconfig-autofix.sh
#!/bin/bash
input=$(cat)
file_path=$(echo "$input" | jq -r '.tool_input.file_path // empty')
if [ -n "$file_path" ] && [ -f "$file_path" ]; then
if ! editorconfig-checker "$file_path" >/dev/null 2>&1; then
echo "EditorConfig violations found in $file_path" >&2
editorconfig-checker "$file_path" 2>&1 | head -20 >&2
exit 2 # Claude Codeに違反を通知し、修正を促す
fi
fi
動作フロー
- Claude Code がファイルを編集(Write/Edit/MultiEdit)
- PostToolUse hook から editorconfig-checker が実行される
- editorconfig-checker は EditorConfig のルール違反を検証(修正はしない)
- 違反が見つかった場合、エラーメッセージと共に exit 2 で終了
- Claude Code はエラー内容を認識し、自動的に違反箇所を修正
- 修正後、再度 hook が実行され、問題がなければ完了
Discussion