# {PROJECT_NAME} Chrome Extension PRD

> 이 문서가 법. 여기 없으면 안 만듦. 여기 있으면 반드시 만듦.
>
> 작성일: {DATE}
> 버전: 1.0

---

## 1. 한 줄 요약

**[타겟 사용자]**를 위한 **[핵심 기능]** Chrome 확장프로그램

예시: "온라인 쇼핑족을 위한 가격 비교 자동화 확장프로그램"

---

## 2. 문제 정의

### 2.1 현재 문제

| 문제 | 심각도 | 현재 해결책 |
|------|--------|-------------|
| [문제 1] | 높음/중간/낮음 | [기존 방식] |

### 2.2 이 확장프로그램의 해결책

[이 확장프로그램이 어떻게 해결하는지]

---

## 3. 타겟 사용자

### 3.1 주요 사용자
- **누구**: [예: 직장인]
- **행동 패턴**: [예: 하루 8시간 브라우저 사용]
- **기대 효과**: [예: 반복 작업 시간 50% 감소]

---

## 4. 핵심 기능

### P0 (Must Have) - 없으면 출시 불가

| 기능 | 설명 | 트리거 | 완료 조건 |
|------|------|--------|-----------|
| [기능 1] | [설명] | [클릭/자동/키보드] | [완료 조건] |
| [기능 2] | [설명] | [트리거] | [완료 조건] |

### P1 (Should Have)

| 기능 | 설명 | 완료 조건 |
|------|------|-----------|
| [기능 1] | [설명] | [완료 조건] |

### P2 (Nice to Have)

| 기능 | 설명 | 비고 |
|------|------|------|
| [기능 1] | [설명] | [추후 검토] |

---

## 5. Constraints (AI 경계)

### ALWAYS (무조건 실행)
- [ ] 최소 권한만 요청
- [ ] 사용자 데이터 로컬 저장 우선
- [ ] 에러 발생 시 graceful 처리
- [ ] 주입 스크립트 최소화

### ASK FIRST (확인 후 실행)
- [ ] 새 권한 추가
- [ ] 외부 API 연동
- [ ] 백그라운드 프로세스 추가

### NEVER (절대 금지)
- [ ] **스펙에 없는 기능 구현**
- [ ] 불필요한 권한 요청
- [ ] 사용자 동의 없이 데이터 수집
- [ ] console.log 프로덕션 배포
- [ ] 무한 루프/메모리 누수

### Out of Scope
- Firefox 지원 - 이유: v2에서
- 다크모드 - 이유: 시스템 따름

---

## 6. 확장프로그램 구조

### 6.1 Manifest (MV3)
```json
{
  "manifest_version": 3,
  "name": "{PROJECT_NAME}",
  "version": "1.0.0",
  "permissions": ["storage", "activeTab"],
  "host_permissions": ["*://*.example.com/*"],
  "action": {
    "default_popup": "popup.html",
    "default_icon": "icon.png"
  }
}
```

### 6.2 권한 목록

| 권한 | 이유 | 필수 여부 |
|------|------|----------|
| storage | 설정 저장 | 필수 |
| activeTab | 현재 탭 접근 | 필수 |
| [권한] | [이유] | 선택 |

### 6.3 파일 구조
```
/
├── manifest.json
├── popup/
│   ├── popup.html
│   ├── popup.css
│   └── popup.js
├── content/
│   └── content.js
├── background/
│   └── service-worker.js
├── assets/
│   └── icon.png
└── options/
    └── options.html
```

---

## 7. UI 구성

### 7.1 팝업 (Popup)
| 요소 | 설명 |
|------|------|
| 헤더 | 로고 + 설정 버튼 |
| 메인 | [핵심 기능 UI] |
| 푸터 | 상태 표시 |

### 7.2 상태별 UI

| 상태 | UI |
|------|-----|
| 비활성 | "이 사이트에서 사용 불가" |
| 로딩 | 스피너 |
| 성공 | 결과 표시 |
| 에러 | 에러 메시지 + 재시도 |

---

## 8. 데이터 저장

### 8.1 Storage 구조
```javascript
{
  settings: {
    enabled: true,
    theme: "light"
  },
  cache: {
    // 임시 데이터
  }
}
```

### 8.2 저장 위치

| 데이터 | 위치 | 이유 |
|--------|------|------|
| 설정 | chrome.storage.sync | 기기 간 동기화 |
| 캐시 | chrome.storage.local | 용량 큼 |
| 민감 정보 | - | 저장 안 함 |

---

## 9. 기술 스택

| 구분 | 선택 | 이유 |
|------|------|------|
| Manifest | V3 | Chrome 정책 |
| 프레임워크 | Vanilla / React / Vue | [이유] |
| 번들러 | Vite / Webpack | [이유] |
| 스타일 | CSS / Tailwind | [이유] |

---

## 10. Edge Cases

| 상황 | 예상 결과 |
|------|----------|
| 지원 안 하는 사이트 | "이 사이트에서 사용할 수 없습니다" |
| 권한 거부됨 | 권한 요청 안내 표시 |
| 네트워크 끊김 | 오프라인 캐시 사용 또는 에러 |
| 페이지 로드 중 | 로딩 완료 후 실행 |
| 확장 업데이트 | 기존 설정 유지 |

---

## 11. 완료 체크리스트

### 기능
- [ ] P0 기능 전체 동작
- [ ] 권한 최소화 확인
- [ ] 에러 처리 완료

### 품질
- [ ] Chrome Web Store 정책 준수
- [ ] 메모리 누수 없음
- [ ] 성능 영향 최소화

### 배포
- [ ] 스토어 설명 작성
- [ ] 스크린샷 준비
- [ ] 개인정보처리방침 작성

---

## 변경 로그

| 날짜 | 버전 | 변경 내용 | 작성자 |
|------|------|----------|--------|
| {DATE} | 1.0 | 최초 작성 | |
