커뮤니티 스킬을 검증 가능한 훈련 환경으로 바꾸는 SkillGym
SkillGym: Training Skill-Use Agents with Automatic Verifiable Environment Generation
무엇인가
LLM 에이전트가 도메인 지식이나 전문 절차를 요구하는 작업을 할 때, 재사용 가능한 지침·사실 지식·실행 스크립트 묶음인 스킬을 붙여주는 방식이 사실상 표준이 됐다. Claude Code, Codex, OpenClaw 같은 최신 에이전트 하네스가 모두 스킬을 지원한다. 문제는 스킬을 실제로 잘 쓰는 능력을 어떻게 학습시킬지다. 기존 스킬 사용 학습 연구는 대부분 에이전트가 고정된 소수 환경에서 쌓은 자기 경험에서 스킬을 뽑아내기 때문에 학습이 몇 개 도메인에 갇힌다. SkillGym은 방향을 뒤집어 스킬에서 출발해 환경을 만든다.
어떻게 동작하나
1단계는 스킬 수집과 정제다. skills.sh에서 커뮤니티 상위 스킬 약 9.7k개를, GitHub 스킬 집계 저장소인 claude-skill-registry에서 나머지를 받아 총 184k개 스킬 항목을 크롤링하고, 중복 제거 후 51k개 고유 스킬을 확보한다. 각 스킬에는 기본 속성(패키지 완전성, 언어, 파일 수, 폴더 크기), 런타임 요구사항(네트워크 접근, GPU, 의존성), 품질(설명 일관성, 요구사항 명확성) 세 축으로 규칙 기반 검사와 LLM 주석을 붙인다. 사람 전문가가 100개를 독립 주석해 자동 주석과 94% 일치를 확인했다. 이후 영어·비어 있지 않음·일관성 필터와 함께, 런타임 네트워크나 GPU가 필요 없고 작업 디렉터리 밖에 쓰는 파괴적 동작이 없으며 파일 300개 이하라는 조건으로 걸러 18개 도메인에 걸친 11,897개 스킬 풀을 만든다.
무엇과 다른가
2단계는 과제 생성이다. builder-reviewer 에이전트 시스템이 먼저 Dockerfile과 의존성 파일로 환경을 구성하고, 리뷰어가 이미지를 빌드·실행해 검증한 뒤 실패하면 피드백을 돌려주는 루프를 돈다. 과제는 네 가지 추론 구조 프로파일로 만든다. 절차적 실행(이전 단계 산출물을 다음 단계가 쓰는 의존적 단계열), 귀추적 진단(증상만 주고 원인은 숨긴 채 시스템을 고치게 함), 제약 충족(서로 충돌할 수 있는 여러 측정 가능 제약을 동시에 만족), 부분 순서(과제마다 샘플링된 DAG 의존성). 최종 과제는 지시문 u, 실행 환경 E, 초기 작업공간 x0, 실행 가능한 검증기 v, 참조 해법 ρ의 묶음 T=(u, E, x0, v, ρ)로 표현된다. 세 개의 게이트를 통과해야 한다. 적합성 게이트에서 스킬이 해당 과제 유형을 지탱하지 못하면 건너뛰고, 유효성 게이트는 검증기가 초기 상태에서 실패하고(v(x0)=0) 참조 해법을 실행한 결과에서는 통과하는지(v(Exec(ρ;E,x0))=1)를 실행으로 확인하며, 품질 게이트는 스킬·지시문·검증기 사이의 정보 누출과, 대안 해법을 막을 만큼 엄격하거나 오답을 통과시킬 만큼 느슨한 검사를 걸러낸다.
어떻게 쓰나
3단계는 궤적 수집이다. Kimi-K3, DeepSeek-V4-Flash, GLM-5.2 세 교사 모델과 MiniSwe-Agent, AgentFly, Terminus-2, OpenCode 네 하네스를 조합해 6.8k 환경에서 19k개의 검증된 성공 궤적을 모은다. 여러 모델과 하네스를 섞어 추론 방식, 행동 순서, 도구 사용 형식의 다양성을 확보하고 시스템 프롬프트·도구 이름·스키마도 바꿔가며 다양화한다. 학습은 2 에폭, 학습률 1e-5, 선형 스케줄러, AdamW, 배치 128, 64 GPU 시간으로 진행했고, 대상은 MiniCPM5-2B, Ministral-3-8B, Qwen3.5 4B·9B·27B·122B-A10B다.
전제와 한계
평가는 SkillGym 테스트셋(학습에 쓰인 스킬의 새 과제인 held-in과 학습에 없던 스킬의 held-out으로 분리), SkillEval, SkillsBench, Skill-Use-Bench 네 벤치마크에서 MiniSwe-Agent 하네스(bash 도구만 허용)로 이뤄졌다. 24개 비교 중 22개에서 향상됐고 평균 이득은 SkillGym 테스트셋 +13.8점, SkillEval +9.7점, SkillsBench +9.7점, Skill-Use-Bench SU +41.2점이다. SU는 백본마다 21~55점 올랐다. 9B 모델은 SkillGym 테스트셋과 SkillEval에서 Qwen3.5-397B-A17B를 앞서고, 27B 모델은 SkillEval에서 교사 세 개 중 둘을 넘는다. 학습에 없던 스킬에서도 성공률이 42.5%에서 62.0%로 올라(held-in은 40.0%→57.0%) 전이가 확인된다.
가장 큰 행동 변화는 스킬을 읽는 것이다. Skill-Use-Bench를 세 축으로 쪼개면 Trigger가 28.0에서 96.0으로 뛰어 베이스 모델이 세 번 중 두 번은 관련 스킬을 아예 열지 않았다는 점이 드러나고, Compliance는 32.5→49.0, Boundary는 57.7→64.0이 된다. 스킬을 제공했을 때 성공률은 베이스 모델이 33.8%→41.3%, SFT 모델이 43.0%→59.5%로, SFT 모델은 스킬이 없어도 9.2점 오르고 스킬 접근에서 얻는 이득은 두 배 이상 커진다. 다섯 추론 구조로 공통 주석을 달아 비교해도 향상 폭이 비슷했고(SkillGym 16.9~22.1점, SkillEval 15.4~16.4점), 학습 데이터의 12%만 차지하는 규칙 적용 구조도 SkillEval에서 13.9점 올랐다.
설계 선택에 대한 절제 실험도 있다. 같은 토큰 예산에서 리뷰 승인을 받은 과제의 궤적이 유효성 게이트만 통과한 과제보다 테스트셋 +4.7점, SkillEval +6.7점, Skill-Use-Bench completion +9.3점으로 우수했다. 네 프로파일을 섞어 학습한 것과 절차적 과제만으로 학습한 것은 SkillEval과 Skill-Use-Bench에서 실행 간 변동 범위 안이었다. 과제가 정말 스킬 결정적인지도 확인했는데, 교사 모델 중 하나인 Kimi-K3조차 스킬이 있으면 60.5%→68.8%로 성공률이 오르고, 52개 과제는 스킬이 있을 때만, 19개는 없을 때만 풀렸다(McNemar exact test, p≈10⁻⁴). 동시에 60.5%는 스킬 없이도 풀려서 스킬이 과제를 막는 관문이 아니라 난이도를 낮추는 역할을 한다. 이득은 절차적 과제에서 +16.0으로 가장 크고 귀추적 +4.0, 부분 순서 +3.0으로 작다.
개발자 입장에서 이 논문의 실무적 시사점은 두 가지다. 첫째, 스킬을 시스템 프롬프트에 이름과 설명만 넣어두는 것만으로는 에이전트가 그것을 읽지 않는다는 점이 수치로 확인된다(Trigger 28%). 스킬 사용을 기대한다면 읽고 따르는 행동 자체를 학습시키는 데이터가 필요하다. 둘째, 자동 생성 파이프라인을 쓸 때 실행 검증만으로는 부족하고 리뷰 게이트를 별도로 두는 것이 학습 신호 품질에 영향을 준다. 저자들이 밝힌 한계도 분명하다. SkillsBench에서 참조 문서를 제공하는 스킬은 28.0점 오르지만, 도메인 메서드나 번들 도구를 쓰거나 기존 시스템을 수정해야 하는 과제는 개선이 없다. 학습이 스킬을 찾아 읽는 쪽은 가르치지만 그 메서드를 적용하는 쪽은 약하다는 뜻이며, 저자들은 이를 데이터 구축의 다음 표적으로 지목한다. 또한 이번 연구는 지도 미세조정만 사용했고, 검증기가 이미 결과 보상을 제공하므로 강화학습이 자연스러운 다음 단계라고 밝힌다.