LeanX

훅 자동화 파이프라인

훅은 PreToolUse에서 도구 실행을 검증·차단하고, 실행 후 PostToolUse에서 포맷·타입체크를 돌리며, Notification으로 대기 알림을, Stop으로 세션 종료 정리를 자동화하는 이벤트 파이프라인으로, 완료 알림을 Slack 같은 외부 채널과 엮으면 긴 작업의 끝을 놓치지 않을 수 있습니다.

훅의 기본(파일 수정 후 자동 포맷 등)은 기초 과정('클로드 코드 완전 정복'의 훅 레슨)에서 다뤘습니다. 이번 레슨은 훅을 '낱개 자동화'가 아니라 '이벤트 파이프라인'으로 바라봅니다. 클로드가 도구를 쓰는 순간을 전후로, 여러 훅이 정해진 순서에 따라 자동으로 발동하는 하나의 흐름 말입니다.

이벤트 생애주기

도구 실행을 둘러싼 훅 이벤트 흐름

  • PreToolUse 도구 실행 직전 — 입력 검증·위험 명령 차단
  • (도구 실행) Write·Edit·Bash 등 실제 작업 수행
  • PostToolUse 도구 실행 직후 — 자동 포맷·타입체크
  • Notification 클로드가 사용자 입력·승인을 기다릴 때 — 대기 알림
  • Stop 응답/세션이 끝날 때 — 종료 정리·최종 검사

PreToolUse는 '문지기', PostToolUse는 '뒷정리', Notification은 '호출 벨', Stop은 '퇴근 점검'입니다. 각 시점에 맞는 일을 걸어 두면 사람이 잊어도 자동으로 돌아갑니다.

시점대표 활용예시
PreToolUse입력 검증 · 차단rm -rf 같은 위험 명령 감지 시 실행 막기
PostToolUse포맷 · 타입 체크파일 수정 후 prettier·tsc 자동 실행
Notification대기 알림승인 대기 상태를 소리·데스크톱 알림으로 통지
Stop세션 종료 정리남은 console.log 감사, 임시 파일 정리

긴 작업의 끝을 놓치지 않기 — 완료 알림

에이전틱 엔지니어링의 현실적인 고충 하나는 '기다림'입니다. 서브에이전트 여러 개가 몇 분씩 돌 때, 화면만 쳐다보는 것은 낭비죠. 그렇다고 딴 일을 하면 언제 끝났는지 놓칩니다. 여기서 Notification·Stop 훅이 빛납니다. 응답이 끝나거나 승인이 필요할 때 macOS 알림·소리를 울리게 해 두면, 다른 일을 하다가도 정확히 그 순간 돌아올 수 있습니다.

한 걸음 더 나아가, 이 알림을 Slack이나 구글챗 같은 외부 채널로 보내면 자리를 비워도 휴대폰으로 완료를 받습니다. 훅이 실행하는 것은 결국 하나의 셸 명령이므로, 그 명령이 웹훅으로 메시지를 쏘게 만들면 됩니다.

.claude/settings.json — 완료 알림 + 종료 정리 훅

{
  "hooks": {
    "Notification": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "afplay /System/Library/Sounds/Glass.aiff 2>/dev/null || true"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "curl -s -X POST \"$SLACK_WEBHOOK_URL\" -H 'Content-type: application/json' -d '{\"text\":\"클로드 코드 작업 완료\"}' >/dev/null 2>&1 || true"
          }
        ]
      }
    ]
  }
}

위 예시에서 Notification 훅은 승인·입력 대기 시 소리를 울리고, Stop 훅은 응답이 끝나면 Slack으로 완료 메시지를 보냅니다. 웹훅 URL은 코드에 박지 말고 환경변수($SLACK_WEBHOOK_URL)로 참조한 점에 주목하세요.

훅 명령 끝에 항상 || true를 붙이세요. 알림이나 포맷 같은 부수 작업이 실패해도(예: 네트워크가 잠깐 끊겨 curl 실패) 그 때문에 전체 흐름이 멈추지 않게 하는 안전장치입니다. 2>/dev/null까지 더하면 불필요한 에러 출력으로 컨텍스트가 지저분해지는 것도 막습니다.

훅이 실행되는 동안 클로드는 그 훅이 끝나기를 기다립니다. 그래서 무거운 작업(전체 빌드, 대규모 테스트)을 훅에 그대로 걸면 매 수정마다 전체가 느려집니다. 무거운 것은 타임아웃을 두거나, 백그라운드로 던지고 즉시 반환하도록 설계하세요. 훅은 '가볍고 빠른 뒷정리'에 어울립니다.

여기까지가 '이벤트 기반' 자동화입니다. 다음 레슨에서는 자동화를 한 단계 끌어올려, 한 모델의 플랜을 다른 모델에게 검증시키는 커스텀 MCP 교차검증과, '5분마다' 같은 시간 기반 자동화를 다룹니다.