코딩용 프롬프트

Claude를 활용하여 고품질 코드를 생성하기 위한 특화된 프롬프트 작성 기법을 다룹니다. 명확한 요구사항, 컨텍스트 제공, 테스트 전략까지 실전에서 바로 사용할 수 있는 예제와 템플릿을 제공합니다.

업데이트 안내: 모델/요금/버전/정책 등 시점에 민감한 정보는 변동될 수 있습니다. 최신 내용은 공식 문서를 확인하세요.

코딩 프롬프트 기본 원칙

핵심 원칙

효과적인 코딩 프롬프트는 5가지 요소를 포함합니다:

  1. 명확한 목적 - 무엇을 만들려는지 구체적으로 기술
  2. 기술 스택 - 언어, 프레임워크, 라이브러리 명시
  3. 입출력 명세 - 함수 시그니처, 데이터 형식 정의
  4. 제약사항 - 성능, 메모리, 호환성 등 요구사항
  5. 코드 스타일 - 네이밍, 포맷팅, 주석 규칙

1. 명확한 요구사항 작성

모호한 요청은 원하지 않는 결과를 초래합니다. 구체적이고 측정 가능한 요구사항을 제시하세요.

❌ 나쁜 예 ✅ 좋은 예
"파일을 읽는 함수 만들어줘" "Python으로 CSV 파일을 읽어 pandas DataFrame으로 반환하는 함수를 작성해주세요.

요구사항:
- 함수명: load_csv_data
- 인자: file_path (str), encoding (str, default='utf-8')
- 반환: pd.DataFrame
- 에러 처리: FileNotFoundError, UnicodeDecodeError"
"API 만들어줘" "FastAPI로 사용자 인증 API를 구현해주세요.

엔드포인트:
- POST /api/auth/login
- POST /api/auth/logout
- GET /api/auth/me

인증 방식: JWT Bearer Token
데이터베이스: PostgreSQL (SQLAlchemy ORM)"
"알고리즘 최적화해줘" "다음 정렬 알고리즘의 시간 복잡도를 O(n²)에서 O(n log n)으로 개선해주세요.

제약사항:
- 추가 메모리 사용 최소화 (O(log n) 허용)
- 안정 정렬(stable sort) 유지
- Python 3.10+ 표준 라이브러리만 사용"

2. 컨텍스트 제공

코드가 사용될 환경과 목적을 명확히 제공하면 더 적합한 솔루션을 얻을 수 있습니다.

좋은 프롬프트 예시
Django REST Framework로 전자상거래 주문 관리 API를 개발 중입니다.

# 현재 상황
- Django 4.2, DRF 3.14
- PostgreSQL 데이터베이스
- 동시 접속자 수: 평균 500명, 피크 2000명
- 주문 데이터는 일 평균 1만 건 생성

# 요청사항
Order 모델에 대한 ViewSet을 작성해주세요.

# 요구사항
1. 주문 생성 시 재고 확인 및 차감 (트랜잭션 처리)
2. 페이지네이션 (페이지당 20개)
3. 필터링: 주문 상태, 날짜 범위, 사용자
4. 권한: 본인 주문만 조회 가능 (관리자는 전체 조회)
5. 주문 생성 후 Celery 태스크로 이메일 발송

# 제약사항
- N+1 쿼리 문제 방지 (select_related, prefetch_related 활용)
- 주문 생성 API 응답 시간 < 500ms

3. 기술 스택 명시

버전까지 정확히 명시하면 호환성 문제를 예방할 수 있습니다.

기술 스택 명시 템플릿
# 프로젝트 환경
- 언어: TypeScript 5.3
- 런타임: Node.js 20.10 LTS
- 프레임워크: Next.js 14 (App Router)
- 스타일링: Tailwind CSS 3.4
- 상태관리: Zustand 4.4
- HTTP 클라이언트: Axios 1.6
- 테스트: Vitest 1.0, Testing Library

# 코드 규칙
- ESLint + Prettier (Airbnb 스타일)
- React Server Components 우선 사용
- Client Component는 "use client" 명시적 선언

4. 코드 스타일 지정

프로젝트의 일관성을 유지하려면 코딩 스타일을 명시해야 합니다.

스타일 요소 예시
네이밍 규칙 - 변수/함수: snake_case
- 클래스: PascalCase
- 상수: UPPER_SNAKE_CASE
- Private 메서드: _leading_underscore
주석 스타일 - Docstring: Google 스타일
- Type hints: Python 3.10+ 문법
- 복잡한 로직에만 인라인 주석 추가
에러 처리 - 명시적 예외 처리 (bare except 금지)
- 커스텀 예외 클래스 사용
- 로깅: structlog 라이브러리
테스트 - 테스트 함수명: test_[기능]_[시나리오]_[예상결과]
- Given-When-Then 패턴
- Arrange-Act-Assert 주석

실전 예제 20가지

데이터 처리

예제 1: CSV 데이터 정제
Python pandas로 고객 데이터 정제 함수를 작성해주세요.

# 입력 데이터
- CSV 파일: customers.csv
- 컬럼: id, name, email, phone, registration_date, status

# 정제 규칙
1. email: 소문자 변환, 공백 제거, 유효성 검증 (정규식)
2. phone: 숫자만 추출, 10자리 또는 11자리 체크
3. registration_date: 'YYYY-MM-DD' 형식으로 통일
4. 중복 제거: email 기준
5. 결측치 처리:
   - name: 결측 시 행 제거
   - phone: 결측 시 '미등록'으로 채움
   - status: 결측 시 'active'로 채움

# 출력
- 정제된 DataFrame 반환
- 정제 통계 출력 (원본 행 수, 제거된 행 수, 수정된 행 수)

# 성능 요구사항
- 100만 행 처리 시간 < 30초
- 메모리 효율적 처리 (청크 단위 읽기)
예제 2: JSON API 응답 파싱
TypeScript로 GitHub API 응답을 파싱하는 타입 안전한 함수를 작성해주세요.

// API 엔드포인트
GET https://api.github.com/repos/{owner}/{repo}

// 요구사항
1. Zod 스키마로 응답 검증
2. 필요한 필드만 추출:
   - name, description, stargazers_count, forks_count
   - owner.login, owner.avatar_url
   - created_at, updated_at, pushed_at
3. 날짜는 Date 객체로 변환
4. 에러 처리:
   - 네트워크 에러
   - 응답 스키마 불일치
   - Rate Limit 초과

// 타입 정의
interface RepoInfo {
  name: string;
  description: string | null;
  stars: number;
  forks: number;
  owner: {
    username: string;
    avatarUrl: string;
  };
  dates: {
    created: Date;
    updated: Date;
    pushed: Date;
  };
}

API 개발

예제 3: RESTful API 엔드포인트
Express.js + TypeScript로 블로그 포스트 CRUD API를 작성해주세요.

// 기술 스택
- Express 4.18
- TypeScript 5.3
- Prisma ORM 5.7 (PostgreSQL)
- JWT 인증 (jsonwebtoken)

// 엔드포인트
POST   /api/posts          // 포스트 작성 (인증 필요)
GET    /api/posts          // 포스트 목록 (페이지네이션)
GET    /api/posts/:id      // 포스트 상세
PUT    /api/posts/:id      // 포스트 수정 (본인만 가능)
DELETE /api/posts/:id      // 포스트 삭제 (본인만 가능)

// 비즈니스 로직
1. 작성: 제목(1-200자), 본문(필수), 태그(선택, 최대 5개)
2. 목록: 페이지당 20개, 최신순 정렬, 쿼리 파라미터 필터링
   - tag: 태그로 필터링
   - search: 제목/본문 검색
   - author: 작성자 ID
3. 수정: 부분 수정 지원 (PATCH 의미론)
4. 삭제: soft delete (deletedAt 필드 사용)

// 에러 응답 형식
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "제목은 1-200자여야 합니다",
    "field": "title"
  }
}
예제 4: GraphQL 리졸버
Apollo Server로 GraphQL 스키마와 리졸버를 작성해주세요.

# 스키마
type User {
  id: ID!
  username: String!
  email: String!
  posts: [Post!]!
  createdAt: DateTime!
}

type Post {
  id: ID!
  title: String!
  content: String!
  author: User!
  tags: [String!]!
  publishedAt: DateTime
}

type Query {
  user(id: ID!): User
  posts(limit: Int, offset: Int, tag: String): [Post!]!
}

type Mutation {
  createPost(input: CreatePostInput!): Post!
}

# 요구사항
1. DataLoader로 N+1 쿼리 문제 해결
2. 인증: context에서 JWT 토큰 검증
3. 에러 처리: Apollo Server Error 클래스 사용
4. 페이지네이션: limit 기본값 20, 최대 100

프론트엔드

예제 5: React 커스텀 훅
React + TypeScript로 데이터 페칭 커스텀 훅을 작성해주세요.

// 기능
- API 호출 상태 관리 (loading, error, data)
- 자동 재시도 (exponential backoff)
- 캐싱 (SWR 패턴)
- 폴링 (선택적)
- AbortController로 요청 취소

// 사용 예시
const { data, error, isLoading, refetch } = useFetch<User[]>({
  url: '/api/users',
  options: {
    retry: 3,
    retryDelay: 1000,
    cache: true,
    cacheTime: 5 * 60 * 1000, // 5분
    poll: 10000, // 10초마다 폴링
  },
});

// 타입 정의
interface UseFetchOptions {
  retry?: number;
  retryDelay?: number;
  cache?: boolean;
  cacheTime?: number;
  poll?: number;
  onSuccess?: (data: any) => void;
  onError?: (error: Error) => void;
}

// 요구사항
- 컴포넌트 언마운트 시 진행 중인 요청 취소
- 캐시는 메모리 기반, LRU 정책 (최대 50개)
- 에러 재시도는 지수 백오프 (1초 → 2초 → 4초)
예제 6: Vue 컴포저블
Vue 3 Composition API로 폼 유효성 검증 컴포저블을 작성해주세요.

// 사용 예시
const { values, errors, validate, reset } = useForm({
  initialValues: {
    email: '',
    password: '',
  },
  validators: {
    email: [
      required('이메일을 입력하세요'),
      email('유효한 이메일을 입력하세요'),
    ],
    password: [
      required('비밀번호를 입력하세요'),
      minLength(8, '8자 이상 입력하세요'),
    ],
  },
});

// 기능
1. 실시간 유효성 검증 (debounce 300ms)
2. 제출 시 전체 필드 검증
3. 필드별 에러 메시지
4. 터치 상태 관리 (blur 시 에러 표시)
5. 비동기 검증 지원 (예: 이메일 중복 확인)

// 내장 밸리데이터
- required, email, minLength, maxLength
- pattern (정규식), custom (사용자 정의)

// 타입 안전성
- TypeScript 제네릭으로 폼 데이터 타입 추론
- 밸리데이터 함수 타입 정의

알고리즘

예제 7: 최적화된 검색 알고리즘
Python으로 대용량 텍스트에서 패턴 검색 알고리즘을 구현해주세요.

# 알고리즘
Boyer-Moore 알고리즘 또는 KMP 알고리즘 사용

# 요구사항
1. 대소문자 구분 옵션
2. 전체 일치 / 부분 일치 모드
3. 모든 매칭 위치 반환
4. 유니코드 지원

# 함수 시그니처
def search_pattern(
    text: str,
    pattern: str,
    case_sensitive: bool = True,
    whole_word: bool = False
) -> List[int]:
    """패턴 매칭 위치 리스트 반환"""
    pass

# 성능 목표
- 10MB 텍스트 파일에서 100자 패턴 검색 < 1초
- 시간 복잡도: O(n + m) where n=text length, m=pattern length
- 공간 복잡도: O(m)

# 테스트 케이스 포함
- 빈 문자열 처리
- 패턴이 텍스트보다 긴 경우
- 중복 패턴
- 유니코드 문자 (한글, 이모지)
예제 8: 캐싱 시스템
TypeScript로 LRU (Least Recently Used) 캐시를 구현해주세요.

// 요구사항
1. 제네릭 타입 지원
2. O(1) get/put 연산
3. TTL (Time To Live) 지원
4. 메모리 제한 (바이트 단위)
5. 통계 정보 (hit rate, miss rate)

// 인터페이스
interface CacheOptions {
  maxSize: number;        // 최대 항목 수
  maxMemory?: number;     // 최대 메모리 (bytes)
  ttl?: number;           // 기본 TTL (ms)
}

class LRUCache<K, V> {
  constructor(options: CacheOptions);
  get(key: K): V | undefined;
  set(key: K, value: V, ttl?: number): void;
  delete(key: K): boolean;
  clear(): void;
  getStats(): CacheStats;
}

// 구현 힌트
- 내부 자료구조: Map + Doubly Linked List
- TTL 체크: get 시점에 만료 확인
- 메모리 계산: JSON.stringify(value).length 근사치 사용

테스트

예제 9: 유닛 테스트
pytest로 비동기 함수 테스트 코드를 작성해주세요.

# 테스트 대상 함수
async def fetch_user_data(user_id: int) -> Dict:
    """외부 API에서 사용자 데이터 조회"""
    pass

# 테스트 요구사항
1. httpx.AsyncClient 모킹 (respx 라이브러리)
2. 성공 케이스: 정상 응답 검증
3. 실패 케이스:
   - 네트워크 에러 (httpx.NetworkError)
   - 타임아웃 (httpx.TimeoutException)
   - 404 응답
   - 500 응답
4. 재시도 로직 검증 (3회 재시도)
5. 캐싱 동작 검증

# 테스트 구조
- Arrange-Act-Assert 패턴
- Fixture로 공통 설정 분리
- parametrize로 여러 입력값 테스트
- 비동기 테스트: pytest-asyncio 사용

# 커버리지 목표
- Line coverage: 100%
- Branch coverage: 95% 이상
예제 10: E2E 테스트
Playwright로 로그인 플로우 E2E 테스트를 작성해주세요.

// 테스트 시나리오
1. 로그인 페이지 접속
2. 이메일/비밀번호 입력
3. "로그인" 버튼 클릭
4. 대시보드로 리다이렉트 확인
5. 사용자 이름 표시 확인

// 요구사항
- Page Object Model 패턴 사용
- 환경변수로 테스트 계정 관리
- 스크린샷 캡처 (실패 시)
- 테스트 격리 (각 테스트 전 로그아웃)
- 모바일 뷰포트 테스트 포함

// Page Object 클래스
class LoginPage {
  constructor(private page: Page) {}

  async goto() { ... }
  async login(email: string, password: string) { ... }
  async getErrorMessage(): Promise<string> { ... }
}

// 에러 케이스
- 잘못된 이메일 형식
- 잘못된 비밀번호
- 빈 필드 제출
- 네트워크 오류 시뮬레이션

프롬프트 템플릿 10가지

템플릿 1: 함수 구현

템플릿
[언어]로 [기능]을 구현하는 함수를 작성해주세요.

# 함수 시그니처
def function_name(param1: Type1, param2: Type2) -> ReturnType:
    """함수 설명"""
    pass

# 요구사항
1. [요구사항 1]
2. [요구사항 2]
3. [요구사항 3]

# 제약사항
- [제약사항 1]
- [제약사항 2]

# 예제 입출력
입력: [예제 입력]
출력: [예제 출력]

# 에러 처리
- [예외 상황 1]: [처리 방법]
- [예외 상황 2]: [처리 방법]

템플릿 2: 클래스 설계

템플릿
[언어]로 [개념/엔티티]를 표현하는 클래스를 작성해주세요.

# 책임 (Responsibility)
이 클래스는 [주요 책임]을 담당합니다.

# 속성 (Attributes)
- [속성1]: [타입] - [설명]
- [속성2]: [타입] - [설명]

# 메서드 (Methods)
- [메서드1]: [설명]
- [메서드2]: [설명]

# 설계 원칙
- SOLID 원칙 준수
- [특정 디자인 패턴] 적용
- 불변성/가변성 여부

# 사용 예시
[코드 예시]

템플릿 3: API 엔드포인트

템플릿
[프레임워크]로 [리소스] [작업] API를 작성해주세요.

# HTTP 메서드 및 경로
[METHOD] /api/[resource]/[path]

# 요청 (Request)
Headers:
  - Authorization: Bearer [token]
  - Content-Type: application/json

Body:
{
  "field1": "value1",
  "field2": "value2"
}

# 응답 (Response)
Success (200):
{
  "data": { ... },
  "message": "success"
}

Error (4xx/5xx):
{
  "error": {
    "code": "ERROR_CODE",
    "message": "에러 메시지"
  }
}

# 비즈니스 로직
1. [검증 규칙]
2. [처리 단계]
3. [부수 효과]

# 권한
- 필요 역할: [role]
- 리소스 소유권 확인: [예/아니오]

템플릿 4: 리팩토링

템플릿
다음 코드를 [목표]를 위해 리팩토링해주세요.

# 현재 코드
[기존 코드]

# 문제점
1. [문제점 1]
2. [문제점 2]

# 리팩토링 목표
- [목표 1]: [측정 가능한 기준]
- [목표 2]: [측정 가능한 기준]

# 제약사항
- 기존 API/인터페이스 유지
- 하위 호환성 보장
- [추가 제약사항]

# 적용할 패턴/원칙
- [디자인 패턴 또는 리팩토링 기법]

템플릿 5: 디버깅

템플릿
다음 코드의 버그를 찾아 수정해주세요.

# 문제 코드
[버그가 있는 코드]

# 증상
- 예상 동작: [기대하는 결과]
- 실제 동작: [실제 발생하는 결과]
- 에러 메시지: [에러 메시지 또는 "없음"]

# 재현 방법
1. [단계 1]
2. [단계 2]
3. [단계 3]

# 환경
- [언어/프레임워크] 버전: [버전]
- OS: [운영체제]
- 기타 의존성: [관련 라이브러리]

# 요청사항
1. 버그 원인 설명
2. 수정된 코드
3. 재발 방지 방법 (테스트, 코드 리뷰 포인트 등)

템플릿 6: 성능 최적화

템플릿
다음 코드의 성능을 최적화해주세요.

# 현재 코드
[최적화 대상 코드]

# 성능 문제
- 현재 성능: [측정값] (예: 10초, 1000 QPS)
- 목표 성능: [목표값]
- 병목 지점: [프로파일링 결과 또는 추정]

# 최적화 제약사항
- 메모리 제한: [제한사항]
- 정확도 유지: [필수/근사 허용]
- 코드 복잡도: [유지보수성 고려사항]

# 최적화 방향
- 알고리즘 개선 (시간 복잡도 감소)
- 데이터 구조 변경
- 캐싱 전략
- 병렬 처리
- [기타 방향]

# 벤치마크 방법
[성능 측정 코드 또는 방법]

템플릿 7: 데이터베이스 쿼리

템플릿
[데이터베이스/ORM]로 [작업]을 수행하는 쿼리를 작성해주세요.

# 스키마
Table: users
  - id: INTEGER PRIMARY KEY
  - username: VARCHAR(50)
  - created_at: TIMESTAMP

Table: posts
  - id: INTEGER PRIMARY KEY
  - user_id: INTEGER FOREIGN KEY
  - title: VARCHAR(200)
  - created_at: TIMESTAMP

# 요구사항
[구체적인 쿼리 요구사항]

# 조건
- 필터: [조건]
- 정렬: [정렬 기준]
- 페이지네이션: [있음/없음]
- 집계: [필요한 집계 함수]

# 성능 고려사항
- N+1 쿼리 방지
- 인덱스 활용
- 실행 계획 (EXPLAIN) 포함
- 예상 데이터 크기: [행 수]

템플릿 8: 테스트 코드

템플릿
[테스트 프레임워크]로 [대상]에 대한 테스트 코드를 작성해주세요.

# 테스트 대상
[함수/클래스/API 코드]

# 테스트 케이스
1. Happy Path:
   - [정상 동작 시나리오]

2. Edge Cases:
   - [경계값 테스트]

3. Error Cases:
   - [예외 상황]

# 테스트 구조
- Arrange: [초기 설정]
- Act: [실행]
- Assert: [검증]

# 모킹
- [모킹 대상]: [모킹 방법]

# 커버리지 목표
- Line coverage: [목표 %]
- Branch coverage: [목표 %]

템플릿 9: 비동기 처리

템플릿
[언어/프레임워크]로 [비동기 작업]을 구현해주세요.

# 작업 내용
[구체적인 비동기 작업 설명]

# 동시성 모델
- async/await
- Promise/Future
- Callback
- [기타 모델]

# 에러 처리
- 재시도 전략: [exponential backoff 등]
- 타임아웃: [시간 제한]
- 실패 시 폴백: [대체 동작]

# 동시 실행
- 병렬 실행: [여러 작업 동시 실행]
- 순차 실행: [의존성 있는 작업]
- 동시성 제한: [최대 N개]

# 취소 처리
- AbortController/CancellationToken 사용
- 정리 작업 (cleanup)

템플릿 10: 통합

템플릿
[서비스/라이브러리]를 [프로젝트]에 통합하는 코드를 작성해주세요.

# 통합 대상
- 서비스: [외부 서비스명] (예: Stripe, SendGrid)
- SDK/라이브러리: [이름 및 버전]

# 통합 목표
[통합을 통해 달성하려는 기능]

# 요구사항
1. 인증: [API 키, OAuth 등]
2. 환경별 설정: [dev/staging/prod]
3. 에러 처리: [재시도, 로깅, 알림]
4. 레이트 리밋 대응: [제한 초과 시 처리]

# 설정 관리
- 환경 변수로 민감 정보 관리
- 설정 파일 구조

# 테스트
- 모킹을 통한 유닛 테스트
- 샌드박스 환경 통합 테스트

고급 기법

단계별 리팩토링

복잡한 코드 개선은 한 번에 하지 말고 단계별로 요청하세요.

단계별 프롬프트 예시
## 1단계: 가독성 개선
다음 코드의 가독성을 개선해주세요:
- 변수명을 의미 있게 변경
- 매직 넘버를 상수로 추출
- 복잡한 조건문을 함수로 분리

[코드]

## 2단계: 성능 최적화
1단계에서 개선된 코드의 성능을 최적화해주세요:
- O(n²) → O(n log n) 알고리즘 개선
- 불필요한 루프 제거
- 메모이제이션 적용

## 3단계: 테스트 추가
최종 코드에 대한 유닛 테스트를 작성해주세요:
- 엣지 케이스 포함
- 100% 브랜치 커버리지 목표

제약 조건 기반 설계

제약사항을 명확히 하면 최적의 솔루션을 얻을 수 있습니다.

제약 조건 명시 예시
이미지 업로드 기능을 구현해주세요.

# 기능 제약사항
- 최대 파일 크기: 10MB
- 지원 형식: JPEG, PNG, WebP
- 최대 동시 업로드: 5개
- 업로드 진행률 표시 필수

# 기술 제약사항
- 프론트엔드: React 18, TypeScript
- 백엔드: AWS S3 직접 업로드 (presigned URL)
- 브라우저: Chrome/Firefox/Safari 최신 2버전

# 성능 제약사항
- 10MB 파일 업로드 시간 < 30초 (일반 인터넷 속도)
- 썸네일 생성: 서버사이드 (Lambda)
- 이미지 최적화: 자동 WebP 변환

# 보안 제약사항
- 파일 타입 검증 (MIME type + 매직 바이트)
- 악성 파일 스캔 (ClamAV)
- CORS 설정
- presigned URL 유효시간: 15분

예제 기반 학습

입출력 예제를 제공하면 정확도가 크게 향상됩니다.

예제 기반 프롬프트
날짜 범위를 파싱하는 함수를 작성해주세요.

# 예제 1
입력: "2024-01-01 to 2024-01-31"
출력: { start: new Date("2024-01-01"), end: new Date("2024-01-31") }

# 예제 2
입력: "last 7 days"
출력: { start: "7일 전 날짜", end: "오늘 날짜" }

# 예제 3
입력: "this month"
출력: { start: "이번 달 1일", end: "이번 달 마지막 날" }

# 예제 4 (에러)
입력: "invalid date"
출력: throw new Error("Invalid date range format")

# 지원할 형식
- "YYYY-MM-DD to YYYY-MM-DD"
- "last N days/weeks/months"
- "this week/month/year"
- "yesterday/today/tomorrow"

베스트 프랙티스

코딩 프롬프트 체크리스트

프롬프트 작성 전 확인하세요:

  • ✅ 언어와 버전을 명시했는가?
  • ✅ 함수/클래스 시그니처를 정의했는가?
  • ✅ 입출력 예제를 제공했는가?
  • ✅ 에러 처리 방법을 명시했는가?
  • ✅ 성능 요구사항을 정량화했는가?
  • ✅ 코드 스타일을 지정했는가?
  • ✅ 테스트가 필요한 경우 테스트 요청을 포함했는가?

버전 명시

라이브러리 버전에 따라 API가 다르므로 정확한 버전을 명시하세요.

나쁜 예
"React로 컴포넌트 만들어줘"
좋은 예
"React 18.2 함수형 컴포넌트로 만들어줘 (Hooks 사용)"

네이밍 규칙

프로젝트의 네이밍 컨벤션을 명시하면 일관성 있는 코드를 얻을 수 있습니다.

네이밍 규칙 예시
# Python 프로젝트
- 모듈/패키지: lowercase_with_underscores
- 클래스: PascalCase
- 함수/변수: snake_case
- 상수: UPPER_SNAKE_CASE
- Private: _leading_underscore

# TypeScript 프로젝트
- 파일명: kebab-case.ts
- 컴포넌트: PascalCase
- 함수/변수: camelCase
- 상수: UPPER_SNAKE_CASE
- 타입/인터페이스: PascalCase
- Enum: PascalCase (값은 UPPER_SNAKE_CASE)

에러 처리

에러 처리 전략을 명확히 하세요.

에러 처리 프롬프트
파일 업로드 함수에 다음 에러 처리를 적용해주세요:

# 에러 타입별 처리
1. FileNotFoundError: 사용자에게 "파일을 찾을 수 없습니다" 메시지
2. FileSizeExceeded: "파일 크기는 10MB를 초과할 수 없습니다"
3. InvalidFileType: "지원하지 않는 파일 형식입니다"
4. NetworkError: 3회 재시도 (1초, 2초, 4초 대기)
5. UnknownError: 로그 기록 후 일반 에러 메시지

# 로깅
- 모든 에러는 structlog로 기록
- 에러 레벨: ERROR
- 포함 정보: user_id, file_name, error_type, stack_trace

# 사용자 피드백
- 에러 메시지는 한국어
- 기술적 세부사항은 숨김
- 해결 방법 제시 (가능한 경우)

흔한 실수

❌ 실수 ✅ 올바른 방법
막연한 요청
"좋은 코드 작성해줘"
측정 가능한 기준 제시
"PEP 8 준수, 순환 복잡도 < 10, 테스트 커버리지 > 90%"
컨텍스트 생략
"이 함수 최적화해줘"
사용 환경 명시
"초당 1000회 호출되는 API 핸들러, 응답시간 < 100ms 목표"
한 번에 너무 많이
"CRUD + 인증 + 페이지네이션 + 캐싱 + 테스트 다 만들어줘"
단계별 요청
"먼저 기본 CRUD부터 만들어주세요. 이후 인증을 추가하겠습니다."
암묵적 가정
"정렬 함수 만들어줘"
명시적 명세
"오름차순 정렬, 안정 정렬, 숫자 배열 입력, in-place 금지"
예제 없음
"날짜 포맷팅 함수 만들어줘"
입출력 예시 제공
"2024-01-15 → '2024년 1월 15일' 형식으로 변환"

다음 단계

학습 경로

코딩 프롬프트를 마스터한 후:

  1. 프롬프트 최적화 - 토큰 절약, 정확도 향상
  2. Vibe Coding 패턴 - 실전 워크플로우
  3. 프롬프트 패턴 - 고급 패턴 학습
  4. Tool Use - 함수 호출, 외부 도구 통합

핵심 정리

  • 코딩용 프롬프트의 핵심 개념과 흐름을 정리합니다.
  • 코딩 프롬프트 기본 원칙를 단계별로 이해합니다.
  • 실전 적용 시 기준과 주의점을 확인합니다.

실무 팁

  • 입력/출력 예시를 고정해 재현성을 확보하세요.
  • 코딩용 프롬프트 범위를 작게 잡고 단계적으로 확장하세요.
  • 코딩 프롬프트 기본 원칙 조건을 문서화해 대응 시간을 줄이세요.