AI

Agent Skills에 대해

스킬이란 무엇인가?

스킬은 Claude Code가 특정 작업을 자동으로 처리하도록 학습시키는 재사용 가능한 마크다운 파일이다. PR 리뷰, 커밋 메시지 작성을 요청할 때 반복적인 지침을 입력하는 대신, 스킬을 작성하면 해당 작업이 발생할때 클로드는 자동으로 적용한다.

  • Skiils는 클로드 코드가 작업을 더욱 정확하게 처리하기 위해 찾아 사용할 수 있는 지침 및 리소스 폴더입니다. 각 스킬은 이름과 설명이 포함된 파일에 저장된다. 각 스킬은 SKILL.md 파일 내에 저장되며, 파일 이름 앞부분에 설명이 있다.
  • 설명은 클로드가 해당 스킬을 사용할지 여부를 결정하는 기준이다. 클로드는 설명을 활용해 요청에 맞는 스킬을 매칭한다. 사용자가 클로드에 무언가 요청하면, 클로드는 요청에 적절한 스킬을 활성화한다.
  • 개인 스킬은 ~/.claude/skills에 저장되며 모든 프로젝트에서 활용할 수 있다. (personal-public)
  • 프로젝트 스킬은 .claude/skills에 저장되며, 해당 저장소를 복제하는 모든 사용자와 공유한다.
  • 스킬은 lazy-load된다. 클로드가 상황을 인식하면 스킬이 활성화된다.
    • CLAUDE.md 파일은 모든 대화에 로드된다.
    • 슬래시 명령어는 사용자가 직접 입력해야한다.
    • 핵심 특징은 lazy-load + auto apply인듯?
    • claude는 시작 시 스킬 이름과 설명만 로드하고, 의미론적 매칭을 사용해 요청과 설명을 비교한다. → 전체 스킬 컨텐츠를 컨텍스트에 로드하기 전에 확인 메시지가 표시된다.
  • 만약, 이름이 충돌된다면 우선 순위는 다음과 같다.
    • 엔터프라이즈(managed setting) → 개인(~/.calude/skills) → 프로젝트(.claude/skills) → 플러그인
    • 충돌을 피하려면 구체적인 이름을 사용해야한다.
  • 스킬을 업데이트하려면 SKILL.md 파일의 내용을 편집하면 된다. 스킬을 삭제하려면 디렉토리를 삭제하면 된다. 변경 사항을 적용하려면 항상 Claude Code를 재시작해야 한다.

스킬을 사용하는 대표적인 예시는 다음과 같다.

  • 팀 내부 코드 검토 표준
  • 선호하는 커밋 메시지 형식
  • 사내 브랜드 가이드라인
  • 특정 유형의 문서에 대한 문서 템플릿
  • 특정 프레임워크용 디버깅 체크리스트

다음은 SKILL.md의 예시이다.

---
name: pr-description
description: Writes pull request descriptions. Use when creating a PR, writing a PR, or when the user asks to summarize changes for a pull request.
---

When writing a PR description:

1. Run `git diff main...HEAD` to see all changes on this branch
2. Write a description following this format:

## What
One sentence explaining what this PR does.

## Why
Brief context on why this change is needed

## Changes
- Bullet points of specific changes made
- Group related changes together
- Mention any files deleted or renamed

구성 및 다중 파일 스킬

  • name 및 description은 필수이다. allowed-tools와 model은 선택이지만 강력한 추가 기능이 존재한다.
    • name : 소문자, 숫자, 하이픈만 사용,최대 64자, 디렉토리 이름과 일치해야한다.
    • description : 최대 1024
    • allowed-tools는 스킬이 활성화된 동안 클로드가 사용할 수 있는 도구를 제한한다. read-only 및 보안에 민감한 워크플로에 유용하다.
---
name: codebase-onboarding
description: Helps new developers understand the system works.
allowed-tools: Read, Grep, Glob, Bash
model: sonnet
---
  • 좋은 description은 2가지 질문에 답해야 한다.
    • 해당 스킬은 어떤 기능을 하는가?
    • 클로드는 언제 해당 스킬을 사용해야 하는가?
    • 만약 스킬이 예상대로 작동하지 않는다면, 실제로 사용하는 요청 문구에 맞는 키워드를 추가하라.
  • 점진적인 공개 : SKILL.md 파일은 500줄 미만으로 유지하고, 클로드가 필요할 때만 읽는 보조 파일에 링크를 걸어둔다.
    • 스킬은 클로드의 컨텍스트 윈도우를 공유한다. 스킬을 활성화하면 해당 SKILL.md 파일 내용이 대화창에 로딩된다. 하지만, 스킬에 필요한 참조, 예제 또는 유틸리티 스크립트가 필요할 수 있다.
    • 개방형 표준에서는 스킬 디렉토리를 다음과 같이 구성할 것을 권장한다.
      • scripts/ - 실행 파일
      • references/ - 추가 문서
      • assets/ 이미지, 템플릿, 데이터 파일
    • 이후에는 SKILL.md 파일에 지원 파일에 대한 링크를 추가하고, 해당 파일을 언제 로드해야 하는지에 대한 명확한 지침을 제공한다.
    • 핵심은 컨텍스트 윈도우 사용량 및 문서 유지 관리 차원
  • 스크립트는 내용을 컨텍스트에 로드하지 않고 실행한다. 출력만 토큰을 사용하므로 컨텍스트 효율성이 유지된다. SKILL.md에 포함해야할 핵심 지침은 스크립트를 읽는것이 아닌 실행하도록 지시하는 것이다. 다음 상황에 유용하다.
    • 환경 검증
    • 일관성이 요구되는 데이터 변환
    • 테스트된 코드로 실행하는 것이 생성된 코드로 실행하는 것보다 더 안정적인 작업

Claude Code의 다른 기능들과의 비교

  • CLAUDE.md는 모든 대화에 로드되며 상시 가동되는 프로젝트 표준에 가장 적합하다.
    • 프로젝트 전반에 걸쳐 항상 적용되는 표준
    • 프레임워크 선호도 및 코딩 스타일
    • DB 스키마 수정하지마와 같은 제약 조건
  • 서브 에이전트는 격리된 실행 컨텍스트에서 실행된다. 위임된 작업에 사용한다.
    • 작업을 별도 실행 컨텍스트에 위임하려고 한다.
    • 메인 대화와는 다른 도구 접근 권한이 필요하다.
    • 위임한 업무와 주요 업무 영역 사이에 격리가 필요하다.
  • 훅은 이벤트 기반이고, 스킬은 요청 기반이다. 훅 사용 케이스는 다음과 같다.
    • 파일을 저장할떄마다 실행되어야 하는 작업
    • 특정 도구 호출 전 유효성 검사
    • 클로드의 행동으로 인한 자동화된 부작용
  • MCP 서버는 외부 도구 및 통합 기능을 제공하며, 스킬과 다른 범주다.
  • 스킬은 필요에 따라 로드되며 특정 작업에 대한 전문 지식에 가장 적합하다.
    • 업무별 전문 지식
    • 때때로만 유용한 지식
    • 모든 대화를 어지럽힐 만한 자세한 절차들
    • 현재 작업을 위해 클로드의 지식을 향상시키고 싶다..
    • 대화 전반에 걸쳐 적용되는 전문 지식들..
    • 클로드가 요청을 처리하는 방식에 영향을 미치는 지식
    • 클로드의 추론에 영향을 미치는 지침

스킬 공유하기

  • 프로젝트 스킬은 .claude/skills에 존재하며, git을 통해 자동으로 공유되므로 저장소를 복제하는 모든 사람이 해당 스킬을 받게 된다.
  • 플러그인을 사용하면 마켓플레이스를 통해 여러 저장소에 스킬을 배포해, 더 넓은 커뮤니티에서 활용할 수 있다.
  • 엔터프라이즈 관리형 설정은 조직 전체에 치우선 순위로 스킬을 배포하므로, 필수 표준 및 규정 준수에 이상적이다. (managed-settings)
    • managed-settings 파일은 strictKnownMarketplanges 기능을 제공하는데, 이를 통해 플러그인을 설치할 수 있는 위치를 제어할 수 있다.
"strictKnownMarketplaces": [
  {
    "source": "github",
    "repo": "acme-corp/approved-plugins"
  },
  {
    "source": "npm",
    "package": "@acme-corp/compliance-plugins"
  }
]
  • 서브 에이전트는 자동으로 사용자의 스킬을 인식하지 못한다. 커스텀 에이전트의 프런트매터 skills 필드에 스킬을 명시적으로 나열해야 한다.
 서브 에이전트에게 권한을 위임하면, 해당 에이전트는 필요한 스킬을 모두 로드하고,
모든 검토에 적용한다. 먼저 .claude/skills
디렉터리에 해당 스킬이 있는지 확인한 다음, 새로운 서브 에이전트를 만들거나
기존 에이전트 md 파일에 skills 필드를 추가하면 된다. 다음 경우에 유용

- 특정 전문 지식을 활용해 작업을 격리하여 위임하고 싶을 경우
- 서브 에이전트마다 서로 다른 스킬이 필요한 경우
- 프롬프트에 의존하지 않고, 위임한 작업에 특정 표준을 일관되게 적용하고 싶은 경우

---
name: frontend-security-accessibility-reviewer
description: "Use this agent when you need to review frontend code for accessibility..."
tools: Bash, Glob, Grep, Read, WebFetch, WebSearch, Skill...
model: sonnet
color: blue
skills: accessibility-audit, performance-check
---
  • 내장 에이전트는 스킬에 전혀 접근할 수 없으며, .claude/agents에 정의된 커스텀 서브 에이전트만 접근할 수 있다.
    • 내장 에이전트는 Claude Code가 기본으로 제공하는, 특정 작업에 맞게 미리 설정된 서브에이전트다.
    • 정의된 서브 에이전트의 스킬은 메인 대화처럼 필요에 따라 호출되는 것이 아니라, 서브 에이전트가 시작할 때 로드된다.

스킬 관련 문제 해결

  • 스킬 검증 도구(skills validator tool)를 사용하라. 다른 문제를 디버깅하기 전에 구조적인 문제를 먼저 발견할 수 있다. uv를 사용하면 빠르게 설치 가능
  • 스킬이 트리거되지 않는다면, 대부분 description이 원인이다. 실제로 요청할 때 사용하는 표현과 일치하는 트리거 문구를 추가하라.
  • 스킬이 로딩되지 않는다면, SKILL.md가 skills 루트 바로 아래가 아니라, 이름이 있는 하위 디렉터리 안에 있는지 확인하라. 파일명도 정확히 SKILL.md여야 한다.
    • claude —debug를 사용해 로딩 에러에 스킬 이름이 언급된 메시지가 있는지 확인해라.
  • 엉뚱한 스킬이 사용된다면, 스킬들의 설명이 비슷한 것이니 설명을 더욱 명확하게 구분해야한다.
  • 플로그인 스킬이 표시되지 않는다면, 캐시를 지우고, claude code를 재시작한 다음 플러그인을 다시 설치해라. → 그래도 안되면 플러그인 구조가 잘못되었을 가능성이 있는데, 이때 유효성 검사 도구가 유용하다.
  • 실행 중 오류(런타임 오류)가 발생한다면, 의존성, 파일 권한, 경로 구분자를 확인하라. (경로 구분자는 모든 환경에서 슬래시를 사용하는 것이 좋다.)

빠른 문제 해결 체크리스트

  • 트리거되지 않는가? 설명을 개선하고 트리거 문구를 추가한다.
  • 로딩되지 않는가? 경로, 파일명, YAML 문법을 확인한다.
  • 잘못된 스킬이 사용되는가? 스킬별 설명을 더 명확하게 구분한다.
  • 다른 스킬에 가려지는가? 우선순위 계층을 확인하고 필요하면 이름을 변경한다.
  • 플러그인 스킬이 보이지 않는가? 캐시를 삭제하고 플러그인을 다시 설치한다.
  • 실행 중 오류가 발생하는가? 의존성, 권한, 경로를 확인한다.