Communitygithub.com

yya007/SkillFinder

에이전트 스킬 검색 도구

SkillFinder란 무엇인가요?

SkillFinder는 37,500개 이상의 큐레이션된 AI 에이전트 스킬을 자연어로 검색할 수 있는 검색 도구입니다. 사용자가 수행하려는 작업을 평범한 문장으로 설명하면 의미론적 유사도(semantic similarity)를 기반으로 가장 적합한 스킬을 순위화하여 제시하며, 설치 명령어까지 함께 제공합니다. 이 도구는 Ollama 기반의 로컬 임베딩과 FAISS 인덱스를 사용하여 완전히 오프라인에서 작동하므로 네트워크 요청 없이 빠르게 검색할 수 있습니다. Claude Code, Cursor, Codex 등 다양한 플랫폼용 스킬을 지원하며, 검색 결과의 품질을 높이기 위해 티어 기반 폴백(tiered fallback) 및 재순위화(reranking) 로직을 갖추고 있습니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add yya007/SkillFinder

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

스킬-파인더

원하는 작업을 설명하여 37,500+ 개의 큐레이션된 에이전트 스킬을 검색하세요. 결과는 의미론적 유사도로 정렬되며 설치 명령어를 포함합니다.

사용법

/스킬-파인더

그 다음 작업을 자연어로 설명하세요. 예:

  • "롤백이 가능한 쿠버네티스 클러스터 배포"
  • "자바스크립트 렌더링을 지원하는 웹 페이지 스크래핑"
  • "SQL 마이그레이션 작성 및 실행"

작동 방식

  1. 사용자의 설명은 Ollama를 통해 Qwen3-Embedding-0.6B 로컬 모델로 임베딩됩니다.
  2. 임베딩은 미리 구축된 33,000개 이상의 스킬 FAISS 인덱스와 비교됩니다.
  3. 상위 일치 항목이 이름, 설명, 설치 명령어와 함께 반환됩니다.

인덱스는 전적으로 기기 내에서 실행되며 검색 중 네트워크 요청이 발생하지 않습니다.

에이전트 지침

이 스킬이 트리거되면 정확히 다음 워크플로우를 따르세요.

조용히 작업하세요. 모든 내부 단계(쿼리 재구성, 검색, 파싱, 재순위화)를 사용자에게 설명하지 않고 수행하세요. 최종 결과와 후속 제안만 출력하세요. "쿼리를 재구성하는 중…" 또는 "1단계 검색 실행 중…"과 같은 말은 절대 하지 마세요.

참고: 스킬은 서드파티 코드입니다. 익숙하지 않은 작성자의 스킬을 설치하기 전에 항상 스킬 링크를 확인하세요.

플랫폼 필터: 기본적으로 --platform을 적용하지 마세요. 인덱스는 모든 플랫폼의 스킬을 포함하며 많은 스킬이 여러 에이전트에서 작동합니다. 사용자가 플랫폼별 검색을 명시적으로 요청한 경우에만 --platform <값>을 전달하세요 (예: "Claude Code용 스킬을 찾아줘"). 가능한 값: claude_code, openclaw, codex.

0단계 — 가용성 확인

쿼리를 재구성하기 전에 인덱스와 Ollama를 사용할 수 있는지 확인하세요.

python scripts/search.py "test" --json

OllamaNotAvailableError 또는 FileNotFoundError로 실패하면 사용자에게 다음을 제안하세요:

"로컬 검색을 사용할 수 없습니다. GitHub 코드 검색(순위 미지정, 품질 신호 없음)으로 대체할 수 있습니다. 최상의 결과를 위해 GITHUB_TOKEN을 설정하세요. 계속하시겠습니까?"

사용자가 동의하면 2~3단계의 모든 검색 명령어에 --remote를 추가하세요.

1단계 — 쿼리 재구성

검색하기 전에 사용자의 요청을 의미론적 검색 성능을 향상시키는 간결하고 키워드가 풍부한 검색 쿼리로 다시 작성하세요. 규칙:

  • 약어를 확장하세요 (예: "k8s" → "kubernetes", "CI" → "continuous integration").
  • 대화용 표현을 제거하세요 ("나는 ~하고 싶어", "~을 도와줘", "~하는 스킬").
  • 인덱스에 포함될 가능성이 높은 밀접한 관련 기술 용어를 추가하세요 (예: "deploy kubernetes" → "kubernetes deployment orchestration kubectl cluster").
  • 약 10~15단어를 목표로 간결하게 유지하세요.

구체적인 쿼리의 경우 (예: "helm rollback으로 k8s 배포"), 한 번의 재구성으로 충분합니다.

모호하거나 광범위한 쿼리의 경우 (여러 기술 도메인에 걸쳐 있거나 "생산성", "AI", "자동화"와 같은 일반 용어 사용), 2~3가지의 대체 재구성을 다양한 관점에서 생성하는 것이 선택적으로 도움이 됩니다. 재구성을 생성했다면 모든 재구성을 계층 로직을 통해 병렬로 실행하고, id 기준으로 중복을 제거한 후 병합된 풀을 재순위화하세요.

재구성된 쿼리는 사용자가 입력한 내용과 크게 다른 경우가 아니라면 사용자에게 보여줄 필요가 없습니다.

2단계 — 검색 실행 (계층적 폴백 사용)

다음 순서로 검색을 실행하고, 좋은 일치 항목이 3개 이상 확보되면 중단하세요:

1계층 — 기본 (품질 우선, 모든 플랫폼):

python scripts/search.py "<재구성된 쿼리>" --json --propose 5 --min_stars 10

2계층 — 별 임계값 완화 (1계층에서 좋은 일치 항목이 3개 미만인 경우):

python scripts/search.py "<재구성된 쿼리>" --json --propose 5

규칙:

  • --propose 5가 기본값이며, 광범위한 쿼리이거나 사용자가 더 많은 옵션을 요청한 경우 --propose 10으로 늘리세요. 사용자가 결과 수를 지정한 경우 (예: "10개 줘"), 그 값을 직접 사용하세요.
  • 사용자가 플랫폼별 검색을 명시적으로 요청한 경우에만 --platform <값>을 추가하세요 (예: "OpenClaw 스킬을 찾아줘"). 이 경우 두 계층 모두에 적용하세요.
  • ClawHub에서 제공된 스킬은 OpenClaw 전용입니다. 이 스킬에는 claude_code 설치 명령어가 없습니다. 제시할 때 항상 (openclaw 전용 — Claude Code에 설치 불가) 라고 표시하세요.
  • 사용자가 별 임계값을 명시적으로 지정한 경우 (예: "잘 알려진 스킬만" 또는 "최소 50 스타"), --min_stars 10 대신 그 값을 사용하세요.
  • 사용자가 더 적은 결과를 요청한 경우 (예: "상위 3개만"), 표시되는 개수를 그에 맞게 조정하세요.
  • 2계층 결과의 경우 응답에 필터가 완화되었음을 명시하세요 (5단계 참조).

3단계 — 파싱 및 임계값 확인

JSON 출력을 파싱하세요. 각 결과에는 sim_score 필드(0.0~1.0)가 포함되어 있으며, 이는 내부 전용이며 사용자에게 절대 표시하지 마세요.

"좋은 일치 항목 없음"에 대한 임계값으로 약 0.4를 사용하세요. 모든 계층의 모든 결과가 sim_score < 0.4인 경우 사용자에게 경고하세요:

"해당 쿼리에 대한 강력한 일치 항목을 찾을 수 없습니다. 더 구체적인 키워드로 다시 시도해보세요."

4단계 — 재순위화

각 결과의 description을 사용자의 의도와 비교하여 읽으세요. 다음 순서로 선호하세요:

  1. 사용자의 실제 작업에 대한 의미론적 관련성 (주요 신호)
  2. 별 개수 (quality.stars) — 많을수록 커뮤니티에서 더 검증됨
  3. 소스 — 약한 타이브레이커로만 사용: 관련성과 별 개수가 비슷할 때 공식적으로 검증된 스킬을 선호하세요. 소스 레지스트리만을 이유로 스킬을 불이익을 주거나 순위를 낮추지 마세요.

플랫폼-소스 정렬 규칙: clawhub는 OpenClaw 레지스트리입니다. 사용자가 openclaw 이외의 플랫폼(예: claude_code)을 요청한 경우 clawhub만을 소스로 하는 스킬은 최후의 수단으로 취급하세요. 별 개수와 관계없이 다른 모든 소스 아래에 순위를 매기고, 더 나은 소스의 대안이 없을 경우에만 포함하세요. 스킬의 소스에 clawhub와 다른 레지스트리(예: marketplace)가 모두 포함된 경우 순위 결정에 clawhub가 아닌 소스를 사용하세요.

기본적으로 3~5개의 결과를 제시하세요. 5개 이상을 제시하는 것은 선택 사항이며, 사용자가 더 많은 옵션이나 더 높은 개수를 명시적으로 요청한 경우에만 수행하세요.

5단계 — 결과 제시

다음 정확한 형식을 사용하세요:

"<사용자의 원래 쿼리>"에 대해 N개의 스킬을 찾았습니다:

1. **pptx** ⭐ 2,810 스타 [공식]
   .pptx 파일 변환 — 슬라이드 읽기, 텍스트 추출, 프레젠테이션 생성…
   설치: `/skill install pptx` _(실패 시 아래 스킬 링크 확인)_
   스킬: https://github.com/anthropics/skills/blob/main/skills/pptx/SKILL.md

2. **pptx-skill** ⭐ 126 스타
   HTML 슬라이드를 PowerPoint(PPTX) 파일로 변환…
   설치: `/plugin install pptx-skill` _(실패 시 아래 스킬 링크 확인)_
   스킬: https://github.com/vkehfdl1/slides-grab/blob/main/SKILL.md

> 스킬 인덱스는 웹 크롤을 통해 주기적으로 업데이트되며 최근에 게시된 스킬을 포함하지 않을 수 있습니다.

스킬: 링크에는 결과의 skill_md_url을 사용하세요. skill_md_url이 비어 있는 경우에만 repo_url로 대체하세요.

배지 및 레이블:

  • is_official: true (anthropics/* 마켓플레이스 스킬)인 경우에만 [공식]을 추가하세요.
  • platforms에 claude_code가 포함되지 않은 경우 (openclaw 전용 — Claude Code에 설치 불가) 를 추가하세요.
  • 출력에 원시 소스 레지스트리 이름(skillsmp, clawhub, topic, skillhub, marketplace)을 표시하지 마세요.

설치 명령어 (항상 install_cmd 필드의 원래 값을 사용하세요. 추측하거나 직접 구성하지 마세요):

조건설치 라인
is_official: true (anthropics/*)설치: /skill install <이름> _(실패 시 아래 스킬 링크 확인)_
install_cmd가 있는 커뮤니티 스킬설치: /plugin install <이름> _(실패 시 아래 스킬 링크 확인)_
install_cmd가 비어 있음직접 설치 불가 — 스킬 링크를 확인하세요.

sim_score를 사용자에게 표시하지 마세요.

기본적으로 install_cmd의 claude_code 항목만 표시하세요. 사용자가 요청한 경우에만 다른 플랫폼이 존재한다고 언급하세요.

결과가 2계층 폴백에서 나온 경우, 신선도 고지 후에 다음 메모를 추가하세요:

"이 결과에는 이 쿼리에 대한 상위 평가 일치 항목이 제한되어 별 개수가 적은 스킬이 포함되어 있습니다."

6단계 — 다음 단계 제안

모든 응답을 다음으로 끝내세요:

"설치하기 전에 이 중 하나의 전체 SKILL.md를 가져올까요?"

관련 스킬