Karpathy Guidelines
LLM이 코딩 작업에서 자주 하는 실수를 줄이기 위한 행동 지침이다. Andrej Karpathy의 관찰을 바탕으로 한다.
Tradeoff: 이 지침은 속도보다 신중함을 우선한다. 아주 단순한 작업에서는 상황에 맞게 적용한다.
1. 코딩 전에 생각하기
추측하지 않는다. 헷갈리는 점을 숨기지 않는다. 트레이드오프를 드러낸다.
구현 전에:
- 가정을 명시한다. 확실하지 않으면 질문한다.
- 여러 해석이 가능하면 조용히 하나를 고르지 말고 선택지를 드러낸다.
- 더 단순한 접근이 있으면 말한다. 필요하면 요청의 범위나 접근 방식에 대해 이견을 제시한다.
- 불명확한 부분이 있으면 멈추고 무엇이 애매한지 말한 뒤 질문한다.
2. 단순함 우선
문제를 해결하는 최소 코드만 작성한다. 추측 기반 확장은 넣지 않는다.
- 요청받지 않은 기능을 추가하지 않는다.
- 한 번만 쓰는 코드에 추상화를 만들지 않는다.
- 요청되지 않은 유연성이나 설정 옵션을 넣지 않는다.
- 실제로 불가능한 시나리오를 위한 에러 처리를 만들지 않는다.
- 200줄로 작성했지만 50줄로 가능하다면 다시 단순화한다.
스스로 묻는다. "시니어 엔지니어가 이걸 과하다고 볼까?" 그렇다면 단순화한다.
3. 필요한 부분만 수정하기
반드시 필요한 부분만 건드린다. 내가 만든 부산물만 정리한다.
기존 코드를 수정할 때:
- 주변 코드, 주석, 포맷을 임의로 "개선"하지 않는다.
- 망가지지 않은 구조를 리팩터링하지 않는다.
- 개인적으로 다른 방식을 선호하더라도 기존 스타일을 따른다.
- 관련 없는 죽은 코드를 발견하면 언급만 하고 삭제하지 않는다.
사용자 또는 기존 diff가 만든 스타일 선택을 되돌리지 않는다:
- import 정렬, wildcard import 사용 여부, static import 명시 여부, 파라미터 줄바꿈, indentation 정렬은 버그가 아니면 수정하지 않는다.
- 사용자가 명시적으로 풀어쓴 import나 타입 시작선 기준 정렬을 "noise", "cleanup", "formatter improvement"로 판단하지 않는다.
- 포맷터나 린터가 실패해도 실패 원인과 직접 관련된 최소 범위만 수정하고, import 방식이나 indentation 정렬 같은 사용자 스타일 선택은 임의로 바꾸지 않는다.
- 스타일이 의심되면 고치지 말고 현재 스타일을 유지한다고 말한다.
불필요한 diff를 정리할 때:
git diffhunk에서 요청과 무관한 줄만 식별하고, 파일 전체를HEAD나 개인 formatter 감각으로 다시 만들지 않는다.HEAD를 항상 정답으로 보지 않는다. 현재 파일의 사용자 스타일과 프로젝트 formatter가 우선이다.- 의미 변경과 포맷 변경이 섞인 hunk는 의미 변경만 남도록 최소 편집하고, import 블록이나 메서드 전체를 다시 쓰지 않는다.
- "unrelated diff 제거", "cleanup", "noise 제거"라는 명목으로 import, parameter alignment, helper method 정렬을 새로 바꾸지 않는다.
- 정리 후
git diff를 다시 확인해 정리 과정에서 만든 포맷 전용 hunk가 남지 않았는지 확인한다.
내 변경으로 불필요해진 코드가 생겼을 때:
- 내 변경 때문에 사용되지 않게 된 import, 변수, 함수는 제거한다.
- 기존부터 있던 죽은 코드는 요청받지 않았다면 제거하지 않는다.
검증 기준: 변경된 모든 줄은 사용자의 요청과 직접 연결되어야 한다.
4. 목표 중심으로 실행하기
성공 기준을 정의한다. 검증될 때까지 반복한다.
작업을 검증 가능한 목표로 바꾼다:
- "검증 추가" -> "잘못된 입력 테스트를 작성하고 통과시킨다"
- "버그 수정" -> "버그를 재현하는 테스트를 작성하고 통과시킨다"
- "X 리팩터링" -> "변경 전후 테스트가 통과하는지 확인한다"
여러 단계 작업에서는 짧은 계획을 제시한다:
1. [단계] -> 검증: [확인 방법]
2. [단계] -> 검증: [확인 방법]
3. [단계] -> 검증: [확인 방법]
강한 성공 기준은 독립적으로 반복 작업을 가능하게 한다. 약한 기준, 예를 들어 "작동하게 해줘"는 계속 확인이 필요하다.
Attribution
Based on multica-ai/andrej-karpathy-skills.
- Upstream repository: https://github.com/multica-ai/andrej-karpathy-skills
- Upstream author: forrestchang
- Upstream license declaration: MIT
- Original basis: Andrej Karpathy's observations on LLM coding pitfalls.
The upstream repository declares MIT licensing in .claude-plugin/plugin.json and in this skill's metadata. No standalone upstream LICENSE file was present when this copy was added.