multica-ai/andrej-karpathy-skills는 Claude Code의 행동을 바로잡는 CLAUDE.md 파일 하나를 담은 저장소입니다. 2026년 11월 7일 기준 깃허브 스타 230,282개, 라이선스는 MIT입니다. 이름과 달리 카파시가 만든 저장소는 아닙니다. 그가 X에 쓴 관찰을 다른 개발자가 원칙으로 정리했습니다.
카파시가 꼬집은 버릇
README가 인용한 카파시의 글은 세 가지를 지적합니다.
- 모델이 멋대로 가정하고, 확인하지 않은 채 그대로 달린다. 헷갈려도 묻지 않고, 모순을 드러내지 않는다.
- 코드와 API를 지나치게 복잡하게 만든다. 100줄이면 될 것을 1,000줄로 짓고, 죽은 코드를 치우지 않는다.
- 충분히 이해하지 못한 주석과 코드를 부수 효과로 바꾸거나 지운다. 작업과 상관없는 곳인데도.
원칙 4개
1. 코딩 전에 생각한다
- 가정을 밝힌다. 확실하지 않으면 추측하지 말고 묻는다.
- 해석이 여럿이면 몰래 하나를 고르지 말고 보여 준다.
- 더 단순한 방법이 있으면 말한다.
- 헷갈리면 멈추고, 무엇이 불분명한지 말한다.
2. 단순하게
- 요청하지 않은 기능은 넣지 않는다.
- 한 번만 쓰는 코드에 추상화를 만들지 않는다.
- 요청하지 않은 설정이나 유연성을 넣지 않는다.
- 200줄이 50줄이 될 수 있으면 다시 쓴다.
시험은 하나입니다. 시니어 엔지니어가 보고 지나치게 복잡하다고 할까?
3. 수술하듯 고친다
- 옆 코드, 주석, 서식을 “개선”하지 않는다.
- 고장 나지 않은 것은 리팩터링하지 않는다.
- 내 취향과 달라도 기존 스타일을 따른다.
- 상관없는 죽은 코드를 발견하면 지우지 말고 알린다. 내 변경 때문에 안 쓰이게 된 import와 함수만 지운다.
시험은 “바뀐 줄 하나하나가 사용자의 요청으로 이어지는가”입니다.
4. 목표로 일한다
할 일을 검증할 수 있는 목표로 바꿉니다.
| 이렇게 말하는 대신 | 이렇게 바꾼다 |
|---|---|
| 검증 추가해 | 잘못된 입력 테스트를 쓰고 통과시켜 |
| 버그 고쳐 | 버그를 재현하는 테스트를 쓰고 통과시켜 |
| X 리팩터링해 | 앞뒤로 테스트가 통과하는지 확인해 |
README는 카파시의 다른 말도 인용합니다. LLM은 목표를 만날 때까지 반복하는 데 아주 강하니, 무엇을 하라고 말하지 말고 성공 기준을 주라는 내용입니다.
설치
Claude Code 플러그인으로 깔면 모든 프로젝트에 적용됩니다.
/plugin marketplace add forrestchang/andrej-karpathy-skills
/plugin install andrej-karpathy-skills@karpathy-skills
프로젝트 하나에만 쓰려면 CLAUDE.md를 받습니다. 이미 CLAUDE.md가 있으면 맨 아래에 이어 붙입니다.
echo "" >> CLAUDE.md
curl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md >> CLAUDE.md
README의 명령은 저장소의 예전 주소(forrestchang)를 씁니다. 지금 주소는 multica-ai이고, 깃허브가 예전 주소를 새 주소로 넘겨 줍니다. Cursor용 규칙 파일(.cursor/rules/karpathy-guidelines.mdc)도 저장소에 있습니다.
잘 듣고 있는지 보는 법
- diff에 요청한 변경만 보인다.
- 처음부터 단순해서 다시 쓰는 일이 줄었다.
- 실수한 뒤가 아닌, 구현 전에 질문이 나온다.
- PR에 지나가다 고친 “개선”이 없다.
README는 이 원칙들이 속도보다 신중함 쪽으로 기운다고 적었습니다. 오타 수정 같은 작은 일까지 다 따를 필요는 없습니다.
오늘 할 일
내 프로젝트 CLAUDE.md 맨 아래에 네 원칙을 붙이고, 다음 작업의 diff가 얼마나 줄어드는지 보세요.
쇼츠로 보기
이 글은 비치콤버스 쇼츠 No.44의 짝 글입니다. 짧은 주소 beachcombers.co.kr/s/44.