AI 개발/컨텍스트 엔지니어링

[컨텍스트 엔지니어링] compact 뒤에 스킬은 어떻게 되나

개발자 Noah 2026. 9. 23. 13:05

긴 세션에서 자동 압축이 돌았다. 그 뒤로 스킬이 시키는 절차를 몇 단계 건너뛰기 시작했다. 규칙이 흐려지는 건 전에도 봤는데, 이번엔 스킬 쪽이었다.

문서를 찾아보니 압축 때 스킬을 어떻게 처리하는지 규칙이 적혀 있었다. 잘라서 살린다. 그리고 잘리는 기준이 생각보다 구체적이었다.

배경

/compact 뒤 규칙이 사라지는 이유에서 압축이 CLAUDE.md 의 지시를 흐리게 만드는 걸 다뤘다. 그때 결론은 "규칙은 컨텍스트지 설정이 아니다" 였다.

그 뒤로 긴 절차는 CLAUDE.md 에서 스킬로 옮겼다. 스킬 본문은 호출할 때만 로드되니 평소 컨텍스트를 안 먹는다. 좋은 거래였다.

그런데 압축이 돌면 그 본문은 어떻게 되나. 이미 로드된 상태였으니 요약에 뭉개지는지, 통째로 남는지, 아예 빠지는지 알 수가 없었다.

질문: 자동 압축이 일어나면 그 세션에서 쓰던 스킬은 살아남는가, 잘리는가?

개념 — 스킬은 두 번 컨텍스트에 들어간다

먼저 구분해야 할 게 있다. 스킬이 컨텍스트를 차지하는 시점이 둘이다.

시점 들어가는 것
세션 시작 목록 — 스킬 이름 + 한 줄 description
호출할 때 본문 — SKILL.md 전체

목록은 항상 있고 본문은 부를 때만 붙는다. 이게 스킬을 쓰는 이유였다.

압축이 건드리는 건 두 번째다. 목록은 매 세션 다시 만들어지니 압축과 무관하다. 이 구분을 안 하면 뒤의 숫자들이 헷갈린다.

내부 동작 — 재부착 규칙 세 줄

문서에 규칙이 한 문단으로 적혀 있다.

Auto-compaction carries invoked skills forward within a token budget. When the conversation is summarized to free context, Claude Code re-attaches the most recent invocation of each skill after the summary, keeping the first 5,000 tokens of each. Re-attached skills share a combined budget of 25,000 tokens. Claude Code fills this budget starting from the most recently invoked skill, so older skills can be dropped entirely after compaction if you have invoked many in one session.

자동 압축은 호출된 스킬을 토큰 예산 안에서 이어 나른다. 컨텍스트를 비우려고 대화가 요약되면, Claude Code 는 각 스킬의 가장 최근 호출분을 요약 뒤에 다시 붙이며 각각 앞 5,000 토큰만 유지한다. 재부착된 스킬들은 합계 25,000 토큰 예산을 공유한다. Claude Code 는 가장 최근에 호출한 스킬부터 이 예산을 채우므로, 한 세션에서 많이 호출했다면 오래된 스킬은 통째로 빠질 수 있다.

— Extend Claude with skills

규칙이 셋으로 쪼개진다.

1. 스킬마다 가장 최근 호출분만. 같은 스킬을 세 번 불렀어도 마지막 한 번만 남는다.

2. 각 앞 5,000 토큰만. 본문이 그보다 길면 뒤가 잘린다. 스킬 문서의 마지막 절에 중요한 주의사항을 뒀다면 그게 사라진다.

3. 합계 25,000 토큰, 최근 호출 순. 나눗셈이 바로 나온다. 5,000 짜리 스킬이라면 다섯 개가 한계다. 여섯 번째부터는 가장 오래 전에 부른 것부터 통째로 빠진다.

압축 전에는 대화 전체와 호출한 스킬 본문들이 컨텍스트에 있지만, 압축 후에는 요약 뒤에 최근 호출 순으로 각 앞 5,000 토큰씩 합계 25,000 토큰까지만 재부착되고 예산을 넘긴 오래된 스킬은 통째로 빠진다

여기서 헷갈리기 쉬운 게 하나 있다. 이 25,000 토큰은 스킬 목록 예산과 다른 것이다. 목록 쪽은 컨텍스트 윈도우의 1% 를 쓰고 description 을 잘라내는 별도 장치다. 두 숫자가 같은 문서에 나와서 섞기 쉬운데, 하나는 목록이고 하나는 압축 후 본문이다.

적용 — 그래서 어떻게 쓰나

규칙을 알고 나니 스킬 쓰는 방식이 바뀌었다.

한 세션에서 스킬을 남발하지 않는다. 다섯 개를 넘기면 초반에 부른 게 조용히 빠진다. 이 블로그 파이프라인처럼 기획 → 작성 → 이미지 → 검증 → 발행으로 다섯 단계를 한 세션에서 돌리면 딱 경계에 걸린다. 단계를 나눠 세션을 끊는 편이 안전하다.

중요한 건 스킬 앞쪽에 둔다. 뒤가 잘리니까 순서가 곧 우선순위다. "이건 절대 하지 마라" 같은 금지 조항을 문서 끝에 두면 압축 후에 없어진다.

긴 참조 자료는 본문에서 뺀다. 표나 예시가 길면 별도 파일로 두고 필요할 때 읽게 한다. 5,000 토큰은 생각보다 금방 찬다.

압축이 돈 걸 알았으면 중요한 스킬은 다시 부른다. 재호출하면 그게 "가장 최근 호출" 이 되니 다음 압축에서 우선순위가 올라간다.

트레이드오프

예산이 있는 게 나쁜 건 아니다. 없으면 압축의 의미가 없다. 컨텍스트를 비우려고 요약했는데 스킬 본문을 전부 다시 붙이면 원점이다.

문제는 조용하다는 것이다. 스킬이 빠졌다는 경고가 없다. 결과만 이상해진다. A① 에서 다룬 상황과 같은 구조다 — 지시가 사라진 게 아니라 사라졌다는 걸 모르는 게 문제다.

내가 직접 재현하지는 못했다. 스킬을 여섯 개 이상 부르고 압축을 유도해서 어느 것이 빠지는지 확인하려면 긴 세션이 필요하다. 이 글의 숫자는 전부 공식 문서 값이고, 실측이 아니다. 문서와 실제가 다를 가능성은 남아 있다.

정리

살아남는다. 다만 잘려서 살아남는다. 각 앞 5,000 토큰, 합계 25,000 토큰, 최근 호출 순이다.

압축 뒤에 에이전트가 절차를 건너뛰기 시작하면 이제 볼 곳이 하나 늘었다. 그 스킬을 언제 마지막으로 불렀나. 오래됐다면 이미 컨텍스트에 없을 수 있다.

규칙을 적어 두는 것과 규칙이 지금 로드돼 있는 것은 다르다. A① 에서 얻은 교훈이 스킬에도 그대로 적용된다.