Skip to content

사용 가능한 스킬 조회 및 목록화

학습 완료 후 할 수 있는 것

  • get_available_skills 도구를 사용하여 모든 사용 가능한 스킬 목록화
  • 검색 쿼리를 통해 특정 스킬 필터링
  • 네임스페이스(예: project:skill-name)를 사용하여 스킬 정확히 찾기
  • 스킬 출처 및 실행 가능한 스크립트 목록 식별

현재의 어려움

특정 스킬을 사용하고 싶지만 정확한 이름이 기억나지 않습니다. 프로젝트 내의 어떤 스킬인지는 알지만 어떤 발견 경로에 있는지 모르거나, 현재 프로젝트에서 사용 가능한 스킬을 빠르게 둘러보고 싶을 수 있습니다.

언제 이 기능을 사용하나요

  • 새 프로젝트 탐색: 새 프로젝트에 참여했을 때 사용 가능한 스킬 빠르게 파악
  • 스킬 이름 불확실: 스킬의 일부 이름이나 설명만 기억할 때, 퍼지 매칭 필요
  • 다중 네임스페이스 충돌: 프로젝트 수준과 사용자 수준에 동일한 이름의 스킬이 있을 때, 어떤 것을 사용할지 명확히 지정
  • 스크립트 찾기: 스킬 디렉토리에 어떤 실행 가능한 자동화 스크립트가 있는지 확인

핵심 개념

get_available_skills 도구는 현재 세션에서 사용 가능한 모든 스킬을 확인하는 데 도움을 줍니다. 플러그인은 자동으로 6개의 발견 경로에서 스킬을 스캔합니다:

스킬 발견 우선순위

  1. .opencode/skills/ (프로젝트 수준 OpenCode)
  2. .claude/skills/ (프로젝트 수준 Claude)
  3. ~/.config/opencode/skills/ (사용자 수준 OpenCode)
  4. ~/.claude/skills/ (사용자 수준 Claude)
  5. ~/.claude/plugins/cache/ (플러그인 캐시)
  6. ~/.claude/plugins/marketplaces/ (설치된 플러그인)

동일한 이름의 스킬은 우선순위에 따라 첫 번째 것만 유지되고, 이후의 것은 무시됩니다.

도구가 반환하는 정보는 다음과 같습니다:

  • 스킬 이름
  • 출처 태그 (project, user, claude-project 등)
  • 설명
  • 실행 가능한 스크립트 목록 (있는 경우)

네임스페이스 구문

namespace:skill-name 형식으로 출처를 명확히 지정할 수 있습니다:

  • project:my-skill - 프로젝트 수준 OpenCode 스킬 사용 (.opencode/skills/)
  • claude-project:my-skill - 프로젝트 수준 Claude 스킬 사용 (.claude/skills/)
  • user:my-skill - 사용자 수준 OpenCode 스킬 사용 (~/.config/opencode/skills/)
  • claude-user:my-skill - 사용자 수준 Claude 스킬 사용 (~/.claude/skills/)
  • claude-plugins:my-skill - Claude 플러그인의 스킬 사용

따라 해보기

1단계: 모든 사용 가능한 스킬 목록화

OpenCode에서 AI에게 직접 스킬 목록을 요청하세요:

사용자 입력:
사용 가능한 모든 스킬 목록화

시스템 응답:
skill-helper (project)
  Git 작업 및 브랜치 관리 도우미 [scripts: tools/branch.sh, tools/commit.sh]

test-helper (user)
  단위 테스트 및 커버리지 분석 도구

docker-helper (project)
  Docker 컨테이너화 및 배포 가이드 [scripts: build.sh, deploy.sh]

claude-code-superpowers (claude-plugins)
  완전한 소프트웨어 개발 워크플로우

보게 될 것: 스킬 목록으로, 각 스킬은 이름, 출처 태그, 설명, 스크립트 목록을 표시합니다.

2단계: 검색 쿼리로 필터링

스킬의 일부 이름만 기억한다면:

사용자 입력:
"docker"가 포함된 스킬 찾기

시스템 응답:
docker-helper (project)
  Docker 컨테이너화 및 배포 가이드 [scripts: build.sh, deploy.sh]

검색은 스킬 이름과 설명의 키워드를 매칭하며, * 와일드카드를 지원합니다:

사용자 입력:
"test"로 시작하는 스킬 찾기

시스템 응답:
test-helper (user)
  단위 테스트 및 커버리지 분석 도구

보게 될 것: 쿼리 조건과 일치하는 스킬만 표시됩니다.

3단계: 퍼지 매칭 제안 체험

잘못된 스킬 이름을 입력하면:

사용자 입력:
docker-asistant를 사용하고 싶어요

시스템 응답:
"docker-asistant"와 일치하는 스킬을 찾을 수 없습니다. "docker-helper"를 의미하셨나요?

플러그인은 레벤슈타인 거리를 기반으로 유사도를 계산하여, 자동으로 가장 가까운 스킬 이름을 제안합니다.

보게 될 것: 오류 메시지와 올바른 스킬 제안.

4단계: 네임스페이스로 정확히 찾기

프로젝트 수준과 사용자 수준에 모두 build-helper라는 이름의 스킬이 있다고 가정해 봅시다:

사용자 입력:
build-helper의 상세 정보 목록화

시스템 응답:
build-helper (project)
  프로젝트별 빌드 구성 및 컴파일 최적화 [scripts: build.sh, optimize.sh]

사용자가 사용자 수준의 스킬을 원한다면:

사용자 입력:
user:build-helper 사용

시스템 응답:
build-helper (user)
  일반 빌드 도구체인 및 지속적 통합 구성 [scripts: ci.sh, test.sh]

보게 될 것: 네임스페이스 접두사를 통해 다른 출처의 동일한 이름 스킬에 접근할 수 있습니다.

5단계: 실행 가능한 스크립트 확인

스킬 디렉토리에 어떤 스크립트가 있는지 확인:

사용자 입력:
docker-helper에 어떤 스크립트가 있나요?

시스템 응답:
docker-helper (project)
  Docker 컨테이너화 및 배포 가이드 [scripts: build.sh, deploy.sh]

스크립트는 스킬 정보의 대괄호 안에 쉼표로 구분되어 표시됩니다. run_skill_script 도구로 이러한 스크립트를 실행할 수 있습니다.

보게 될 것: 스킬 이름 뒤에 [scripts: 스크립트경로1, 스크립트경로2, ...] 형식의 목록이 표시됩니다.

체크포인트 ✅

  • [ ] 사용 가능한 모든 스킬을 목록화할 수 있나요?
  • [ ] 검색 쿼리로 특정 스킬을 필터링할 수 있나요?
  • [ ] 스킬 출처 태그의 의미를 이해하나요 (project, user, claude-project 등)?
  • [ ] 스킬 네임스페이스의 역할과 구문을 설명할 수 있나요?
  • [ ] 스킬 정보에서 실행 가능한 스크립트 목록을 식별할 수 있나요?

주의사항

함정 1: 동일 이름 스킬의 덮어쓰기

프로젝트 수준과 사용자 수준에 동일한 이름의 스킬이 있으면, 예상한 스킬이 로드되지 않는 것에 대해 혼란스러울 수 있습니다.

원인: 스킬은 우선순위에 따라 발견되며, 프로젝트 수준이 사용자 수준보다 우선하고, 동일한 이름은 첫 번째 것만 유지됩니다.

해결: 네임스페이스를 사용하여 명확히 지정하세요. 예: user:my-skill 대신 my-skill.

함정 2: 검색 대소문자 구분

검색 쿼리는 정규 표현식을 사용하지만 i 플래그가 설정되어 있어 대소문자를 구분하지 않습니다.

bash
# 이 검색들은 동일합니다
get_available_skills(query="docker")
get_available_skills(query="DOCKER")
get_available_skills(query="Docker")

함정 3: 와일드카드 이스케이프

검색에서 *는 자동으로 .* 정규 표현식으로 변환되며, 수동으로 이스케이프할 필요가 없습니다:

bash
# "test"로 시작하는 스킬 검색
get_available_skills(query="test*")

# 정규 표현식 /test.*/i와 동일

강의 요약

get_available_skills는 스킬 생태계를 탐색하는 도구로, 다음을 지원합니다:

  • 모든 스킬 목록화: 매개변수 없이 호출
  • 검색 필터링: query 매개변수로 이름과 설명 매칭
  • 네임스페이스: namespace:skill-name으로 정확히 찾기
  • 퍼지 매칭 제안: 철자 오류 시 자동으로 올바른 이름 제안
  • 스크립트 목록: 실행 가능한 자동화 스크립트 표시

플러그인은 세션 시작 시 자동으로 스킬 목록을 주입하므로, 일반적으로 이 도구를 수동으로 호출할 필요가 없습니다. 하지만 다음 시나리오에서 유용합니다:

  • 사용 가능한 스킬을 빠르게 둘러보고 싶을 때
  • 스킬의 정확한 이름이 기억나지 않을 때
  • 동일한 이름의 스킬의 다른 출처를 구분해야 할 때
  • 특정 스킬의 스크립트 목록을 확인하고 싶을 때

다음 강의 예고

다음 강의에서는 **세션 컨텍스트에 스킬 로드**를 배웁니다.

배울 내용:

  • use_skill 도구를 사용하여 현재 세션에 스킬 로드
  • 스킬 콘텐츠가 XML 형식으로 컨텍스트에 주입되는 방식 이해
  • Synthetic Message Injection 메커니즘(합성 메시지 주입) 익히기
  • 세션 압축 후 스킬이 어떻게 계속 사용 가능한지 알아보기

부록: 소스 코드 참조

소스 코드 위치 보기

업데이트 시간: 2026-01-24

기능파일 경로라인 번호
GetAvailableSkills 도구 정의src/tools.ts29-72
discoverAllSkills 함수src/skills.ts240-263
resolveSkill 함수src/skills.ts269-283
findClosestMatch 함수src/utils.ts88-125

주요 타입:

  • SkillLabel = "project" | "user" | "claude-project" | "claude-user" | "claude-plugins": 스킬 출처 태그 열거형

주요 상수:

  • 퍼지 매칭 임계값: 0.4 (utils.ts:124) - 유사도가 이 값보다 낮으면 제안을 반환하지 않음

주요 함수:

  • GetAvailableSkills(): 쿼리 필터링 및 퍼지 매칭 제안을 지원하는 형식화된 스킬 목록 반환
  • resolveSkill(skillName: string, skillsByName: Map<string, Skill>): namespace:skill-name 형식의 스킬 파싱 지원
  • findClosestMatch(input: string, candidates: string[]): 다양한 매칭 전략(접두사, 포함, 편집 거리)을 기반으로 최적 매칭 계산

비즈니스 규칙:

  • 동일한 이름의 스킬은 발견 순서에 따라 중복 제거되며, 첫 번째 것만 유지됨 (skills.ts:258)
  • 검색 쿼리는 와일드카드 *를 지원하며, 자동으로 정규 표현식으로 변환됨 (tools.ts:43)
  • 퍼지 매칭 제안은 쿼리 매개변수가 있고 결과가 없을 때만 트리거됨 (tools.ts:49-57)