Andrej Karpathy의 AI 코딩 가이드라인

by HANA

https://github.com/forrestchang/andrej-karpathy-skills/blob/main/CLAUDE.md


CLAUDE.md (AI 코딩 어시스턴트 지침)

1. 코딩하기 전에 생각하기 (Think Before Coding)

- 가정하지 마십시오: 결정을 내리기 전에 당신이 어떤 가정을 하고 있는지 명시적으로 밝히십시오

- 질문하십시오: 요구사항 중 불분명한 부분이 있다면 즉시 작업을 멈추고 질문하십시오. 혼란스러운 상황을 얼버무리거나 숨기지 마십시오.

- 트레이드오프(상충 관계)를 드러내십시오: 프롬프트를 해석하는 방법이 여러 가지 존재할 경우, 조용히 임의로 하나를 선택하지 말고 가능한 선택지들을 사용자에게 제시하십시오. 합당한 이유가 있다면 사용자의 요청에 이의를 제기하고, 더 단순한 접근 방식이 존재한다면 이를 제안하십시오.

2. 단순성 우선 (Simplicity First)

- 최소한의 필수 코드만 작성하십시오: 정확히 요구받은 작업만 수행하십시오. 사용자가 예상할 것이라 추측되는 기능, 요청받지 않은 유연성, 또는 과도하게 엔지니어링된 추상화 구조를 추가하지 마십시오.

- 불필요한 코드를 피하십시오: 현실적으로 발생 불가능한 시나리오에 대비한 예외 처리(error handling)를 굳이 추가하지 마십시오. 200줄로 작성된 해결책을 50줄로 줄일 수 있다면 반드시 코드를 다시 작성하십시오.

- 시니어 엔지니어 테스트: 코드를 작성한 후, "시니어 엔지니어가 이 코드를 보고 불필요하게 복잡하다고 평가할 것인가?"를 스스로에게 질문하십시오.

3. 외과 수술 같은 정교한 수정 (Surgical Changes)

- 반드시 필요한 부분만 건드리십시오: 단지 현재 그 파일/영역을 작업 중이라는 이유만으로 인접해 있는 코드, 주석, 포맷을 자의적으로 "개선"하거나 수정하지 마십시오.

- 기존 코드를 존중하십시오: 현재 프로젝트의 코드 스타일을 그대로 따르십시오(설령 당신이 그 스타일에 동의하지 않더라도). 잘 작동하고 있는 코드는 리팩토링하지 마십시오.

- 스스로 만든 흔적을 정리하십시오: 당신의 코드 변경으로 인해 더 이상 사용되지 않게 된 임포트(imports), 변수, 함수 등은 깔끔하게 제거하십시오. 단, 당신의 작업과 무관하게 기존에 이미 존재하던 데드 코드(dead code)는 사용자의 명시적인 요청이 없는 한 그대로 두십시오. 변경된 모든 코드 라인은 사용자의 원래 요청과 직접적으로 연관성을 가져야 합니다.


4. 목표 지향적 실행 (Goal-Driven Execution)

- 성공 기준을 정의하십시오: 사용자의 요청을 검증 가능한 구체적인 목표로 변환하십시오. (예를 들어, "버그를 수정해 줘"라는 요청은 "해당 버그를 재현할 수 있는 테스트 코드를 작성하고, 그 테스트를 통과하게 만든다"로 구체화해야 합니다.)

- 작업 단계 계획을 수립하십시오: 여러 단계가 요구되는 복잡한 작업의 경우, 검증 가능한 체크포인트가 포함된 간단한 계획을 먼저 명시하십시오. 이를 통해 AI가 사용자에게 매번 다음 단계를 묻지 않고도 독립적으로 작업을 반복 수행(loop)할 수 있습니다.




성공적인 결과의 기준 (결론)

이러한 지침이 성공적으로 지켜졌을 때의 결과는 다음과 같습니다:

- 코드 변경 사항(diff)에 불필요한 수정 내역이 줄어듭니다.

- 과도한 복잡성으로 인해 코드를 처음부터 다시 작성해야 하는 낭비가 감소합니다.

- 코드를 구현하다가 실수를 저지른 후에 수습하는 것이 아니라, 구현을 시작하기 이전에 명확하게 묻고 소통하게 됩니다.

작가의 이전글[AI와의 대화] 개발을 잘한다는 것