TIL/Claude Code

[TIL][Claude Code] Claude Code 초기 세팅 #2 - MCP, Hooks, Skills 로 워크플로우 자동화

아람2 2026. 2. 17. 22:00
반응형

 

https://helloahram.tistory.com/273

 

 

CLAUDE.md 세팅에서 한 단계 더 가면 MCP 서버 연동, Hooks 자동화, 커스텀 Skills 가 있다

이걸 세팅하면 "도구" 에서 "파이프라인" 이 된다

1. MCP 서버 - Claude 에 외부 도구 연결하기

Model Context Protocol 의 약자다

Claude 에 외부 도구를 플러그인처럼 연결하는 것이다

예: Playwright 연결하면 Claude 가 직접 브라우저를 조작할 수 있다

추가하는 법

# HTTP 방식 (권장)
claude mcp add --transport http my-server https://api.example.com/mcp/

# 로컬 도구 (stdio)
claude mcp add --transport stdio playwright -- npx @anthropic-ai/mcp-server-playwright

# 확인
claude mcp list

스코프 설정

# 프로젝트용 (팀 공유, git 에 올라감)
claude mcp add --scope project playwright -- npx @anthropic-ai/mcp-server-playwright

# 개인용 (모든 프로젝트)
claude mcp add --scope user playwright -- npx @anthropic-ai/mcp-server-playwright

# 로컬용 (이 프로젝트, 나만)
claude mcp add --scope local playwright -- npx @anthropic-ai/mcp-server-playwright

실전 예시: Playwright MCP

연결하면 Claude 가 이런 걸 할 수 있다:

> 로그인 페이지에서 버튼 목록 좀 확인해줘
# Claude 가 browser_snapshot 으로 실제 페이지 분석

> 이 버튼 클릭하면 뭐가 나와?
# Claude 가 직접 클릭하고 결과 확인

코드 짜기 전에 실제 페이지를 보면서 작업할 수 있다

추측으로 XPath 치다가 안 되는 것보다 100배 낫다

대화 중 관리

> /mcp
# 연결된 서버 목록, 상태 확인, OAuth 인증 등

2. Hooks - 이벤트에 반응하는 자동화

Claude Code 의 특정 이벤트가 발생하면 자동으로 셸 명령어를 실행하는 기능이다

예: 파일 수정할 때마다 자동으로 prettier 돌리기

이벤트 종류

이벤트 발동 시점 활용
PreToolUse 도구 실행 위험한 작업 차단
PostToolUse 도구 실행 자동 포맷팅, 린트
Notification Claude 가 입력 대기 데스크톱 알림
Stop Claude 응답 완료 작업 완료 검증

설정하는 법

# 대화 중
> /hooks
# 이벤트 선택 → 명령어 입력 → 저장 위치 선택

또는 .claude/settings.json 에 직접 작성:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs prettier --write 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

이러면 Claude 가 파일 수정할 때마다 prettier 가 자동으로 돌아간다

실전 활용 예시

1) 파일 수정 시 자동 포맷팅

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs prettier --write 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

2) 위험한 파일 수정 차단

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "if echo \"$TOOL_INPUT\" | jq -r '.file_path' | grep -qE '(\\.env|credentials)'; then echo 'Blocked: 민감 파일 수정 금지' >&2; exit 2; fi"
          }
        ]
      }
    ]
  }
}

.env 나 credentials 파일을 Claude 가 건드리려 하면 자동 차단

3) Claude 가 입력 기다릴 때 알림

{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Claude Code 가 입력을 기다리고 있습니다\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

긴 작업 시켜놓고 다른 거 하다가 알림 받을 수 있다 (macOS)

Hook 동작 규칙

# exit 0 → 허용
exit 0

# exit 2 → 차단 (stderr 에 이유 출력)
echo "차단 이유" >&2
exit 2

3. 커스텀 Skills - 나만의 슬래시 명령어

.claude/commands/ 에 마크다운 파일을 넣으면 슬래시 명령어가 생긴다

.claude/
└── commands/
    └── my-command.md    →  /my-command 로 실행

반복되는 프롬프트를 명령어 하나로 만드는 것이다

만드는 법

mkdir -p .claude/commands

.claude/commands/review.md :

---
name: review
description: 코드 리뷰 수행
allowed-tools:
  - Read
  - Glob
  - Grep
---

# 코드 리뷰

$ARGUMENTS 에 해당하는 파일/디렉토리를 리뷰한다

## 체크리스트

1. 타입 안정성
   - any 사용 여부
   - 타입 단언 남용 여부

2. 에러 처리
   - try-catch 누락
   - 에러 무시 (catch 빈 블록)

3. 성능
   - 불필요한 리렌더링
   - 메모이제이션 누락

4. 보안
   - 하드코딩된 시크릿
   - SQL 인젝션 가능성

## 출력 형식

| 파일 | 라인 | 심각도 | 내용 |
|------|------|--------|------|

사용

claude
> /review src/auth/
# Claude 가 체크리스트 기반으로 리뷰 수행

핵심 포인트

1) frontmatter 에 allowed-tools 명시

---
allowed-tools:
  - Read     # 파일 읽기만
  - Glob     # 파일 검색만
---

필요한 도구만 허용하면:

  • 의도치 않은 파일 수정 방지
  • 실행 속도 향상

2) $ARGUMENTS 로 입력 받기

`$ARGUMENTS` 에서 다음을 파싱한다:
- 파일 경로: `src/auth/`
- 옵션: `--fix`, `--verbose`
> /review src/auth/ --verbose
# $ARGUMENTS = "src/auth/ --verbose"

3) 워크플로우 명시

Claude 가 따라갈 단계를 구체적으로 쓸수록 결과가 일관된다

## 워크플로우

1. 대상 파일 수집
   └─ $ARGUMENTS 경로에서 *.ts 파일 검색

2. 파일별 분석
   ├─ 체크리스트 항목 확인
   └─ 문제 발견 시 기록

3. 결과 출력
   └─ 테이블 형식으로 정리

4) 출력 형식 정의

출력 형식을 미리 정의해두면 매번 같은 포맷으로 결과가 나온다

## 출력 형식

# 리뷰 결과

## 요약
- 검사 파일: N개
- 발견 이슈: N개

## 상세
| 파일 | 라인 | 심각도 | 내용 |
|------|------|--------|------|

개인용 vs 프로젝트용

# 프로젝트 공유 (git 에 올라감)
.claude/commands/review.md

# 개인 전용 (모든 프로젝트)
~/.claude/commands/my-util.md

4. .claude/rules/ - 조건부 규칙 적용

특정 파일 패턴에만 규칙 적용하기

.claude/rules/ 에 YAML frontmatter 로 조건을 걸 수 있다

---
paths:
  - "src/api/**/*.ts"
  - "src/services/**/*.ts"
---

# API 개발 규칙
- 모든 입력값 검증 필수
- 에러 응답은 RFC 7807 형식
- try-catch 에서 구체적 예외 타입 명시

이 규칙은 src/api/src/services/ 하위 파일을 작업할 때만 적용된다

---
paths:
  - "**/*.test.ts"
  - "**/*.spec.ts"
---

# 테스트 규칙
- describe/it 구조 사용
- 각 테스트는 독립적으로 실행 가능해야 함
- mock 은 테스트 파일 내에서만 정의

테스트 파일 작업할 때만 자동 적용

5. 실전 조합: 이것들을 같이 쓰면

예시: 코드 작성 워크플로우

CLAUDE.md          → 프로젝트 컨텍스트 자동 로드
  ↓
.claude/rules/     → 작업 파일에 맞는 규칙 자동 적용
  ↓
MCP (Playwright)   → 실제 페이지 확인하면서 작업
  ↓
커스텀 Skills      → /review, /lint 로 검증
  ↓
Hooks              → 파일 수정 시 자동 포맷팅

각각은 작은 기능이지만 조합하면 반자동 파이프라인이 된다

내 세팅 요약

~/.claude/CLAUDE.md              → 한국어 응답, 코드 스타일 공통 규칙
./CLAUDE.md                      → 프로젝트별 구조, 명령어
./CLAUDE.local.md                → 개인 취향 (git 안 올라감)
./.claude/rules/                 → 파일 패턴별 규칙
./.claude/commands/              → 커스텀 슬래시 명령어
./.claude/settings.json          → 권한 + Hooks

6. 기타 알아두면 좋은 것들

Git Worktree 로 병렬 작업

# 기능 A 용 워크트리
git worktree add ../feature-a -b feature-a
cd ../feature-a && claude
> /rename feature-a

# 기능 B 용 (다른 터미널)
git worktree add ../feature-b -b feature-b
cd ../feature-b && claude
> /rename feature-b

두 세션이 완전 독립적으로 동작한다

같은 프로젝트에서 두 기능을 동시에 작업할 때 유용하다

Headless 모드 (스크립트 / CI 연동)

# 한 줄 질문 → 답변 → 종료
claude -p "이 함수의 시간 복잡도 분석해줘" < src/sort.ts

# JSON 출력
claude -p --output-format json "package.json 의존성 분석"

# 스트림 JSON
claude -p --output-format stream-json "코드 리뷰"

CI/CD 파이프라인에 넣거나 다른 스크립트와 연동할 때 쓴다

키보드 단축키

동작
Shift+Tab Plan ↔ Act 모드 전환
Option+T (macOS) Extended Thinking 토글
Ctrl+C 현재 생성 중단
Ctrl+L 화면 클리어

📋 세팅 체크리스트

□ CLAUDE.md 작성 (/init 또는 직접)
□ ~/.claude/CLAUDE.md 에 개인 공통 규칙
□ .claude/settings.json 권한 설정
□ MCP 서버 연결 (필요한 것만)
□ Hooks 설정 (자동 포맷팅 등)
□ 커스텀 Skills 작성 (반복 작업용)
□ .claude/rules/ 조건부 규칙 (프로젝트 규모가 크면)

🎯 결론

기본편에서 다룬 CLAUDE.md, 세션 관리, 권한 설정이 50% 라면

MCP + Hooks + Skills 가 나머지 50%

특히 커스텀 Skills 는 "매번 비슷한 걸 타이핑하고 있다" 싶으면 바로 만들면 좋다 

/명령어 한 방에 끝나는 게 제일 편하다

반응형