전체 목차
챕터 01

Hooks 소개

이번 영상에서는 Hooks(훅) 를 살펴봅니다. Hooks는 Claude가 도구(tool)를 실행하기 전이나 후에 명령을 실행할 수 있게 해주는 기능입니다. Hooks는 자동화된 워크플로우를 구현하는 데 매우 유용합니다. 대표적인 활용 예시는 다음과 같습니다.

  • Claude가 파일을 작성한 뒤 자동으로 코드 포매터 실행

  • 파일이 편집된 뒤 자동으로 테스트 실행

  • Claude가 특정 파일에 접근하지 못하도록 차단

Hooks로 할 수 있는 작업의 가능성은 사실상 무한합니다.

Hooks 개념을 설명하는 슬라이드로, 코드 포매터 실행, 파일 편집 차단, TODO 주석 감지, 자동 테스트 실행, 명명 규칙 검증, 사용 중단 함수 차단 등 6가지 사용 사례를 카드 형식으로 나열한 화면입니다.

1. Hooks는 어떻게 동작하는가?

Hooks를 이해하려면 먼저 Claude Code와 여러분이 상호작용할 때의 일반적인 흐름을 짚어봐야 합니다. [사용자 질의] → Claude 모델 (+ 도구 정의) → 도구 사용 결정 → Claude Code가 도구 실행 → 결과 반환(코딩 어시스턴트란 참고)

여러분이 Claude Code에 무언가 질문하면, 질의는 도구 정의와 함께 Claude 모델로 전송됩니다. Claude 모델은 잘 포맷된 응답을 제공하며 도구를 실행하기로 결정할 수 있는데, 이 지점에서 Claude Code가 요청된 도구(예: ReadFile)를 실행하고 그 결과를 응답합니다. Hooks는 위와같은 일반적인 흐름 중간에 끼어들어 도구 실행 직전이나 직후(예: 파일을 읽기 직전이나 읽은 직후)에 코드를 실행할 수 있게 해줍니다.

세 명의 액터(You, Claude Code, Claude)와 PreToolUse 및 PostToolUse 훅을 포함한 파일 읽기 작업 흐름도. 사용자 질의에서 시작해 PreToolUse 훅 실행, Claude Code가 파일 읽음, PostToolUse 훅 실행, 마지막으로 파일 내용이 Claude에게 반환되는 순서로 표시됨.

2. Hook의 두 가지 주요 타입

가장 일반적인 두 가지 Hook 타입입니다. (다른 Hook 종류는 이후 강의에서 다룹니다.)

타입

시점

역할

PreToolUse

도구 실행

검사 후 허용/차단 결정 가능

PostToolUse

도구 실행

후속 작업 수행, Claude에 피드백 전달

JSON 형식의 훅 설정 코드 스크린샷으로, PreToolUse 훅은 Read 매처와 read_hook.ts 명령을 포함하고, PostToolUse 훅은 Write, Edit, MultiEdit 매처와 edit_hook.ts 명령을 포함합니다.

3. Hook 설정 위치

Hooks는 Claude 설정 파일에 정의합니다. 다음 세 위치에 추가할 수 있습니다.

범위

경로

용도

글로벌

~/.claude/settings.json

내 머신의 모든 프로젝트에 적용

프로젝트 (공유)

.claude/settings.json

팀과 공유되는 프로젝트 설정

프로젝트 (개인)

.claude/settings.local.json

커밋되지 않는 개인 설정

작성 방법은 두 가지입니다.

  1. 설정 파일에 직접 작성

    Claude 설정 파일의 hooks 섹션 JSON 코드, PreToolUse와 PostToolUse 훅이 각각 Read, Write Edit MultiEdit 명령으로 정의되어 있음.
  2. Claude Code 내에서 /hooks 명령어 사용


4. PreToolUse Hook: 도구 실행 전 개입

PreToolUse Hook은 도구가 실행되기 전에 동작합니다. 이 때, matcher를 통해 어떤 도구 타입을 대상으로 할지 지정하게 됩니다.

JSON 형식의 설정 파일 코드 스크린샷으로, PreToolUse 훅에서 matcher를 Read로 설정하고 command로 node /home/hooks/read_hook.ts를 실행하는 구조를 화살표로 표시합니다.
"PreToolUse": [
  {
    "matcher": "Read",
    "hooks": [
      {
        "type": "command",
        "command": "node /home/hooks/read_hook.js"
      }
    ]
  }
]

위와같이 PreToolUse Hook을 설정하면 파일 읽기(Read)라는 도구가 실행되기 전(파일을 읽기 전)에 지정된 명령어(node /home/hooks/read_hook.js)가 실행됩니다. 이 명령은 Claude가 수행하려는 도구 호출의 세부 정보(무엇을 읽으려고 하는지에 대한 세부 정보)를 전달받으며, 다음 중 하나를 선택하게 됩니다.

  • 작업이 정상적으로 진행되도록 허용

  • 도구 호출을 차단하고 Claude에 에러 메시지 반환


5. PostToolUse Hook: 도구 실행 후 개입

PostToolUse Hook은 도구가 실행된 후에 동작합니다. 다음은 Write, Edit, MultiEdit 작업 후에 명령어가 트리거되는 예시입니다.

코드 편집기 스크린샷으로 JSON 구성을 보여주는 다이어그램. PostToolUse 훅에서 Write, Edit, MultiEdit 매처와 노드 커맨드 경로가 주황색 화살표로 강조됨.
"PostToolUse": [
  {
    "matcher": "Write|Edit|MultiEdit",
    "hooks": [
      {
        "type": "command",
        "command": "node /home/hooks/edit_hook.js"
      }
    ]
  }
]

💡 포인트: matcher에서 |를 사용해 여러 도구를 한 번에 매칭할 수 있습니다.

도구 호출이 이미 일어났기 때문에 PostToolUse Hook은 작업을 차단할 수는 없습니다. 대신 다음을 할 수 있습니다.

  • 후속 작업 수행 (예: 방금 편집된 파일을 자동 포맷)

  • 해당 도구 사용에 대한 추가 피드백을 Claude에 전달

예를 들어 코드 품질 점검 프로그램을 별도로 실행하거나 타입 체크를 돌린 뒤, 그 결과를 Claude에게 피드백할 수 있습니다. Claude는 그 피드백을 받아 방금 작성한 파일을 다시 업데이트할 수 있습니다.

Claude 코드 읽기 전후의 PreToolUse와 PostToolUse 훅 작동 흐름을 보여주는 다이어그램. PreToolUse는 명령 실행 및 차단 가능, PostToolUse는 명령 실행 및 피드백 제공 가능.

6. 실용적인 활용 사례

활용

설명

코드 포매팅

Claude가 파일을 편집한 후 자동 포맷

테스트 자동 실행

파일이 변경될 때 테스트 자동 실행

접근 제어

특정 파일에 대한 읽기/편집 차단

코드 품질 검사

linter나 type checker를 돌리고 Claude에 피드백

로깅

Claude가 접근하거나 수정한 파일 추적

검증

네이밍 컨벤션이나 코딩 표준 확인

핵심 인사이트는 이렇습니다.

Hooks는 여러분의 도구와 프로세스를 Claude Code의 워크플로우에 통합해, Claude Code의 능력을 확장할 수 있게 해줍니다.

  • PreToolUse hook은 Claude가 무엇을 할 수 있는지 통제하고,

  • PostToolUse hook은 Claude가 한 일을 보강합니다.


핵심 요약

항목

내용

정의 위치

~/.claude/settings.json / .claude/settings.json / .claude/settings.local.json

작성 방법

직접 편집 또는 /hooks 명령어

주요 타입

PreToolUse(차단 가능), PostToolUse(피드백 가능)

매처(matcher)

대상 도구 지정. | 로 다중 매칭 가능

명령에 전달되는 정보

Claude가 호출하려는/호출한 도구의 세부 정보

Hooks라는 개념이 아직 헷갈리더라도 괜찮습니다. Hooks를 머릿속에서 정리하는 일은 꽤 까다로울 수 있으니, 다음 강의에서 실제 샘플 프로젝트를 기반으로 Hooks를 직접 다뤄보며 자연스럽게 익혀봅시다.

이 글은 모던웹연구소 (www.modernweblabs.com)에서 처음 발행되었습니다. © 모던웹연구소. 무단 전재 및 재배포를 금합니다.

공유