Claude Code 훅 작성 가이드
Claude Code의 PreToolUse/PostToolUse/SessionStart/Stop 훅을 안전하게 만들고 테스트·등록·디버깅하는 실전 스킬.
개발·코딩고급★ 1,323⑂ 212AI 점수 9/10마지막 업데이트: 2026. 8. 8.
무엇을 해주나
CLAUDE.md에 규칙을 적어놨는데도 Claude가 계속 어기는 상황을 '훅(hook)'이라는 구조적 차단 장치로 바꿔 줍니다.
- 훅 종류별 발동 시점과 종료 코드(0=허용, 2=차단) 계약 정리
- PreToolUse Bash 가드 스켈레톤 및 실행 가능한 패턴 모음(references/hook_patterns.md)
- 오탐(false-block)을 막는
shlex토큰 단위 매칭 기법 (awk 분할 금지) - 등록 전
bash -n+ 실제 JSON 이벤트로 하는 엔드투엔드 테스트 절차와 테스트 하네스 스크립트 - SSOT + 심볼릭 링크로
~/.claude재설치 시에도 가드가 사라지지 않게 하는 배치법 - 여러 프로필 동기화, 사람이 직접 확인해야 하는 릴리스 게이트(osascript 대화상자 등)
- Stop 훅 무한 루프를 막는 종료 증명(loop variant V) 방법론
이런 분께 추천
- Claude Code가 위험한 명령(강제 푸시, 파일 삭제, 시크릿 커밋)을 실행하지 못하게 막고 싶은 개발자
- 프롬프트로 규칙을 아무리 강조해도 반복 위반이 발생해 지친 팀 리드
- 이미 훅을 만들었지만 오탐하거나 세션이 깨져 원인을 못 찾는 사람
- 여러 프로필/머신에 가드레일을 일관되게 배포해야 하는 운영 담당자
활용 예시
- "
git push --force를 무조건 막는 훅 만들어줘" → 명령 토큰 위치를 검사하는 PreToolUse 가드를 생성하고,grep이나 커밋 메시지 안의 문자열은 통과하도록 예외 처리까지 해줍니다. - "방금 만든 훅이 멀쩡한 명령까지 차단해" → awk 분할/원문 문자열 매칭 문제를 진단하고
shlex.shlex(punctuation_chars=True)기반 워커로 교체합니다. - "커밋 후에 Claude가 커밋했다고 착각하는 걸 막고 싶다" → PostToolUse에서 실제 git HEAD를 다시 읽어 컨텍스트로 주입하는 훅을 설계해 줍니다.
· · · 설치 가이드 · · ·
Claude 앱에 설치 (터미널 필요 없음)
- 아래 버튼으로 ZIP 파일을 받으세요.
- Claude 설정 → Capabilities에서 '코드 실행 및 파일 생성'을 켭니다. (한 번만)
- Claude에서 Customize → Skills → + → '스킬 업로드'를 누르고 받은 ZIP을 올립니다.
Claude Code에 설치
Claude에게 맡기기 — 아래 문장을 Claude Code에 붙여넣으세요
클로드스킬마트에서 찾은 스킬을 설치해줘. GitHub 저장소 daymade/claude-code-skills 의 daymade-claude-code/claude-code-hooks 폴더를 내 ~/.claude/skills/claude-code-hooks/ 에 그대로 복사해줘. 설치가 끝나면 이 스킬로 무엇을 할 수 있는지 한 줄로 알려줘.
직접 명령으로 설치하기
git clone https://github.com/daymade/claude-code-skills.git /tmp/daymade-skills && mkdir -p ~/.claude/skills && cp -r /tmp/daymade-skills/daymade-claude-code/claude-code-hooks ~/.claude/skills/⚠ 제3자가 만든 스킬입니다. 설치 전 원본 저장소를 한 번 확인하세요.
- 터미널을 엽니다.
- 스킬 폴더를 준비합니다:
mkdir -p ~/.claude/skills - 저장소를 임시 폴더로 복제합니다:
git clone https://github.com/daymade/claude-code-skills.git /tmp/daymade-skills - 이 스킬만 복사합니다:
cp -r /tmp/daymade-skills/daymade-claude-code/claude-code-hooks ~/.claude/skills/ - 정상 복사 확인:
ls ~/.claude/skills/claude-code-hooks(SKILL.md, references/, scripts/ 가 보이면 성공) - Claude Code를 새로 실행하고 "훅으로 rm -rf를 막아줘" 처럼 요청하면 스킬이 자동 호출됩니다.
- 중요: 생성된 훅은 등록 전에 반드시
bash -n hook.sh와scripts/test_hook.sh로 테스트하세요. 잘못된 PreToolUse 훅은 세션의 모든 Bash 호출을 망가뜨릴 수 있습니다. - 훅을 되돌리려면
~/.claude/settings.json의 hooks 항목에서 해당 줄을 지우면 됩니다.
GitHub에서 원본 보기 ↗라이선스: MIT