---
name: Auto-generated Code
description: 자동 생성 코드 원칙. orval 생성 파일 직접 수정 금지, 확장은 wrapper로.
type: coding-standard
category: codegen
---

> 출처: 팀 공통 원칙 문서 `principles/12-codegen.md` 발췌 (2026-07-27). 원칙 개정은 원본(팀 공통 문서) 먼저, 이 사본은 따라간다. 경로·명령은 이 템플릿(pnpm, `src/shared/api/_generated/`) 기준으로 번역.

# 자동 생성 코드

## P-027 orval 생성 파일 직접 수정 금지

`src/shared/api/_generated/**` 파일은 `pnpm codegen` 실행 시 덮어쓰인다. 직접 수정해도 다음 codegen 실행 시 사라진다.

```
// ❌ 직접 수정 금지
src/shared/api/_generated/api.ts

// ✅ 수정이 필요하면
1. OpenAPI 스펙 수정 → pnpm codegen:sync → pnpm codegen
2. 또는 생성된 함수를 wrapper로 감싸서 사용
```

wrapper 패턴 — 생성 함수를 감싸 확장한다 (쿼리 팩토리가 이 wrapper 지점이다, `query-factory` 스킬):

```typescript
// ❌ 생성 파일 직접 수정
// src/shared/api/_generated/api.ts 직접 수정

// ✅ wrapper로 감싸서 확장 (도메인 팩토리에서)
// src/entities/post/api/queries.ts
import { getPosts } from '@/shared/api/_generated/api';

export const postQueries = {
  list: () =>
    queryOptions({
      queryKey: ['posts', 'list'] as const,
      queryFn: async () => getPosts(),
    }),
};
```

> 이 템플릿에서 생성물 봉인은 **dependency-cruiser 게이트가 기계로 강제**한다 (CLAUDE.md 룰↔게이트 매핑). 이 문서는 "왜"와 wrapper 패턴만 담는다.
