ai-rules handbook PR 템플릿 레퍼런스

PR 템플릿 레퍼런스

```markdown ## 변경 요약

reference docs/reference/02-pr-template.md

프로젝트별 .github/PULL_REQUEST_TEMPLATE.md를 만들 때 참고하는 구조 가이드. 그대로 복사가 아니라, 팀 규모·스택에 맞게 커스터마이징해서 사용한다.


PR 템플릿

## 변경 요약

<!-- 무엇을 바꿨는지가 아니라, 왜 바꿨는지 3~5줄로 -->

## 변경 유형

- [ ] feat — 신규 기능
- [ ] fix — 버그 수정
- [ ] refactor — 리팩토링 (기능 변경 없음)
- [ ] docs — 문서만 변경
- [ ] style — 포맷 · 세미콜론 등
- [ ] perf — 성능 개선
- [ ] test — 테스트 추가/수정
- [ ] chore — 빌드 · 설정

## 가역성 분류 (R0/R1/R2)

> 비가역 작업일수록 휴먼 리뷰 엄격도 상승

- [ ] **R0** — 읽기 전용 (분석, 문서, 리서치)
- [ ] **R1** — 가역 변경 (코드 수정, 테스트 추가, UI 변경)
- [ ] **R2** — 비가역 변경 — **2명 이상 승인 필수**
  - [ ] DB 마이그레이션
  - [ ] 배포 스크립트 · 인프라 설정
  - [ ] 권한 · IAM 변경
  - [ ] 시크릿 · 환경변수 변경
  - [ ] 외부 API 키 발급/폐기

## AI 보조 여부

- [ ] AI 도구 사용함 (Claude Code / Cursor / Copilot 등)
  - 도구: 
  - 검증 방법:
    - [ ] `git diff` 로 실제 변경 직접 확인
    - [ ] 타입 체크 · lint · 테스트 모두 초록
    - [ ] 다중 파일 편집 시 누락 없음 확인
- [ ] AI 도구 미사용 (수동 작성)

## 영향받는 역할

- [ ] 기획 — PRD · 스펙 · 지표 · A/B 테스트 변경
- [ ] 디자인 — 디자인 토큰 · 컴포넌트 · 비주얼 변경
- [ ] 아키텍트 — 구조 · 기술 스택 · NFR 변경
- [ ] UI/UX 개발 — 디자인 시스템 코드 · 스타일 변경
- [ ] FE — 프론트엔드 로직 · 상태 · API 연동
- [ ] BE — 백엔드 · API 계약 · DB
- [ ] 보안 — 인증 · 시크릿 · 데이터 보호
- [ ] QA — 테스트 전략 · 크리티컬 패스

## 역할별 체크리스트

<!-- 해당되는 역할만 펼쳐서 체크. 미해당은 접어둬도 됨. -->

<details>
<summary>기획 체크</summary>

- [ ] PRD / User Story 업데이트
- [ ] Acceptance Criteria 명시
- [ ] Out of scope 변경 없음 확인
- [ ] 성공 지표 · 실패 신호 영향 분석

</details>

<details>
<summary>디자인 체크</summary>

- [ ] Figma 최신 상태 반영
- [ ] 디자인 토큰 사용 (하드코딩 값 없음)
- [ ] 색 대비 WCAG AA 이상
- [ ] 빈 상태 · 로딩 · 에러 상태 디자인 완료

</details>

<details>
<summary>아키텍트 체크</summary>

- [ ] ADR 업데이트 (기술 결정 변경 시)
- [ ] NFR 영향 분석 (성능 · 가용성)
- [ ] SEED.md / CONSTRAINTS.md 일관성 확인
- [ ] 시스템 경계 · 외부 의존성 변경 문서화

</details>

<details>
<summary>UI/UX 체크</summary>

- [ ] Figma 최신 상태 반영
- [ ] 디자인 토큰 사용 (하드코딩 값 없음)
- [ ] 색 대비 WCAG AA 이상
- [ ] 키보드 탐색 · 포커스 인디케이터
- [ ] 빈 상태 · 로딩 · 에러 상태 구현

</details>

<details>
<summary>FE 체크</summary>

- [ ] `any` 미사용 (또는 이유 명시)
- [ ] Props · 함수 시그니처 타입 명시
- [ ] 로딩 / 빈 / 에러 / 성공 4-state UI
- [ ] 신규 컴포넌트 Storybook 작성
- [ ] i18n 키 사용 (문자열 하드코딩 없음)
- [ ] 번들 사이즈 영향 확인

</details>

<details>
<summary>BE 체크</summary>

- [ ] OpenAPI 스펙 업데이트 + FE 타입 재생성
- [ ] DB 마이그레이션 롤백 스크립트 포함
- [ ] 에러 포맷 표준 준수 (RFC 7807)
- [ ] 멱등성 키 · 중복 실행 방지 (해당 시)
- [ ] 구조화 로깅 + 시크릿 로깅 방지

</details>

<details>
<summary>보안 체크</summary>

- [ ] 시크릿 하드코딩 없음 (`.env` · Vault 사용)
- [ ] `NEXT_PUBLIC_*` / `VITE_*` 에 민감정보 없음
- [ ] XSS 방어 — `v-html` / `dangerouslySetInnerHTML` 재확인
- [ ] 의존성 취약점 스캔 통과
- [ ] 접근 제어 변경 시 감사 로그 추가

</details>

<details>
<summary>QA 체크</summary>

- [ ] 단위 테스트 추가 (신규 로직)
- [ ] 크리티컬 패스 변경 시 E2E 업데이트
- [ ] 접근성 자동 테스트 통과 (axe)
- [ ] 회귀 영향 분석

</details>

## 검증 증거

<!-- 스크린샷 · 녹화 · 로그 · 벤치마크 등 -->

### UI 변경 (있는 경우)
| Before | After |
|--------|-------|
|        |       |

### 테스트 결과

$ pnpm test ...


## 관련 링크

- Jira / Linear 티켓: 
- 디자인 Figma: 
- 관련 ADR: 
- 관련 PR:

## 리뷰 메모

<!-- 리뷰어에게 특별히 봐달라고 할 부분 -->

도입 순서 (권장)

Day 1 — 파일만 추가

  1. .github/PULL_REQUEST_TEMPLATE.md 추가
  2. Branch protection 에 "Require review from Code Owners" 체크

Week 1 — 팀 적응

  1. PR 템플릿에 팀이 익숙해진 뒤 CI 게이트 점진 추가
  2. R2 라벨 컨벤션 공지

Week 2+ — 게이트 강화

  1. R2 라벨 시 2명 승인 필수 활성화
  2. AI-Assisted 커밋 트레일러 컨벤션 도입

커스터마이징 포인트

항목 기본값 조정 기준
PR 크기 임계치 500 라인 큰 리팩토링 많으면 상향, 마이크로 커밋 문화면 하향
Diff 커버리지 80% 레거시 리포면 60%부터 시작해 점진 상향
R2 승인 수 2명 소규모 팀은 1명 + 시니어 강제, 대규모 팀은 3명 고려
Conventional Commits 필수 초기 도입 시 warning → 2주 뒤 error 로 승격

자주 발생하는 도입 실패 패턴

  1. 한 번에 모든 게이트 활성화 — 개발자 반발로 롤백됨. 점진 도입 필수.
  2. CODEOWNERS 과도 세분화 — 한 파일에 5명 리뷰어 지정하면 아무도 먼저 리뷰 안 함.
  3. R2 라벨 강제 없음 — 라벨 안 붙이면 게이트 우회 가능. 라벨 자동 부여 룰 추가 권장.
  4. 템플릿 체크박스 맹목 체크 — "다 체크했음"만 남김. PR 설명 품질 리뷰 병행 필요.