GITHUB 레포 딥다이브 · 2026-08-04 · DAVIDONDREJ/SKILLS · AI 에이전트에게 "무엇을 언제 어떻게 하라"를 주입하는 45개 스킬의 실전 라이브러리

davidondrej·skills 딥다이브
— 한 AI 교육 크리에이터의 "멀티 에이전트 운영체제"를 통째로 공개한 스킬 모음

davidondrej/skills는 유명 AI 교육 크리에이터 David Ondrej가 실제로 매일 쓰는 크로스-에이전트 스킬 라이브러리(45개 스킬 × 5개 카테고리 + 안전 가드레일 시스템)를 정제(sanitize)해 공개한 저장소다. 여기엔 서비스도, 앱도, 이렇다 할 프로그래밍 언어 스택도 거의 없다 — 대부분이 텍스트 파일(SKILL.md)이다. 그런데 바로 그 점이 이 레포를 흥미로운 학습 자료로 만든다.

"Agent Skill"은 AI 에이전트가 특정 작업을 만났을 때 필요한 순간에만 불러오는 "펼쳐지는 설명서"다. 각 스킬은 하나의 폴더이고, 그 안의 SKILL.md"이 스킬을 언제(when) 어떻게(how) 쓰는지"를 담는다. davidondrej/skills는 이 표준 위에서 에이전트 오케스트레이션(agent-orchestration), 스킬 저작(skill-authoring), 리서치·웹(research-and-web), 사고·문서화(thinking-and-docs), 운영·설정(ops-and-setup)이라는 다섯 갈래로 실전 노하우를 묶었다.

이 딥다이브가 이 레포를 고른 이유는 "스킬이 많아서"가 아니다. 이 저장소가 "AI 코딩 에이전트를 한 대씩 쓰는 단계를 넘어, 여러 에이전트를 하나의 부대처럼 지휘하고 · 위험한 명령을 차단하고 · 사람의 사고 규율마저 프롬프트로 인코딩하는" 한 파워유저의 실제 작업 체계를 통째로 보여 주기 때문이다. 즉 "스킬 하나를 어떻게 쓰나"가 아니라 "에이전트 기반 작업 흐름을 어떻게 설계하나"를 배우는 표본이다.

📌 미리 짚어둘 관점: 이 레포는 공식 플러그인도, 마켓플레이스도 아니다. plugin.json·marketplace.json·설치 스크립트가 전혀 없는, 순수하고 이식 가능한 open-standard 스킬 컬렉션이다. 또한 리서치 계열 스킬 상당수는 제작자 본인의 유료 API(DeepAPI)에 의존하고, 저장소 곳곳에 등장하는 모델 이름(예: "Fable 5 Max", "GPT 5.6 Sol Max")은 제작자가 자기 스택을 지칭하려고 붙인 별칭 성격이 강해 그대로 검증된 제품명으로 받아들이면 안 된다. 이런 지점은 본문에서 그때그때 표시한다.

(저장소 davidondrej/skills · 라이선스 MIT · 구성 45개 스킬 / 5개 카테고리 + hooks 가드레일 · 파일 52 .md · 17 .yaml · 3 .sh · 표준 Agent Skills(SKILL.md) · 공개 2026-08-03 · ★ 약 31 · fork 8 · 제작 David Ondrej · TrendShift Daily #23)
목차
  1. 한 줄 정체
  2. 왜 주목받는가 — "스킬 모음"이 아니라 "작업 체계"
  3. 기술 스택 전체 지도 — 코드 대신 "스킬 스택"
  4. 아키텍처 심화 — Agent Skill은 어떻게 작동하는가
  5. 디렉토리 구조 해부
  6. 학습 포인트 — 카테고리별 배울 것
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 로드맵 (주차별)
  10. 핵심 키워드 사전
  11. 참고 링크

1한 줄 정체

이 프로젝트가 정확히 무엇인지 한 문장으로

davidondrej/skills는 "한 명의 AI 교육 크리에이터가 실제로 쓰는 크로스-에이전트 작업 노하우 45개를, 각각 하나의 SKILL.md 폴더로 패키징해 다섯 카테고리로 묶어 공개한 이식 가능한 스킬 라이브러리"다. 사용자는 이 폴더들을 자기 AI 에이전트의 스킬 디렉토리(예: ~/.claude/skills/)에 복사해 두면, 에이전트가 해당 작업을 만났을 때 알아서 그 스킬을 꺼내 지시대로 수행한다. 별도의 설치 프로그램도, 마켓플레이스도 필요 없다.

한 장의 비유

"신입에게 매번 처음부터 설명하기" 대신, 벽에 붙여 둔 "상황별 작업 지시 카드 묶음"

유능한 조수(AI 에이전트)가 있어도, 매번 "worktree로 병렬 작업하는 법", "다른 에이전트에게 일 넘기는 법", "위험한 rm -rf는 절대 실행하지 말 것" 같은 걸 처음부터 다시 설명한다면 지친다. davidondrej/skills는 그 설명들을 상황별 카드(스킬)로 만들어 벽에 붙여 둔 것과 같다.

핵심은 "모든 카드를 항상 읽지는 않는다"는 점이다. 조수는 평소엔 각 카드의 제목과 한 줄 설명만 훑고 있다가, "지금 이 작업엔 저 카드가 필요하겠다" 싶을 때만 그 카드를 펼쳐서 자세히 읽는다. 덕분에 45장이나 되는 카드가 있어도 조수의 머릿속(컨텍스트 창)은 붐비지 않는다.

그리고 이 카드 묶음엔 특별한 카드가 섞여 있다 — "카드 만드는 법을 알려주는 카드"(스킬 저작), "결정을 내리기 전에 숨은 선택지를 먼저 짚으라는 카드"(사고 규율), "위험한 명령을 실행 전에 막는 경비원"(가드레일). 단순 작업 설명서를 넘어 "일하는 방식 자체"를 카드로 만든 것이다.

용어
Agent Skill · SKILL.md · frontmatter · 크로스-에이전트
Agent Skill(에이전트 스킬)"AI 에이전트가 특정 작업에 필요할 때 불러오는, 지시문이 담긴 폴더"다. 폴더 안 SKILL.md가 본체이고, 맨 위 frontmatter(머리말)---로 감싼 YAML 영역 — 에 namedescription(언제 이 스킬을 쓰는지)이 들어간다. 에이전트는 이 description만 보고 "이 스킬을 지금 펼칠지" 결정한다. 크로스-에이전트(cross-agent)Claude Code·Codex·Cursor·Pi·Hermes 등 서로 다른 회사의 여러 에이전트에서 같은 스킬이 두루 작동하도록 만드는 것을 뜻한다.

정확히 말하면 davidondrej/skills는 "프로그램"이 아니라 "지식의 패키징"이다. 저장소 75개 파일 중 실행 코드는 hooks/ 폴더의 셸 스크립트 3개뿐이고, 나머지는 거의 전부 사람이 읽는 마크다운(SKILL.md)과 소량의 YAML 설정이다. 즉 이 레포의 가치는 "돌아가는 소프트웨어"가 아니라 "에이전트에게 어떻게 지시를 설계하느냐"에 대한 잘 정리된 실전 사례집에 있다. README는 스스로를 "David의 스택에서 나온, 반복 가능한 워크플로우들의 실용적 빌딩 블록"이라고 소개한다.

2왜 주목받는가 — "스킬 모음"이 아니라 "작업 체계"

GitHub엔 "skills" 컬렉션이 이미 수십 개다. 이 레포의 차별점

첫째, 제작자의 영향력이 곧 트렌딩의 연료다. David Ondrej는 "vibe coding"·에이전트 기반 개발을 대중에게 가르치는 대형 크리에이터이고, 이 레포는 그가 "내 공식 스킬"이라며 자기 실제 데일리 스택을 정제해 공개한 것이다. 그래서 2026-08-03에 올라온 저장소가 하루 만인 8-04에 TrendShift Daily 보드에 진입했다. 별 수(약 31개)는 아직 적지만, TrendShift 순위의 굵은 숫자는 별 총량이 아니라 모멘텀(순간 상승세)을 뜻한다 — 갓 공개된 자료가 빠르게 확산 중이라는 신호다.

둘째, "튜토리얼"이 아니라 "실전 운영체계"라는 점이 다르다. 대부분의 "awesome skills" 류가 예제·데모의 나열이라면, davidondrej/skills는 한 사람이 실제로 여러 에이전트를 병렬로 굴리며 검증한 워크플로우다. 가장 큰 카테고리가 agent-orchestration(12개)이라는 사실 자체가 정체성을 드러낸다 — 이 레포의 세계관은 "에이전트 한 대를 잘 쓰기"가 아니라 "에이전트 부대를 지휘하기"다.

셋째, 크로스-에이전트를 진지하게 설계했다. 스킬들은 Claude Code·Codex·Cursor·Pi·Hermes·Grok·Droid·Devin·OpenCode·Gemini CLI를 각각의 설정 파일 경로까지 명시하며 다룬다. 하나의 스킬을 여러 에이전트에서 재사용하기 위한 distribute-skill-to-all-agents(심볼릭 링크 배치) 같은 스킬까지 있다. "한 벤더에 묶이지 않는" 이식성이 설계 원칙으로 박혀 있다.

차별 포인트
"더 나은 도구"와 "더 나은 방법"을 둘 다 담았다

이 레포의 스킬 저작 가이드(effective-agent-skills)는 스킬을 두 종류로 나눈다. 패턴 A — 능력 원시(capability primitive): 결정론적 CLI를 얇게 감싸 "프롬프트가 아니라 셸 도구로 신뢰성을 확보"하는 스킬(예: git-worktree). 패턴 B — 과정 원시(process primitive): 코드 없이 순수 프롬프트로 방법론·사고 규율을 인코딩하는 스킬(예: before-building). 가이드의 표현대로 "패턴 A는 에이전트에게 더 나은 도구를, 패턴 B는 더 나은 방법을 준다." 다른 컬렉션이 대개 A만 모을 때, 이 레포는 B(사고·문서화 11개)까지 균형 있게 담았다는 게 진짜 차별점이다.

넷째, "자율성 + 가드레일"을 한 세트로 제공한다. 에이전트에게 root 권한으로 셸을 맡길수록 사고 위험이 커진다. 이 레포는 global-agent-guardrails 스킬과 실제 구현인 hooks/ 폴더로, rm -rf /·mkfs·curl | sh·git push --force 같은 파멸적 명령을 실행 직전에 차단하는 공용 방어막을 9개 에이전트에 걸쳐 건다. 문서는 이를 "악의적 에이전트를 막는 샌드박스가 아니라, 사고를 막는 안전벨트"라고 정직하게 한정한다 — 과대광고 없이 한계를 명시하는 태도 자체가 신뢰를 준다.

균형 잡힌 시각
"한 사람의 취향"이라는 점은 강점이자 약점

이 레포의 매력은 "실제로 쓰는 것"이라는 진정성이지만, 뒤집으면 특정 개인의 환경·취향·상업적 이해관계에 강하게 묶여 있다는 뜻이기도 하다. 리서치 스킬 다수는 제작자 소유의 유료 API인 DeepAPI(deepapi.co)를 통해서만 동작하고(중립적 도구가 아니라 본인 제품 의존성), launch-subagent는 특정 모델을 쓰라고 단정적으로 지시한다. 상당수 스킬이 macOS 전용(caffeinate·cmux·launchd)이라는 점도 감안해야 한다. 그대로 복사하기보다 "설계 원리를 배우고 내 환경에 맞게 취사선택"하는 태도가 맞다.

3기술 스택 전체 지도 — 코드 대신 "스킬 스택"

이 레포엔 프레임워크가 없다. 대신 "무엇 위에서 스킬이 도는가"가 스택이다

보통의 딥다이브라면 여기서 백엔드·프론트엔드·인프라를 나눈다. 그런데 davidondrej/skills엔 그런 런타임 스택이 존재하지 않는다. 파일 통계가 그 사실을 말한다 — 52개 마크다운, 17개 YAML, 3개 셸 스크립트가 전부다. 그러니 이 레포의 "스택"은 "이 텍스트 스킬들이 어떤 표준·어떤 에이전트·어떤 외부 서비스 위에서 실행되는가"로 다시 정의해야 한다.

계층구성 요소정체역할
스킬 표준Agent Skills (SKILL.md)frontmatter(YAML) + 마크다운 본문모든 스킬의 공통 포맷 · 이식성의 기반
발동 제어disable-model-invocation / agents/openai.yamlClaude Code용 / Codex용 플래그스킬을 "수동 호출 전용"으로 잠그는 스위치
대상 에이전트Claude Code · Codex · Cursor · Pi · Hermes 등10여 종 코딩 에이전트스킬을 실제로 로드·실행하는 런타임
가드레일hooks/ (bash + jq)PreToolUse 훅 3개 파일위험 명령을 실행 전 정규식으로 차단
외부 APIDeepAPI (deepapi.co)제작자 소유 유료·과금형 API웹 검색·스크래핑·딥리서치·이메일·이미지
보조 스크립트Bash · Swift · launchdanti-sleep.sh, 메트릭 수집 등일부 스킬의 실행 payload (macOS 편향)
배포 레이아웃심볼릭 링크 (~/.agents)여러 에이전트 스킬 폴더를 한 곳으로한 스킬을 크로스-에이전트로 공유
라이선스MIT© 2026 David Ondrej자유로운 복사·수정·재배포 허용
용어
frontmatter · PreToolUse 훅 · jq · 심볼릭 링크
frontmatter는 파일 맨 위 --- 사이에 넣는 YAML 메타데이터 — 여기 name·description이 들어간다. PreToolUse 훅은 에이전트가 어떤 "도구(예: Bash 명령)"를 실행하기 직전에 끼어드는 검사 지점으로, 통과 못 하면 실행이 막힌다. jq는 JSON에서 원하는 값을 뽑아내는 커맨드라인 도구(가드레일 스크립트가 명령 문자열을 이걸로 추출한다). 심볼릭 링크(symlink)는 "실제 폴더를 가리키는 바로가기" — 여러 에이전트의 스킬 폴더가 하나의 원본(~/.agents/skills)을 가리키게 해 한 번 고치면 모두에 반영되게 한다.

다섯 카테고리 = 이 레포의 "제품 라인업"

스택을 이해하는 가장 빠른 길은 카테고리별 스킬 개수와 대표작을 보는 것이다. 각 폴더가 하나의 "제품군"처럼 뚜렷한 목적을 갖는다.

카테고리개수무엇을 담나대표 스킬
agent-orchestration12에이전트를 실행·예약·위임·조율(부대 지휘)git-worktree · launch-subagent · handoff
thinking-and-docs11구조화된 사고·인터뷰·교육·문서화(과정 원시)before-building · decisions · teach
ops-and-setup10머신·서버·보안·도구 설정과 운영global-agent-guardrails · cyber-audit
research-and-web8웹·리서치 API·브라우저·유튜브에서 정보 수집deepapi · deep-research · youtube-transcript
skill-authoring4스킬을 만들고·개선하고·배포·게시(메타)effective-agent-skills · distribute-skill-to-all-agents
한눈에

이 레포를 "요리사의 개인 레시피 파일 상자"로 보면 스택이 선명해진다. 레시피 카드의 공통 양식(SKILL.md 표준)이 있고, 카드는 "불 다루는 법"(orchestration)·"칼질과 사고방식"(thinking)·"주방 세팅"(ops)·"장보기"(research)·"레시피 쓰는 법 자체"(authoring)로 분류돼 있다. 몇몇 레시피는 특정 브랜드 식재료(DeepAPI)나 특정 주방기구(macOS)를 전제하고, 주방엔 "위험한 조리 동작을 막는 안전장치"(hooks)가 붙어 있다. 요리 실력(에이전트)이 있어도, 이 상자가 있으면 매번 같은 품질을 재현할 수 있다.

4아키텍처 심화 — Agent Skill은 어떻게 작동하는가

이 레포의 진짜 아키텍처는 "스킬이 로드되고 실행되는 메커니즘"이다

이 레포엔 서버 다이어그램이 없다. 대신 이해해야 할 "아키텍처"는 Agent Skill이라는 포맷이 어떻게 토큰을 아끼며 필요할 때만 펼쳐지는가, 그리고 하나의 스킬이 어떻게 여러 에이전트에 걸쳐 재사용되는가이다. 레포의 스킬 저작 가이드가 설명하는 4가지 핵심 개념을 차례로 본다: ① 점진적 공개(progressive disclosure), ② 라우팅 계약으로서의 description, ③ 패턴 A/B, ④ 크로스-에이전트 배포와 가드레일 훅.

핵심 ① — 점진적 공개(progressive disclosure): 3단계로 펼쳐지는 설명서

스킬이 45개나 돼도 에이전트가 느려지지 않는 이유가 여기 있다. 스킬은 한꺼번에 다 읽히지 않고, 필요에 따라 3단계로 나눠 로드된다. 레포의 effective-agent-skills 문서는 이를 이렇게 정리한다: "파일은 접근되기 전까진 토큰을 쓰지 않는다."

Agent Skill · 점진적 공개(progressive disclosure)의 3단계 ┌───────────────────────────────────────────────────────────────┐ │ LEVEL 1 · 발견(Discovery) 비용: ~100 토큰 │ │ name + description 만 "항상" 컨텍스트에 떠 있음 │ │ 에이전트는 이 한 줄만 보고 "이 스킬 지금 필요?"를 판단 │ └───────────────────────────┬───────────────────────────────────┘ │ description이 현재 작업과 매치되면 ▼ ┌───────────────────────────────────────────────────────────────┐ │ LEVEL 2 · 활성화(Activation) 비용: < 5,000 토큰 │ │ SKILL.md 본문 전체가 이때 비로소 로드됨 │ │ 구체적 절차·체크리스트·주의사항을 읽고 실행 시작 │ └───────────────────────────┬───────────────────────────────────┘ │ 본문이 "더 필요하면 이 파일을 봐" 라고 가리키면 ▼ ┌───────────────────────────────────────────────────────────────┐ │ LEVEL 3 · 실행(Execution) 비용: 무제한 │ │ references/ · scripts/ · assets/ 를 필요할 때만 읽음/실행 │ │ 예) teach 스킬의 4개 FORMAT.md, deepapi 참고문서 │ └───────────────────────────────────────────────────────────────┘ 핵심: 45개 스킬 × 각자 긴 본문이 있어도, 평소 켜져 있는 건 "제목+한 줄 설명"뿐 → 컨텍스트 창이 붐비지 않는다.
용어
컨텍스트 창(context window) · 토큰 · progressive disclosure
컨텍스트 창은 AI가 한 번에 "기억"할 수 있는 텍스트의 크기다 — 여기에 든 모든 것이 토큰(단어 조각) 단위로 비용을 잡아먹는다. 그래서 스킬 45개를 통째로 항상 올려두면 창이 꽉 차 성능이 떨어진다. progressive disclosure(점진적 공개)는 "기본은 요약만, 자세한 건 필요할 때만"이라는 원칙으로 이 문제를 푼다. 소프트웨어 UI에서 "고급 설정은 접어두는" 것과 같은 발상이다.

핵심 ② — description은 "라우팅 계약"이다

레포 가이드의 가장 강한 주장 하나: "스킬이 발동(trigger)하지 않으면, 95%는 본문이 아니라 description이 잘못된 것이다." 에이전트가 스킬을 펼칠지 말지 결정할 때 보는 유일한 정보가 description이기 때문이다. 그래서 가이드는 description을 "본문으로 가는 라우팅 계약"으로 부르고, 다음 공식을 권한다.

# description 작성 공식 (effective-agent-skills)
"X via Y. Use for [상황들]. [차별점: no Z required / faster than W]."

# 즉:  무엇을(X) 어떤 수단으로(Y) → 언제 쓰는지(상황) → 왜 이걸(차별점)
# 주의: 전체 워크플로우를 description에 요약하지 말 것
#       (요약을 본 에이전트가 본문 로드를 건너뛰고 대충 흉내 낸다)

실제 스킬의 frontmatter를 보면 이 원칙이 그대로 적용돼 있다. 예를 들어 git-worktree 스킬의 머리말은 "언제 발동해야 하는지"를 트리거 문구까지 나열한다:

---
name: git-worktree
description: Use git worktrees to run multiple coding agents in
  parallel on one repo without collisions. Use when starting a task
  in a shared repo, when the user says "worktree", "parallel agents",
  or when agents keep overwriting each other's changes. ...
disable-model-invocation: true
---
실전 함정 (가이드가 직접 경고)
YAML 한 칸이 스킬 전체를 깨뜨린다

가이드는 아주 구체적인 지뢰를 짚는다 — 따옴표 없는 description 안에 : (콜론+공백)를 넣지 말 것. 엄격한 YAML 파서(예: Pi의 파서)는 이걸 "키:값" 구분자로 오해해 파싱을 실패시킨다. 해법은 값 전체를 작은따옴표로 감싸고, 내부 아포스트로피는 두 번 쓰는 것(''). "설명 하나 잘못 써서 스킬이 아예 안 뜨는" 사고가 흔하다는 걸, 실전에서 겪은 사람만 아는 디테일이다.

핵심 ③ — 패턴 A(능력) vs 패턴 B(과정)

이 레포를 관통하는 설계 이분법이다. 스킬은 둘 중 하나의 성격을 갖는다.

패턴 A · 능력 원시패턴 B · 과정 원시
무엇을 준다더 나은 도구더 나은 방법
구현결정론적 CLI를 얇게 감쌈순수 프롬프트, 스크립트 없음
신뢰성 원천셸 도구(재현 가능)명시적 절차 + 체크리스트
분량대략 30~80줄짧게는 몇 줄 ~ 길게는 수백 줄
이 레포의 예git-worktree · anti-sleep · deepapibefore-building · decisions · teach

thinking-and-docs 카테고리(11개)가 거의 전부 패턴 B라는 점이 이 레포의 개성을 만든다. 예컨대 before-building는 코드 한 줄 없이 "빌드를 제안받는 순간, 도구도 파일도 열지 말고 즉답으로 숨은 1~3개의 중대한 선택지를 짚으라"는 사고 규율만 담는다. "AI에게 더 좋은 도구를 쥐여주는 것" 못지않게 "AI가 더 좋은 절차로 생각하게 만드는 것"도 스킬이 될 수 있다는 발상이다.

핵심 ④ — 크로스-에이전트 배포와 가드레일 훅

같은 스킬을 여러 에이전트에서 쓰려면, 각 에이전트가 저마다 다른 폴더에서 스킬을 찾는 문제를 풀어야 한다. 레포의 distribute-skill-to-all-agents는 하나의 원본 폴더(~/.agents/skills)를 두고, 각 에이전트의 스킬 폴더를 그쪽으로 향하는 심볼릭 링크로 만드는 방식을 쓴다. 그리고 "수동 호출 전용" 잠금은 에이전트마다 표기법이 달라, 한 스킬에 두 가지 플래그를 함께 넣는다(아래).

# 배포 레이아웃 (개념도)
~/.agents/skills/<스킬>/SKILL.md      # ← 진짜 원본 한 곳
~/.claude/skills   ─(symlink)→ ~/.agents/skills
~/.pi/agent/skills ─(symlink)→ ~/.agents/skills
~/.hermes/skills   ─(독립 복사본)

# "수동 호출 전용" 이중 표기
SKILL.md frontmatter :  disable-model-invocation: true   # Claude Code / VS Code
agents/openai.yaml   :  policy: {allow_implicit_invocation: false}  # Codex

가드레일은 이 크로스-에이전트 사상을 안전으로 확장한 것이다. hooks/ 폴더의 deny-dangerous.sh는 에이전트가 셸 명령을 실행하기 직전(PreToolUse)에 호출돼, 표준입력으로 들어온 명령 JSON을 jq로 뽑아 dangerous-patterns.txt의 정규식과 대조하고, 걸리면 종료코드 2로 실행을 막는다. 9개 에이전트 각각에 맞는 연결 방식(예: Claude Code는 settings.jsonPreToolUse)이 문서화돼 있다.

가드레일 훅의 동작 흐름 (deny-dangerous.sh) 에이전트가 셸 명령 실행 시도 │ ▼ ┌──────────────────────────────┐ 명령 JSON을 stdin으로 수신 │ PreToolUse 훅 발동 │ (Claude/Codex: .tool_input.command │ = "경비원"이 문 앞에 섬 │ Cursor: .command 등 형태별 파싱) └───────────────┬──────────────┘ │ jq로 명령 문자열 추출 ▼ ┌──────────────────────────────┐ │ dangerous-patterns.txt 대조 │ rm -rf / · mkfs · dd of=/dev │ (POSIX 정규식 9개 그룹) │ curl|sh · git push --force └───────────────┬──────────────┘ gh repo delete · chmod 777 / ... 매치 O │ 매치 X ▼ ▼ exit 2 (차단) 통과 → 명령 실행 허용 ※ jq가 없으면 "막지 않고 통과"(fail-open) — 에이전트를 깨뜨리지 않기 위한 선택. 즉 "샌드박스"가 아니라 "안전벨트".
설계 요약
네 개념이 맞물리는 방식

점진적 공개(①)가 "많아도 가볍게"를 만들고, 라우팅 계약(②)이 "필요할 때 정확히 뜨게" 하며, 패턴 A/B(③)가 "도구든 방법이든 스킬로 담을 수 있게" 하고, 크로스-에이전트 배포·가드레일(④)이 "어느 에이전트에서든 안전하게 재사용"되게 한다. 그 결과 한 사람의 노하우가, 벤더에 묶이지 않고, 토큰 효율적으로, 안전 장치와 함께 이식되는 개인용 에이전트 운영체계가 완성된다.

5디렉토리 구조 해부

폴더 트리만 봐도 "이 사람이 무엇을 자동화했는가"가 드러난다
skills/ # 45개 스킬 (카테고리 폴더 5개) │ ├── agent-orchestration/ # ★ 12개 — 에이전트 부대 지휘 │ ├── git-worktree/SKILL.md # 워크트리로 병렬 에이전트 격리 │ ├── launch-subagent/SKILL.md # 서브에이전트 띄우기 전 규칙 │ ├── handoff/SKILL.md # 대화를 인수인계 메시지로 압축 │ ├── codex-subagent/ gpt-review/ fable-review/ │ ├── agent-self-scheduling/ goal-loop/ cmux/ herdr/ │ └── run-deep-swe/ fable-safe-prompt/ │ ├── thinking-and-docs/ # 11개 — 사고 규율(패턴 B) │ ├── before-building/SKILL.md # 빌드 전 숨은 선택지 즉시 제시 │ ├── decisions/ next-decision/ # 결정 회고 / 결정 예습 │ ├── teach/SKILL.md # 다회차 학습 워크스페이스(Matt Pocock 원작) │ ├── brain-to-docs/ prompt-me/ level-up/ │ └── remind/ short/ save-idea/ read-all-adrs/ │ ├── ops-and-setup/ # 10개 — 머신·서버·보안 운영 │ ├── global-agent-guardrails/SKILL.md # 위험명령 공용 차단(→ /hooks) │ ├── cyber-audit/ create-readonly-db-role/ │ ├── macbook-metrics-setup/ anti-sleep/ nuke-cursor-app/ │ └── prod-push/ setup-help/ pi-custom-model/ google-safe-browsing/ │ ├── research-and-web/ # 8개 — 정보 수집(대부분 DeepAPI) │ ├── deepapi/SKILL.md # 1,432줄 — 검색·스크래핑·리서치 백본 │ ├── deep-research/ research-prompt/ online-shopping/ │ └── browser-harness/ pi-web-search/ youtube-transcript/ fireflies-transcript/ │ └── skill-authoring/ # 4개 — 스킬을 만드는 스킬(메타) ├── effective-agent-skills/SKILL.md # 323줄 — 스킬 작성 철학서 ├── distribute-skill-to-all-agents/ ├── push-skill-to-github/ └── folder-specific-claude-and-agents-md/ hooks/ # 가드레일 "구현체" (스킬이 설명하는 실제 코드) ├── deny-dangerous.sh # PreToolUse 가드(약 60줄, bash+jq) ├── dangerous-patterns.txt # 차단 정규식 denylist(9개 그룹) └── test-guard.sh # must-block ~50 / must-allow ~40 테스트 README.md LICENSE(MIT) .gitignore

이 트리에서 읽어야 할 신호는 셋이다. 첫째, 가장 큰 폴더가 agent-orchestration이라는 것 — 이 레포의 무게중심이 "에이전트 지휘"에 있음을 그대로 보여준다. 둘째, hooks/skills/ 바깥에 따로 있다 — 스킬(global-agent-guardrails)은 "설명서"이고, hooks/는 그 설명서가 가리키는 "진짜 실행 코드"라, 개념과 구현을 폴더로 분리했다. 셋째, 대다수 스킬 폴더는 SKILL.md 하나뿐이고, scripts/·references/·agents/openai.yaml은 필요한 소수만 갖는다(패턴 B가 많다는 방증).

용어
ADR · sanitized snapshot · fail-open
ADR(Architecture Decision Record)는 "이 설계를 왜 이렇게 정했는가"를 한 건씩 남기는 결정 기록 문서 — read-all-adrs·brain-to-docs 스킬이 이걸 다룬다. sanitized snapshot(정제된 스냅샷)은 제작자의 비공개 원본(~/.agents)에서 민감 정보를 지우고 공개용으로 떠낸 사본이라는 뜻 — 그래서 커밋 이력이 뭉개져(squash) 있고, README엔 설치법이 빠져 있다. fail-open은 "검사 장치가 고장 나면(예: jq 없음) 막지 말고 통과시키는" 설계 — 안전보다 가용성을 택한 의도적 선택이다.

한 가지 더 눈여겨볼 것: research-and-webdeepapi/SKILL.md는 1,432줄로 압도적으로 크고, 스스로 갱신되는(self-updating) 버전 필드까지 갖는다. 검색·스크래핑(웹·PDF·GitHub·X·유튜브·레딧 등)·딥리서치·이메일·이미지 생성·에이전트 메모리까지 한 API로 감싼 이 스킬은, 사실상 제작자 상용 제품(DeepAPI)의 사용 설명서다. 학습 시엔 "이 부분은 중립 기술이 아니라 특정 유료 서비스"라는 점을 분리해서 보는 게 좋다.

6학습 포인트 — 카테고리별 배울 것

이 레포를 "교재"로 봤을 때 각 카테고리에서 뽑아낼 수 있는 것

① 스킬 저작 — "에이전트에게 지시를 설계하는 법"의 교과서

이식성 가장 높은 교훈은 여기 있다. effective-agent-skills(323줄)는 "description은 라우팅, 본문은 실행", "점진적 공개", "패턴 A/B", "설명서를 스킬에 넣지 말 것" 같은 원칙을 압축해 준다. 배울 점: (1) 스킬이 안 뜨면 본문이 아니라 description부터 고쳐라, (2) "모델이 이미 아는 걸 다시 가르치지 말라" — 스킬엔 모델이 모르는 특정 절차·제약만 담아라, (3) 절대경로·과도한 분량·"믿을 수 없는 스킬 신뢰"를 피하라(보안 체크리스트).

실습 아이디어: 내가 반복하는 작업 하나(예: "PR 설명 쓰기")를 골라 20줄짜리 SKILL.md로 만들어 보고, description만 세 가지 버전으로 바꿔 가며 어떤 문구에서 에이전트가 실제로 스킬을 꺼내는지 관찰한다.

② 에이전트 오케스트레이션 — "부대 지휘"의 실전 규칙

git-worktree·launch-subagent·handoff는 "여러 에이전트를 병렬로 안전하게 굴리는 법"의 살아 있는 예제다. 배울 점: "1 작업 = 1 워크트리 = 1 에이전트 세션"(디렉토리 충돌 방지), "서브에이전트는 눈뜬장님으로 시작한다 — 스코프·맥락·정확한 출력형식을 프롬프트에 통째로 써 넣어라", "병렬 서브에이전트는 절대 같은 파일을 건드리게 하지 말라", "메인 에이전트는 오케스트레이터로 남아 통합·검증만 하라". 이 원칙들은 이 도구의 SDK를 안 써도 어떤 멀티에이전트 작업에도 그대로 이식된다.

실습 아이디어: 작은 레포에서 git worktree add로 브랜치 두 개를 만들어 각각 다른 작업을 시키고, "새 워크트리엔 .env·node_modules가 없어서 생기는 실패"를 직접 겪어 본다(가이드가 "gitignore된 파일이 조용히 빠지는 게 1위 실패 원인"이라 짚는 지점).

③ 안전 가드레일 — "자율성에 안전벨트 채우기"

hooks/의 세 파일은 "에이전트에게 셸을 맡기되 사고를 막는 법"의 최소 구현이다. 배울 점: (1) PreToolUse 훅으로 실행 직전에 개입하는 지점을 잡는다, (2) 위험 명령을 정규식 denylist로 관리하고 test-guard.sh로 must-block/must-allow를 회귀 테스트한다, (3) "이건 샌드박스가 아니라 안전벨트"라는 한계를 명시한다(python -c "shutil.rmtree(...)" 같은 우회는 정규식으로 못 막는다). "방어의 범위를 정직하게 한정하는" 보안 커뮤니케이션의 좋은 본보기다.

실습 아이디어: deny-dangerous.sh와 패턴 파일을 읽고, test-guard.sh를 돌려 통과를 확인한 뒤 패턴 하나를 추가해(예: 특정 사내 배포 명령) must-block 케이스를 늘려 본다.

④ 과정 원시(패턴 B) — "사고 규율을 프롬프트로 코딩하기"

thinking-and-docs의 11개 스킬은 코드가 거의 없는데도 강력하다. before-building(빌드 전 숨은 선택지 즉시 제시), decisions/next-decision(내린 결정 회고 vs 앞으로의 결정 예습), teach(학습과학 기반 다회차 교육 — "유창성 강도 vs 저장 강도", 인출연습·간격·인터리빙을 명시). 배울 점: 반복되는 "좋은 사고 습관"은 지시문으로 만들어 재사용할 수 있다. 팀에서 "설계 전 5분 회고" 같은 규율을 스킬로 굳히면 사람이 매번 상기시킬 필요가 없어진다.

실습 아이디어: before-building을 그대로 설치해 다음 코딩 요청에서 발동시켜 보고, "에이전트가 곧장 코드 짜는 것"과 "먼저 숨은 선택지를 묻는 것"의 결과 차이를 비교한다.

⑤ 크로스-에이전트 이식성 — "한 벤더에 묶이지 않기"

같은 스킬을 Claude Code·Codex·Cursor·Pi·Hermes에서 쓰려는 distribute-skill-to-all-agents·folder-specific-claude-and-agents-md는 "이식성"을 실무로 보여준다. 배울 점: (1) 원본 하나 + 심볼릭 링크로 중복을 없앤다, (2) 에이전트별로 다른 표기(수동호출 플래그)를 둘 다 넣어 호환시킨다, (3) 폴더 스코프 CLAUDE.md/AGENTS.md로 "이 디렉토리에 들어온 미래의 에이전트"에게 맥락을 남긴다. 도구가 빠르게 바뀌는 시대에 "지식을 도구에서 분리해 두는" 감각을 길러 준다.

비유로 정리

이 레포는 "베테랑 사수(David)가 후임에게 넘겨주는 업무 매뉴얼 바인더"다. 바인더엔 장비 쓰는 법(패턴 A)과 일머리·판단 규율(패턴 B)이 섞여 있고, 맨 앞엔 "매뉴얼 쓰는 법"이, 표지엔 "이건 절대 하지 마라" 경고딱지(hooks)가 붙어 있다. 후임이 배워야 할 건 바인더의 문장을 외우는 게 아니라, "왜 이렇게 정리했는가"라는 설계 감각이다.

7하드웨어 / 시스템 요구사항

"성능"이 아니라 "어떤 에이전트·어떤 환경을 전제하나"가 핵심

davidondrej/skills는 GPU도, 무거운 런타임도 필요 없다 — 대부분 텍스트 스킬이라 그 자체는 어떤 컴퓨터에서도 열린다. 진짜 "요구사항"은 하드웨어가 아니라 "이 스킬을 실행할 에이전트가 있는가, 그리고 스킬이 전제하는 환경(OS·외부 API)에 내가 맞는가"이다.

항목요구/전제근거
실행 주체Agent Skills를 읽는 코딩 에이전트 1종+Claude Code · Codex · Cursor · Pi · Hermes 등
스킬 설치 위치에이전트의 skills 폴더에 폴더째 복사예: ~/.claude/skills/<스킬>/
OS 편향상당수 스킬이 macOS 전제caffeinate·cmux·launchd·Swift
가드레일(hooks)bash + jqdeny-dangerous.sh가 jq로 JSON 파싱
research 스킬DeepAPI 키(유료·과금형)DEEPAPI_API_KEY·DEEPAPI_API_BASE_URL
일부 orchestration특정 에이전트 앱 설치cmux(macOS 14+), herdr(Ghostty)
모델 접근에이전트가 쓰는 모델 계정/키서브에이전트·리뷰 스킬이 모델 호출
GPU불필요추론은 각 에이전트/모델 제공자가 수행
받아들이기 전 반드시 점검
"믿을 수 없는 스킬은 데이터 유출 벡터"

이건 이 레포의 effective-agent-skills가 직접 하는 경고다 — "낯선 스킬을 신뢰하지 말라. 악의적 스킬은 데이터 유출 통로가 될 수 있고, 타이포스쿼팅된 스킬 이름을 조심하라." davidondrej/skills 자체는 MIT·공개 저장소지만, 스킬을 내 에이전트에 넣는 행위는 "그 지시문에 내 셸·내 자격증명 접근을 위임"하는 것과 같다. 특히 hooks/·deepapi·cyber-audit처럼 시스템·자격증명·외부 API를 건드리는 스킬은 반드시 본문을 끝까지 읽고, 신뢰하는 환경(가능하면 전용 계정/VM)에서만 활성화하라.

정리하면 이 레포의 "시스템 요구사항"은 체크리스트가 아니라 적합성 판단에 가깝다: (1) 나는 이 스킬을 읽어줄 에이전트를 쓰는가, (2) 이 스킬이 전제하는 OS·외부 서비스(macOS·DeepAPI)를 쓰는가, (3) 이 스킬에 내 권한을 위임해도 괜찮을 만큼 내용을 이해했는가. 세 질문에 "예"가 아니면, 그 스킬은 "복사 대상"이 아니라 "설계를 읽고 배울 참고서"로 대하는 게 맞다.

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

난이도별 5개 — "스킬을 읽는 눈"에서 "스킬을 짓는 손"까지
난이도 ★ — 스킬 해부

1. SKILL.md 한 장을 "frontmatter vs 본문"으로 분해하기

코드를 돌리지 않고 하는 첫 과제. git-worktree/SKILL.md를 열어 머리말(name·description·플래그)본문(절차·주의)을 형광펜으로 나눠 보라. 그리고 스스로 물어라: "에이전트가 이 description만 보고 이 스킬을 언제 꺼낼지 알 수 있는가?" description의 트리거 문구("worktree", "parallel agents")가 본문의 어떤 내용으로 연결되는지 짝지으면, 라우팅 계약의 개념이 손에 잡힌다.

난이도 ★★ — 스킬 설치·발동

2. 패턴 B 스킬 하나를 내 에이전트에 넣고 트리거시키기

before-building 폴더를 내 에이전트의 스킬 디렉토리(예: ~/.claude/skills/before-building/)에 복사한 뒤, 다음 코딩 요청에서 에이전트가 곧바로 코드를 짜는 대신 "숨은 선택지 1~3개"를 먼저 되묻는지 확인하라. 목표는 결과물이 아니라 "스킬이 실제로 발동되는 순간"을 눈으로 보는 것. 안 뜨면? 가이드 말대로 description을 먼저 의심하라.

난이도 ★★★ — 스킬 저작

3. 내 반복 작업을 20~40줄짜리 스킬로 만들기

내가 에이전트에게 매번 똑같이 설명하는 작업(예: "커밋 메시지 컨벤션", "리뷰 체크리스트")을 하나 골라 SKILL.md로 만든다. effective-agent-skills의 공식("X via Y. Use for … . 차별점")으로 description을 쓰고, 본문엔 "모델이 모르는 내 팀만의 규칙"만 담아라(모델이 이미 아는 건 빼라). 완성 후 실제로 설치해 발동까지 시키면 한 사이클이 닫힌다.

난이도 ★★★★ — description 튜닝(라우팅 실험)

4. 같은 스킬, 세 가지 description으로 트리거율 비교

과제 3의 스킬을 놓고 description을 세 버전으로 만든다: (a) 너무 짧은 것, (b) 전체 워크플로우를 요약해 버린 것, (c) 공식대로 "상황+차별점"을 담은 것. 각 버전에서 관련·비관련 요청을 던져 언제 뜨고 언제 안 뜨는지(그리고 (b)에서 에이전트가 본문을 건너뛰고 대충 흉내 내는지)를 기록하라. 가이드의 "description이 곧 성능"이라는 주장을 데이터로 검증하는 과제다.

난이도 ★★★★★ — 가드레일 확장 / 크로스-에이전트 배포

5. hooks 테스트를 통과시키고 규칙 하나 추가 + 심링크 배포

hooks/test-guard.sh를 읽고 must-block/must-allow 케이스가 어떻게 구성됐는지 파악한 뒤, dangerous-patterns.txt에 내 환경에 맞는 위험 패턴 하나(예: 특정 프로덕션 배포 명령)를 추가하고 테스트가 여전히 failed: 0인지 확인하라. 여유가 되면 distribute-skill-to-all-agents심볼릭 링크 레이아웃을 흉내 내, 스킬 하나를 두 에이전트에서 동시에 인식시키는 것까지 시도한다. 이 레포의 "이식성 + 안전"이라는 두 축을 몸으로 잇는 최종 과제다.

과제 설계 의도
"읽기 → 쓰기 → 튜닝 → 배포·안전"의 사다리

1번은 스킬을 읽는 눈, 2번은 발동을 체험, 3번은 스킬을 짓는 손, 4번은 라우팅을 다루는 감각, 5번은 안전·이식성이라는 운영 관점을 각각 겨눈다. 5개를 순서대로 하면 "남의 스킬을 쓰는 사람"에서 "내 스킬 체계를 설계하는 사람"으로 넘어가게 된다.

9관련 기술 심화 로드맵 (주차별)

davidondrej/skills를 온전히 소화하기 위한 4주 코스
WEEK 1

Agent Skills 표준의 기초

SKILL.md 구조(frontmatter + 본문), YAML 문법의 함정(콜론+공백), 점진적 공개 3단계(발견/활성화/실행)의 개념. 목표: 임의의 스킬 폴더를 열었을 때 "이건 어느 레벨에서 로드되는 무엇인가"를 말할 수 있게 되기. 실습: 이 레포의 스킬 5개를 골라 각각 패턴 A인지 B인지 분류해 본다.

WEEK 2

스킬 저작 & 라우팅(프롬프트 엔지니어링)

effective-agent-skills 정독 → "description = 라우팅 계약", "모델이 아는 건 빼라", 안티패턴 목록. 목표: 좋은 description의 공식을 내 것으로 만들기. 실습: 내가 자주 하는 작업 3개를 스킬 후보로 스케치하고, 각각의 description을 공식대로 써 본다. 비교: "설명서형 프롬프트"와 "스킬"의 차이(스킬은 필요할 때만 로드된다).

WEEK 3

멀티 에이전트 오케스트레이션

git worktree로 병렬 세션 격리, 서브에이전트에 "완전한 브리핑"을 넣는 법, handoff로 세션 인수인계. 목표: agent-orchestration 스킬들의 공통 원칙(1작업=1워크트리, 같은 파일 금지, 메인은 오케스트레이터)을 설명할 수 있게 되기. 실습: 작은 레포에서 워크트리 2개로 독립 작업을 병렬 진행하고 충돌·누락(.env·의존성)을 직접 겪어 본다.

WEEK 4

안전 가드레일 & 과정 원시(사고 규율)

PreToolUse 훅으로 위험 명령 차단(deny-dangerous.sh·정규식 denylist·test-guard.sh), 그리고 패턴 B 스킬로 사고 습관을 인코딩하기(before-building·decisions·teach의 학습과학). 목표: "자율성엔 안전벨트를, 판단엔 절차를"이라는 이 레포의 철학을 내 워크플로우에 이식. 실습: 위험 패턴 1개 추가 + 나만의 "결정 전 체크리스트" 패턴 B 스킬 하나 작성.

10핵심 키워드 사전

이 문서에 나온 용어를 한 번에 복습
키워드
Agent SkillAI 에이전트가 특정 작업에 필요할 때 불러오는, 지시문이 담긴 폴더
SKILL.md스킬의 본체. frontmatter(YAML) + 마크다운 지시문으로 구성
frontmatter파일 맨 위 --- 사이 YAML 머리말 — name·description 등이 위치
description = 라우팅 계약에이전트가 스킬을 펼칠지 결정할 때 보는 유일한 정보. 안 뜨면 여기부터 고침
점진적 공개발견(요약)→활성화(본문)→실행(첨부파일)의 3단계로 필요할 때만 로드
패턴 A(능력 원시)결정론적 CLI를 얇게 감싼 스킬 — "더 나은 도구"
패턴 B(과정 원시)코드 없이 방법론·사고 규율을 담은 스킬 — "더 나은 방법"
크로스-에이전트Claude Code·Codex·Cursor·Pi·Hermes 등 여러 에이전트에서 두루 작동
disable-model-invocationClaude Code에서 스킬을 "수동 호출 전용"으로 잠그는 frontmatter 플래그
agents/openai.yamlCodex용 정책 파일 — allow_implicit_invocation: false로 수동 전용 지정
PreToolUse 훅에이전트가 도구(셸 명령 등)를 실행하기 직전에 개입하는 검사 지점
가드레일 / denylist위험 명령을 정규식 목록으로 차단하는 안전장치(hooks 폴더)
fail-open검사 장치가 고장 나면(예: jq 없음) 막지 않고 통과 — 가용성 우선 선택
심볼릭 링크(symlink)실제 폴더를 가리키는 바로가기 — 스킬 원본 하나를 여러 에이전트가 공유
DeepAPI제작자 소유의 유료·과금형 API — 검색·스크래핑·리서치 스킬의 백본
sanitized snapshot비공개 원본(~/.agents)에서 민감정보를 지우고 공개용으로 떠낸 사본
process primitive패턴 B의 다른 이름 — 사고·판단의 "절차" 자체를 스킬로 만든 것
handoff현재 대화를 새 세션 에이전트가 이어받도록 압축한 인수인계 메시지
ADRArchitecture Decision Record — 설계 결정을 한 건씩 남기는 문서

11참고 링크

더 깊이 파고들 공식 소스