# Create Pr

> 현재 브랜치의 변경사항을 분석하여 GitHub PR을 생성하거나 기존 PR 본문을 업데이트하는 스킬. "PR 만들어줘", "풀리퀘 올려줘", "PR 생성해줘", "pull request 만들어줘", "PR 본문 업데이트해줘" 등의 표현이 나오면 반드시 이 스킬을 사용할 것.

- Skill: `gagip/create-pr` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gagip/create-pr`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gagip/create-pr/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: gagip (https://skillmd.com/u/gagip)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/gagip/create-pr

---


## 작업 순서

### 0. 레포 소유자·visibility 확인 (STOP 생략 여부 판단용)

```bash
gh repo view --json owner,visibility -q '.owner.login + " " + .visibility'
gh api user -q .login
```

레포 소유자가 위 `gh api user`로 확인한 **내 개인 계정**과 같고 visibility가 `PRIVATE`이면 "개인 private 레포"로 판단한다 — 3단계 STOP을 생략한다 (아래 3단계 참고). 그 외(공개 레포이거나 소유자가 다른 계정/조직)에는 기존대로 STOP을 지킨다.

### 1. 변경사항 수집

base 브랜치 감지:
```bash
git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/origin/||'
```
감지 실패 시 `main`을 기본값으로 사용.

변경사항 확인 (감지한 base 브랜치로 대체):
```bash
git log <base>..<HEAD> --oneline
git diff <base>...<HEAD> --stat
```

필요시 주요 파일 diff 상세 확인.

### 2. remote push 확인

```bash
git status -sb
```

현재 브랜치가 remote에 없으면 PR 생성 전에 push:
```bash
git push -u origin HEAD
```

### 3. PR 본문 초안 작성 후 대기 [STOP]

아래 템플릿으로 작성:

```markdown
## Summary
<!-- 1-2문장 요약 -->

## Key Changes
<!-- 주요 변경사항 목록 -->
-

## Technical Details
<!-- 구현 방식·아키텍처 변경·핵심 로직 -->

## Rationale
<!-- 이 방식을 선택한 이유·검토한 대안 -->
```

- 개조식으로 작성
- 초안 작성 후 사용자에게 출력한다
- **0단계에서 "개인 private 레포"로 판단된 경우**: 대기하지 않고 바로 4단계로 진행한다
- **그 외의 경우**: **반드시 여기서 멈출 것**. 수정 요청이 오면 본문을 수정한 뒤 다시 대기할 것. 사용자가 명시적으로 생성을 지시("올려줘", "생성해줘", "만들어줘" 등)하기 전까지 4단계를 실행하지 말 것. 스킬 호출 자체를 PR 생성 승인으로 간주하지 말 것

### 4. PR 생성 또는 업데이트 [사용자 승인 후에만 실행]

PR 존재 여부 확인:
```bash
gh pr view --json number,url 2>/dev/null
```

**PR이 없는 경우** — 생성 (기본 ready):
```bash
gh pr create --title "<PR 제목>" --body "$(cat <<'EOF'
<PR 본문>
EOF
)"
```

사용자가 "draft로", "리뷰 준비 안 됐어" 등 명시적으로 요청한 경우에만 `--draft` 옵션을 추가한다.

**PR이 이미 있는 경우** — 업데이트:

기존 본문을 먼저 읽어 내용을 보존한다:
```bash
gh pr view --json body --jq '.body'
```

기존 본문을 기반으로 필요한 부분만 수정하여 업데이트:
```bash
gh pr edit --title "<PR 제목>" --body "$(cat <<'EOF'
<PR 본문>
EOF
)"
```

- 기존 본문의 구조와 내용을 최대한 유지하고, 변경된 부분만 반영한다
- draft/ready for review 상태는 변경하지 않는다

- 필요시 `--reviewer`, `--label` 옵션 추가
- 완료 후 PR URL 사용자에게 전달

## 행동 원칙

- 스킬 호출 자체를 PR 생성 승인으로 간주하지 않는다 — 반드시 사용자 명시적 지시 후에만 생성한다 (단, 0단계에서 판단한 개인 private 레포는 예외 — 초안만 보여주고 바로 생성까지 진행)
- PR 제목은 `<type>: <요약>` 형식을 따른다 (commit-guidelines.md의 커밋 타입 기준)
- remote push는 PR 생성에 필요한 경우에만 자동으로 수행한다
- PR은 기본적으로 ready(non-draft)로 생성한다 — 사용자가 명시적으로 draft를 요청한 경우에만 `--draft` 옵션을 추가한다
- PR 업데이트 시 draft/ready for review 상태는 변경하지 않는다
- PR 본문 업데이트 시 기존 본문을 먼저 읽고 내용을 기반으로 필요한 부분만 수정한다 — 전체를 새로 작성하지 않는다
- **PR 본문에는 외부 협업자가 알 필요 없거나 이해할 수 없는 private·내부 전용 정보를 넣지 않는다** — 로컬 계획서(`.private/plans`) 내용, 개인 메모, 로컬 경로·내부 IP, 내부 임시 분석/디버깅 흔적 등. 공유 가능한 형태로 요약하거나 제외한다

