🔥 SKILL.md 옆에 한 장 더 — Schank의 50년 된 도면이 돌아온 자리

#agent-skills#claude#llm#retrieval#security#knowledge-representation
1936자
21분

SKILL.md 옆에 SSL 3-layer view를 띄워 둔 표지 일러스트

4월 끝자락에 도착한 한 논문 제목이 "From Skill Text to Skill Structure"였다. 며칠 전 Snyk가 ClawHub·skills.sh 스킬 3,984개를 훑고 13.4%(534개)에 임계 결함, 36%(1,467개)에 prompt injection 시그니처가 잡힌다고 적은 보고서를 푼 직후라, 제목 한 줄을 읽고 잠깐 멈췄다. 같은 한 달에 두 가지 보도가 같은 객체를 다르게 본다. Snyk 쪽은 보안 리뷰의 어려움, 논문 쪽은 검색의 어려움. 두 사실 사이에는 SKILL.md가 한 덩어리 텍스트로 굴러다닌다는 같은 사정이 깔려 있다.

그러는 동안 이 객체는 산업 전체의 표준이 됐다. Anthropic이 SKILL.md 형식을 공개 표준으로 푼 게 2025년 12월이고, OpenAI가 같은 형식을 Codex CLI와 ChatGPT에 그대로 받은 게 그 직후다. Google도 4월 Cloud Next에서 공식 skills repo를 열었다. 한 줄로 압축하면 이렇다. 2026년 4월 시점에 "agent skill"이라는 객체가 산업 전체의 공통 단위가 됐다. 그 다음 질문은 자연스럽다. 이 객체를 무엇으로 관리할 거냐.

Peking 팀의 이 논문이 내놓은 답을 한 줄로 적으면, SKILL.md 옆에 한 장의 구조 view를 같이 두자다. 그 한 장의 view를 SSL — Scheduling-Structural-Logical — 이라 부른다. 검색에서 MRR 0.573 → 0.707, 리스크 리뷰에서 macro F1 0.744 → 0.787. 그런데 가장 의외였던 발견은 마지막 결론 한 줄에 따로 있었다.

논문 Figure 1: 텍스트 위주 SKILL.md가 source-grounded normalizer를 거쳐 Scheduling 레코드 / Structural 그래프 / Logical 그래프로 분해되는 흐름
출처: From Skill Text to Skill Structure (arXiv:2604.24026v2), Figure 1. CC BY 4.0.

텍스트 한 표면에 세 가지 다른 증거가 뭉쳐 있다

SKILL.md 한 장을 떠올려 보자. 위쪽에 YAML 프론트매터가 있고, 아래에 markdown 본문이 있다. 본문에는 언제 이 스킬이 호출되는가가 자연어로 들어가 있고, 어떤 단계로 일이 흘러가는가가 글로 풀려 있고, 그 흘러가는 동안 무슨 도구·파일·자원을 만지는가가 또 다른 단락에 흩어져 있다. 사람한테는 자연스러운 한 장의 글이지만, 기계 입장에서는 세 가지 다른 종류의 증거가 같은 표면 위에 겹쳐 있는 상태다.

이 사정이 두 군데에서 어중간한 결과를 만든다. 첫째는 검색이다. 8만 개짜리 SkillRouter 같은 거대 레지스트리에서 사용자 요청에 맞는 스킬을 고르려면, 호출 인터페이스만 보면 충분하다. 그런데 검색 임베더가 받는 입력이 SKILL.md 통째이거나 짧은 description 한 줄이라, 둘 다 결이 안 맞는다. 통째로 던지면 잡음이 같이 들어가고, description만 던지면 신호가 빠진다.

둘째는 보안 리뷰다. Snyk가 같은 보고서에서 1,467개 스킬에서 잡아낸 prompt injection 시그니처는 대부분 어떤 명령을 어디에 끼우는지 한 자리에 적혀 있는데, 그 자리가 instruction 자연어와 코드 블록 사이에 묻혀 있다. 사람이 한 번에 알아채려면 글 전체를 다 읽어야 한다. 예를 들어 사용자가 "이 PDF를 요약해 줘"라고 부탁한 스킬이 안에서 슬쩍 ~/.aws/credentials를 읽어 외부로 보내는 한 줄이 끼어 있어도, README 풍의 instruction과 작은 bash 한 줄이 같은 markdown 표면에 같이 살면 리뷰어 눈에 즉시 들어오지 않는다. Snyk가 confirmed malicious 스킬 76개의 91%에서 prompt injection을 다시 잡아낸 것도, 자동 스캐너가 결국 텍스트 결을 따라가서다.

이 두 어려움이 겹치는 한 군데가 같은 사정이다. 서로 다른 작업이 서로 다른 증거를 필요로 하는데, 한 텍스트에 다 같이 들어 있어서 어느 쪽도 깔끔하게 가져가지 못한다는 것. 논문은 이 사정을 representational bottleneck이라 적는다. 진단으로 적당한 표현이다.

50년 전 인지언어학 도면이 그대로 들어맞는다

여기서 논문이 의외의 곳에서 도면을 가져온다. 1972년에 Roger Schank가 Conceptual Dependency를 처음 적었고, 1977년에 Schank와 Robert Abelson이 Scripts, Plans, Goals and Understanding에서 Script Theory를 정리했고, 1980년에 Schank가 Memory Organization Packets로 그걸 한 단계 더 추상화했다. 50년 전 인지과학 책에서 시작한 도면이다. AI 겨울을 지나면서 잊혀진 줄 알았는데, 이 논문이 그 셋을 오늘날 SKILL.md 객체에 일대일로 매핑한다.

매핑이 깔끔하다.

  • Memory Organization Packets — 목표·맥락 단위로 경험을 묶는 패킷. 오늘날의 Scheduling 레이어에 대응. 어떤 의도일 때 호출되는가, 입력·출력 계약은 무엇인가, 거친 의존성은 어떤가. 호출 인터페이스 한 장이라는 뜻이다.
  • Script Theory — 식당 시나리오 같은 정형화된 활동을 순서가 있는 장면들로 적은 이론. 오늘날의 Structural 레이어에 대응. 한 스킬을 preparation / acquisition / reasoning / action / verification / recovery 같은 장면으로 쪼개고, 그 장면들 사이의 전이를 그래프로 적는다.
  • Conceptual Dependency — 모든 행위를 몇 가지 원시 동사(MTRANS, ATRANS, PROPEL 같은 것)로 분해해 표현하는 이론. 오늘날의 Logical 레이어에 대응. 각 atomic action에 act_type을 닫힌 어휘에서 골라 적고, arguments / effects / 자원 경계를 type 있는 증거로 기록한다.

세 레이어를 typed JSON 그래프 한 장으로 묶고, 두 가지 보조 관계(R_cont 레이어 간 포함, R_entry 시작 장면·시작 logic step 포인터)를 같이 적어 위계를 명시한다. 50년 전 인지언어학 도면이 오늘날 agent skill 객체에 그대로 들어맞는다는 발견이다. 이걸 LLM 기반 normalizer로 자동 추출한다 — 스키마와 허용 어휘와 grounding 정책을 prompt에 적고, 채워진 모든 필드는 원본 SKILL.md 안에 근거가 있어야 한다는 제약을 둔다. 검증 단계에서 구조 well-formedness, identifier 일관성, enum 값, 포함 링크, entry 포인터를 다 검사한다.

SSL 3-layer 표현: SKILL.md를 LLM normalizer로 typed JSON 그래프 한 장으로 정리한다

설계 목표가 셋이다. Compact: 주관적 품질이나 페르소나 같은 자유 서술 필드를 다 빼고, 관리·재사용에 필요한 증거만 남긴다. Typed: 닫힌 어휘만 쓴다. 정규화된 출력이 스킬 사이에 비교 가능해야 한다. Grounded: 원본에 없는 행동은 추론하지 않는다 — 빈 필드는 그냥 비워둔다. 이 셋이 다음 두 평가의 공정성 안전망 역할을 한다.

Skill Discovery — MRR 0.573 → 0.707

첫 평가는 검색이다. 6,184개 공개 스킬을 후보 풀로 두고, 200개 샘플 스킬에서 자동 생성한 403개 task-grounded 쿼리를 던진다 — 모델이 만든 다음 사람이 샘플 점검을 해서 중복을 뺀 형태. 모든 변형이 같은 Qwen3-Embedding-0.6B 모델과 FAISS 내부 곱 인덱스를 쓴다. 바뀌는 것은 임베더에 무엇을 넣는가뿐이다. 메인 지표는 MRR.

입력MRRNDCG@10Recall@10
Desc_only0.5730.6100.744
Full SKILL.md0.6020.6430.794
Desc + SSL-Shallow (이름·tags·goal)0.6980.7370.873
Desc + SSL-Sched (스케줄링 view)0.6800.7190.854
Desc + SSL-Rich (장면·인터페이스 포함)0.7070.7500.896
Full SKILL.md + SSL-Rich0.6520.6930.836

가장 큰 발견은 두 줄이다. 첫째, SSL을 더한 짧은 description이 SKILL.md 통째보다 더 잘 검색된다. Desc + SSL-Rich(0.707)가 Full SKILL.md(0.602)보다 17.4% 상대적으로 높다. 둘째, Full SKILL.md에 SSL을 더하면 오히려 떨어진다 (Desc 쪽 SSL-Rich는 0.707이지만 Full SKILL.md + SSL-Rich는 0.652). 더 많이 넣어서가 아니라 덜 넣어서 좋아지는 자리다. 잡음이 빠진 결을 임베더가 더 잘 잡는다는 얘기다.

수치를 손으로 한 번 풀어 본다. MRR 0.573이 실무에서 무엇을 의미하는가? 사용자 쿼리 한 번에 정답 스킬이 평균 1/0.573 ≈ 1.75번째 자리에 있다는 뜻이다. 0.707로 오르면 평균 1/0.707 ≈ 1.41번째. 1등에 더 자주 잡힌다. Recall@10도 0.744에서 0.896으로 올라간다 — 1,000개 쿼리를 던지면 정답이 top-10 안에 있는 횟수가 744번에서 896번. 152번 더 잡힌다는 차이가 6,184개짜리 레지스트리에서는 큰 차이다.

왜 이렇게 좋아지는가. 논문 쪽 분석은 단순하다. 검색은 호출 인터페이스 매칭인데, SKILL.md 통째에는 호출과 무관한 prose가 같이 들어 있다 — 사용 예시, 디자인 합리화, 실패 모드 설명 같은 것. 임베딩 공간에서 이 prose가 다른 스킬과의 거리를 흐리게 만든다. SSL-Rich는 호출 인터페이스(intent signature, scene type, dependency)와 그 직접 증거만 추려 둔 형태다. 결이 맞는다.

Risk Assessment — 평균은 좋아졌지만, 부분 그림이 더 흥미롭다

두 번째 평가는 보안 리뷰다. 6,184개 코퍼스에서 stratified로 500개를 뽑아 6 가지 차원으로 점수를 매긴다 — data exfiltration / destructive behavior / privilege escalation / covert execution / resource abuse / credential access. 1~5 ordinal 척도. 골드 라벨은 Gemini-3.1-pro-preview, Claude-Sonnet-4.5, GPT-5 셋이 SKILL.md + SSL을 다 받고 매긴 점수의 중앙값이다. 평가자는 DeepSeek-V3.2 한 모델로 고정. 임계는 >1(어떤 비자명한 위험 신호든 양성).

입력Macro F1 (>1)Macro F1 (≥3)Macro MAE
Desc Only0.6690.5030.427
Full SKILL.md0.7440.6380.313
SSL-Shallow0.7040.5490.434
Full SSL0.7750.6000.341
MD + SSL0.7870.6130.307

Macro F1만 보면 MD+SSL이 0.787로 가장 좋고, Full SSL 단독(0.775)도 Full SKILL.md(0.744)를 넘는다. 그런데 차원별로 풀어 보면 그림이 한 단계 더 흥미로워진다.

  • Destructive Behaviors: Full MD 0.680 → Full SSL 0.851. F1 +0.171의 큰 점프. 이유는 깔끔하다 — 파괴적 동작은 어떤 도구를 어떤 자원에 호출하는가가 직접 증거다. SSL의 Logical 레이어가 그 증거를 typed action·resource_scope 두 줄로 노출한다. 사람이 자연어로 휘적여 적은 텍스트보다 결이 맞는다.
  • Credential Access: Full MD 0.768 → MD+SSL 0.852. 자격증명 접근도 어떤 secret store나 env var를 읽는가가 logic-step의 arguments 자리에 적혀 있다. 풀린 evidence가 directly judgable.
  • Privilege Escalation: Full MD 0.685 → MD+SSL 0.642. 떨어진다. 왜? 권한 상승 판단은 맥락 의존이다. "이 스킬이 sudo 한 번 부른다"가 위험인지 아닌지는, 그 sudo가 언제·왜·어떻게 가드되어 있는지에 달렸다. SSL이 typed로 추출한 fact만 보면 가드 컨텍스트가 빠진다. 자연어 prose의 narrative context가 더 강한 영역이다.
  • Resource Abuse도 비슷한 패턴. Full MD가 0.805로 가장 높다. 자원 남용 판단도 narrative 맥락이 결정적이다.

엄격한 ≥3 임계(중간 이상 위험)에서 패턴이 한 번 더 뒤집힌다. Full SKILL.md가 0.638로 MD+SSL(0.613)보다 높다. 심각도 판단은 SSL 구조보다 텍스트 narrative가 더 강한 영역이다. 이 한 줄이 다음 결론으로 직접 이어진다.

SSL은 대체가 아니라 옆에 두는 view다

논문이 가장 단호하게 적는 곳은 결론 한 줄이다. SSL은 source document의 대체재가 아니다. 스키마가 의도적으로 비워 둔 것들이 있다 — 사용 예시, 디자인 근거, 안전장치, 실패 모드, 유지보수 가이드. 이런 prose는 지표화하기 어렵지만, 해석에는 여전히 결정적이다. 위 ≥3 임계 결과가 그 관찰의 직접 증거다.

SSL이 evidence interface로 작동하는 그림 — Skill Discovery는 호출 인터페이스만, Risk Assessment는 SKILL.md prose와 SSL을 같이 본다

그래서 이 representation의 진짜 역할은 evidence interface다. 같은 스킬에 대해 다른 작업이 다른 증거를 필요로 하는데, SSL은 그 증거들을 분리해서 접근 가능한 표면으로 만든다. 검색은 인터페이스·구조 신호만 본다. 정책 검사기는 Logical 레이어의 typed action만 본다. 사람 리뷰어는 SKILL.md prose와 SSL 그래프를 같이 본다 — SSL이 어디를 봐야 하는지 가리키고, prose가 그 자리의 해석에 필요한 맥락을 채운다.

이 관점이 산업적으로 의미가 있는 곳은 따로 있다. 지금까지 SkillRouter, SkillFlow, SkillSieve 같은 시스템들이 각자의 internal index를 만들고, 각자가 SKILL.md에서 비슷한 사실을 다시 추출해 왔다. 공통 manifest 레이어가 없으니, 같은 prompt injection 한 줄을 다섯 시스템이 다섯 번 새로 찾는다. SSL이 source-adjacent하게 한 번 추출돼서 옆에 살면, 레지스트리는 호출 신호를 색인하고, 검사기는 권한 신호를 보고, 리뷰어는 phase 구조를 본다. 같은 한 장 위에서.

한계가 정직하게 적혀 있다

이 논문이 좋은 점 하나는 한계를 같은 무게로 적는다는 것이다.

  • Static behavior — SSL은 정적 artifact에서 추출된다. 페이로드를 런타임에 다운로드하거나 명령을 동적으로 조립하는 스킬은 execution trace 없이는 묘사가 어렵다.
  • Parser fidelity — LLM normalizer는 모호하거나 의도적으로 흐린 스킬을 과도하게 일반화하거나 빠뜨릴 수 있다.
  • Evaluation scope — Skill Discovery / Risk Assessment 둘만 본다. 에이전트가 실제로 스킬을 사용하는 동안 SSL이 도움이 되는지는 아직 평가되지 않았다.
  • Auto-generated queries — Discovery 벤치마크 쿼리가 자동 생성이라, 실제 사용자가 던지는 자연 쿼리와 차이가 있을 수 있다.
  • Model-mediated risk — 위험 라벨이 모델 voting 파이프라인이라, 실제 전문가 audit이나 실전 피해율과는 다르다.

이 다섯 줄이 적혀 있어 결과를 과장하지 않고 자기 자리에 둘 수 있다.

그래서 나는 이걸 어떻게 보는가

가장 의외였던 발견은 따로 있다. 더 적게 써서 검색이 좋아지는 이론이 있고, 더 분리해서 함께 보여서 리뷰가 좋아지는 이론이 있다. 두 이론이 한 데이터에서 정반대 방향으로 나타났다. 검색 쪽은 SKILL.md 통째가 잡음이라 SSL만으로 나아갔고, 리뷰 쪽은 SKILL.md prose가 narrative context라 SSL과 같이 봐야 나아갔다. 같은 객체에 대해 같은 representation이 두 작업에서 정반대 방향으로 일한 셈이다.

그날 저녁 anthropics/skills 저장소 몇 개를 다시 펼쳐 봤다. 한 표면에 호출 의도, 단계 흐름, 도구 권한이 다 적혀 있다. 검색용 short description은 그 안에서 너무 적게 가져가고, 통째 인덱싱은 너무 많이 가져간다. 그 사이에 SSL이 비어 있는 자리다. 다음 분기에 agent skills 표준 위원회 같은 데서 manifest 레이어 합의가 한 번 시도될 만한 형국이다 — 적어도 이 논문은 그 합의의 첫 도면이 어떤 모양일 수 있는지를 한 페이지로 보여줬다.

참고 자료

YouTube 영상

채널 보기
투영과 예측, 그리고 선형 결합 | 선형대수학
숫자 하나가 AI 모델의 운명을 바꾼다? | 선형대수학
AI는 데이터를 어떻게 분류할까? 벡터의 거리와 KNN 알고리즘 | 선형대수학
직교성과 벡터 투영 | 선형대수학
내적의 기하학적 의미와 코사인 유사도 원리 | 선형대수학
우리가 매일 쓰는 맞춤법 검사기와 라우터 속에 숨겨진 알고리즘은? | Trie 자료구조 이야기
AI를 위한 선형대수학 - 소개 | 선형대수학
행렬의 기본 연산 - 행렬 덧셈, 스칼라 곱, 전치 | 선형대수학