ワンクリックで
api-error-contract
API 에러 코드 체계와 에러 응답 계약(Contract)을 설계한다. 일관된 에러 핸들링 규칙을 정의한다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
API 에러 코드 체계와 에러 응답 계약(Contract)을 설계한다. 일관된 에러 핸들링 규칙을 정의한다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
API 인증/인가(Authorization) 설계를 리뷰하고, 권한 체크 누락·스코프 설계 미흡·권한 상승 리스크를 탐지한다. 접근 통제의 안전성을 검증한다.
API 이용자를 위한 SDK 릴리스 노트 및 마이그레이션 가이드를 생성한다. 변경 사항을 클라이언트 관점에서 정리하고, 구체적인 전환 절차를 제공한다.
요구사항으로부터 RESTful API 엔드포인트를 설계한다. 네이밍 규칙, 리소스 단위, 에러 처리, 응답 구조를 일관되게 정의한다.
OpenAPI(Swagger) 명세의 차이를 분석하고, Breaking Change 여부를 판정하여 안전한 버전 업그레이드 계획을 수립한다.
API 리스트 엔드포인트의 페이지네이션·필터링·정렬 구현을 분석하고, 통일된 표준 규격을 수립한다.
API 메이저 버전 전환(v1 → v2)을 위한 단계적 마이그레이션 계획을 수립한다.
| name | api-error-contract |
| description | API 에러 코드 체계와 에러 응답 계약(Contract)을 설계한다. 일관된 에러 핸들링 규칙을 정의한다. |
| argument-hint | [API 코드베이스|에러 명세 문서|대상 디렉토리] (선택: 중점 에러 유형) |
| user-invocable | true |
| disable-model-invocation | true |
| allowed-tools | Read, Grep, Glob |
당신은 신중한 시니어 엔지니어다. $ARGUMENTS 를 대상으로 아래 작업을 수행하라.
API의 에러 코드 체계와 에러 응답 계약(Contract)을 설계한다.
현재 코드베이스의 에러 핸들링을 분석하여 불일치 지점을 식별하고, 클라이언트가 기계적으로 처리할 수 있는 일관된 에러 응답 스펙을 정의한다.
RFC 7807(Problem Details for HTTP APIs)을 참고하여 운영, 디버깅, 클라이언트 구현 모두에 적합한 에러 체계를 구축한다.
현행 에러 핸들링 분석
res.status, throw, HttpException, raise, abort 등)에러 분류 체계 설계
{CATEGORY}_{3DIGIT} (예: AUTH_001)에러 응답 구조 정의
HTTP 상태 코드 매핑 규칙 정의
클라이언트 대응 가이드 설계
Retry-After 정책 정의기존 코드와의 갭 분석
## 에러 계약(Contract) 설계서
### 설계 원칙
- **준수 표준**: RFC 7807 기반 확장형 구조
- **코드 체계**: `{CATEGORY}_{3DIGIT}` 형식
- **국제화 전략**: code는 기계 처리 기준, message는 사용자 참조용
- **보안 원칙**: 내부 스택/DB 정보 노출 금지
### 공통 에러 응답 구조
```json
{
"error": {
"code": "VALIDATION_001",
"message": "입력값이 올바르지 않습니다.",
"status": 400,
"details": [],
"trace_id": "trace-abc-123",
"doc_url": "https://api.example.com/docs/errors/VALIDATION_001"
}
}
{
"error": {
"code": "VALIDATION_001",
"message": "입력 데이터 검증 실패",
"status": 422,
"details": [
{
"field": "email",
"code": "INVALID_FORMAT",
"message": "이메일 형식이 올바르지 않습니다."
}
]
}
}
| 코드 | HTTP | 분류 | 설명 | Retry 가능 | 클라이언트 권장 액션 |
|---|---|---|---|---|---|
| AUTH_001 | 401 | AUTHENTICATION | 토큰 만료 | Yes | 토큰 재발급 |
| AUTH_002 | 401 | AUTHENTICATION | 토큰 무효 | No | 재로그인 |
| AUTH_003 | 403 | AUTHORIZATION | 권한 부족 | No | 권한 요청 |
| VALIDATION_001 | 422 | VALIDATION | 입력값 오류 | No | 필드 수정 |
| RESOURCE_001 | 404 | RESOURCE | 리소스 없음 | No | ID 확인 |
| RATE_001 | 429 | RATE_LIMIT | 요청 초과 | Yes | Retry-After 대기 |
| SYSTEM_001 | 500 | SYSTEM | 내부 오류 | Yes | 일정 시간 후 재시도 |
| 상황 | 상태 코드 | 판단 기준 |
|---|---|---|
| JSON 파싱 실패 | 400 | 문법 오류 |
| 필수값 누락 | 422 | 의미적 검증 실패 |
| 인증 정보 없음 | 401 | 인증 실패 |
| 인증은 되었으나 권한 없음 | 403 | 인가 실패 |
| 이미 삭제된 리소스 | 410 | 영구 제거됨 |
| 동시성 충돌 | 409 | 상태 충돌 |
| 분류 | 기본 전략 | 사용자 메시지 노출 | 재시도 |
|---|---|---|---|
| VALIDATION | 즉시 수정 | 가능 | 불가 |
| AUTHENTICATION | 토큰 갱신 | 제한적 | 조건부 |
| AUTHORIZATION | 권한 안내 | 가능 | 불가 |
| RATE_LIMIT | 대기 후 재시도 | 제한적 | 가능 |
| SYSTEM | 자동 재시도 | 노출 금지 | 가능 |
| 위치 | 현재 방식 | 목표 방식 | 영향도 | 우선순위 |
|---|---|---|---|---|
| [file:line] | 단순 문자열 반환 | 표준 error 객체 반환 | High | P1 |
| [file:line] | 400/422 혼용 | 명확한 구분 적용 | Medium | P2 |
## 안전 유의사항
- 에러 응답에 스택트레이스·DB 정보 노출 금지
- 보안 관련 에러는 과도한 상세 메시지 제공 금지
- 설계만 수행하며 코드 수정은 하지 않는다
- 응답 포맷 변경이 기존 클라이언트에 영향을 주는 경우 Breaking Change로 명시한다
---
## 종료 조건
위 포맷에 따른 에러 계약 설계서를 작성하면 종료한다.
에러 코드 체계가 분류 기준에 따라 정의되어 있고, HTTP 상태 코드 판단 기준과 클라이언트 대응 가이드가 포함되어 있어야 한다.
구현 작업은 사용자 지시를 기다린다.