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 는 "매번 비슷한 걸 타이핑하고 있다" 싶으면 바로 만들면 좋다
/명령어 한 방에 끝나는 게 제일 편하다
'TIL > Claude Code' 카테고리의 다른 글
| [TIL][Claude Code] Claude Code 초기 세팅 #3 - 숨겨진 단축키와 기능 (0) | 2026.02.18 |
|---|---|
| [TIL][Claude Code] Claude Code 초기 세팅 #1 - 처음 쓰는 사람이 놓치는 것들 (0) | 2026.02.16 |
| [TIL] Claude Code Tip - 창시자 Boris 가 공개한 생산성 향상 기법 10가지 (0) | 2026.02.08 |
| [TIL] Claude Code Resume Session 활용하기 (2) | 2026.02.01 |
| [TIL] Claude Code 에서 Playwright Test Agents 활용하기 [못함!] (0) | 2026.01.12 |