Claude 코드 후크란 무엇이며 어떻게 사용하나요

Rebecca Kovács

Rebecca Kovács

2 July 2025

Claude 코드 후크란 무엇이며 어떻게 사용하나요

바이브 코더들에게, Anthropic의 Claude Code와 같은 도구들은 개발자들이 프로젝트를 작성하고, 디버깅하며, 관리하는 방식을 변화시키고 있습니다. Claude Code는 터미널에서 실행되는 "에이전트형 코딩 도구"로서, 전체 코드베이스를 이해하고, 파일 시스템과 상호작용하며, 명령을 실행하고, 심지어 문서화를 위해 웹을 탐색할 수도 있습니다. 이는 자연어 프롬프트를 통해 새로운 기능 작성, 버그 수정, 코드 리팩토링과 같은 작업에 탁월합니다.

하지만 대규모 언어 모델(LLM)의 핵심적인 특징은 확률적 특성입니다. 이는 창의적인 문제 해결을 가능하게 하지만, 때로는 예측 불가능성을 초래할 수 있습니다. 파일이 변경된 후 린팅을 하거나 새 함수가 작성된 후 테스트를 실행하는 것과 같은 특정 작업이 매번 반드시 발생하기를 원할 수 있습니다. LLM이 모든 경우에 이를 기억하도록 의존하는 것은 일관성이 없을 수 있습니다.

바로 이 지점에서 Claude Code Hooks가 등장합니다. Hooks는 Claude Code의 동작에 대한 결정론적이고 프로그래밍 방식의 제어를 제공하는 강력한 기능으로, LLM이 실행 여부를 선택하는 대신 특정 작업이 항상 발생하도록 보장합니다.

💡
아름다운 API 문서를 생성하는 훌륭한 API 테스트 도구를 원하십니까?

API 사양을 읽어 정확한 코드를 생성할 수 있는 Apidog MCP 서버를 사용해보세요!
버튼

이 문서는 Claude Code Hooks를 이해하고, 구성하며, 활용하여 완전히 자동화되고 간소화된 개발 워크플로를 생성하는 데 대한 포괄적인 가이드 역할을 합니다.

Claude Code Hooks란 무엇인가요?

본질적으로 Claude Code Hooks는 Claude Code의 라이프사이클 내 특정 지점에서 자동으로 실행되는 사용자 정의 셸 명령입니다. 이는 특정 작업 전후에 실행되도록 구성할 수 있는 트리거 역할을 하여, 사용자 지정 로직, 스크립트 및 명령을 Claude의 작업에 직접 삽입할 수 있게 합니다.

Hooks는 AI 기반 지원과 규칙 기반 자동화 사이의 간극을 메웁니다. 이를 통해 표준을 강제하고, 반복적인 작업을 자동화하며, 외부 도구를 완벽한 신뢰성으로 워크플로에 원활하게 통합할 수 있습니다.

Hook이 트리거될 수 있는 네 가지 주요 라이프사이클 이벤트가 있습니다:

  1. PreToolUse: Claude가 특정 도구를 사용하기 에 실행됩니다 (예: 파일에 쓰기 전).
  2. PostToolUse: 도구가 성공적으로 사용된 에 실행됩니다 (예: 파일이 수정된 후).
  3. Notification: Claude가 알림을 보낼 때마다 실행됩니다 (예: 사용자 입력이 필요하거나 긴 작업을 완료했을 때).
  4. Stop: Claude가 응답 생성을 마치고 중지할 때 실행됩니다.

이러한 이벤트를 대상으로 함으로써, 연속 통합(CI) 검사와 같은 현대 소프트웨어 개발의 모범 사례를 반영하면서도 로컬 개발 속도로 강력한 자동화를 생성할 수 있습니다.

Claude Code Hooks의 구조: 구성 심층 분석

Hooks를 사용하려면 Claude Code 설정 파일에 정의해야 합니다. 이는 프로젝트 내 `.claude/` 디렉토리에 있는 `settings.toml` 파일에 `[[hooks]]` 테이블을 추가하여 수행됩니다. 각 hook 구성에는 몇 가지 핵심 구성 요소가 있습니다.

# .claude/settings.toml 파일의 예시 Hook

[[hooks]]
# Hook을 트리거하는 이벤트.
event = "PostToolUse" 

# (선택 사항) Hook 실행 조건.
[hooks.matcher]
tool_name = "edit_file"
file_paths = ["*.py", "api/**/*.py"]

# 실행할 셸 명령.
command = "ruff check --fix $CLAUDE_FILE_PATHS && black $CLAUDE_FILE_PATHS"

# (선택 사항) 명령을 백그라운드에서 실행할지 여부.
run_in_background = false 

각 부분을 자세히 살펴보겠습니다.

Claude Code Hooks의 event 필드 (필수)

이 문자열은 네 가지 라이프사이클 이벤트 중 어떤 것이 hook을 트리거할지 지정합니다.

Claude Code Hooks의 hooks.matcher (선택 사항)

매처는 hook이 언제 실행되어야 하는지 정확하게 정의할 수 있게 해줍니다. 매처를 생략하면, hook은 지정된 `event`의 모든 인스턴스에 대해 실행됩니다. 예를 들어, 매처가 없는 `PostToolUse` hook은 모든 도구 호출 후에 실행됩니다.

매처에는 이벤트를 필터링하는 데 사용할 수 있는 세 가지 필드가 있습니다:

Claude Code Hooks의 command 필드 (필수)

이것은 hook의 핵심입니다. 트리거 조건이 충족될 때 실행될 셸 명령입니다. 이 명령은 사용자 계정과 동일한 권한으로 실행되므로, 터미널에서 할 수 있는 모든 작업을 수행할 수 있습니다.

명령을 동적으로 만들기 위해, Claude Code는 hook을 트리거한 이벤트의 컨텍스트로 채워지는 환경 변수 세트를 제공합니다.

사용 가능한 환경 변수:

Claude Code Hooks의 run_in_background 설정 (선택 사항)

이것은 부울 값(`true` 또는 `false`)입니다. `true`로 설정되면, hook의 명령은 별도의 프로세스에서 실행되며, Claude는 계속하기 전에 명령이 완료되기를 기다리지 않습니다. 이는 Claude의 후속 작업을 차단하고 싶지 않은 포괄적인 테스트 스위트 또는 빌드 프로세스와 같은 장기 실행 작업에 이상적입니다. 기본값은 `false`입니다.

Claude Code Hooks의 실제 사용 사례 및 예시

hooks의 진정한 힘은 실제 개발 워크플로에 적용할 때 드러납니다. 시작하는 데 도움이 될 몇 가지 실용적인 예시가 있습니다.

1. Claude Code Hooks를 사용한 자동 린팅 및 포매팅

프로젝트 전체에 걸쳐 일관된 코드 스타일을 자동으로 적용합니다. 이 hook은 Claude가 편집하는 모든 Python 파일에 대해 `ruff` 린터와 `black` 포매터를 실행합니다.

파일: .claude/settings.toml

[[hooks]]
event = "PostToolUse"

[hooks.matcher]
tool_name = "edit_file"
file_paths = ["*.py"]

# 편집된 Python 파일을 린팅, 수정 및 포매팅하는 명령.
command = "echo 'Running auto-formatter...' && ruff check --fix $CLAUDE_FILE_PATHS && black $CLAUDE_FILE_PATHS"

2. Claude Code Hooks를 사용한 자동 테스트 실행

테스트 주도 개발(TDD)의 핵심 관행은 테스트를 작성한 다음 해당 테스트를 통과하는 코드를 작성하고, 모든 것이 작동할 때까지 반복하는 것입니다. hook을 사용하여 "테스트 실행" 단계를 자동화할 수 있습니다. 이 예시는 `src/` 또는 `tests/` 디렉토리의 파일이 수정될 때마다 `pytest`를 실행합니다.

파일: .claude/settings.toml

[[hooks]]
event = "PostToolUse"
run_in_background = true # 테스트는 느릴 수 있으므로 백그라운드에서 실행.

[hooks.matcher]
tool_name = "edit_file"
file_paths = ["src/**/*.py", "tests/**/*.py"]

# 테스트 스위트를 실행하는 명령.
command = "pytest"

3. Claude Code Hooks를 통한 사용자 지정 데스크톱 알림

Claude에게 장기 실행 작업을 수행하도록 요청하면 컴퓨터에서 잠시 자리를 비울 수 있습니다. 이 hook은 `ntfy`와 같은 명령줄 도구(간단한 HTTP 기반 pub-sub 알림 서비스)를 사용하여 Claude의 주의가 필요할 때 휴대폰이나 데스크톱으로 푸시 알림을 보냅니다.

파일: .claude/settings.toml

[[hooks]]
event = "Notification"

# 알림 내용을 공개 ntfy.sh 토픽으로 보냅니다.
# 개인 정보 보호를 위해 직접 호스팅할 수 있습니다.
command = 'ntfy publish my-claude-alerts "$CLAUDE_NOTIFICATION"'

4. Claude Code Hooks를 사용한 사전 커밋 건전성 검사

Git hook과 마찬가지로, Claude Code Hooks를 사용하여 커밋이 이루어지기 에 품질을 보장할 수 있습니다. 이 예시는 Claude가 `git_commit` 도구를 사용하기 직전에 API 키를 확인하거나 다른 유효성 검사 단계를 수행하는 사용자 지정 스크립트를 실행합니다.

파일: .claude/settings.toml

[[hooks]]
event = "PreToolUse"

[hooks.matcher]
tool_name = "git_commit"

# 사전 커밋 검사 스크립트를 실행하는 명령.
# 스크립트는 커밋을 중단시키기 위해 0이 아닌 코드로 종료되어야 합니다.
command = "sh ./.claude/pre-commit-checks.sh"

Claude Code Hooks 설정 및 디버깅

hooks를 시작하는 것은 간단하지만, 예상대로 작동하는지 확인하고 디버깅하는 것이 중요합니다.

  1. 구성 생성: 프로젝트의 루트 디렉토리에 .claude/settings.toml 파일이 있는지 확인하십시오. 여기에 [[hooks]] 구성을 추가하십시오.
  2. 구성 확인: settings.toml 파일을 저장한 후, Claude Code 터미널 인터페이스 내에서 /hooks 명령을 실행하십시오. 이 특별한 명령은 현재 로드된 hook 구성을 표시하여 Claude가 이를 올바르게 구문 분석했는지 즉시 확인할 수 있도록 합니다.
  3. 오류 확인:

결론: Claude Code Hooks의 힘

Claude Code Hooks는 이 도구를 매우 유능한 코딩 보조자에서 완전히 통합된, 결정론적인 개발 파트너로 격상시킵니다. 간단하지만 강력한 규칙을 정의함으로써, 워크플로의 평범하지만 중요한 부분을 자동화하여 소프트웨어 엔지니어링의 복잡하고 창의적인 측면에 집중할 수 있게 해줍니다. 코드 품질을 강제하거나, TDD 루프를 단순화하거나, 타사 서비스와 통합하는 등, hooks는 Claude Code를 사용자의 정확한 요구에 맞게 조정하는 데 필요한 견고한 프레임워크를 제공합니다.

Claude Code의 기능에 익숙해지면서, 간단한 포매팅 hook으로 시작하여 더 복잡한 자동화를 탐색해 보세요. 이 기능이 예측 가능하고 효율적이며 진정으로 개인화된 AI 지원 개발 환경을 구축하는 데 필수적이라는 것을 금방 알게 될 것입니다.

💡
아름다운 API 문서를 생성하는 훌륭한 API 테스트 도구를 원하십니까?

API 사양을 읽어 정확한 코드를 생성할 수 있는 Apidog MCP 서버를 사용해보세요!
버튼

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요