AI 에이전트 스킬 복사망을 git 이력으로 복원해 감사 대상을 고른다
Skill Constellations: Tracing the Supply Chain of Agent Skills on GitHub
무엇인가
AI 코딩 에이전트인 Claude Code, Codex, Cursor는 SKILL.md 지시문과 스크립트 묶음인 스킬로 기능을 확장한다. 에이전트는 사용자 권한으로 스킬을 실행하므로 셸 명령 실행, 네트워크 접근, 파일 수정이 가능하다. 개발자들은 저장소 사이에서 스킬을 복사해 공유하는데 레지스트리도 버전도 출처 기록도 없어서 이것이 사실상 소프트웨어 공급망이 된다. 논문이 인용한 GitSkills 데이터에 따르면 포맷 등장 후 10개월 만에 259,596개 저장소에 1,612,846개의 서로 다른 스킬이 생겼고 GitHub의 SKILL.md 절반이 다른 파일의 그대로 복사본이다. 복사본의 원본이 어디인지, 보안 수정이 어디까지 도달하는지, 어느 저장소를 먼저 점검해야 하는지는 알 수 없었다. 특정 시점의 스냅숏을 기록한 기존 연구로는 누가 누구에게서 복사했는지 드러나지 않는다.
어떻게 동작하나
저자는 GitSkills의 모든 SKILL.md git 이력을 재구성해 최초의 날짜가 붙은 방향성 복사 네트워크를 만들었다. GitHub 전역의 2,193,119건 스킬 채택을 담았고 대화형 뷰어도 함께 공개했다. 모집단은 정확히 SKILL.md라는 이름에 유효한 front matter를 가진 파일 중 2025년 10월 1일 이후 처음 커밋된 것, 포크가 아닌 저장소로 한정하고 서로 다른 내용을 하나의 스킬로 취급한다. 각 기본 브랜치 클론에서 모든 SKILL.md 경로의 이력을 수집하고, 채택은 저장소가 스킬을 얻은 시점을 첫 커밋 날짜로 표시하되 저장소 생성일을 하한으로 둔다. 편집으로 연결된 한 스킬의 버전들을 계보라 하고 그 첫 채택을 기원이라 한다. 한 커밋이 SKILL.md를 10개 이상 추가하고 기존 계보의 절반 이상을 단일 선행 채택자가 이미 보유하고 있었다면 이를 복사 이벤트로 보고 그 채택자를 출처로 지정한다. 100개 미만은 번들, 그 이상은 대량 복사다. 복사 이벤트에서 출처가 먼저 보유했던 계보가 전파이고 나머지 채택은 개별 채택이다. 스킬 하나의 확산 캐스케이드를 별자리라 부르며 채택자를 노드로, 전파를 날짜 있는 방향 간선으로 표현한다.
무엇과 다른가
확산 모델은 조건부 로짓으로, 복사 이벤트가 어떤 선행 채택자를 출처로 고르는지를 보유 스킬 수, 과거 복사 횟수, 스타 수, 나이의 로그값으로 설명한다. 주간 시뮬레이션은 현재 채택자 수의 거듭제곱에 비례해 개별 채택을 추가하고 2026년 4월 1일 이전 주간으로 보정한다. 감사는 시간 분할로 평가하는데, 각 전략이 훈련 기간만 써서 저장소 순위를 매기고, 감사한 저장소의 표시된 스킬을 제거하면 이후 고위험 채택과 그로부터 파생되는 모든 복사가 막힌다. 검증에서 스킬 설치기가 복사 출처와 시점을 기록한 1,534개 폴더 중 94.6%에서 재구성한 날짜가 기록과 7일 이내에 들어맞았고, 기록된 출처가 스킬을 더 먼저 보유한 경우는 99.1%였지만 저자들의 규칙이 그 출처를 지목한 비율은 26.7%에 그쳤다. 규칙이 계보를 가장 많이 보유한 선행 채택자, 대개 카탈로그를 출처로 인정하기 때문이며, 따라서 출처 수준 지표는 저자(authorship)가 아니라 유통을 설명한다. 위험 플래그는 실행 파일을 묶어 넣거나 도구를 사전 승인하거나 위험한 행동을 지시하는 스킬에 붙으며, 200개 스킬 표본에서 엄격 플래그의 정밀도는 98.3%, 재현율은 80.9%였다. 저장소 유형과 스킬 위험 라벨링은 Claude Opus 5.5와 Sonnet 5.5가 코드북에 따라 독립적으로 붙였고 저장소 유형에서 가중 없는 Cohen κ 0.77, 스킬 문항에서 0.66~1.00의 일치를 보였으며 불일치 18개 저장소와 28개 스킬은 수동으로 해결했다. Opus는 저장소 유형 κ=0.91, 가장 약한 스킬 문항 0.92로 나머지 출처 저장소 1,507개를 라벨링했다.
어떻게 쓰나
구조 분석에서 대부분의 저장소는 다른 저장소와 스킬을 공유하지 않고, 나머지는 주제별로 묶인 100개 이상 규모의 50개 커뮤니티를 이룬다. 스킬은 개별로 퍼지지 않는다. 저장소들은 단일 스킬을 채택하는 것보다 카탈로그 전체를 대량 또는 번들로 복사하는 경우가 훨씬 많아서 선호적 연결이 카탈로그 단위로 작동한다. 출처 선택 모델에서 번들 복사는 이미 복사된 적 있는 출처를 선호했고 과거 복사 횟수 로그값의 계수는 1.64였다. 반면 개별 스킬에 대한 연결은 복사 이벤트 규칙의 아홉 가지 임계값 설정 모두에서 준선형이었다. 전파는 과대분산이 심해 음이항 분산이 k=0.086이었고, 대부분의 채택은 다른 저장소로 스킬을 전혀 전달하지 않으며 소수 저장소가 거의 모든 전파를 담당한다. 출처와 관련해 GitHub 스타는 날짜 있는 복사 네트워크의 out-degree에 대해 거의 정보를 주지 못하고 가짜 스타 캠페인으로 조작될 수 있다. 정적 out-degree 상위 20개 저장소 중 7개만이 자신이 먼저 보유한 스킬만 인정받는 방식에서도 상위 20위에 남았고 나머지는 늦은 채택자였다. 2026년 4월 1일 이전으로 순위를 매겼을 때 현재 복사 out-degree는 스타보다 4.0배 많은 이후 전파를 식별했고 PageRank와 보유 스킬 수는 비슷한 성능을 냈다. 스타가 없는 상위 출처 대부분은 카탈로그가 아니라 평범한 프로젝트였다.
전제와 한계
위험 분석에서 플래그된 스킬은 균일 순열 귀무가설이 예측한 41.1%보다 적은 28.6%의 저장소에 도달했다. 복사본은 원본과 함께 일관되게 바뀌지 않는다. 한 주에 한 스킬의 동일 버전을 보유한 저장소 집합을 클론 그룹이라 하고 이를 주 단위로 따라간 것을 계보라 하며, 모든 구성원이 같은 다음 버전으로 이동할 때 일관된 변경이라 부르는데 모든 관측 창에서 그룹 변경 중 일관된 것은 11.1%뿐이었고 그룹이 여러 소유자를 걸치면 일관성이 무너졌다. 그룹 크기, 플랫폼, 내용을 통제했을 때 단일 소유자는 일관된 변경의 오즈를 3.32배 높였고 계보 중 일관되게 바뀐 경우는 4.0%에 불과했다. 스냅숏은 원본 편집을 따라간 복사본 대부분을 숨기는데, 갱신된 복사본이 새 버전의 새 복사본과 구별되지 않기 때문이다. 복사된 코드 파일이 업스트림 보안 수정을 받아들이는 비율이 47~84%인 것과 달리 스킬 복사본이 원본의 이후 편집을 따라간 비율은 20.9%였다. 수정된 복사본은 명령 실행 능력을 잃는 경우보다 얻는 경우가 많았고 그 획득은 소유자의 편집이 아니라 다른 버전을 채택한 데서 왔다. 복사본은 적응 없이 플랫폼을 넘나들며 다른 에이전트 폴더의 스킬이 Claude Code만 제공하는 도구를 지목하는 경우도 있었다(수동 확인 56건 모두 정확).
개입 실험에서 2026년 4월 1일 분할 기준으로 출처 선택 모델이 가장 높게 평가한 100개 저장소를 감사하면 이후 기간의 고위험 채택을 스타 상위 100개나 무작위 100개보다 훨씬 많이 막았고, 그 비율은 14.9% 대 0.5%다. 분할을 3월 1일이나 5월 1일로 옮겨도, 관대한 플래그에서도 순서가 유지됐고 막은 채택의 4분의 1은 간접 복사였다. 보정된 시뮬레이션에서 같은 감사를 재생해도 순서가 재현됐다. 다만 사후에 고른 순위조차 고위험 채택의 약 4분의 1밖에 막지 못하는데 절반가량이 새 스킬로 들어오기 때문이다. 새 스킬은 첫 주에 최종 채택자의 극소수에게만 도달하므로 검토자에게는 몇 시간이 아니라 몇 주의 시간이 있고, 에이전트 폴더 간 복사의 3분의 1이 플랫폼을 넘으므로 검토는 모든 에이전트를 포괄해야 한다.
실무적으로 이 논문이 주는 지시는 분명하다. 플랫폼 사업자는 스킬을 복사본이 아니라 버전이 붙은 참조로 배포해야 한다. 복사본이 원본을 따라가지 않기 때문이다. 또 스킬이 자신을 불러오는 에이전트가 제공하는 도구만 지목하는지 확인해야 한다. 검토자와 레지스트리는 스타가 아니라 현재 복사 out-degree로 저장소 순위를 매기고 스킬이 퍼지기 시작한 첫 몇 주 안에 움직여야 한다. 사용자는 자신이 의존하는 복사본을 직접 갱신해야 한다. 연구자에게는 스냅숏으로 전파를 추정하지 말라는 경고가 남고, 같은 재구성 방법이 복사로 소프트웨어를 재사용하는 다른 생태계에도 적용된다.
저자가 밝힌 한계는 다음과 같다. 재구성한 날짜와 순서는 설치기 기록과 일치하고 감사 평가는 누가 스킬을 작성했는지가 아니라 어느 저장소가 출처인지에만 의존한다. 위험 플래그는 악의가 아니라 능력을 표시하며 정밀도가 높고 재현율이 낮아 위험 집계는 하한값이다. 데이터는 공개 GitHub에서 이 포맷이 등장한 첫 10개월, 즉 유통 관행이 형성되는 시기를 담는다. 윤리 측면에서 저자 이름, 이메일, 커밋 메시지는 저장하지 않고 확인된 악성 스킬은 집계로만 보고하며 해당 저장소나 소유자를 지목하지 않는다.