# {PROJECT_NAME} CLI PRD

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

---

## 1. 한 줄 요약

**[타겟 사용자]**를 위한 **[핵심 기능]** CLI 도구

예시: "개발자를 위한 프로젝트 초기화 자동화 CLI"

---

## 2. 문제 정의

### 2.1 현재 문제

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

### 2.2 이 CLI의 해결책

[이 CLI가 어떻게 해결하는지]

---

## 3. 타겟 사용자

### 3.1 주요 사용자
- **누구**: [예: 백엔드 개발자]
- **환경**: [예: Linux/Mac 터미널, WSL]
- **숙련도**: [예: CLI 도구 사용 경험 있음]

### 3.2 사용 환경
- **OS**: Linux, macOS, Windows (WSL)
- **Shell**: bash, zsh, PowerShell
- **권한**: 일반 사용자 (root 불필요)

---

## 4. 명령어 정의

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

| 명령어 | 설명 | 옵션 | 예시 |
|--------|------|------|------|
| `init` | 프로젝트 초기화 | `--name`, `--template` | `mycli init --name myapp` |
| `run` | 실행 | `--config`, `--verbose` | `mycli run --verbose` |
| `--help` | 도움말 | - | `mycli --help` |
| `--version` | 버전 확인 | - | `mycli --version` |

### P1 (Should Have)

| 명령어 | 설명 | 옵션 | 예시 |
|--------|------|------|------|
| [명령어] | [설명] | [옵션] | [예시] |

### P2 (Nice to Have)

| 명령어 | 설명 | 비고 |
|--------|------|------|
| [명령어] | [설명] | [추후 검토] |

---

## 5. Constraints (AI 경계)

### ALWAYS (무조건 실행)
- [ ] 모든 입력 검증 (옵션, 인자)
- [ ] 에러 시 exit code 비정상 (0이 아닌 값)
- [ ] `--help`에 모든 옵션 설명
- [ ] 진행 상황 출력 (verbose 모드)
- [ ] 취소 가능 (Ctrl+C)

### ASK FIRST (확인 후 실행)
- [ ] 파일 덮어쓰기
- [ ] 새 의존성 추가
- [ ] 파괴적 작업 (삭제 등)

### NEVER (절대 금지)
- [ ] **스펙에 없는 명령어 구현**
- [ ] 하드코딩된 경로 (~ 사용)
- [ ] 권한 없이 시스템 파일 수정
- [ ] 에러 무시 (조용히 실패)
- [ ] 사용자 확인 없이 파일 삭제

### Out of Scope
- GUI - 이유: CLI 도구
- 자동 업데이트 - 이유: v2에서

---

## 6. 입출력 형식

### 6.1 출력 형식

**일반 출력**
```
[INFO] 작업 시작...
[OK] 완료
```

**에러 출력** (stderr)
```
[ERROR] 파일을 찾을 수 없습니다: config.json
```

**JSON 출력** (--json 옵션)
```json
{
  "success": true,
  "message": "완료",
  "data": { ... }
}
```

### 6.2 Exit Codes

| 코드 | 상황 |
|------|------|
| 0 | 성공 |
| 1 | 일반 에러 |
| 2 | 잘못된 인자 |
| 127 | 명령어 없음 |
| 130 | Ctrl+C로 중단 |

---

## 7. 설정 파일

### 7.1 설정 위치
1. 명령줄 옵션 (최우선)
2. 환경변수 (`MYCLI_*`)
3. 로컬 설정 (`.myclirc`, `mycli.config.json`)
4. 전역 설정 (`~/.config/mycli/config.json`)
5. 기본값

### 7.2 설정 형식
```json
{
  "default_template": "basic",
  "verbose": false,
  "color": true
}
```

---

## 8. 기술 스택

| 구분 | 선택 | 이유 |
|------|------|------|
| 언어 | Node / Python / Go / Rust | [이유] |
| CLI 프레임워크 | Commander / Click / Cobra | [이유] |
| 배포 | npm / pip / brew / binary | [이유] |

---

## 9. 설치 방법

### npm (Node)
```bash
npm install -g mycli
```

### pip (Python)
```bash
pip install mycli
```

### Homebrew (macOS)
```bash
brew install mycli
```

---

## 10. Edge Cases

| 상황 | 입력 | 예상 결과 |
|------|------|----------|
| 옵션 없이 실행 | `mycli` | 도움말 표시 |
| 없는 명령어 | `mycli unknown` | 에러 + 유사 명령어 제안 |
| 없는 파일 참조 | `mycli run --config none.json` | 에러: "파일을 찾을 수 없습니다" |
| 권한 없음 | `/root/에 쓰기` | 에러: "권한이 없습니다" |
| Ctrl+C | 실행 중 | 정리 후 종료, exit 130 |

---

## 11. 완료 체크리스트

### 기능
- [ ] P0 명령어 전체 동작
- [ ] --help 완성
- [ ] --version 동작
- [ ] 에러 메시지 명확

### 품질
- [ ] 테스트 커버리지 > 80%
- [ ] 크로스 플랫폼 테스트
- [ ] 도움말 문서화

### 배포
- [ ] README 작성
- [ ] CHANGELOG 작성
- [ ] 패키지 레지스트리 배포

---

## 변경 로그

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