Claude Code를 사용하면서 '생각한 대로 코드가 나오지 않는다', '의도하지 않은 범위까지 변경되었다'는 경험을 해본 적이 없으신가요? 대부분의 경우, 원인은 모델의 성능보다는 지시(프롬프트) 작성 방식에 있습니다.
이 글에서는 생성 AI 전반에 공통되는 기본 원칙을 바탕으로, Claude Code 개발 현장만의 실전 테크닉을 Before/After 구체적인 예시와 함께 정리합니다.
매번 프롬프트마다 코딩 규약이나 언어 설정을 작성하는 것은 비효율적입니다. 프로젝트 루트에 CLAUDE.md 파일을 두면, Claude Code가 이를 자동으로 읽어 이후의 모든 지시에 반영됩니다.
# CLAUDE.md 예시
## 커뮤니케이션
- 모든 상호작용은 일본어로 진행할 것
...
이를 통해 매번 프롬프트는 '무엇을 해달라는가'에만 집중할 수 있어 지시가 간결해집니다.
Before: "이 앱에 로그인 기능을 추가해 줘"
한 번에 너무 큰 태스크를 던지면, Claude Code는 자신만의 해석으로 광범위하게 변경하고 의도하지 않은 곳까지 건드려 버릴 수 있습니다.
After: "먼저 로그인 화면의 UI 컴포넌트만 만들어 줘. 백엔드 API 연동은 다음 단계에서 별도로 지시할게"
태스크를 단계적으로 분해하고, 한 번의 지시 범위를 좁힘으로써 리뷰하기 쉬운 단위로 변경 사항을 확인할 수 있습니다. 복잡한 태스크에서는 /plan 명령어로 먼저 작업 계획을 세우고 구현시키는 것도 효과적입니다.
Before: "이 코드를 리팩토링해 줘"
After: "이 함수를, 기존의 명명 규칙(카멜 케이스)을 유지한 채로, 얼리 리턴(early return)을 사용하는 형태로 리팩토링해 줘. 테스트 코드는 변경하지 마."
'변경하고 싶지 않은 범위'를 명시하는 것도 중요합니다. 지시에 포함되지 않은 부분까지 배려해서 변경해 버리는 경우를 막을 수 있습니다.
Before: "이 API의 타임아웃을 30초로 해줘"
After: "운영 환경에서 외부 API 응답이 느린 경우가 있으므로, 이 API의 타임아웃을 30초로 연장해 줘. 다만 사용자 경험을 고려하여, 20초 경과 시점에 로딩 표시를 하도록 해줘"
배경(왜 그 변경이 필요한지)을 전달함으로써, Claude Code는 지시의 의도를 파악한 구현을 선택하기 쉬워집니다.
| 실패 패턴 | 개선책 |
|---|
| 1회 프롬프트에 여러 요구 사항을 담기 | 태스크를 분해하여 하나씩 지시하기 |
| ... | |
| Claude Code의 지시 정확도는, 생성 AI 전반에 공통되는 기본 원칙(직접적인 지시・구체적 예시・컨텍스트)과, Claude Code만의 실전 테크닉(CLAUDE.md 활용・태스크 분해・제약 명시)을 결합함으로써 크게 개선할 수 있습니다. | |
원문 기사(프롬프트 엔지니어링의 기본 원칙이나 추천 학습법도 포함된 전체 버전)는 여기를 참고하세요.