2026. 7. 28. 11:00ㆍAI 기반 프론트엔드 웹개발자 양성과정

[Claude Code 심화]
커스텀 훅 · 플러그인 · MCP 자동화
2026.07.24 · 학습 범위: Claude Code 도구·명령어(advisor·caveman·skills.sh 등), 커스텀 훅(PreToolUse), 플러그인 제작, MCP
📋 오늘 다룬 것들
오늘은 "Claude Code를 내 손에 맞게 길들이는" 하루였다. 세션을 관리하는 CLI 명령어부터, 위험한 명령을 자동으로 가로채는 커스텀 훅, 스킬·훅·에이전트·MCP를 한데 묶은 플러그인 제작, 그리고 노션 MCP를 연결해 이 학습일지를 자동으로 쓰는 자동화까지 직접 만들어봤다. 어제까지 도구를 "쓰는" 쪽이었다면, 오늘은 도구를 "만드는" 쪽으로 넘어간 느낌이었다.
🖥 Claude Code CLI — 세션 다루기
세션을 오래 쓰다 보면 대화가 여러 개로 쌓인다. 오늘은 그 세션을 이름 붙이고 다시 찾아 들어가는 명령어를 익혔다.
| 명령어 | 역할 |
|---|---|
/rename | 현재 세션에 제목을 붙여 나중에 알아보기 쉽게 함 |
/resume | 이전 세션 목록을 모두 보고 원하는 세션으로 찾아 들어감 |
/resume은 "어제 하던 그 작업"으로 정확히 되돌아갈 때 유용하다. 세션마다 /rename으로 제목을 붙여두면, 나중에 목록에서 헤매지 않고 바로 골라 이어갈 수 있다.@에이전트로 홈페이지 만들기
@에이전트이름으로 특정 서브에이전트를 호출해 작업을 통째로 맡길 수 있다. 오늘은 @"늙크크" 에이전트를 불러 홈페이지(index.html) 한 벌을 만들어봤다. 프롬프트로 일일이 지시하는 대신, 목적에 맞게 설계된 에이전트에게 "만들어줘" 한 번으로 결과물이 나온다는 게 편했다.
🧰 Claude Code 도구·명령어 모음 (허브 카드)
Claude 학습 허브에는 Claude Code를 확장하는 슬래시 명령어·도구 카드가 잔뜩 있었다. 오늘 핵심 실습(훅·플러그인·MCP)과 함께 이 도구들도 한 바퀴 훑었다.
| 명령어 / 도구 | 역할 |
|---|---|
/advisor | 더 강한 모델을 조언자로 붙여 중요한 순간에 한 번 더 검토 (실험적·API 전용, 토큰 별도 과금) |
/init | 코드베이스를 분석해 CLAUDE.md 자동 생성 (새 저장소 첫 명령) |
/statusline | 하단 상태줄(컨텍스트·비용·git 브랜치·모델)을 자연어로 설정 |
/insights | 내 사용 패턴·마찰 지점을 스캔해 리포트(HTML) 생성 |
/powerup | Claude Code 기능을 짧은 인터랙티브 레슨(약 30분)으로 학습 |
/team-onboarding | 최근 30일 이력으로 팀 온보딩용 ONBOARDING.md 생성 |
/radio | 프롬프트에 입력하면 유튜브 BGM 재생 (작업용 배경음악) |
/grill-me | 계획·설계를 공유 이해에 도달할 때까지 집요하게 인터뷰 (질문 하나씩 + 추천답변) |
/caveman으로 켜고 stop caveman(노말모드)으로 끈다.npx skills add <owner/repo> 한 줄로 설치한다. "매일 손이 가는 스킬 8선"(Karpathy Guidelines·Superpowers·Humanizer 등) 같은 큐레이션도 있어, 필요한 절차적 지식을 골라 붙일 수 있다.clone → 커밋·push → PR까지의 흐름을 익혔다. 압권은 PR·이슈 댓글에 @claude만 적으면 GitHub Action이 자동으로 코드를 고쳐 PR을 올려주는 것(ANTHROPIC_API_KEY 시크릿 등록 필요).Shift+Tab(권한 모드 순환)·!(셸 즉시 실행)·@(파일 첨부)·ultrathink(그 질문만 깊게) 같은 단축키/프롬프트 꿀팁 모음. HORROR는 재미로 넣은 이스터에그 카드다. 🔌 MCP는 USB-C처럼 외부 도구(노션·카카오 등)를 통일 규격으로 연결하는 것으로, 오늘 자동화(아래)에서 직접 사용했다.claude plugin install bkit /pdca pm my-feature # PRD→설계→개발→검증→보고 /pdca team # 전문가 에이전트 팀 병렬 소환기능마다 PRD·설계 문서가 남아 팀/강의 프로젝트의 공유·리뷰·평가에 그대로 쓸 수 있다는 점이 인상적이었다.
/advisor·/init·/statusline·/insights·/powerup·/team-onboarding(ONBOARDING)·/radio·/grill-me·🗿CAVEMAN·🧩SKILLS.SH·🧰PICKS·📦GITHUB·💡TIPS·👻HORROR·🧰BKIT·🔌MCP. 슬래시 명령어부터 토큰 절약·스킬 생태계·협업 자동화까지, Claude Code를 "확장하는 도구"가 이렇게 많다는 걸 이번에 제대로 알았다.🔒 커스텀 훅 — Dangerous Command Guard
오늘의 핵심 실습. Claude Code가 복구 불가능한 Bash 명령을 실행하려 할 때, 자동으로 가로채서 사용자가 그 명령을 직접 타이핑해야만 실행을 허용하는 안전 가드 훅을 만들었다. 훅(Hook)은 Claude가 특정 행동을 하기 직전/직후에 끼어드는 내 코드다.
동작 방식
차단 대상 명령어
| 패턴 | 위험 이유 |
|---|---|
rm -rf | 파일·디렉토리 강제 삭제 |
git reset --hard | 미저장 변경사항 전체 파기 |
git push --force | 원격 히스토리 덮어쓰기 |
DROP TABLE | DB 테이블 삭제 |
DROP DATABASE | DB 전체 삭제 |
구성 요소
~/.claude/ ├── hooks/ │ └── dangerous_guard.py # 훅 스크립트 (Python) ├── settings.json # PreToolUse 이벤트 등록 └── logs/ └── dangerous_guard.log # 시도 기록
훅은 settings.json의 PreToolUse에 Bash 툴을 matcher로 걸어 등록한다. Bash 실행 시도마다 이 파이썬 스크립트가 먼저 돌아간다.
"hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "python \"C:/Users/Har06/.claude/hooks/dangerous_guard.py\"" } ] } ] }
확인 방식 · 로그
사용자가 위험 명령어를 토씨 하나 안 틀리고 그대로 타이핑해야 실행이 허용된다. 틀리거나 빈 입력이면 차단된다.
⚠️ 위험 명령어 감지: [rm -rf]
명령어: rm -rf ./dist
실행하려면 명령어를 그대로 입력하세요 (취소: Enter만 누르기):
> rm -rf ./dist ← 정확히 입력 시 허용
2026-07-24 14:32:11 | BLOCKED | rm -rf ./dist 2026-07-24 14:35:02 | ALLOWED | git reset --hard HEAD~1
핵심 기술
| 항목 | 내용 |
|---|---|
| 이벤트 | PreToolUse — Bash 툴 실행 전에 가로채기 |
| 언어 | Python |
| 입력 | stdin으로 JSON 수신 (tool_input.command 필드) |
| 콘솔 입력 | CONIN$ 직접 열기 (stdin이 이미 소비된 상태에서 사용자 입력 받기) |
| 종료 코드 | 0 = 허용, 2 = 차단 |
CONIN$를 직접 열어서 타이핑을 받아야 했다. 종료 코드로 허용/차단이 갈린다는 것(2면 Claude 쪽에서 실행이 막힘)도 이 실습으로 확실히 이해했다.🧩 커스텀 플러그인 제작
훅 하나로 끝이 아니라, 스킬 · 훅 · 에이전트 · MCP를 한 묶음으로 담은 커스텀 플러그인을 만들어봤다. 여러 요소를 조합해 하나의 기능 패키지로 굳히고, 마켓플레이스 배포 방식으로 배포까지 진행했다.
| 구성 요소 | 역할 |
|---|---|
| 스킬(Skill) | 반복 작업을 /명령어로 굳혀 재사용 |
| 훅(Hook) | 특정 행동 직전/직후에 내 코드가 자동 개입 |
| 에이전트(Agent) | 목적별 서브에이전트에게 작업을 통째로 위임 |
| MCP | 노션·카카오 등 외부 도구를 통일 규격으로 연결 |
실제 배포 & 설치 방법
Claude Code의 마켓플레이스는 특별한 서버가 아니라 깃허브 저장소 하나다. 플러그인 파일과 marketplace.json을 담은 repo를 푸시하면 그 자체가 배포다. 오늘 만든 daily-log 플러그인을 yundlab/claude-marketplace 저장소에 올렸고, 다른 사람은 아래 두 줄로 바로 설치해 쓸 수 있다.
# 1) 마켓플레이스(깃허브 repo) 등록 /plugin marketplace add yundlab/claude-marketplace # 2) 플러그인 설치 /plugin install daily-log@yundlab-marketplace
/daily-log 스킬, journal-writer 에이전트, 노션 MCP 설정이 한꺼번에 딸려 온다. 사용 전 노션 Integration 토큰을 NOTION_TOKEN 환경변수로 넣어주면(setx NOTION_TOKEN "ntn_xxx") 준비 끝. 내가 만든 자동화를 명령어 두 줄로 남에게 그대로 넘길 수 있다는 게 신기했다.🔌 MCP 연결 → 학습일지 자동화
마지막으로, 재시작된 세션에서 /mcp로 notion MCP가 초록불(연결됨)인지 확인한 뒤 /daily-log를 실행했다. 노션의 오늘 메모와 코드 변경을 읽어, 지금 보고 있는 이 학습일지 HTML을 자동으로 만들고 커밋까지 이어지는 흐름이다.
# MCP 연결 확인 → 자동화 스킬 실행 /mcp # notion 초록불 확인 /daily-log # 오늘 메모 + git 변경 → 학습일지 HTML 생성·커밋
/daily-log 한 줄에 전부 모여 있다. 노션 MCP로 메모를 읽고, 서브에이전트가 글을 쓰고, 스킬이 전체 절차를 묶고, 커밋 형식 검증 훅이 마지막을 지킨다 — 오늘 실습이 하나의 자동화로 합쳐지는 게 눈에 보였다.✍️ 마치며
어제까지가 Claude Code를 "쓰는" 법이었다면, 오늘은 "뜯어고쳐 내 것으로 만드는" 법을 배웠다. 위험 명령을 직접 타이핑해야만 통과시키는 안전 가드 훅을 만들면서, AI에게 자율권을 주되 돌이킬 수 없는 순간엔 사람이 한 번 더 확인하게 만드는 하네스의 감각을 손으로 익혔다. 스킬·훅·에이전트·MCP를 플러그인으로 묶어 배포하고, 그 조합이 /daily-log 자동화로 합쳐지는 걸 보며 "도구를 만드는 사람"의 시야가 조금 열린 하루였다. 훅 실행이 느려 아쉬웠던 부분은, 다음에 더 가벼운 구조로 다시 확인해볼 생각이다.
🏷️ Claude Code | 커스텀 훅 | PreToolUse | 플러그인 | MCP | 자동화 | 학습일지
'AI 기반 프론트엔드 웹개발자 양성과정' 카테고리의 다른 글
| [260728 21일차] 프로젝트 #2 (0) | 2026.07.28 |
|---|---|
| [260727 20일차] 프로젝트 #1 (0) | 2026.07.28 |
| [260723 18일차] Streamlit · Gradio · Claude Code (0) | 2026.07.23 |
| [260722 17일차] OpenAPI · HuggingFace · Transformers · OCR (1) | 2026.07.22 |
| [260721 16일차] YOLO 심화 (0) | 2026.07.22 |