Elements of Style 규칙으로 Claude Code 출력 3배 줄이기
Claude Code에게 "이 함수 리팩토링해줘"라고 했더니 5문단짜리 설명과 3가지 대안, 그리고 "도움이 되었으면 좋겠습니다"로 끝나는 응답이 돌아왔다. 정작 필요한 건 수정된 코드 한 조각인데 말이다. 이 글을 읽고 나면 100년 된 글쓰기 원칙을 CLAUDE.md에 옮겨서 AI가 핵심만 말하게 만드는 방법을 알게 된다.
준비물
CLAUDE.md 파일을 수정할 수 있는 환경이 필요하다. 프로젝트 루트나 홈 디렉토리의 .claude/CLAUDE.md 둘 다 된다. Elements of Style 원문을 참고하려면 GitHub 저장소 elements-of-style-for-agents의 README를 열어두면 좋다. 텍스트 에디터와 터미널만 있으면 충분하다.
핵심 원칙 3가지 고르기
Elements of Style에는 수십 개 규칙이 있지만 AI 출력에는 세 가지만 적용해도 효과가 크다. 내가 2주간 테스트해본 결과 이 조합이 가장 잘 먹혔다.
첫 번째는 "불필요한 말 제거"다. "It is noteworthy that"처럼 의미 없이 문장만 늘리는 표현을 빼라는 원칙이다. Claude는 "중요한 점은", "흥미롭게도" 같은 말을 자주 쓴다. 이런 표현은 정보를 추가하지 않으면서 토큰만 잡아먹는다.
두 번째는 "능동태 우선"이다. "The code was refactored by me" 대신 "I refactored the code"처럼 주어가 직접 동작하는 문장을 쓰라는 것이다. 수동태는 누가 했는지 흐릿하게 만들고 문장을 길게 늘린다.
세 번째는 "한 문단 한 주제"다. 여러 아이디어를 한 문단에 섞으면 독자가 헷갈린다. AI는 설명하다가 갑자기 예시를 끼워넣고 다시 설명으로 돌아오는 버릇이 있다. 문단 하나에는 생각 하나만 담으라고 명시하면 응답이 훨씬 깔끔해진다.
이 세 가지를 CLAUDE.md에 규칙으로 옮기면 된다. 예를 들어 이렇게 쓸 수 있다.
## 글쓰기 원칙 (Elements of Style 기반)
- 불필요한 수식어 제거: "중요한 점은", "핵심적으로 말하자면" 같은 군더더기 표현 제거
- 능동태 우선: "~되었다" 대신 "~했다"로 서술
- 한 문단 한 주제: 설명과 예시를 같은 문단에 섞지 말 것
이걸 CLAUDE.md 상단에 추가하고 저장한다. 적용 전에 기존 응답 하나를 캡처해두면 나중에 비교할 때 좋다.
적용 전후 응답 길이 재보기
규칙을 추가한 뒤 같은 질문을 다시 던져봤다. "user 테이블에 created_at 컬럼 추가하는 마이그레이션 작성해줘"라는 요청이었다.
적용 전 응답은 이랬다. "사용자 테이블에 생성 시각을 추적하는 것은 중요한 기능입니다. 아래와 같은 방법으로 마이그레이션을 작성할 수 있습니다." 그리고 코드 블록, 그 다음 "이 방식의 장점은..." 문단이 3개 더 이어졌다. 총 218단어였다.
적용 후 응답은 달랐다. "created_at 컬럼을 추가하는 마이그레이션입니다." 한 문장 설명 후 바로 코드 블록이 나왔다. 코드 아래 "timestamp 타입은 자동으로 현재 시각을 기록합니다"라는 한 줄 보충만 있었다. 72단어로 줄었다.
토큰 수로 환산하면 적용 전 약 290토큰에서 적용 후 95토큰으로 떨어졌다. 같은 정보를 전달하는데 3분의 1 분량이면 충분했다. 비용도 줄고 읽는 시간도 아낀다.
측정은 간단하다. 응답을 복사해서 워드카운터 사이트에 붙여넣거나, 터미널에서 wc -w 명령으로 단어 수를 세면 된다. 10개 정도 응답을 모아서 평균을 내보면 효과가 명확하게 보인다.
규칙이 안 먹힐 때 대처법
CLAUDE.md에 규칙을 넣었는데도 Claude가 여전히 장황하게 답할 때가 있다. 내가 겪은 삽질 3가지와 해결책을 공유한다.
첫 번째는 규칙 위치 문제다. CLAUDE.md 맨 아래에 규칙을 넣었더니 효과가 약했다. 파일이 길면 아래쪽 내용은 attention이 분산돼서 덜 따른다. 규칙은 파일 상단 20% 안에 두는 게 좋다. 나는 프로젝트 설명 바로 다음에 배치했더니 준수율이 눈에 띄게 올랐다.
두 번째는 상충하는 지시가 있는 경우다. 같은 CLAUDE.md에 "자세히 설명하라"는 지시와 "간결하게 답하라"는 지시가 공존하면 AI는 혼란스러워한다. 기존 프롬프트를 훑어보고 모순되는 부분을 지워야 한다. 내 경우 "단계별로 자세히"라는 문구를 "단계별로"로 바꿨더니 설명이 절반으로 줄었다.
세 번째는 예시 부족이다. "불필요한 수식어 금지"라고만 쓰면 AI는 뭐가 불필요한지 판단을 못 한다. 금지 표현 목록을 3~5개 명시해주면 확실하다. "중요한 점은", "흥미롭게도", "~하는 것이 좋습니다" 같은 구체적 예시를 넣었더니 그 표현들이 응답에서 사라졌다.
다음 단계
팀 프로젝트에서 이 방법을 쓴다면 팀원마다 선호하는 응답 스타일이 다를 수 있다. 누군가는 상세한 설명을 원하고 누군가는 코드만 보고 싶어한다. 이럴 땐 프로젝트 루트 CLAUDE.md에 공통 규칙만 두고, 개인별로 홈 디렉토리 .claude/CLAUDE.md에 취향을 추가하는 방식이 충돌을 줄인다.
규칙 효과를 한 달 단위로 재점검하는 루틴도 유용하다. 매달 첫 주에 최근 30개 응답의 평균 길이를 재고, 목표치보다 길면 규칙을 하나 더 추가하거나 기존 규칙 표현을 강화한다. 짧아졌다면 "필수 맥락 누락" 케이스가 없는지 샘플을 뒤져본다. 이 점검 사이클을 캘린더에 반복 일정으로 넣어두면 규칙이 낡지 않는다.
프로젝트 성격에 따라 규칙을 분기하는 것도 전략이다. API 클라이언트 작성용 저장소에는 "간결성" 규칙을 강하게 주고, 기술 문서 작성용 저장소에는 "예시 필수" 규칙을 추가하는 식이다. 저장소별 CLAUDE.md 설정 차이를 문서화해두면 컨텍스트 전환이 빨라진다.
자주 묻는 질문
Q. Elements of Style은 영어 글쓰기 책인데 한국어에도 효과가 있나요?
A. 간결성·능동태·문단 단일성 같은 원칙은 언어를 안 가린다. 내가 한국어 프로젝트에 적용했을 때도 응답 길이가 40% 줄었다. 다만 "관용구 피하기" 같은 영어 특화 규칙은 건너뛰어야 한다.
Q. 규칙을 너무 많이 넣으면 응답이 너무 짧아지지 않나요?
A. 3~5개 규칙까지는 안전하다. 10개 넘게 넣으니 Claude가 필요한 맥락까지 생략하는 부작용이 생겼다. 핵심 규칙만 엄선하고, 프로젝트 성격에 따라 조정하면 된다. 튜토리얼 작성용 에이전트라면 "자세히"를, API 래퍼 작성용이라면 "간결히"를 우선하는 식이다.
Q. CLAUDE.md 수정 없이 대화 시작할 때마다 프롬프트에 규칙을 넣으면 안 되나요?
A. 가능하지만 매번 반복해야 하고 토큰을 잡아먹는다. CLAUDE.md에 한 번 넣으면 모든 대화에 자동 적용된다. 팀 프로젝트라면 CLAUDE.md를 git에 커밋해서 팀원 전체가 같은 규칙을 공유할 수 있다.
Q. 적용 후 응답 품질이 떨어진 것 같아요.
A. 간결함과 충분한 설명 사이 균형이 어긋났을 수 있다. "불필요한 말 제거" 규칙에 "단, 기술 결정의 이유는 한 문장으로 명시" 같은 예외 조건을 추가해보라. 규칙은 절대 명령이 아니라 가이드라인이다.