CPN 한국어 자습서 · 러닝패스 1 / 4 — Agent Skills
5장
Introduction to agent skills · Sharing skills
스킬은 혼자 쓸 때보다 팀과 나눌 때 더 강해집니다. 나만 쓰는 PR 리뷰 스킬도 도움이 되지만, 팀 전체가 같은 스킬로 리뷰하면 기준이 통일됩니다. 이 장에서는 스킬을 공유하는 세 가지 방법과, 작업을 위임하는 서브에이전트에 스킬을 연결하는 방법을 살펴봅니다. 낯선 단어가 나와도 괜찮습니다 — 바로 아래에서 풀어 둡니다.
이 장에서 배우는 것What you'll learn
약 30분스킬을 저장소에 커밋해 팀과 공유하기
플러그인·마켓플레이스로 여러 프로젝트에 배포하기
엔터프라이즈 관리 설정으로 조직 전체에 배포하기
커스텀 서브에이전트에 스킬을 연결해 위임 작업에 적용하기
이 자습서를 보는 법
영어 영상을 먼저 본 뒤, 여기서 한국어로 따라 읽고 손으로 익히는 교재입니다. 점선 친 단어는 올리거나 탭하면 뜻이 나오고, 아래쪽엔 개념을 직접 눌러 보는 위젯이 있습니다. 읽은 만큼 ‘완료’를 누르면 위 진도 바가 찹니다.
잘 만든 스킬을 나 혼자만 쓰면 효과가 거기서 멈춥니다. 같은 스킬을 팀이나 조직이 함께 쓰면, 모두가 같은 기준으로 일하게 됩니다.
예를 들어 PRPull Request. 코드 변경 사항을 팀에 제안해, 합치기 전에 검토받는 단위. 리뷰 스킬을 팀 전체가 쓰면, 누가 리뷰하든 같은 항목을 같은 방식으로 점검합니다. 이 장에서는 공유 범위에 따라 세 가지 방법을 살펴봅니다.
그리고 마지막으로, 작업을 위임하는 서브에이전트에 스킬을 연결하는 방법까지 다룹니다.
먼저 영상을 보세요. 영어가 어렵다면 아래 한국어를 같이 읽으면 됩니다. 자동 번역과 달리, 낯선 용어를 풀어서 옮겼습니다.
영상 대본 — 영어 영상을 보며 같이 읽으세요 (타임스탬프 기준).
.claude/skills 폴더에 넣으세요.skills라는 폴더를 만듭니다. 프로젝트의 .claude 폴더와 비슷한 구조로, 스킬 이름 폴더 안에 SKILL.md 파일을 둡니다..claude/agents에 agent.md 파일을 두고, skills 필드에 불러올 스킬을 적습니다.agent.md 파일로 갑니다.skills 필드를 만들고 스킬을 추가합니다. 이 서브에이전트에 작업을 위임하면, 적어 둔 스킬이 모두 로드된 상태로 모든 리뷰에 적용됩니다.skills 필드에 명시적으로 적습니다. 내장 에이전트는 접근할 수 없고, .claude/agents의 커스텀 서브에이전트만 가능합니다. 스킬은 시작할 때 로드되니, 목적에 항상 필요한 스킬만 적으세요.가장 간단한 방법입니다. 스킬을 .claude/skills 폴더에 두고 커밋변경 사항을 저장소에 기록하는 Git 동작.·푸시기록한 변경을 원격 저장소(GitHub 등)에 올리는 동작.하면 됩니다. 그 저장소를 클론하는 사람은 누구나 별도 설치 없이 스킬을 함께 받습니다.
스킬을 고쳐서 다시 푸시하면, 팀원은 다음 풀에서 자동으로 최신 버전을 받습니다. 새로 배포하거나 따로 안내할 필요가 없습니다. .claude 폴더에는 스킬뿐 아니라 에이전트·훅·설정이 함께 들어 있어, 평소 쓰던 Git 흐름 그대로 버전 관리되고 공유됩니다.
이 방법은 팀 코딩 표준, 프로젝트 전용 작업 흐름, 코드베이스 구조를 참고하는 스킬에 잘 맞습니다. 같은 저장소를 쓰는 사람들에게 곧바로 퍼집니다.
저장소 공유 흐름 — 커밋·푸시·클론·풀로 스킬이 어떻게 퍼지는지 단계별로 눌러 보세요.
[다음 단계]를 누르면 스킬이 내 컴퓨터 → 원격 저장소 → 팀원으로 퍼지고, 수정한 버전이 어떻게 전달되는지 보입니다.
내 컴퓨터.claude/skills
원격 저장소GitHub 등
팀원.claude/skills
스킬을 .claude/skills에 둔 다음, 평소처럼 커밋·푸시합니다.
팀원이 git pull 하면, 별도 설치 없이 같은 스킬을 받습니다.
저장소 작업은 PC(Claude Code·Git) 전용입니다. 위 단계 위젯으로 흐름을 익혀 두고, PC에서 직접 확인해 보세요.
플러그인Claude Code에 기능을 더하는 꾸러미. 여러 팀·프로젝트가 나눠 쓰도록 설계된 것.은 한 저장소를 넘어 여러 프로젝트·팀·커뮤니티에 스킬을 나눌 때 씁니다. 플러그인 프로젝트 안에 skills 폴더를 만들고, 프로젝트의 .claude 폴더와 같은 구조로 스킬을 둡니다.
플러그인 안의 스킬 구조 — 스킬 이름 폴더 안에 SKILL.md.
my-plugin/ ├─ .claude-plugin/ │ └─ plugin.json ← 플러그인 정보 └─ skills/ ← 여기에 스킬을 둡니다 └─ pr-review/ └─ SKILL.md
이 플러그인을 마켓플레이스플러그인을 올리고 내려받는 장터.에 배포하면, 다른 사람들이 자기 Claude Code로 내려받아 씁니다.
스킬이 특정 프로젝트에만 묶이지 않고 커뮤니티에서도 쓸 만할 때 가장 좋은 방법입니다.
조직 관리자조직 전체의 설정을 관리하는 권한을 가진 사람.는 관리 설정을 통해 조직 전체에 스킬을 배포할 수 있습니다. 엔터프라이즈 스킬은 가장 높은 우선순위를 가집니다 — 같은 이름이면 개인·프로젝트·플러그인 스킬을 덮어씁니다.
관리 설정 예시 — 정확한 필드 이름은 공식 문서를 따르세요.
1 2 3 4 5 6 7 8
{
"extraKnownMarketplaces": {
"company": {
"source": { "source": "git", "url": "https://github.com/acme/skills" }
}
},
"enabledPlugins": ["secure-standards@company"]
}
여기에 들어가는 표준은 반드시 지켜야 하는 것입니다 — 필수 표준, 보안 요구사항, 컴플라이언스 작업 흐름, 조직 전체에서 일관돼야 하는 코딩 관행. 핵심어는 ‘반드시’입니다. 관리자는 플러그인을 어떤 마켓플레이스에서 받을 수 있는지도 함께 정할 수 있습니다.
같은 이름의 스킬이 여러 곳에 있어도, 엔터프라이즈가 항상 이깁니다. 조직 차원의 규칙을 위에서 정해 두는 셈입니다.
세 방법은 공유 범위로 갈립니다. 같은 저장소면 커밋, 여러 곳에 널리 나누면 플러그인, 조직 전체에 강제하면 엔터프라이즈입니다. 아래에서 상황을 골라, 어떤 방법이 맞는지 확인해 보세요.
상황을 고르면, 맞는 공유 방법이 켜지고 이유가 표시됩니다.
저장소에 커밋.claude/skills/추천
같은 저장소를 클론·풀한 사람 모두에게 자동으로 전달됩니다.
플러그인 → 마켓플레이스skills/<이름>/SKILL.md추천
내려받은 누구나 쓸 수 있어, 여러 프로젝트·커뮤니티에 배포하기 좋습니다.
엔터프라이즈 관리 설정관리자 배포추천
조직 전체에 적용되고, 같은 이름이면 다른 스킬을 덮어쓰는 최우선입니다.
여기서 많은 분이 놀랍니다. 서브에이전트큰 작업의 일부를 따로 맡기는 보조 일꾼. 메인 대화와 분리된 깨끗한 컨텍스트에서 시작합니다.는 여러분의 스킬을 자동으로 물려받지 않습니다. 작업을 위임하면 메인 대화와 분리된, 깨끗한 컨텍스트에서 시작하기 때문입니다.
skills 필드에 명시했을 때만입니다.커스텀 서브에이전트는 .claude/agents에 agent.md 파일로 정의하고, skills 필드에 불러올 스킬을 적습니다.
1 2 3 4 5 6 7 8 9
--- name: code-reviewer description: Reviews pull requests for code quality and security. skills: - pr-review - security-checklist --- You are a code reviewer. Apply the loaded skills to every review.
이 서브에이전트에 작업을 위임하면, skills에 적은 스킬이 모두 로드된 채 모든 리뷰에 적용됩니다. 아래에서 에이전트 종류를 바꿔 가며 직접 위임해 보세요.
서브에이전트 스킬 시뮬레이터 — 내장 vs 커스텀, 그리고 skills에 무엇을 넣는지에 따라 결과가 달라집니다.
에이전트 종류를 고르고, 커스텀이라면 skills에 넣을 스킬을 켠 뒤 [위임]하세요.
내장 에이전트는 스킬에 접근할 수 없습니다.
Explorer·Plan·Verify는 스킬을 불러오지 못합니다. 스킬을 쓰려면 커스텀 서브에이전트를 만들어야 합니다.
ExplorerPlanVerifyskills 필드에 넣을 스킬 (서브에이전트 시작 시 로드)
skills:
내장(Explorer) 탭으로 바꿔 같은 작업을 위임해 보세요 — 스킬이 하나도 로드되지 않습니다. 또 커스텀에서 스킬을 모두 끄면, 명시하지 않은 셈이라 역시 아무것도 안 올라옵니다.
서브에이전트에는 그 목적에 ‘항상’ 필요한 스킬만 적으세요. 프런트엔드 리뷰어와 백엔드 리뷰어는 서로 다른 스킬이 필요할 수 있습니다.
.claude/skills에 커밋 — 클론·풀하면 자동으로 전달된다.skills 필드에 명시했을 때 — 시작 시 로드.정답을 먼저 떠올려 본 뒤 골라 보세요. 맞히면 설명이 나옵니다.
Q1스킬을 저장소(.claude/skills)에 커밋하면, 그 저장소를 클론한 팀원은 어떻게 되나요?
.claude 폴더가 저장소에 함께 들어 있어, 클론·풀하면 스킬이 자동으로 따라옵니다. 별도 설치가 필요 없습니다.
Q2엔터프라이즈(관리 설정) 스킬과 같은 이름의 개인 스킬이 있으면 어떻게 되나요?
엔터프라이즈 스킬이 가장 높은 우선순위입니다. 같은 이름이면 개인·프로젝트·플러그인 스킬을 덮어씁니다.
Q3서브에이전트와 스킬의 관계로 맞는 것은?
서브에이전트는 스킬을 자동으로 받지 않습니다. Explorer 같은 내장 에이전트는 아예 접근 불가, 커스텀 서브에이전트만 skills 필드에 명시했을 때 — 시작 시 로드합니다.
서브에이전트가 시작할 때 실제로 로드하는 스킬만 남기고, 무엇이 걸러지는지 규칙대로 확인합니다.
// 서브에이전트 스킬 가시성 — 많은 분이 놀라는 규칙이다.
// 서브에이전트는 여러분의 스킬을 '자동으로' 보지 못한다.
// · 내장 에이전트(Explorer·Plan·Verify)는 스킬에 접근할 수 없다.
// · 커스텀 서브에이전트는 자기 skills 필드에 '명시적으로' 적은 스킬만 쓴다.
// · 그 스킬들은 필요할 때 불려 오는 것이 아니라, 시작할 때 한꺼번에 로드된다.
// 서브에이전트 하나가 실제로 로드하는 스킬을 계산한다.
// available = .claude/skills 에 실제로 존재하는 스킬 이름들.
function resolveSkills(agent, available) {
// 내장 에이전트 — skills 필드가 있어도 무시된다. 접근 자체가 막혀 있다.
if (agent.type === "built-in") {
return { loaded: [], missing: [], note: "내장 에이전트는 스킬에 접근할 수 없습니다" };
}
// 커스텀 — 명시한 스킬 중 실제로 존재하는 것만 로드, 없는 이름은 경고.
const listed = agent.skills || [];
const loaded = listed.filter(function (n) { return available.indexOf(n) !== -1; });
const missing = listed.filter(function (n) { return available.indexOf(n) === -1; });
return { loaded: loaded, missing: missing, note: null };
}
// ── 여기서부터 직접 고쳐 보세요 ──
// .claude/skills 에 실제로 있는 스킬들.
const available = ["pr-review", "commit-message", "brand-guide"];
// 서브에이전트 정의. type이 built-in이면 skills 필드를 적어도 소용없습니다.
// custom 에이전트의 skills 목록을 고쳐, 무엇이 로드되는지 확인해 보세요.
const agents = [
{ name: "Explorer", type: "built-in" },
{ name: "frontend-reviewer", type: "custom", skills: ["pr-review", "brand-guide"] },
{ name: "backend-reviewer", type: "custom", skills: ["pr-review", "typo-lint"] },
];
// ── 여기까지 ──
agents.forEach(function (agent) {
const r = resolveSkills(agent, available);
const kind = agent.type === "built-in" ? "내장" : "커스텀";
console.log(agent.name + " (" + kind + ")");
if (r.note) {
console.log(" → 로드되는 스킬 없음 — " + r.note);
} else if (r.loaded.length === 0) {
console.log(" → 로드되는 스킬 없음 — skills 필드에 적은 스킬이 없습니다");
} else {
console.log(" → 시작할 때 로드: " + r.loaded.join(", "));
}
r.missing.forEach(function (n) {
console.log(" ⚠ " + n + " — 존재하지 않는 스킬입니다. 이름을 확인하세요(로드되지 않음).");
});
console.log("");
});
마지막 장에서는 스킬 문제를 해결합니다 — 발동하지 않는 스킬, 우선순위 충돌, 실행 오류까지. 언제든 펴 볼 수 있는 점검 체크리스트로 정리합니다.