이 글에서 제안하는 해결책은 Claude Code Hooks, 특히 PostToolUse
훅을 활용하는 것입니다. PostToolUse
훅은 Claude가 파일을 편집하거나 작성한 후에 특정 스크립트를 자동으로 실행하도록 설정할 수 있게 합니다. 제시된 훅 설정은 다음과 같습니다:
json
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "FILE_PATH=$(jq -r '.tool_input.file_path // empty'); if [[ "$FILE_PATH" =~ \.(rb|rake)$|Rakefile$|Gemfile$ ]]; then echo "Running RuboCop on $FILE_PATH"; bundle exec rubocop --autocorrect "$FILE_PATH"; fi"
}
]
}
]
}
이 설정의 작동 방식은 다음과 같습니다:
- 이벤트 트리거 (
PostToolUse
): Claude가 파일 편집 또는 작성과 같은 도구 작업을 완료한 후에 이 훅이 실행됩니다. - 매처 (
matcher: "Edit|Write"
): 훅이 파일 편집 또는 작성 이벤트 후에만 실행되도록 제한합니다. - 명령어 분석:
FILE_PATH=$(jq -r '.tool_input.file_path // empty')
는 Claude의 도구 입력에서 편집된 파일 경로를 추출합니다.if [[ "$FILE_PATH" =~ \.(rb|rake)$|Rakefile$|Gemfile$ ]]; then
구문은 해당 파일이.rb
,.rake
확장자를 가지거나Rakefile
,Gemfile
과 같은 Ruby 관련 파일인지 확인합니다. 이 조건이 충족되면bundle exec rubocop --autocorrect "$FILE_PATH"
명령어를 실행하여 해당 파일에 대해 RuboCop 자동 수정을 즉시 적용합니다.
참고 사항으로, --autocorrect
옵션은 안전한 수정만 적용하며, 사용자의 환경에서 bundle exec rubocop
명령어가 정상적으로 작동하는지 확인해야 합니다. 이 설정은 수동 개입 없이도 일관된 스타일 가이드를 강제할 수 있다는 장점을 가집니다.