Hooks동작원리 - 이벤트 기반 자동화
목차
특정 이벤트가 발생할 때 자동으로 무언가 실행되면 좋겠다고 생각한 적 있으신가요?
"파일 저장할 때마다 린트 실행", "세션 시작할 때 환경 체크" 같은 자동화를 Hooks로 구현할 수 있습니다.
이 글에서는 Hooks의 동작 원리와 설정 방법을 알아봅니다.
Hooks란?
Hooks가 뭔가요? Git hooks랑 같은 건가요?
비슷한 개념이야! Git hooks가 "커밋 전에 실행"처럼 동작하듯, Claude Code Hooks는 "이 이벤트 때 실행"을 설정하는 거야.
어떤 이벤트에 설정할 수 있어요?
세션 시작, 프롬프트 전송, 도구 실행 전/후, 알림 등 20가지 이상의 이벤트가 있어!
이벤트 = 언제 실행할지 (트리거)
명령 = 무엇을 실행할지 (액션)
이벤트 발생 → 명령 자동 실행
주요 Hook 이벤트
| 이벤트 | 발생 시점 | 활용 예시 |
|---|---|---|
| SessionStart | 세션 시작 시 | 환경 체크, 인사말 |
| PreToolUse | 도구 실행 전 | 실행 전 검증 |
| PostToolUse | 도구 실행 후 | 결과 로깅, 알림 |
| UserPromptSubmit | 사용자 입력 후 | 입력 전처리 |
| Notification | 알림 발생 시 | Slack 알림 전송 |
SessionStart는 가장 많이 쓰이는 Hook입니다. 프로젝트에 들어올 때 자동으로 환경을 체크하거나 안내를 보여줄 수 있어요!
Hooks 설정 방법
Hooks는 settings.json에 설정합니다.
위치: ~/.claude/settings.json 또는 .claude/settings.json
기본 구조
{
"hooks": {
"이벤트명": [
{
"command": "실행할 명령어",
"timeout": 5000
}
]
}
}
실전 예제: 세션 시작 시 환경 체크
{
"hooks": {
"SessionStart": [
{
"command": "echo '환경 체크 중...' && node -v && npm -v",
"timeout": 10000
}
]
}
}
timeout은 뭔가요?
명령 실행 최대 대기 시간이야. 밀리초 단위라서 10000은 10초. 이 시간 내에 완료 안 되면 중단돼.
실전 Hook 예제
예제 1: 파일 수정 후 자동 린트
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"command": "npm run lint --fix",
"timeout": 30000
}
]
}
}
matcher를 사용하면 특정 도구 실행 후에만 Hook이 동작합니다.
예제 2: 알림을 Slack으로 전송
{
"hooks": {
"Notification": [
{
"command": "curl -X POST -H 'Content-Type: application/json' -d '{\"text\":\"Claude 알림\"}' $SLACK_WEBHOOK"
}
]
}
}
예제 3: 세션 시작 시 브리핑
{
"hooks": {
"SessionStart": [
{
"command": "cat ~/.claude/daily-brief.txt",
"timeout": 5000
}
]
}
}
Hook 명령의 출력은 Claude에게 전달됩니다. 환경 정보를 출력하면 Claude가 해당 정보를 참고해서 작업할 수 있어요!
Hook 활용 팁
💡 Hook 활용 아이디어
- SessionStart - 오늘 할 일 목록 표시
- PostToolUse(Edit) - 파일 수정 후 자동 포맷팅
- PostToolUse(Bash) - 명령 실행 로그 기록
- Notification - 중요 알림 외부 전송
⚠️ 주의: Hook 명령이 오래 걸리면 전체 작업이 느려집니다.
빠른 명령을 사용하고 적절한 timeout을 설정하세요!
Hooks = 이벤트 기반 자동 실행
이벤트 = SessionStart, PreToolUse, PostToolUse 등
설정 위치 = settings.json의 hooks 섹션
matcher = 특정 도구에만 적용
timeout = 최대 실행 시간 (밀리초)
👉 테스트와 디버깅 : 스킬이 제대로 동작하는지 검증하는 법
Hooks로 반복 작업을 자동화하세요!
한 번 설정하면 계속 동작합니다! ⚡
댓글
댓글 쓰기