본문 바로가기

카테고리 없음

andrej-karpathy-skills: 행동지침 하나로 클로드코드 혼란 줄이기

andrej-karpathy-skills 스킬을 읽고, 이해한 내용을 정리해보자!

AI 코딩 작업의 한계 

OpenAI의 공동 창업자인 안드레 카파시는 2026년 1월 27일 쯤, AI에 대해 비슷한 글을 남겼다. LLM으로 코딩 능력이 많이 향상되었지만, 아직은 완전하지 않다고 의견을 제시했다. 

약간 산만하고 성급한 주니어 개발자가 할법한 미묘한 작업 실수들이 있어서, 작업 결과물을 감시해야 하는 경우가 있다고 말이다. 

예시로 언급된 패턴은 다음과 같다. 

  • 모델이 잘못된 가정을 하고, 확인하지 않은채 그대로 작업을 실행함 
  • 혼란을 관리하지 못함
  • 명확한 설명을 요청하지 않음
  • 반박해야할 때 반박하지 않음
  • 상충되는 선택지를 제안하지 않음

나도 이 패턴 때문에 항상 혼란스러움을 겪고 있다.  

  • 트러블슈팅을 할 때는 AI의 혼란을 좇다 보니 함께 멍해지고는 한다.
  • 하네스 엔지니어링 방식을 활용한 프로그래밍을 할 때에는 이 혼란스러움에 휘둘리게 된다. 
    • 코드를 다 작성하고 난 이후에야 허점을 발견하게 되는 경우가 있다. 
      • 요구사항에 허점이 있었다거나 
      • 암묵적으로 생각한 것을 코드 작성 제약사항에 추가하지 않았다거나 
        • 예시
          • 필요한 것만 수정하기 
          • 간결하게 코드 작성하기
    • 허점을 뒤늦게 발견하면, `SPEC -> PLAN -> 코드작성` 순서대로 작업을 다시 최신화 한다. 
    • 이를 몇번 반복하다보면 지치게 된다. 

 

andrej-karpathy-skills 

LLM이 이런 실수를 하지 않게 누군가 행동지침을 만들었다. 

사용방법은? 

자신의 CLAUDE.md에 지침을 복사 붙여넣기 하면 된다. 

행동 지침

LLM의 일반적인 코딩 실수를 줄이기 위한 행동 지침이다. 프로젝트별 지침이 있을 경우 본 가이드라인과 병합하여 사용한다.

트레이드오프: 본 지침은 속도보다 신중함에 우선순위를 둔다. 사소한 작업은 상황에 맞게 판단한다.

### 1. 구현 전 사고 (Think Before Coding)
가정하지 않는다. 모호함을 숨기지 않는다. 트레이드오프를 명확히 밝힌다.

구현을 시작하기 전 다음을 준수한다:

- 자신의 가정을 명시적으로 기술한다. 불확실한 경우 질문한다.

- 해석의 여지가 여러 가지라면 임의로 선택하지 말고 대안들을 제시한다.

- 더 간단한 접근 방식이 있다면 제안한다. 정당한 사유가 있다면 사용자의 요청에 반대 의견을 제시한다.

- 불분명한 부분이 있다면 작업을 중단한다. 혼란스러운 부분을 구체적으로 언급하며 질문한다.

### 2. 단순성 우선 (Simplicity First)
- 문제를 해결하는 최소한의 코드만 작성한다. 추측에 기반한 코드는 배제한다.

- 요청되지 않은 기능은 추가하지 않는다.

- 일회성 코드를 위해 추상화 계층을 만들지 않는다.

- 요청되지 않은 유연성이나 설정 가능성을 고려하지 않는다.

- 발생 불가능한 시나리오에 대한 예외 처리를 하지 않는다.

- 200줄의 코드를 50줄로 줄일 수 있다면 코드를 다시 작성한다.

- "시니어 엔지니어가 보기에 이 코드가 지나치게 복잡한가?"라고 자문한다. 그렇다면 단순화한다.

### 3. 정밀한 수정 (Surgical Changes)
필요한 부분만 수정한다. 본인이 만든 코드의 뒷정리만 수행한다.

기존 코드를 편집할 때 다음을 준수한다:

- 인접한 코드, 주석, 포맷을 임의로 개선하지 않는다.
- 망가지지 않은 부분을 리팩토링하지 않는다.
- 본인의 스타일과 다르더라도 기존 스타일을 따른다.
- 작업과 무관한 데드 코드를 발견하면 보고하되 직접 삭제하지 않는다.

수정으로 인해 사용되지 않게 된 요소가 발생할 경우:

- 본인의 수정으로 인해 불필요해진 임포트, 변수, 함수는 제거한다.
- 기존에 존재하던 데드 코드는 요청이 없는 한 그대로 둔다.
- 테스트 기준: 변경된 모든 라인은 사용자의 요청사항과 직접적으로 연결되어야 한다.

### 4. 목표 중심 실행 (Goal-Driven Execution)
성공 기준을 정의한다. 검증될 때까지 반복한다.
작업을 검증 가능한 목표로 변환한다:

- "유효성 검사 추가" → "잘못된 입력에 대한 테스트 작성 후 통과 확인"
- "버그 수정" → "버그를 재현하는 테스트 작성 후 통과 확인"
- "X 리팩토링" → "리팩토링 전후의 테스트 통과 확인"

다단계 작업의 경우 간략한 계획을 수립한다:

1. [단계] → 검증: [확인 사항]
2. [단계] → 검증: [확인 사항]
3. [단계] → 검증: [확인 사항]
성공 기준이 명확해야 독립적인 작업이 가능하다. "작동하게 만들기"와 같은 모호한 기준은 불필요한 재질의를 야기한다.

지침 작동 확인: Diff 내 불필요한 변경 감소, 복잡성으로 인한 재작성 빈도 감소, 구현 전 질문을 통한 명확한 의사결정 증대.

참고

 

X의 Andrej Karpathy님(@karpathy)

A few random notes from claude coding quite a bit last few weeks. Coding workflow. Given the latest lift in LLM coding capability, like many others I rapidly went from about 80% manual+autocomplete coding and 20% agents in November to 80% agent coding and

x.com