본문 바로가기
카테고리 없음

Claude Code 확장 개념 : Hooks, Skills, SubAgents, Plugin, Marketplace 이해하기

by Lizzie Oh 2026. 3. 3.

전체 그림

Claude Code를 스마트한 IDE 플러그인 생태계라고 생각해보면 이해가 빠르다.

┌──────────────────────────────────────────────────┐
│                  Claude Code                     │
│                                                  │
│  Hooks       → 항상 자동 실행되는 트리거               │
│  Skills      → 나만의 커스텀 명령어                   │
│  SubAgents   → 전문 분야별 보조 에이전트               │
│  Plugins     → 위 셋을 묶어 팀과 공유                 │
│  Marketplace → 플러그인 앱스토어                     │
└──────────────────────────────────────────────────┘

 

 

각각을 하나씩 살펴보자.


1. Hooks — 항상 자동으로 해야 하는 것들

개념

코드를 수정할 때마다 prettier를 실행하고 싶다면 어떻게 할까?  Claude에게 "수정하고 나서 꼭 포매팅 해줘"라고 부탁할 수 있지만, 까먹고 빠뜨릴 수 있다는 가능성이 있다.  Hook은 이러한 문제를 해결한다.

 

즉, 특정 이벤트가 발생하면 AI 판단 없이 항상, 반드시 실행되는 쉘 명령이다. 자연어로 요청하는게 아닌 쉘 명령어이기 때문에 deterministic 한 실행이다. 

 

파일 수정 완료
    ↓
PostToolUse Hook 자동 발동
    ↓
prettier --write 실행 (Claude는 이 과정을 '항상' 실행)

주요 이벤트 종류

이벤트 언제 실행되는가
PreToolUse 도구 실행 직전 (차단 가능)
PostToolUse 도구 실행 직후
SessionStart 세션 시작/재개 시
Notification Claude가 입력 대기 시
Stop Claude 응답 완료 시

설정 예시

// .claude/settings.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
          }
        ]
      }
    ]
  }
}

 

실제로 많이 쓰이는 Hook

.env 파일 보호 — Claude가 민감한 파일을 실수로 수정하지 못하도록 차단한다. exit 코드 2를 반환하면 작업이 즉시 중단된다.

#!/bin/bash
FILE=$(cat | jq -r '.tool_input.file_path // empty')
if [[ "$FILE" == *".env"* ]]; then
  echo ".env 파일은 수정할 수 없습니다" >&2
  exit 2
fi

 

작업 완료 데스크탑 알림 — 오래 걸리는 작업이 끝났을 때 알림을 받는다.

# Notification 훅
osascript -e 'display notification "Claude가 응답을 기다리고 있습니다" with title "Claude Code"'

 

Bash 명령 감사 로그 — 어떤 명령이 언제 실행됐는지 기록한다.

# PostToolUse 훅 (matcher: "Bash")
jq -r '"[\(now | todate)] \(.tool_input.command)"' >> ~/.claude/bash-audit.log

 

테스트 통과 검증 — Claude가 "완료"라고 선언하기 전에 실제로 테스트를 돌린다.

{
  "type": "agent",
  "prompt": "테스트 스위트를 실행하고 모두 통과하는지 확인하라. 실패하면 이유를 알려라.",
  "timeout": 120
}

 

Hook을 사용할 때 종료 코드의 의미를 알아두면 훨씬 유연하게 활용할 수 있다.

종료 코드 동작
0 작업 진행, stdout은 Claude 컨텍스트에 추가
2 작업 차단, stderr 내용이 Claude에게 전달
기타 작업 진행, stderr는 로깅만

2. Skills — Claude에게 커스텀 명령 가르치기

개념

매번 아래와 같은 긴 지침을 타이핑하고 있는 문제를 Skill로 해결할 수 있다.

"커밋 메시지 작성해줘. Conventional Commits 형식으로, 한국어로, 변경사항 요약은 bullet point로..."

이걸 /commit 하나로 줄일 수 있다.

 

 

Skill은 재사용 가능한 지침 파일이다. .claude/skills/ 폴더에 Markdown 파일로 저장하고, /스킬명으로 호출한다.

/commit 입력
    ↓
Claude가 commit.md 파일을 읽는다
    ↓
파일에 정의된 단계별 지침을 따른다

파일 구조

---
name: commit
description: Conventional Commits 형식으로 커밋 메시지 작성
---

# 커밋 메시지 작성 가이드

1. git diff --staged 로 변경사항 확인
2. 변경 유형 파악 (feat/fix/refactor/docs/chore)
3. 한국어로 간결하게 작성
4. 커밋 전 사용자에게 확인 받기

실제로 많이 쓰이는 Skill

/commit — 스테이지된 변경사항을 분석해 Conventional Commits 형식의 커밋 메시지를 자동 생성한다.

 

/debug — 오류 메시지를 받으면 원인 분석 → 가설 수립 → 검증 → 수정 순서로 체계적으로 접근하도록 유도한다. Claude가 "일단 이것저것 시도해보는" 방식에서 벗어나게 만드는 데 효과적이다.

 

/pr-review — PR의 diff를 읽고 코드 품질, 보안 이슈, 누락된 테스트를 체크리스트 형식으로 검토한다.

 

/explain — 선택한 코드 블록을 주니어 개발자도 이해할 수 있는 언어로 설명한다.

 

/deploy — 배포 전 체크리스트 확인 → 빌드 → 테스트 → 배포 → 결과 확인까지 단계를 자동화한다.


3. SubAgents — 전문가에게 위임하기

개념

Claude Code와 대화하다 보면 이런 상황이 생긴다.

"이 버그 고치기 전에 코드베이스 전체에서 관련 패턴 좀 찾아줘."

 

Claude가 직접 탐색하면 수천 줄의 탐색 과정이 현재 대화 컨텍스트에 쌓인다. 나중엔 Claude가 앞서 논의했던 맥락을 "잊어버리는" 것처럼 느껴지는 이유가 여기에 있다. SubAgent는 이 문제를 해결한다. 별도의 독립된 Claude 인스턴스가 특정 작업을 맡아 처리하고, 결과 요약만 메인 대화에 돌려준다.

 

메인 Claude (대화 컨텍스트 유지)
    ↓ 탐색 작업 위임
Explore SubAgent (독립 컨텍스트, 읽기 전용)
    ↓ 탐색 완료
"src/api/ 에서 관련 패턴 12개 발견" 요약 반환
    ↓
메인 Claude가 요약을 받아 계속 작업

내장 SubAgent 종류

SubAgent 특징 주 용도
Explore 빠름, 읽기 전용 코드베이스 탐색, 파일 검색
Plan 신중, 분석적 구현 계획 수립, 아키텍처 설계
general-purpose 범용 복잡한 멀티스텝 작업

실제로 많이 쓰이는 SubAgent 패턴

코드베이스 탐색 — "이 프로젝트에서 인증 관련 코드가 어디에 있는지 찾아줘"라고 하면 Explore Agent가 전체 탐색을 맡아 메인 대화 컨텍스트를 깔끔하게 유지한다.

 

병렬 작업 — 독립적인 모듈 여러 개를 각각 다른 SubAgent에 맡겨 동시에 처리한다. 순차 처리 대비 시간을 크게 줄일 수 있다.

 

격리된 코드 리뷰 — PR diff를 별도 컨텍스트에서 리뷰하고 요약만 전달받는다. 리뷰 과정의 노이즈가 메인 대화를 오염시키지 않는다.


4. Plugins — 팀 설정을 한 번에 공유하는 방법

개념

Hooks, Skills, SubAgents를 열심히 만들었는데, 팀원도 같은 환경을 쓰게 하려면 어떻게 해야 할까. 파일을 하나씩 Slack으로 공유하거나 위키에 설정 방법을 적어두는 방식은 반드시 누락이 생긴다.

Plugin은 이 모든 것을 하나의 설치 가능한 패키지로 묶는다.

/plugin install github:our-company/dev-tools

한 줄이면 팀원 모두가 동일한 환경을 갖게 된다.

Plugin 구조

our-company-dev-tools/
├── .claude-plugin/
│   └── plugin.json          ← 패키지 이름, 버전, 설명
├── skills/
│   ├── commit.md            ← /our-tools:commit
│   ├── deploy.md            ← /our-tools:deploy
│   └── pr-review.md         ← /our-tools:pr-review
├── agents/
│   └── code-reviewer.md     ← 코드 리뷰 전담 에이전트
├── hooks/
│   └── hooks.json           ← 포매팅, 파일 보호 훅
└── .mcp.json                ← MCP 서버 설정 (선택)

Skills는 플러그인 이름으로 네임스페이스가 붙어 충돌을 방지한다. /commit이 아니라 /our-tools:commit으로 호출하는 식이다.

실제로 많이 쓰이는 Plugin

Code Intelligence Plugin — LSP 서버를 번들로 포함해 더 정확한 코드 분석을 제공한다.

GitHub Plugin — GitHub MCP 서버 포함. PR 생성/리뷰/머지를 Claude Code 안에서 처리한다.

Figma Plugin — Figma MCP 서버 포함. 디자인 파일을 읽어 컴포넌트 코드를 자동 생성한다.

Security Scanner Plugin — 코드 수정 시마다 자동으로 보안 취약점을 스캔하는 Hook을 포함한다.


5. Marketplace — 만들어진 것을 가져다 쓰기

개념

플러그인을 처음부터 만들지 않아도 된다. 다른 사람이 만들어놓은 Plugin을 찾아 설치할 수 있는 곳이 Marketplace다.

 

# Anthropic 공식 마켓플레이스 추가
/plugin marketplace add anthropics/official-plugins

# 원하는 플러그인 설치
/plugin install github-tools
/plugin install code-intelligence

마켓플레이스 소스는 GitHub 레포, Git URL, 로컬 경로 모두 가능하다. 이 덕분에 회사 내부 전용 마켓플레이스도 만들 수 있다. 자세한 방법은 다음 글에서 다룬다.


정리

상황 사용할 것
파일 수정 후 자동 포매팅 Hook
"커밋 메시지 써줘"를 명령어로 Skill
코드베이스 탐색을 메인 대화와 분리 SubAgent
팀 전체에 설정 공유 Plugin
만들어진 도구 설치 Marketplace

 

 

Claude Code를 단순한 AI 채팅 도구로 쓰는 것과, 이 다섯 가지 개념을 활용해 팀 맞춤형 환경을 구축하는 것은 생산성에서 큰 차이를 만들어낸다.

댓글