| name | new-domain-endpoint |
| description | 새 도메인 API 엔드포인트 풀스택 생성 — new endpoint, API 추가, 도메인 추가, full-stack endpoint, 엔드포인트 생성 |
Trigger
사용자가 "new endpoint", "새 API", "도메인 추가", "엔드포인트 생성"을 요청하거나, 새 BE 라우트 + FE 클라이언트가 필요할 때 활성화.
Input Context
- 도메인 이름
- HTTP 메서드
- 요청/응답 shape
- Supabase 테이블 (해당 시)
Read First
backend/app/CLAUDE.md — 라우터 등록 순서
backend/app/models/CLAUDE.md — 모델 규칙
backend/app/models/common.py — CamelModel 베이스
frontend/src/lib/api/auth-fetch.ts — authFetch 래퍼 패턴
frontend/src/lib/api/endpoints.ts — 엔드포인트 URL barrel
- 기존 도메인 쌍 참조 (예:
labeling.py / labeling.ts)
Do
- BE 모델 생성:
backend/app/models/{domain}.py (CamelModel 상속)
- BE 라우터 생성:
backend/app/api/{domain}/router.py + __init__.py
backend/app/main.py에 라우터 등록 (등록 순서 준수)
backend/app/models/schemas.py barrel re-export 갱신
- FE 타입 생성:
frontend/src/types/{domain}.ts (camelCase 미러)
frontend/src/types/index.ts barrel re-export 갱신
- FE API 클라이언트 생성:
frontend/src/lib/api/{domain}.ts (authFetch 사용)
frontend/src/lib/api/endpoints.ts barrel 갱신
- 모든 새 파일에 한국어 헤더 주석 추가
pre-commit-validate 스킬 실행
Do Not
- barrel re-export 갱신을 빠뜨리지 않는다
- FE에서 raw fetch 대신 authFetch를 사용한다
- BE에서 CamelModel 상속을 빠뜨리지 않는다
- 필드 네이밍 규칙을 위반하지 않는다 (BE snake_case, FE camelCase)
Validation
Output Template
[new-domain-endpoint 완료]
- 도메인: {domain}
- BE 모델: backend/app/models/{domain}.py
- BE 라우터: backend/app/api/{domain}/router.py
- FE 타입: frontend/src/types/{domain}.ts
- FE API: frontend/src/lib/api/{domain}.ts
- Barrel 갱신: 4개
- 테스트/빌드: pass