스킬 시연 프롬프트 모음
강사 사용 가이드
- 각 프롬프트를 Claude Code 대화창에 그대로 붙여넣어 시연합니다
- 스킬이 매칭되면 Claude가 확인 프롬프트를 먼저 표시합니다
- 수강생에게 “왜 이 프롬프트가 이 스킬을 불러왔을까?” 질문하세요
Lesson 1 — pr-description 스킬
설명 포인트: description의 키워드와 사용자 요청이 의미적으로 매칭됨
프롬프트 A — 직접 트리거
PR 설명 작성해줘
프롬프트 B — 다른 표현으로도 매칭되는지 확인
이번 브랜치 변경사항을 풀 리퀘스트 형식으로 요약해줘
프롬프트 C — 영어 표현
Write a PR description for my changes
시연 후 질문 “세 문장이 모두 같은 스킬을 불러왔습니다. description에 어떤 키워드가 있었기에 가능했을까요?”
Lesson 2 — codebase-onboarding 스킬 (allowed-tools + 프로그레시브 디스클로저)
설명 포인트 1: allowed-tools로 Edit/Write 도구가 차단됨 설명 포인트 2: 질문 내용에 따라 architecture-guide.md 로드 여부가 달라짐
프롬프트 A — 일반 탐색 (architecture-guide.md 로드 안 함)
이 프로젝트 폴더 구조 설명해줘. 어디서부터 코드를 읽으면 될까?
프롬프트 B — 아키텍처 질문 (architecture-guide.md 로드 트리거)
이 시스템의 전체 아키텍처 구조를 설명해줘. 레이어가 어떻게 나뉘어 있어?
시연 후 비교 A 프롬프트: references/architecture-guide.md 읽지 않음 → 컨텍스트 절약 B 프롬프트: references/architecture-guide.md 읽음 → 필요할 때만 로드
프롬프트 C — allowed-tools 차단 확인
새로운 개발자 온보딩 도와줘. 그리고 README.md 파일도 수정해줘.
예상 결과: 온보딩 설명은 하되, 파일 수정(Edit)은 자동 차단됨
Lesson 2 — code-review-kr 스킬 (멀티파일 + 스크립트)
설명 포인트 1: 다양한 트리거 표현 → 동일한 스킬 매칭 설명 포인트 2: validate.sh가 “읽기”가 아닌 “실행”으로 처리됨 설명 포인트 3: “상세 리뷰” 키워드 → review-checklist.md 추가 로드
프롬프트 A — 기본 리뷰 (체크리스트 로드 안 함)
이 코드 리뷰해줘
function getUser(id) {
const password = "admin1234"
return db.query("SELECT * FROM users WHERE id = " + id)
}
프롬프트 B — 상세 리뷰 요청 (review-checklist.md 로드 트리거)
이 코드 꼼꼼하게 상세 리뷰해줘. 빠뜨리는 거 없이 다 봐줘.
async function fetchData() {
const result = await fetch('/api/data')
const json = result.json()
return json
}
시연 후 비교 A: references/review-checklist.md 로드 안 함 B: “꼼꼼하게”, “상세” 키워드로 review-checklist.md 추가 로드
프롬프트 C — 영어 표현도 매칭되는지 확인
review this code
const secret_key = "sk-1234abcd"
Lesson 3 — CLAUDE.md vs Skills vs Hooks 비교
설명 포인트: 세 가지 커스터마이징의 차이를 동시에 보여줌
프롬프트 A — CLAUDE.md (항상 로드) 확인
지금 어떤 코딩 규칙을 따르고 있어? 이 프로젝트 규칙 알려줘.
예상 결과: CLAUDE.md의 내용(TypeScript strict mode, Conventional Commits 등)을 그대로 답변
프롬프트 B — Skills (온디맨드) 비교
PR 설명 작성해줘
설명: 위 A는 항상 로드, 이 B는 요청할 때만 스킬 로드 → 컨텍스트 차이 설명
프롬프트 C — Hooks (이벤트) 비교 설명용
src/sample.ts 파일에 간단한 함수 하나 추가해줘
예상 결과: 파일 수정(Edit/Write) 발생 → post-tool-use 훅 자동 실행 시연 포인트: “제가 요청하지 않았는데 format-check.sh가 자동으로 실행됐습니다”
Lesson 4 — frontend-reviewer 서브에이전트 + skills 필드
설명 포인트: 서브에이전트는 skills를 자동 상속하지 않음 → 명시적 선언 필요
프롬프트 A — 서브에이전트 직접 호출
frontend-reviewer 에이전트로 이 컴포넌트 검토해줘
function UserCard({ user }) {
return (
<div onClick={() => console.log(user.password)}>
<img src={user.avatar} />
<span>{user.name}</span>
</div>
)
}
예상 결과:
- frontend-reviewer 에이전트 시작
- code-review-kr 스킬이 시작 시 자동 로드 (온디맨드 아님!)
- 접근성(alt 누락), 보안(password 노출), 리뷰 결과 출력
프롬프트 B — 일반 대화 vs 에이전트 차이 확인
일반 코드 리뷰와 frontend-reviewer 에이전트 리뷰의 차이가 뭐야?
설명 포인트:
- 일반: 메인 컨텍스트에서 code-review-kr 스킬 온디맨드 로드
- 에이전트: 독립 컨텍스트에서 시작 시 스킬 즉시 로드
Lesson 5 — 트러블슈팅 실습
설명 포인트: 가장 흔한 실수 → 파일명 대소문자
1단계 — 스킬 목록 확인 (broken-skill이 없어야 함)
지금 사용 가능한 스킬 목록 보여줘
예상 결과: pr-description, codebase-onboarding, code-review-kr만 보임 broken-skill은 목록에 없음 → “왜 없을까요?” 질문
2단계 — 디버그 모드로 원인 파악
터미널에서 실행:
claude --debug예상 결과: 로그에서 broken-skill 관련 에러 메시지 확인
3단계 — 원인 발견 및 수정
# 현재 잘못된 파일명 확인
ls .claude/skills/broken-skill/
# skill.md (소문자) → SKILL.md (대문자)로 수정
mv .claude/skills/broken-skill/skill.md .claude/skills/broken-skill/SKILL.md4단계 — 재시작 후 확인
지금 사용 가능한 스킬 목록 다시 보여줘
예상 결과: broken-skill이 이제 목록에 나타남 마무리 멘트: “스킬이 안 보일 때 체크리스트: 파일명 → YAML 문법 → claude —debug”
보너스 — 스킬 우선순위 설명용 (Lesson 1 & 4)
프롬프트 — 동일 이름 스킬 충돌 시뮬레이션 설명
만약 내 개인 스킬과 회사 엔터프라이즈 스킬 이름이 같으면 어떻게 돼?
강사 설명: Enterprise → Personal → Project → Plugins 순서 이 프로젝트의 code-review-kr은 Project 레벨 → 개인 스킬보다 낮은 우선순위 해결책: 이름을 더 구체적으로 변경 (“frontend-review”, “backend-review” 등)