TRENDING REPO 딥다이브 · 에이전트 스킬 마켓플레이스 분석

Agent Skills 딥다이브
— AI 에이전트 스킬을 npm처럼, 보안 검증까지 끼워서 깔아주는 레지스트리

Claude Code·Cursor·Copilot 등 19개 이상 AI 코딩 에이전트에 검증된 "스킬"을 한 줄로 설치하는 시큐어 스킬 레지스트리. 떠도는 스킬의 13.4%가 치명적 취약점을 가졌다는 Snyk 조사가 알려지며 주목. CLI + MCP 서버 + 카탈로그를 Nx 모노레포로 묶었다. (저장소: tech-leads-club/agent-skills · TypeScript 핵심 · ⭐약 4.5k)
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 스킬 구성/기술 스택 전체 지도
  4. 스킬 로딩 구조 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 시스템 요구사항 (사용 환경)
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

agent-skills가 정확히 무엇을 하는 도구인가

tech-leads-club/agent-skills보안 검증을 거친 AI 에이전트 스킬만 모아둔 중앙 레지스트리 + 설치 CLI + MCP 서버다. npx @tech-leads-club/agent-skills 한 줄이면 19개 이상의 AI 코딩 에이전트(Claude Code, Cursor, Copilot 등) 어디에든 같은 스킬을 깔 수 있다.

먼저 알아둘 용어
에이전트 스킬 (Agent Skill)
LLM 코딩 에이전트의 동작을 확장하는 SKILL.md 기반 패키지. YAML 머리말(frontmatter)에 이름·설명·허용 도구를 적고, 본문에 "이런 상황엔 이렇게 행동해라"를 적어둔다. 필요하면 templates/, references/ 폴더를 함께 묶는다. "AI 에이전트용 매크로 + 레시피 카드"라고 생각하면 된다.
한 컷 비유

"AI 에이전트 스킬에도 npm + Snyk가 필요해졌다"

예전엔 GitHub에 떠도는 스킬을 git clone으로 복사해 ~/.claude/skills/에 넣어 썼다. 그런데 그렇게 떠도는 스킬의 13.4%에 치명적 취약점(프롬프트 인젝션·임의 코드 실행·시크릿 누출)이 있었다.

핵심은 "검증 + 한 줄 설치 + 다중 에이전트 배포" 세 가지다. 설치 패키지 관리자(npm)의 편의성에, 보안 스캐너(Snyk)의 검증을 끼워 넣은 게 이 레포의 정체성이다.

2왜 주목받는가

트렌딩 이유와 기존 방식 대비 강점
기존 방식의 불편함
매번 git clone — 출처도, 업데이트도, 다중 에이전트도 수동

① 출처 검증 없음: README에 "안전합니다"라고 적혀 있어도 확인할 방법이 없다. ② 업데이트 수동: 원본이 바뀌어도 모른다. 5개 스킬이면 5번 git pull. ③ 다중 에이전트 지옥: Claude Code는 .claude/skills/, Cursor는 .cursor/rules/, Copilot은 .github/copilot-instructions.md... 같은 스킬을 19곳에 따로 깔아야 한다.

agent-skills의 해법
검증된 레지스트리에서 한 줄 설치 + 어댑터가 19곳에 자동 배치

레포에 들어오는 모든 스킬은 PR 단계에서 Snyk Agent Scan(구 mcp-scan)을 통과해야 머지된다. 머지 후엔 콘텐츠 해시 + 락파일로 다운로드 변조까지 막는다. npx 한 줄이면 어댑터가 에이전트별 폴더 형식에 맞게 알아서 배치한다.

13.4%라는 숫자의 출처

Snyk 보안 연구진이 ClawHub·skills.sh에 올라온 3,984개 스킬을 전수 조사(2026-02-05 기준)한 결과, 13.4%(534개)가 최소 1개 이상의 치명적 보안 이슈(멀웨어 배포·프롬프트 인젝션·시크릿 노출)를 가졌다. "별 많이 받은 레포니까 괜찮겠지"가 통하지 않는다는 게 핵심이다.

기존 방식 vs. 이 레포

비교 항목git clone 방식agent-skills
출처 검증없음 (직접 코드 읽어야)PR마다 Snyk Agent Scan 통과 강제
변조 탐지없음콘텐츠 해시(SHA-256) + 락파일
업데이트스킬별 수동 git pullagent-skills update 한 번
다중 에이전트19곳 수동 복사어댑터가 형식 변환·자동 배치
재현성없음락파일로 팀 전체 동일 환경
LLM 자율 검색불가MCP 서버로 LLM이 직접 검색·설치

3스킬 구성/기술 스택 전체 지도

언어 구성 · 빌드 도구 · 스킬 규약 · 보안 스택

언어 구성

TypeScript ████████████████████████ 68.1% ← CLI·MCP 서버·어댑터 핵심 Python █████████ 22.7% ← 일부 스킬 본문/스크립트 JavaScript ███ 6.7% ← 번들/설정 기타 █ 2.5% ← Shell, 설정 파일 등

※ 비율은 GitHub 언어 통계 기준이며 시점에 따라 변동될 수 있음.

빌드 · 런타임 스택

기술역할상세
TypeScript핵심 언어CLI, MCP 서버, 어댑터를 타입 안전하게 구현
Nx 모노레포빌드 오케스트레이션CLI·MCP·카탈로그·문서를 한 레포에. 의존 그래프 캐싱(NX Cloud)으로 변경분만 재빌드
Node.js런타임CLI: 22 이상 / MCP 서버·모노레포 빌드: 24 이상. npx로 실행
Jest테스트단위/통합 테스트 러너
semantic-release배포 자동화커밋 컨벤션 기반 자동 버전·릴리스
MCP 서버LLM 연동stdio 위에서 카탈로그 검색 도구를 LLM에 노출 (읽기 전용)

스킬 규약 (SKILL.md 컨벤션)

스킬 한 개는 디렉토리 하나다. 그 안의 SKILL.md가 본체이고, 보조 폴더가 따라붙는다.

# SKILL.md — YAML frontmatter + 마크다운 본문
---
name: aws-advisor
description: AWS 리소스 보안·비용을 점검할 때 사용
allowed-tools: [Bash, Read, Grep]
---

# 이 아래는 LLM이 따라야 할 행동 지침(자연어)
사용자가 AWS 점검을 요청하면:
1. `aws s3api get-bucket-policy`로 버킷 정책 확인
2. 퍼블릭 접근 차단 설정을 검사
3. 발견한 리스크를 표로 정리해 보고

보안 스택 (이 레포의 정체성)

계층장치막는 것
PR 시점Snyk Agent Scan + 정적 분석(CI)악성 스킬이 레포에 들어오는 것
다운로드콘텐츠 해시(SHA-256)전송 중 변조·바꿔치기
설치경로 격리 · 심볼릭 링크 가드설치 폴더 밖 쓰기, 디렉토리 탈출
재현락파일(content-addressable)팀원 간 환경 불일치
운영감사 로그(audit trail)"누가·언제·뭘 깔았는지" 추적 불가

4스킬 로딩 구조 심화 분석

설치 한 줄 뒤에 일어나는 일 · 핵심 설계 패턴

시스템 구조도

┌─────────────────────────────────────────────────────────────┐ │ 사용자 / LLM 진입점 │ │ npx CLI(위저드) | MCP 서버(LLM이 직접 호출) │ └──────────────┬───────────────────────────┬──────────────────┘ │ │ ├──────────────▼───────────────────────────▼──────────────────┤ │ agent-skills 코어 │ │ ┌────────────────────────────────────────────────────────┐ │ │ │ ① 카탈로그 fetch (CDN: skills-registry.json) │ │ │ │ ② 콘텐츠 해시 검증 (SHA-256 == 카탈로그 값?) │ │ │ │ ③ 어댑터 선택 (에이전트별 폴더 형식 변환) │ │ │ │ ④ 락파일 기록 (.agents/.skill-lock.json, 원자적 쓰기) │ │ │ │ ⑤ 감사 로그 append │ │ │ └───────────────────────────┬────────────────────────────┘ │ │ │ │ ├──────────────────────────────▼──────────────────────────────┤ │ 어댑터 (Adapter Pattern, 19+ 종) │ │ Claude Code → .claude/skills/ Cursor → .cursor/rules/ │ │ Copilot → .github/... Windsurf, Cline, Aider ... │ ├─────────────────────────────────────────────────────────────┤ │ PR 게이트 (Snyk Agent Scan · 정적 분석 · CI) │ └─────────────────────────────────────────────────────────────┘

설치 한 줄의 7단계 흐름

npx @tech-leads-club/agent-skills │ ├─ 1. 인터랙티브 위저드 "어떤 스킬을? 어떤 에이전트에? 글로벌/프로젝트?" ├─ 2. CDN에서 카탈로그 skills-registry.json (항상 최신) ├─ 3. 콘텐츠 해시 검증 SHA-256 불일치 → 즉시 거부 ├─ 4. 어댑터로 배치 에이전트별 폴더 형식에 맞게 변환 ├─ 5. 락파일 기록 .agents/.skill-lock.json (버전·해시 고정) ├─ 6. 감사 로그 누가·언제·뭘·어디에 └─ 7. (선택) MCP 등록 LLM이 직접 카탈로그 검색·설치

핵심 설계 패턴 ①: Progressive Disclosure (점진적 공개)

패턴
Progressive Disclosure (점진적 공개)
LLM에게 모든 스킬 본문을 한 번에 주면 컨텍스트 윈도우가 폭파된다. 그래서 처음엔 검색용 메타데이터만 노출 → LLM이 관련 스킬을 고르면 본문 로드 → 본문이 참조하는 파일은 또 별도 로드. "도서관 사서가 책을 통째로 안 던지고 카드 카탈로그부터 보여주는" 방식. 토큰 비용을 크게 절약한다.

핵심 설계 패턴 ②: Content-Addressable Storage (콘텐츠 주소 저장)

모든 스킬은 이름이 아니라 내용의 해시값으로 식별된다. 같은 내용이면 같은 ID, 한 글자라도 다르면 다른 ID.

지문 비유

사람을 이름으로 식별하면 동명이인이 있다. 지문으로 식별하면 절대 겹치지 않는다.

콘텐츠 해시는 파일의 지문이다. 누가 중간에 바꿔치기해도 지문이 달라지므로 즉시 들통난다. Git, 도커 이미지, IPFS 모두 같은 발상이다.

핵심 설계 패턴 ③: Adapter 패턴 (19+ 에이전트 분기)

에이전트마다 폴더 구조가 제각각이다. 이걸 switch 폭주 없이 깔끔하게 분리하는 게 어댑터 패턴이다. GoF 디자인 패턴 교과서에 나오는 그대로다.

interface SkillAdapter { ← 공통 계약 targetDir(scope): string // 어디에 깔지 transform(skill): Files // 어떤 형식으로 } ├─ ClaudeCodeAdapter → .claude/skills/ ├─ CursorAdapter → .cursor/rules/ └─ CopilotAdapter → .github/copilot-instructions.md 새 에이전트 추가 = 어댑터 1개 추가 (기존 코드 무변경, OCP)

핵심 설계 패턴 ④: 다층 방어 (Defense in Depth)

보안의 기본 원칙은 "한 줄 방어선에 의존하지 마라"다. 콘텐츠 해시가 우회돼도 심볼릭 링크 가드가 디렉토리 탈출을 막고, 그것도 뚫려도 감사 로그가 사후 추적을 가능하게 한다. PR 게이트 → 다운로드 검증 → 설치 격리 → 운영 로그까지 겹겹이 쌓아 한 겹이 뚫려도 다음 겹에서 막는다.

5디렉토리 구조 해부

Nx 모노레포 — packages/와 카탈로그가 핵심
tech-leads-club/agent-skills/ ├── packages/ # ⭐ Nx 모노레포의 패키지들 │ ├── cli/ # npx로 실행되는 설치 CLI │ │ └── (install/update/remove/list/audit ...) │ ├── mcp/ # @…/agent-skills-mcp (LLM이 직접 호출) │ │ └── 읽기 전용 · stdio · 경로 검증 후 fetch │ ├── marketplace/ # Next.js 16 정적 카탈로그 사이트 (GitHub Pages) │ └── skills-catalog/ # ⭐ 검증된 스킬 모음 │ └── skills/ │ └── (category)/ # 카테고리별 분류 │ └── (skill)/ # 스킬 하나 = 디렉토리 하나 │ ├── SKILL.md # 본체 (frontmatter + 지침) │ ├── templates/ # 파일 템플릿 │ └── references/ # 참고 문서 ├── libs/ │ └── core/ # ⭐ 공유 타입·어댑터·상수·핵심 비즈니스 로직 ├── .github/ │ └── workflows/ # Snyk Scan · 정적분석 · semantic-release ├── nx.json # Nx 캐싱·태스크 그래프 설정 ├── AGENTS.md # 기여자용 에이전트 작업 규약 └── README.md # 설치·지원 에이전트 목록

스킬 디렉토리 표준: SKILL.md(본체, YAML frontmatter + 지침) + templates/(파일 템플릿) + references/(참고 문서). 경로는 packages/skills-catalog/skills/(category)/(skill)/ 형태로 카테고리별로 나뉜다.

6학습 포인트 (기술별)

이 한 레포가 가르치는 폭이 넓다 — TypeScript 베스트 프랙티스 박물관

A. Nx 모노레포 설계

배울 것: CLI + MCP 서버 + 카탈로그 + 문서를 한 레포에 모으고도 빌드가 빠른 이유 — 의존 그래프 기반 캐싱으로 변경된 부분만 다시 빌드한다. 여러 패키지를 한 곳에서 버전·릴리스까지 일관되게 관리하는 법.

B. MCP 서버 작성

배울 것: LLM이 직접 호출할 수 있는 도구를 stdio 위에 노출하는 패턴. 읽기 전용·로컬·경로 검증으로 위협 표면을 좁게 설계하는 방법. 한 번 만들면 Claude·Cursor·VS Code가 같은 도구를 쓴다.

C. Content-Addressable 무결성 설계

배울 것: 콘텐츠 해시(SHA-256) + 락파일로 "이 파일이 진짜 그 파일인가"를 보장하는 법. Git·도커·npm 락파일이 쓰는 바로 그 발상을 직접 구현으로 본다.

D. Adapter 패턴 (다형성 분기)

배울 것: 19개 에이전트마다 다른 폴더 구조를, switch 폭주 없이 공통 인터페이스 하나로 흡수하는 GoF 어댑터 패턴. 새 에이전트 = 어댑터 1개 추가(OCP, 개방-폐쇄 원칙)의 실전 예.

E. 공급망 보안 (Supply Chain Security)

배울 것: PR 게이트(Snyk Scan) → 다운로드 검증 → 설치 격리 → 감사 로그로 이어지는 다층 방어(Defense in Depth)의 실제 코드. "별 많이 받은 레포 = 안전"이 왜 틀렸는지, 무엇으로 대체해야 하는지.

F. CLI UX & 배포 자동화

배울 것: npx 한 줄 실행, 인터랙티브 위저드, 락파일 기반 재현, semantic-release 기반 자동 버전·배포까지 — 사람이 쓰기 좋은 CLI를 만드는 표준 흐름.

7시스템 요구사항 (사용 환경)

무엇을 미리 깔아둬야 하는가
항목요구비고
Node.jsCLI: 22 이상 / MCP 서버·모노레포: 24 이상패키지별 요구 버전이 다름. MCP 서버나 모노레포 전체 빌드를 돌리려면 nvm install 24 필요
패키지 실행기npx (npm 동봉)별도 글로벌 설치 없이 npx로 바로 실행
대상 에이전트1개 이상Claude Code, Cursor, Copilot, Windsurf, Cline 등
네트워크인터넷 연결CDN에서 카탈로그·스킬 다운로드
OSmacOS / Linux / WindowsNode가 도는 곳이면 동작
(선택) Git2.x+락파일을 팀과 공유해 환경 재현 시

지원 에이전트 (19개 이상, 3티어)

티어에이전트
인기Claude Code, Cline, Cursor, GitHub Copilot, Windsurf
신흥Aider, Antigravity, Gemini CLI, Kilo Code, Sourcegraph Cody, Tabnine
엔터프라이즈Amazon Q, Augment, Droid (Factory.ai), OpenCode, Roo Code, TRAE

※ 지원 목록은 README 기준이며 계속 추가되는 중. 정확한 최신 목록은 레포 README 확인.

8직접 해볼 수 있는 실습 과제

난이도별 5가지 과제
과제 1

일단 깔아보기 ★ 초급 20분

npx @tech-leads-club/agent-skills를 실행해 위저드에서 aws-advisor 같은 스킬을 Claude Code에 글로벌 설치한다. 그 뒤 에이전트에게 "내 AWS S3 보안 한번 봐줘"라고 물어 스킬이 작동하는지 확인.

확인 포인트: 위저드가 "스킬 / 에이전트 / 글로벌·프로젝트"를 어떻게 물어보는지, 설치가 어느 폴더로 들어가는지 관찰.
과제 2

설치된 파일·락파일 뜯어보기 ★ 초급 30분

# 1. 어디에 깔렸나
ls ~/.claude/skills/

# 2. 스킬 본체 열어보기 (frontmatter 구조 관찰)
cat ~/.claude/skills/aws-advisor/SKILL.md

# 3. 락파일 — 버전·해시가 고정돼 있는지
cat .agents/.skill-lock.json
과제 3

감사 로그 분석 + 락파일 공유 ★★ 중급 1시간

agent-skills audit로 최근 설치 이력을 출력해 어떤 정보가 기록되는지 분석한다. 이어 .agents/.skill-lock.json을 git에 커밋해 팀원에게 공유하고, 팀원이 agent-skills install만으로 정확히 같은 환경을 재현하는지 확인.

관찰: 감사 로그에 누가·언제·어떤 스킬을·어디에 깔았는지가 어떻게 남는가. 락파일의 해시 값이 재현성을 어떻게 보장하는가.
과제 4

MCP 서버 붙이기 ★★★ 고급 2시간

Claude Desktop의 claude_desktop_config.json@tech-leads-club/agent-skills-mcp를 등록한다. 그러면 LLM이 직접 카탈로그를 검색·설치할 수 있게 된다. "브라우저 자동화 스킬 깔아줘"라고 말로 시켜보자.

# claude_desktop_config.json
{
  "mcpServers": {
    "agent-skills": {
      "command": "npx",
      "args": ["-y", "@tech-leads-club/agent-skills-mcp"]
    }
  }
}
과제 5

커스텀 스킬 만들어 PR 보내기 ★★★ 고급 4시간

자기가 반복하는 작업 하나를 SKILL.md로 적어 레포에 PR을 보낸다. validate와 Snyk Agent Scan을 통과시키며 공급망 보안 감각을 직접 익힌다.

# my-skill/SKILL.md
---
name: changelog-writer
description: 커밋 로그로 CHANGELOG 항목을 만들 때 사용
allowed-tools: [Bash, Read, Edit]
---
사용자가 릴리스 노트를 요청하면:
1. `git log --oneline 직전태그..HEAD` 수집
2. feat/fix/docs로 분류
3. 사용자 친화 문장으로 CHANGELOG.md 상단에 추가

9관련 기술 심화 학습 로드맵

4주 학습 플랜

1주차: 스킬 개념 & 설치 체험

요일학습 내용실습
에이전트 스킬이란 무엇인가SKILL.md frontmatter 구조 읽기
npx 설치 & 위저드aws-advisor를 Claude Code에 설치
설치 폴더·락파일 구조~/.claude/skills/, .skill-lock.json 관찰
update/remove/list 명령스킬 갱신·제거·목록 확인
감사 로그 읽기agent-skills audit 분석

2주차: 보안 & 무결성

요일학습 내용실습
공급망 보안 개념Snyk ToxicSkills 보고서 읽기
콘텐츠 해시 / 무결성SHA-256으로 파일 지문 직접 계산
다층 방어 설계PR→다운로드→설치→운영 계층 정리
프롬프트 인젝션 이해취약 스킬 예시 분석(방어 관점)
락파일 기반 재현성팀원과 동일 환경 재현 실험

3주차: 아키텍처 & 패턴

요일학습 내용실습
Nx 모노레포 구조packages/ 의존 그래프 그려보기
Adapter 패턴새 에이전트용 어댑터 의사코드 작성
Progressive Disclosure메타데이터→본문→참조 로딩 흐름 추적
CLI 코드 읽기install 명령 진입점부터 따라가기
semantic-release커밋 컨벤션 → 자동 버전 규칙 이해

4주차: MCP & 기여

요일학습 내용실습
MCP 프로토콜 개념MCP 공식 문서 읽기
MCP 서버 등록Claude Desktop에 agent-skills-mcp 연결
읽기 전용 서버 설계경로 검증·위협 표면 축소 분석
커스텀 스킬 작성SKILL.md 한 개 작성 + 로컬 검증
PR & 보안 게이트스킬 PR 제출, Snyk Scan 통과

10핵심 키워드 사전

이 레포를 이해하는 데 꼭 필요한 용어들
키워드설명
에이전트 스킬SKILL.md 기반으로 LLM 에이전트 동작을 확장하는 패키지. "AI용 매크로 + 레시피 카드"
SKILL.md스킬의 본체 파일. YAML frontmatter(이름·설명·허용 도구) + 행동 지침 본문
frontmatter마크다운 맨 위 ---로 감싼 YAML 메타데이터 블록. 검색·로딩의 기준
레지스트리검증된 스킬을 모아 둔 중앙 저장소. npm 레지스트리의 스킬 버전
어댑터(Adapter)에이전트마다 다른 폴더 형식으로 스킬을 변환·배치하는 모듈. GoF 어댑터 패턴
Progressive Disclosure메타데이터→본문→참조 파일을 단계적으로만 로드해 토큰을 아끼는 기법
콘텐츠 해시파일 내용의 SHA-256 지문. 이름이 아니라 내용으로 식별 = 변조 탐지
Content-Addressable내용의 해시로 객체를 식별·저장하는 방식. Git·도커·IPFS와 동일 발상
락파일설치된 스킬의 버전·해시를 고정 기록(.agents/.skill-lock.json). 환경 재현 보장
감사 로그(audit trail)누가·언제·뭘·어디에 설치했는지 영구 기록. 사고 시 추적
다층 방어(Defense in Depth)PR→다운로드→설치→운영까지 여러 겹의 안전장치. 한 겹 뚫려도 다음 겹이 막음
Snyk Agent Scan구 mcp-scan. PR마다 스킬의 인젝션·악성코드·시크릿 노출을 자동 검사
프롬프트 인젝션스킬·문서에 숨긴 악성 지시로 LLM을 조종하는 공격. 대표적 스킬 취약점
MCPModel Context Protocol. LLM과 외부 도구를 잇는 표준(JSON-RPC 2.0). "에이전트의 USB-C"
Nx 모노레포여러 패키지를 한 레포에 두고 의존 그래프 캐싱으로 변경분만 빌드하는 도구
semantic-release커밋 메시지 컨벤션을 읽어 버전 결정·릴리스를 자동화하는 도구
심볼릭 링크 가드설치 시 심볼릭 링크로 설치 폴더 밖을 건드리는 디렉토리 탈출을 차단

11참고 링크

더 깊이 파고들 때 유용한 자료들