githubEdit

Clip 3: Hooks, Output Styles 설계하기

학습 목표

  • Claude Code Hooks의 실제 작동 원리 이해

  • PreToolUse와 PostToolUse 훅 구현

  • Output Styles로 맞춤형 AI 응답 설정

Hooks 이해하기

🪝 Hooks란?

  • 정의: Claude Code가 도구를 사용할 때 자동으로 실행되는 스크립트

  • 목적: 도구 호출 제어, 결과 로깅, 워크플로우 자동화

  • 타이밍: 9가지 Hook 이벤트 타입 제공

🔔 Hook 이벤트 타입

1. PreToolUse (도구 실행 전)

  • Claude가 도구 파라미터를 생성한 후, 실제 실행 전에 트리거

  • 도구 호출을 차단하거나 피드백 제공 가능

  • 매처: Task, Bash, Glob, Grep, Read, Edit, Write, WebFetch

2. PostToolUse (도구 실행 후)

  • 도구가 성공적으로 완료된 직후 실행

  • 결과 로깅, 후처리 작업에 활용

  • PreToolUse와 동일한 매처 사용

3. Notification (알림 발생 시)

  • Claude Code가 알림을 보낼 때 트리거

  • 알림 상황:

    • Claude가 도구 사용 권한을 요청할 때

    • 프롬프트 입력이 60초 이상 유휴 상태일 때

4. UserPromptSubmit (프롬프트 제출 시)

  • 사용자가 프롬프트를 제출할 때 실행

  • 컨텍스트 추가, 프롬프트 검증, 특정 타입 차단 가능

5. Stop (에이전트 응답 완료)

  • 메인 Claude Code 에이전트가 응답을 완료했을 때

  • 사용자 중단으로 인한 정지 시에는 실행되지 않음

6. SubagentStop (서브에이전트 완료)

  • Claude Code 서브에이전트(Task 도구 호출)가 응답을 완료했을 때

7. PreCompact (컴팩트 작업 전)

  • Claude Code가 컴팩트 작업을 수행하기 전에 실행

  • 매처:

    • manual: /compact 명령어로 호출

    • auto: 컨텍스트 윈도우가 가득 차서 자동 실행

8. SessionStart (세션 시작)

  • 새 세션 시작 또는 기존 세션 재개 시 실행

  • 매처: startup, resume, clear, compact

9. SessionEnd (세션 종료)

  • Claude Code 세션이 종료될 때 실행

  • 정리 작업, 로깅, 세션 상태 저장에 활용

💡 Hook 핵심 개념

  1. Matcher: 특정 도구나 이벤트에만 훅 적용 (예: Bash, mcp__*, manual)

  2. 설정 위치: User(~/.claude/settings.json) 또는 Project(.claude/settings.json)

  3. 차단 기능: PreToolUse와 UserPromptSubmit은 작업을 차단하고 피드백 제공 가능

  4. 비동기 처리: 백그라운드 작업에는 &를 사용하지 말고 설정에서 비동기 옵션 활용

Hook 빠른 시작

📋 전제 조건

명령줄에서 JSON 처리를 위해 jq 설치:

🚀 실습 1: Bash 명령어 로깅 훅 만들기

1단계: 훅 구성 열기

  • PreToolUse 훅 이벤트 선택

2단계: 매처 추가

  • + Add new matcher… 선택

  • 매처에 Bash 입력 (Bash 도구 호출에만 훅 실행)

3단계: 훅 명령어 추가

  • + Add new hook… 선택

  • 다음 명령어 입력:

4단계: 구성 저장

  • 저장 위치: User settings 선택

  • Esc를 눌러 REPL로 복귀

5단계: 훅 확인

~/.claude/settings.json 파일 내용:

6단계: 훅 테스트

출처: Claude Code Hooks 공식 문서arrow-up-right

실전 Hook 예제

🚀 실습 2: YouTube 자막 자동 저장 PostToolUse 훅

이 예제는 YouTube 자막을 가져올 때마다 자동으로 파일로 저장하는 실제 동작하는 훅입니다.

훅 구조

1. 훅 스크립트 작성

.claude/hooks/youtube_transcript.sh:

2. 실행 권한 부여

3. 훅 설정

.claude/settings.json:

4. 훅 테스트

아래 프로젝트를 참고해서 자신만의 Hook 을 만드세요

Claude Code Hooks Masteryarrow-up-right

Output Styles 설계

🎨 Output Styles란?

  • 정의: Claude Code의 시스템 프롬프트를 수정하여 응답 스타일 변경

  • 목적: 소프트웨어 엔지니어링 외 용도로 Claude Code 적응

  • 핵심 기능 유지: 파일 읽기/쓰기, 스크립트 실행, TODO 추적 등

📚 내장 Output Styles

1. Default (기본)

  • 소프트웨어 엔지니어링 작업에 최적화

  • 간결한 응답, 효율적인 코드 생성

  • 테스트 코드로 검증

2. Explanatory (설명형)

  • 코딩하면서 교육적 "인사이트" 제공

  • 구현 선택과 코드베이스 패턴 설명

  • 형식:

3. Learning (학습형)

  • 협력적 실습 학습 모드

  • Claude가 TODO(human) 마커 추가

  • 직접 코드 작성 기회 제공

🔧 Output Style 작동 원리

  1. Claude Code의 시스템 프롬프트를 직접 수정

  2. 기본 스타일 외에는 코드 생성 관련 지침 제외

  3. 사용자 정의 지침을 시스템 프롬프트에 추가

Output Styles 실습

🚀 실습 4: Output Style 변경하기

방법 1: 대화형 메뉴 사용

  • 메뉴에서 원하는 스타일 선택 (Default, Explanatory, Learning)

  • 또는 /config 메뉴에서도 접근 가능

방법 2: 직접 스타일 지정

설정 저장 위치: .claude/settings.local.json (프로젝트 수준)

🎨 실습 5: 사용자 정의 Output Style 만들기

Claude의 도움을 받아 새로운 Output Style 생성:

Output Style 파일 구조

사용자 정의 스타일은 마크다운 파일로 저장:

커스텀 스타일 예제

~/.claude/output-styles/deep-research.md:

참고:


강사 정보

  • 작성자: 정구봉

  • LinkedIn: https://www.linkedin.com/in/gb-jeong/

  • 이메일: bong@dio.so

강의 자료

  • 강의 자료: https://goobong.gitbook.io/fastcampus

  • Github: https://github.com/Koomook/fastcampus-ai-agent-vibecoding

  • FastCampus 강의 주소: https://fastcampus.co.kr/biz_online_vibeagent

Last updated