들어가며: “AI가 코드는 잘 짜는데 왜 자꾸 손이 더 가지”

요즘 Claude나 Cursor를 페어 파트너처럼 쓰면서 코드를 짭니다. 분명히 빠른데, 어느 순간부터 묘한 피로감이 생겼습니다. 시킨 것 이상을 해버리거나, 묻지도 않은 가정을 깔고 진행하거나, 멀쩡한 옆 코드를 “개선”이랍시고 건드려 놓는 일이 반복됐습니다.

이게 제 프롬프트가 나빠서인 줄 알았는데, Andrej Karpathy가 짚은 LLM 코딩의 함정을 보니 제 문제가 아니라 LLM이라는 도구의 일반적인 결이더군요. 이 repo는 그 결을 4개의 행동 규칙으로 정리해서 CLAUDE.md나 Claude Code 플러그인 형태로 주입할 수 있게 만든 것입니다. 라이브러리가 아니라 “AI에게 일을 시키는 태도”를 코드화한 것이라는 점이 흥미로웠습니다.

카파시가 짚은 4가지 함정

repo가 출발점으로 삼는 건 카파시가 관찰한 4가지 문제입니다.

  1. LLM은 명확히 하지 않고 조용히 가정을 깔고 진행한다
  2. 코드가 불필요하게 복잡하고 비대해진다
  3. 시키지 않은 주변 코드를 부수 효과로 수정한다
  4. 작업에 명확한 성공 기준이 없다

네 개를 읽는데 전부 제가 최근에 겪은 장면이 하나씩 떠올랐습니다. 특히 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에게도 요구할 줄 아는 사람이라는 생각이 들었습니다.

참고: multica-ai/andrej-karpathy-skills