topic난이도 · 약 25

Hooks — Claude Code 동작에 자동 작업 연결

Claude가 특정 도구를 쓰기 전/후에 자동으로 스크립트를 실행시키는 이벤트 시스템.

#Hooks#이벤트#자동화#린터
왜 배우는가

파일을 수정할 때마다 린터를 직접 돌리는 건 귀찮다. Hooks를 걸면 Claude가 파일을 저장하는 그 순간 자동으로 린트·포맷·테스트가 실행된다.

Hooks는 Claude Code의 이벤트 트리거 시스템이다. Claude가 도구(Tool)를 사용하기 직전(PreToolUse), 직후(PostToolUse), 또는 알림(Notification) 시점에 사용자가 지정한 명령어를 자동 실행한다. 일종의 'Git Hooks'와 비슷한 개념이다.

에이전트 루프 — Hooks는 도구 호출 전/후 지점에 사용자 스크립트를 끼워넣는다
이벤트실행 시점대표 용도
PreToolUseClaude가 도구를 쓰기 직전위험한 명령어 차단, 입력 검증
PostToolUseClaude가 도구를 쓴 직후린터 실행, 포맷팅, 자동 테스트
NotificationClaude가 사용자에게 알림을 보낼 때슬랙 알림, 로그 기록
json
// .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의 해당 도구 실행이 중단될 수 있으므로, 반드시 테스트 후 적용하자.