Hooks — Claude Code 동작에 자동 작업 연결
Claude가 특정 도구를 쓰기 전/후에 자동으로 스크립트를 실행시키는 이벤트 시스템.
파일을 수정할 때마다 린터를 직접 돌리는 건 귀찮다. Hooks를 걸면 Claude가 파일을 저장하는 그 순간 자동으로 린트·포맷·테스트가 실행된다.
Hooks는 Claude Code의 이벤트 트리거 시스템이다. Claude가 도구(Tool)를 사용하기 직전(PreToolUse), 직후(PostToolUse), 또는 알림(Notification) 시점에 사용자가 지정한 명령어를 자동 실행한다. 일종의 'Git Hooks'와 비슷한 개념이다.
| 이벤트 | 실행 시점 | 대표 용도 |
|---|---|---|
| PreToolUse | Claude가 도구를 쓰기 직전 | 위험한 명령어 차단, 입력 검증 |
| PostToolUse | Claude가 도구를 쓴 직후 | 린터 실행, 포맷팅, 자동 테스트 |
| Notification | Claude가 사용자에게 알림을 보낼 때 | 슬랙 알림, 로그 기록 |
// .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"command": "npx eslint --fix $CLAUDE_FILE_PATH"
}
],
"PreToolUse": [
{
"matcher": "Bash",
"command": "echo '⚠️ Bash 명령어 실행 감지'"
}
]
}
}matcher에 도구 이름(정규식)을 적고, command에 실행할 셸 명령어를 적는다. Edit이나 Write가 실행된 후 자동으로 ESLint가 돈다.
실전 활용 예시: - PostToolUse + Edit → 파일 수정 후 자동으로 `prettier --write` 실행 - PostToolUse + Write → 새 파일 생성 후 자동으로 `npx tsc --noEmit` 타입 체크 - PreToolUse + Bash → 위험한 명령어(`rm -rf`, `DROP TABLE`) 실행 전 경고 - Notification → 작업 완료 시 슬랙 웹훅으로 팀에 알림 전송
Hooks는 `.claude/settings.json`에 설정하며, 프로젝트 레벨과 사용자 레벨 모두 지원한다. 주의할 점: Hook 명령어가 실패(exit code ≠ 0)하면 Claude의 해당 도구 실행이 중단될 수 있으므로, 반드시 테스트 후 적용하자.