커밋되지 않은 변경 사항을 포함한 현재 브랜치에서 GitHub PR을 생성합니다. 템플릿을 탐색하고, 변경 사항을 분석하며, 푸시 기능을 제공합니다.
한 줄 평가 — 다음 사람 도와주세요
언제 쓰나
GitHub PR을 생성할 때
SKILL.md
Lattice 한국어 번역 · 원본 affaan-m/everything-claude-code (841beea). 복사 → 저장하면 Claude Code가 인식합니다.
---
description: "현재 브랜치의 푸시되지 않은 커밋으로 GitHub PR 생성 — 템플릿 발견, 변경 사항 분석, 푸시"
argument-hint: "[base-branch] (기본값: main)"
---
# 풀 리퀘스트 생성
> Wirasm의 PRPs-agentic-eng에서 각색되었습니다. PRP 워크플로 시리즈의 일부입니다.
**입력**: `$ARGUMENTS` — 선택 사항이며, 베이스 브랜치 이름 및/또는 플래그(예: `--draft`)를 포함할 수 있습니다.
**`$ARGUMENTS` 파싱**:
- 인식된 플래그(`--draft`) 추출
- 남은 비플래그 텍스트를 베이스 브랜치 이름으로 처리
- 지정되지 않은 경우 베이스 브랜치를 `main`으로 기본 설정
---
## 1단계 — 유효성 검사
전제 조건 확인:
```bash
git branch --show-current
git status --short
git log origin/<base>..HEAD --oneline
```
| 확인 | 조건 | 실패 시 조치 |
|--- |--- |--- |
| 베이스 브랜치에 없음 | 현재 브랜치 ≠ 베이스 | 중지: "먼저 기능 브랜치로 전환해주세요." |
| 작업 디렉토리 깨끗함 | 커밋되지 않은 변경 사항 없음 | 경고: "커밋되지 않은 변경 사항이 있습니다. 먼저 커밋하거나 스태시해주세요. `/prp-commit`을 사용하여 커밋할 수 있습니다." |
| 앞선 커밋 존재 | `git log origin/<base>..HEAD`가 비어 있지 않음 | 중지: "`<base>`보다 앞선 커밋이 없습니다. PR할 것이 없습니다." |
| 기존 PR 없음 | `gh pr list --head <branch> --json number`가 비어 있음 | 중지: "PR이 이미 존재합니다: #`<number>`. `gh pr view <number> --web`을 사용하여 열어주세요." |
모든 확인이 통과하면 계속 진행합니다.
---
## 2단계 — 탐색
### PR 템플릿
다음 순서로 PR 템플릿을 검색합니다:
1. `.github/PULL_REQUEST_TEMPLATE/` 디렉토리 — 존재하는 경우, 파일을 나열하고 사용자에게 선택하도록 하거나 (`default.md`를 사용)
2. `.github/PULL_REQUEST_TEMPLATE.md`
3. `.github/pull_request_template.md`
4. `docs/pull_request_template.md`
찾으면 해당 템플릿을 읽고 PR 본문의 구조로 사용합니다.
### 커밋 분석
```bash
git log origin/<base>..HEAD --format="%h %s" --reverse
```
다음 내용을 결정하기 위해 커밋을 분석합니다:
- **PR 제목**: 타입 접두사가 있는 컨벤셔널 커밋 형식 사용 — `feat: ...`, `fix: ...` 등.
- 여러 타입인 경우, 주요 타입을 사용
- 단일 커밋인 경우, 메시지를 그대로 사용
- **변경 요약**: 타입/영역별로 커밋 그룹화
### 파일 분석
```bash
git diff origin/<base>..HEAD --stat
git diff origin/<base>..HEAD --name-only
```
변경된 파일을 다음으로 분류합니다: 소스, 테스트, 문서, 구성, 마이그레이션.
### PRP 아티팩트
관련 PRP 아티팩트를 확인합니다:
- `.claude/PRPs/reports/` — 구현 보고서
- `.claude/PRPs/plans/` — 실행된 계획
- `.claude/PRPs/prds/` — 관련 PRD
이러한 아티팩트가 존재하는 경우 PR 본문에 참조합니다.
---
## 3단계 — 푸시
```bash
git push -u origin HEAD
```
분기로 인해 푸시가 실패하는 경우:
```bash
git fetch origin
git rebase origin/<base>
git push -u origin HEAD
```
리베이스 충돌이 발생하면 중지하고 사용자에게 알립니다.
---
## 4단계 — 생성
### 템플릿 사용
2단계에서 PR 템플릿이 발견된 경우, 커밋 및 파일 분석을 사용하여 각 섹션을 채웁니다. 모든 템플릿 섹션을 보존하며 — 해당되지 않는 섹션은 제거하는 대신 "N/A"로 남겨둡니다.
### 템플릿 미사용
이 기본 형식을 사용합니다:
```markdown
## Summary
<이 PR이 하는 일과 그 이유에 대한 1-2 문장 설명>
## Changes
<영역별로 그룹화된 변경 사항 목록>
## Files Changed
<변경 유형(추가/수정/삭제)이 포함된 변경된 파일의 표 또는 목록>
## Testing
<변경 사항이 테스트된 방법에 대한 설명 또는 "테스트 필요">
## Related Issues
<#N에 연결된 이슈(Closes/Fixes/Relates to 포함) 또는 "없음">
```
### PR 생성
```bash
gh pr create \
--title "<PR title>" \
--base <base-branch> \
--body "<PR body>"
# $ARGUMENTS에서 --draft 플래그가 파싱되었다면 --draft 추가
```
---
## 5단계 — 검증
```bash
gh pr view --json number,url,title,state,baseRefName,headRefName,additions,deletions,changedFiles
gh pr checks --json name,status,conclusion 2>/dev/null || true
```
---
## 6단계 — 출력
사용자에게 보고:
```
PR #<number>: <제목>
URL: <url>
브랜치: <head> → <base>
변경 사항: +<추가> -<삭제> (<changedFiles>개 파일)
CI 확인: <상태 요약 또는 "대기 중" 또는 "구성되지 않음">
참조된 아티팩트:
- <PR 본문에 연결된 PRP 보고서/계획>
다음 단계:
- gh pr view <number> --web → 브라우저에서 열기
- /code-review <number> → PR 검토
- gh pr merge <number> → 준비되면 병합
```
---
## 예외 상황
- **`gh` CLI 없음**: 중지: "GitHub CLI (`gh`)가 필요합니다. 설치: <https://cli.github.com/>"
- **인증되지 않음**: 중지: "먼저 `gh auth login`을 실행해주세요."
- **강제 푸시 필요**: 원격 저장소가 분기되었고 리베이스가 완료된 경우, `git push --force-with-lease`를 사용합니다 (`--force`는 절대 사용하지 마세요).
- **여러 PR 템플릿**: `.github/PULL_REQUEST_TEMPLATE/`에 여러 파일이 있는 경우, 파일을 나열하고 사용자에게 선택하도록 요청합니다.
- **대규모 PR (>20개 파일)**: PR 크기에 대해 경고합니다. 변경 사항이 논리적으로 분리될 수 있다면 분할하도록 제안합니다.