Hook 개념 — '부탁'이 아니라 '강제'
규칙을 글로 쓰면 AI가 가끔 잊어요. Hook은 잊을 수 없게 만드는 장치예요.
처음 몇 번은 Claude가 잘 지켜요. 그런데 대화가 길어지고 바빠지자, 어느 순간 테스트를 건너뛰고 그냥 코드를 고칩니다. 규칙을 적어둔 게 무용지물이 된 걸까요? 오늘은 "부탁"을 "강제"로 바꾸는 장치 — hook을 배웁니다.
📚 「Hook 개념 — '부탁'이 아니라 '강제'」 레슨 내용 전체 텍스트로 훑어보기
처음 몇 번은 Claude가 잘 지켜요. 그런데 대화가 길어지고 바빠지자, 어느 순간 테스트를 건너뛰고 그냥 코드를 고칩니다. 규칙을 적어둔 게 무용지물이 된 걸까요? 오늘은 "부탁"을 "강제"로 바꾸는 장치 — hook을 배웁니다.
hook(훅)은 Claude의 작업 흐름 특정 순간에 내가 만든 스크립트를 자동으로 끼워 넣는 장치예요. CLAUDE.md가 '말로 하는 부탁'이라면, hook은 '코드로 거는 장치'예요.
· hook 스크립트 → 그냥 코드가 실행됨 → 결정적(매번 똑같이)
반찬가게 비유로, CLAUDE.md는 알바에게 "퇴근 전 가스 꼭 잠가줘"라고 부탁한 메모, hook은 문에 단 자동 가스 차단 장치예요. 사람이 깜빡해도 장치는 안 깜빡해요.
hook은 아무 데나 끼는 게 아니라, Claude 작업 흐름의 정해진 순간(이벤트)에 걸어요. 자주 쓰는 네 가지예요.
· PreToolUse — Claude가 도구(파일 수정·명령 실행)를 쓰기 직전 (위험한 짓 막을 때)
· PostToolUse — 도구를 쓴 직후 (고친 코드에 테스트·포맷 자동 적용)
· Stop — Claude가 답을 마치고 멈추려 할 때 (마무리 점검)
반찬가게 코드라면 — "코드 고치면 테스트" 규칙은 PostToolUse(파일을 고친 직후)에 걸면 딱이에요.
PreToolUse에 건 스크립트가 위험한 명령을 발견하고 exit 2로 끝나면, Claude는 어떻게 될까요?
hook이 왜 CLAUDE.md보다 확실한지, Claude에게 직접 우리 반찬가게 예로 물어봐요. 가게 폴더에서 Claude를 켜고 대화해봐요.
우리 가게 코드는 '고치면 테스트부터' 규칙이 있어. 이걸 CLAUDE.md에 적는 거랑 hook으로 거는 거랑 뭐가 달라? — 확률 vs 결정의 차이를 대화로 확인해요약점: 바쁘거나 대화가 길면 가끔 건너뜀.
강점: Claude가 잊든 말든 매번 무조건 실행. 실패하면 막아줌.
반찬가게 코드를 고친 직후마다 자동으로 테스트를 돌리고 싶어요. 이 hook은 어떤 이벤트에 걸어야 할까요?
Claude Code에는 지금 어떤 hook이 걸려 있는지 보는 명령이 있어요. 가게 폴더에서 슬래시 커맨드 /hooks를 쳐보세요.
/hooks — 현재 설정된 hook 목록을 확인해요