스킬 시스템 설계 — 키워드 트리거로 에이전트 능력을 모듈화하는 법
SKILL.md 구조, 키워드 트리거 테이블, 파이프라인 연결까지 — 실전 운영기
핵심 요약
- 스킬은 에이전트의 능력을 독립된 모듈로 분리한 것이다. 하나의 스킬 파일이 하나의 역할을 담당한다
- 키워드 트리거 테이블로 사용자의 자연어 요청을 자동으로 스킬과 매칭한다
- 스킬을 파이프라인으로 연결하면 복잡한 작업이 재현 가능한 워크플로가 된다
배경
에이전트에게 CLAUDE.md로 "무엇을 하라"는 알려줄 수 있습니다. 그런데 "어떻게 하라"를 CLAUDE.md에 넣으면 문제가 생깁니다. 절차가 길어지고, 파일이 비대해지고, 매 세션마다 불필요한 절차까지 전부 로드됩니다.
스킬 시스템은 이 문제를 해결합니다. "어떻게"를 독립된 파일로 빼서, 필요할 때만 로드하는 구조입니다.
리서치, 컴파일, 검증, 블로그 발행, 트위터 초안, 인터뷰, 브레인스토밍, 코드 리뷰, 프로젝트 진단, 테스트, 글 기획, 자기점검 등 다수의 스킬을 운영하고 있습니다. 각각이 독립된 SKILL.md 파일로 존재합니다.
본문
1. SKILL.md 파일 구조 — 세 가지 필수 요소
모든 스킬 파일은 .claude/skills/{스킬명}/SKILL.md 경로에 저장됩니다. 구조는 일관됩니다.
frontmatter: 스킬의 메타 정보
---
name: research
description: "Web research and information gathering for source file creation.
Trigger: 리서치, 조사, 검색, 찾아줘, research"
user-invocable: true
---
name은 고유 식별자, description은 에이전트가 이 스킬의 용도를 판단하는 데 사용합니다. Trigger에 적힌 키워드가 사용자의 입력과 매칭되면 이 스킬이 활성화됩니다. user-invocable이 true면 사용자가 직접 호출할 수 있습니다.
Procedure: 실행 절차
스킬의 핵심입니다. 단계별로 무엇을 하는지, 어떤 판단 기준을 적용하는지 적습니다. 리서치 스킬의 경우:
1. 주제 파악 → 용도 확인 → 범위 설정
2. 탐색 루프 (최대 3라운드)
- 라운드 1: 초기 탐색 (3개+ 독립 출처 확보)
- 라운드 2+: 불분명한 점 해소, 교차검증
3. 정보 분류 (사실/해석/추정/의견)
4. 반대 시나리오 검토
5. 탐색 로그 작성
절차가 명확하면 에이전트가 매번 같은 품질로 작업을 수행합니다. "알아서 잘 해"가 아니라 "이 순서로, 이 기준으로" 지시하는 것입니다.
Output: 결과물 형식
스킬의 출력이 어떤 포맷이어야 하는지 명시합니다. 이것이 없으면 에이전트가 매번 다른 형태로 결과를 내놓습니다. 다음 단계 스킬과 연결하려면 출력 형식이 고정되어 있어야 합니다.
2. 키워드 트리거 테이블 — 자연어를 스킬에 매핑
사용자가 "이 주제 좀 조사해줘"라고 하면, 에이전트는 어떤 스킬을 써야 할까요?
CLAUDE.md에 키워드 트리거 테이블을 넣으면 이 매핑이 자동으로 됩니다:
| Keyword | Skill | Path |
|---|---|---|
| 리서치, 조사, 검색, 찾아줘, research | research | .claude/skills/research/SKILL.md |
| 정리, 컴파일, 소스 작성, 자료 만들어 | compile | .claude/skills/compile/SKILL.md |
| 검증, 팩트체크, 확인, 사실 확인 | verify | .claude/skills/verify/SKILL.md |
| 블로그, 게시, 발행, publish | publish | .claude/skills/publish/SKILL.md |
설계 시 고려한 것들:
- 한국어와 영어 키워드를 동시에 등록합니다. 사용자가 어떤 언어로 요청할지 모릅니다.
- 키워드는 동사 중심으로 잡습니다. "리서치"보다 "조사해줘", "찾아줘"가 자연어 요청에 더 자주 등장합니다.
- 겹치는 키워드는 허용하지 않습니다. "검증"이 두 개 스킬에 매핑되면 에이전트가 혼동합니다.
테이블이 CLAUDE.md에 있으면 에이전트가 매 세션 시작 시 자동으로 읽습니다. 별도의 라우팅 로직 없이 키워드 매칭만으로 스킬이 활성화됩니다.
3. 스킬 간 파이프라인 — 단일 스킬에서 워크플로로
개별 스킬은 그 자체로 유용하지만, 스킬을 연결하면 복잡한 작업이 재현 가능한 파이프라인이 됩니다.
현재 운영 중인 핵심 파이프라인:
research → compile → verify → publish
(조사) (정리) (검증) (발행)
각 스킬의 Output이 다음 스킬의 Input이 됩니다: - research가 수집한 자료 → compile이 소스 파일로 구조화 - compile이 만든 소스 파일 → verify가 4단계 검증 수행 - verify를 통과한 소스 → publish가 블로그 글로 변환하여 발행
파이프라인은 CLAUDE.md에 프리셋으로 정의합니다:
| Preset | Pipeline |
|---|---|
| research | deep-interview → research → compile → verify → publish |
| quick-draft | executor → verify |
| review | code-review → verify |
프리셋의 가치는 판단 비용 제거입니다. "이 요청은 어떤 순서로 처리해야 하지?"를 매번 고민하지 않아도 됩니다. 복잡한 리서치 요청이면 research 프리셋을 따르면 됩니다.
4. "언제 스킬을 나눠야 하는가" — 분리 기준
스킬을 너무 잘게 나누면 관리 부담이 커지고, 너무 크게 묶으면 스킬의 의미가 사라집니다. 분리 기준이 필요합니다.
나눠야 하는 신호:
- 독립 실행이 가능한가? "검증"은 리서치 없이도 기존 소스 파일에 대해 단독으로 실행할 수 있습니다. 독립 실행 가능하면 별도 스킬입니다.
- 다른 파이프라인에서도 재사용되는가? verify 스킬은 research 파이프라인에서도, review 파이프라인에서도 쓰입니다. 재사용되면 분리합니다.
- 절차가 5단계를 넘는가? 한 스킬의 절차가 너무 길면 에이전트가 중간 단계를 건너뛸 확률이 올라갑니다. 나누는 편이 안전합니다.
묶어도 되는 신호:
- 항상 함께 실행되고, 단독 실행이 무의미한 경우.
- 두 작업의 Input/Output이 동일한 경우.
5. 스킬 사용 추적 — memory-map.md
스킬을 만들어 놓고 실제로 쓰이는지 모르면, 죽은 스킬이 쌓입니다. memory-map.md에 사용 추적 테이블을 넣었습니다:
## Skill Usage Tracking
| Skill | Last Used | 사용 빈도 |
|---|---|---|
| research | 2026-04-03 | 자주 사용 |
| compile | 2026-04-03 | 자주 사용 |
| verify | 2026-04-02 | 자주 사용 |
| publish | 2026-04-01 | 보통 |
| deep-interview | 2026-03-30 | 가끔 |
| brainstorming | — | 미사용 |
이 테이블을 보면 어떤 스킬이 자주 쓰이고 어떤 스킬이 방치되어 있는지 한눈에 보입니다. Count가 0인 스킬은 두 가지 중 하나입니다 — 트리거 키워드가 잘못되었거나, 애초에 필요 없는 스킬이었거나.
스킬이 트리거될 때마다 last_used와 count가 자동으로 갱신되도록 CLAUDE.md에 규칙을 넣었습니다. 수동 추적은 지속되지 않습니다.
6. 각 스킬의 역할 분담
스킬은 크게 세 그룹으로 나뉩니다:
| 스킬 그룹 | 대표 스킬 | 역할 |
|---|---|---|
| 콘텐츠 파이프라인 | research, compile, verify | 리서치 → 소스 파일 구조화 → 팩트체크. 핵심 워크플로 |
| 발행·전달 | publish, twitter-draft | 블로그 API 게시, 트위터 초안 전달. 출구 스킬군 |
| 설계·진단 | deep-interview, brainstorming, writing-plans, project-doctor 외 | 기획, 인터뷰, 리뷰, 자기점검 등 판단 지원 스킬군 |
각각이 한 가지 역할만 담당하기 때문에 개별 스킬 파일은 짧습니다. 평균 50~90줄입니다.
시행착오 / 주의사항
-
처음에는 스킬 없이 CLAUDE.md에 모든 절차를 넣었습니다. 리서치 절차, 검증 절차, 발행 절차를 전부 CLAUDE.md에 적었더니 파일이 400줄을 넘겼고, 에이전트가 뒷부분의 절차를 무시하기 시작했습니다. 스킬로 분리한 뒤 CLAUDE.md는 100줄대로 줄었고, 필요한 절차만 필요할 때 로드됩니다.
-
키워드 충돌은 생각보다 빨리 생깁니다. "확인"이라는 키워드가 verify에도, compile에도 매칭될 수 있었습니다. 키워드를 등록할 때 기존 테이블을 반드시 확인해야 합니다.
-
스킬 파일에 "왜"를 빼먹으면 에이전트가 기계적으로 따릅니다. 절차만 있고 목적이 없으면, 상황에 따라 유연하게 판단하지 못합니다. Purpose 섹션이 중요한 이유입니다.
-
파이프라인이 항상 순차적일 필요는 없습니다. 단순한 요청은 중간 스킬을 건너뛰는 quick-draft 프리셋을 따릅니다. 모든 요청을 4단계 파이프라인에 넣으면 오버엔지니어링입니다.
마무리
스킬 시스템의 핵심은 분리와 연결입니다. CLAUDE.md에서 절차를 분리하여 독립된 스킬 파일로 만들고, 키워드 트리거로 자동 매칭하고, 파이프라인으로 연결하여 복잡한 워크플로를 재현 가능하게 만듭니다.
이 구조의 장점은 확장성입니다. 새로운 능력이 필요하면 스킬 파일 하나를 추가하고 트리거 테이블에 한 줄을 넣으면 됩니다. 기존 스킬이나 CLAUDE.md를 수정할 필요가 없습니다.
에이전트의 능력은 CLAUDE.md의 길이가 아니라 스킬의 수와 품질로 결정됩니다.
댓글
댓글 쓰기