카파시가 짚은 LLM 코딩의 4가지 함정과, 그걸 규칙으로 만든 repo
들어가며: “AI가 코드는 잘 짜는데 왜 자꾸 손이 더 가지”
요즘 Claude나 Cursor를 페어 파트너처럼 쓰면서 코드를 짭니다. 분명히 빠른데, 어느 순간부터 묘한 피로감이 생겼습니다. 시킨 것 이상을 해버리거나, 묻지도 않은 가정을 깔고 진행하거나, 멀쩡한 옆 코드를 “개선”이랍시고 건드려 놓는 일이 반복됐습니다.
이게 제 프롬프트가 나빠서인 줄 알았는데, Andrej Karpathy가 짚은 LLM 코딩의 함정을 보니 제 문제가 아니라 LLM이라는 도구의 일반적인 결이더군요. 이 repo는 그 결을 4개의 행동 규칙으로 정리해서 CLAUDE.md나 Claude Code 플러그인 형태로 주입할 수 있게 만든 것입니다. 라이브러리가 아니라 “AI에게 일을 시키는 태도”를 코드화한 것이라는 점이 흥미로웠습니다.
카파시가 짚은 4가지 함정
repo가 출발점으로 삼는 건 카파시가 관찰한 4가지 문제입니다.
- LLM은 명확히 하지 않고 조용히 가정을 깔고 진행한다
- 코드가 불필요하게 복잡하고 비대해진다
- 시키지 않은 주변 코드를 부수 효과로 수정한다
- 작업에 명확한 성공 기준이 없다
네 개를 읽는데 전부 제가 최근에 겪은 장면이 하나씩 떠올랐습니다. 특히 2번과 3번은 PR 리뷰에서 “이건 왜 바뀌었어요?”라는 질문으로 돌아오는 바로 그것이었습니다.
이걸 규칙으로 뒤집은 4가지 Skill
repo는 이 함정들을 그대로 뒤집어 4개의 원칙으로 만듭니다.
1. Think Before Coding (코딩 전에 생각하기)
바로 키보드를 두드리지 말고, 가정·여러 해석·트레이드오프를 먼저 드러내라는 것. “이렇게 이해했는데 맞나요?”를 한 번 거치는 것만으로 헛스윙이 크게 줄어듭니다.
2. Simplicity First (단순함 먼저)
물어본 것만 푸는 최소 코드를 쓰라는 것. 미래에 필요할까 봐 미리 만드는 추상화, 안 시킨 설정값, 한 번도 안 갈릴 인터페이스 — 전부 빼라는 얘기입니다. 사실 이건 AI한테만 해당되는 말이 아니라 사람 개발자한테도 그대로 적용되는 잔소리죠.
3. Surgical Changes (외과적 수정)
필요한 코드만 건드리고, 기존 스타일을 따르고, 시키지 않은 옆 코드를 “개선”하지 마라. diff가 작을수록 리뷰가 쉽고, 사고가 줄어듭니다. 제가 AI 페어링에서 가장 효과를 본 규칙이 이거였습니다.
4. Goal-Driven Execution (목표 주도 실행)
검증 가능한 성공 기준을 정해주고, 모델이 거기까지 알아서 루프를 돌게 하라. 카파시의 말을 그대로 빌리면:
“LLM은 특정 목표에 도달할 때까지 반복하는 데 굉장히 능하다… 성공 기준을 주고 지켜보기만 하면 된다.”
테스트를 통과 기준으로 박아두고 “초록불 될 때까지 돌려”라고 하는 식의 사용법인데, 막연히 “고쳐줘”보다 결과가 훨씬 안정적입니다.
어떻게 적용하나
별게 없습니다. 두 가지 방식입니다.
- Claude Code 마켓플레이스 플러그인으로 설치
- 프로젝트 루트에
CLAUDE.md로 내용을 넣기 (Cursor는 project rules로 동일하게 동작)
저는 우선 CLAUDE.md 방식으로 제 사이드 프로젝트에 붙여봤습니다.
짧은 소감
이 repo의 본질은 “프롬프트 잘 쓰는 법”이 아니라 AI와 일할 때의 기본 매너를 명문화한 것에 가깝다고 느꼈습니다. 그리고 4개 원칙이 묘하게도 좋은 시니어 개발자가 후배에게 하는 잔소리와 똑같습니다 — 짜기 전에 생각해라, 단순하게 가라, 시킨 것만 건드려라, 끝나는 기준을 정해라.
결국 AI를 잘 쓰는 사람은 좋은 개발 습관을 AI에게도 요구할 줄 아는 사람이라는 생각이 들었습니다.