지웠다, 측정했다, 규칙 하나가 깨졌다
CLAUDE.md를 지운다는 것은 Claude Code가 모든 대화 시작 시 읽는 지침 파일을 없앤다는 뜻이다. Claude Code를 만든 Boris Cherny는 무대에서 6개월마다 이 파일을 지우라고 말했다. 7주 사이 영상 22개가 그의 말을 반복했다. 그중 어느 하나도 레포를 열어보지 않았다.
이 글은 그 영상들이 하지 않은 일을 한다. 177줄짜리 CLAUDE.md, 스킬 셋, 커맨드 넷, 훅 하나를 갖춘 실제 앱 하나에서, 일상 작업 다섯 개를 파일이 있을 때와 없을 때로 나눠 돌리고 세었다. 44회 실행 끝에, 깨진 규칙은 정확히 하나였다. 이 파일은 모든 작업에서 토큰 비용을 치렀지만 그 양은 매번 달랐고, 그중 한 줄은 아무도 따를 수 없는 줄이었다.
클립, 토씨 그대로, 그리고 그의 말이 아닌 두 문장
이 클립은 Opus 5가 출시된 다음 날 녹화된 Boris Cherny의 YC Startup School 강연에서 나온다. 그의 말은 이렇다. 6개월마다 CLAUDE.md를 지우고, 스킬을 지우고, 훅을 지워라. 모델이 뭘 하는지 보라, 놀랄 수도 있다. Opus 5라면, 그는 Anthropic이 정말로 한번 해보길 권한다고 말한다. 모델이 그 많은 지침을 더는 필요로 하지 않을 수도 있다는 것이다.
그 30초 전에는 아무도 인용하지 않는 단서가 나온다. Anthropic은 코드베이스 전체를 지우지 않는다. 많은 부분을 지우고, 그걸 애블레이션이라 부른다. 오늘 남아 있는 강연 전문에는 이 문장이 그대로 실려 있다. Claude Code 시스템 프롬프트의 80퍼센트가 그런 식으로 사라졌다. 전부 지운 뒤 한 줄씩 되돌리며, 한 줄 한 줄 측정한 것이다.
반응 영상들이 그의 입에 넣은 두 문장은 실제 강연에 없다. "맥락, 목표, 완료의 정의"라는 표현은 어디에도 없다. 가장 가까운 말은 작업, 가드레일, 종료 조건이다. "Bun을 다시 쓰는 에이전트 64개"도 그의 숫자가 아니다. 이건 Bun 포스트에 나온 Jarred Sumner의 숫자다. Cherny는 11일이라고 말했고, 개수를 물으면 수천 개라고 추측할 뿐이다.
7주 동안 영상 22개가 이 클립을 인용했다. 테스트를 돌린 영상은 하나도 없었다. 그래서 이 글은 그가 실제로 설명한 그대로 한다. 지우고, 한 조각씩 되돌리고, 측정한다.
측정 도구: 삭제가 아니라 애블레이션
애블레이션은 구성 전체를 지우고 추측하는 대신, 한 번에 한 조각씩 제거하며 그 효과를 측정하는 것이다. CLAUDE.md는 모든 대화 시작 시, 그리고 매 턴마다 다시 읽힌다. 스킬은 호출될 때만 불러와진다. 이 차이가 이번 측정의 핵심이다.
Anthropic은 삭제 스위치를 자체 제공한다. 단순한 플래그 하나이며, Cherny가 무대에서 말한 것과 같은 변수다. 이번 레포는 내가 실제로 쓰는 앱이다. 지침 177줄, 스킬 셋, 커맨드 넷, 그리고 모든 검색마다 실행되는 훅 하나.
| 항목 | 값 |
|---|---|
| 일상 작업 | 5개 (새 컴포넌트, 수정, 리팩터, 스토어 변경, 아키텍처 질문) |
| 구성 | 5가지 (전체, 파일 없음, 스킬 없음, 훅 없음, 아무것도 없음) |
| 모델 | 하나로 고정 |
| 환경 | 빈 설정 디렉터리, 매 실행 전 새 클론 |
| 실행 횟수 | 44 |
| 비용 | $39 |
모든 실행은 사람이 아니라 스크립트가, 동일한 클론 위에서, 같은 방식으로 채점했다. 깨졌다는 것은 레포 자체의 규칙(임포트, 타입, 디자인 토큰, 번역) 그리고 타입체크와 린트를 뜻한다.
이런 애블레이션을 위해 만들어진 유일한 도구인 Caliper는 스킬과 MCP 서버를 제거하지만 파일에는 손대지 않는다. CLAUDE.md 교체는 직접 손으로 했다. 명시한 한계는 이렇다. 레포 하나, 모델 하나, 셀당 두 번 실행, 대화 기록 없음. 첫 결과가 이 글의 톤을 정했다. 리팩터 작업은 파일이 있을 때와 없을 때가 동일하게 나왔다. 64센트와 63센트로.
무엇이 깨졌나: 새 파일에서 규칙 하나
깨진 규칙은 국제화 규칙이었다. 파일 자체의 표현으로는 이렇다. 항상 영어와 프랑스어를 함께 추가하라, 사용자에게 보이는 문자열을 하드코딩하지 말라. 새 컴포넌트 작업에서, 파일이 있을 때는 네 번 모두 번역 파일을 작성했다. 파일이 없을 때는 네 번 중 세 번이 제목을 하드코딩했다. 같은 작업, 같은 레포, 같은 모델, 같은 프롬프트였다.
| 새 컴포넌트 | 번역 파일을 작성함 |
|---|---|
| CLAUDE.md 있음 | 4 / 4 |
| CLAUDE.md 없음 | 1 / 4 |
수정 작업은 이야기의 나머지 절반을 보여준다. 모든 구성에서 맞았다. 아무것도 없을 때조차 맞았는데, 주변 코드가 그걸 가르치기 때문이다. 수정된 컴포넌트 옆의 모든 컴포넌트에 이미 번역 파일이 있다. 그 외의 모든 것은 44번 실행 전부에서 유지됐다. 임포트 별칭, interface 대신 type, 디자인 토큰, 스토어 패턴. 코드가 이걸 보여주고, 파일은 그걸 반복할 뿐이다.
ETH Zurich의 한 논문이 실제 이슈 138건에서 같은 것을 측정했다. 그 결론은, 컨텍스트 파일이 성공률을 높이지 않으면서 비용은 약 20퍼센트 더 든다는 것이었다. 모델이 지침을 따르지 않는 것도 아니었다. 다만 예외가 하나 있었다. 파일 없이 실행한 한 번이 그래도 번역 파일을 작성한 것이다. 이 규칙은 파일 없이 불가능한 게 아니라 불안정한 것이다. 깨진 규칙은 하나, 코드가 가르칠 수 없었던 바로 그 규칙이었다. 그리고 그 작업을 건너뛴 실행이 가장 저렴하기도 했다.
파일이 치른 비용, 작업별로
CLAUDE.md의 토큰 비용은 파일이 있을 때 읽은 토큰과 없을 때 읽은 토큰의 차이다.
| 작업 | 파일 없이 더 적게 읽은 토큰 |
|---|---|
| 새 컴포넌트 | 61% |
| 수정 | 15% |
| 리팩터 | 5% |
| 스토어 변경 | 4% |
| 아키텍처 질문 | 14% |
| 10회 실행 전체 | 토큰 32%, 비용 22% |
32퍼센트는 모든 영상이 헤드라인으로 뽑을 만한 숫자지만, 틀린 숫자다. 가장 큰 절감은 번역 파일을 작성하지 않은 실행에서 나왔다. 덜 했기 때문에 더 저렴했을 뿐이다. 결과가 동일했던 경우, 파일의 비용은 4에서 14퍼센트였다. 이게 파일의 실제 가격이고, 그 논문의 20퍼센트는 정확히 이 두 숫자 사이에 있다.
이 메커니즘은 대략 1,800토큰이며, 매 턴마다 다시 읽힌다. 스킬과 훅, 지식 그래프는 있든 없든 측정 가능한 차이를 만들지 못했다. 노이즈는 대부분의 효과보다 크다. 같은 파일로 같은 작업을 돌렸는데 한 번은 $2.11, 다른 한 번은 $1.33이 나왔다. 턴 상한에 걸린 경우도 두 번 있었는데, 하나는 파일이 있었고 하나는 없었다. 그러니 이 파일은 어디서나 조금씩 비용을 치르고, 딱 한 번 제 값을 하는 셈이다. 거짓말을 하지 않는 한.
거짓말한 줄들
거짓말하는 줄이란 모델이 따를 수 없거나 아무것도 바꾸지 못하는 지침을 말한다. 글 맨 앞에서 살짝 언급한 그 줄은 이렇다. 디자인 토큰 별칭에서 테마를 임포트하라. 그 별칭은 존재하지 않는다. TypeScript 설정은 다른 접두사 하나만 매핑하고, 토큰 폴더에는 테마 파일이 없다. 파일이 있든 없든 모든 실행은 주변 코드와 똑같은 일을 했다. 44번 모두 같은 임포트 줄이었다.
이 파일에는 아키텍처 개요가 82줄이나 있다. 같은 질문에 답이 여섯 번 나왔는데, 모두 같은 아홉 개 파일을 백엔드부터 화면까지 같은 순서로 찾아냈다. 개요가 있을 때도, 없을 때도. 한 구절은 클론에 없는 지식 그래프를 가리킨다. 그 그래프가 있어도, 질문의 비용은 똑같았다.
| 측정값 | 값 |
|---|---|
| Anthropic의 크기 규칙 | 200줄 미만 |
| 이 파일 | 177줄 |
| reporails 3만 개 레포 데이터셋의 중간값 파일 | 항목 50개, 지시문 12개 |
| 이 파일의 지시문 줄 | 177줄 중 24줄 |
서로 충돌하는 두 규칙 중 어느 게 이기는지는 위치가 결정하며, 모델은 그걸 스스로 말하지 않는다. 한 벤더의 테스트에서는 그 차이가 약 90포인트였다. 개요는 여기서 다루지 않은 작업에는 도움이 될 수도 있다. 다만 그건 한 번 시도해서 답 하나를 얻었을 뿐이다. 그래서 이 파일의 줄은 세 종류다. 제 값을 한 줄, 코드가 이미 가르치는 줄, 거짓말하는 줄.
남기고, 옮기고, 지우기: 짧은 목록
세 더미로 나뉘고, 각각에는 측정값이 붙어 있다.
| 더미 | 여기 속하는 것 | 측정값 |
|---|---|---|
| 남기기 | 코드가 보여줄 수 없는 규칙 | 6줄이 4번의 실행을 구했다 |
| 옮기기 | 아키텍처 개요와 커맨드 목록 | 107줄, 측정된 효과 없음 |
| 지우기 | 거짓말하는 줄, 그리고 트리가 이미 보여주는 줄 | 44번의 동일한 실행 |
모델이 두 번 틀린 것을 남긴다. 이건 이 파일에 대한 Anthropic 자체의 기준이기도 하다. 개요와 커맨드는 필요할 때 불러오는 파일 트리로 옮긴다. Anthropic의 7월 포스트는 중앙 저장소라는 개념 자체를 신화라고 부른다. 훅은 남는다. 게이트는 모델이 좋아진다고 만료되지 않는다. 모델이 이미 뛰어넘은 산문은 잘라내고, 게이트는 지킨다.
정리 후의 파일은 대략 70줄, 제 값을 한 6줄이 그 위에 더해진다. 이게 Cherny의 방법을 있는 그대로 읽은 결과다. 지우고, 한 줄씩 되돌리고, 측정하라. 레포 하나, 모델 하나, 셀당 두 번 실행. 여러분의 더미는 다르게 나뉘겠지만, 방법은 그대로다. 삭제는 규칙 하나를 깨뜨렸고 절감은 크지 않았다. 진짜 이득은 거짓말하는 줄을 찾아낸 것이었다.
AIDive