코드리뷰by affaan-m
PR 생성
커밋되지 않은 변경 사항을 포함한 현재 브랜치에서 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 크기에 대해 경고합니다. 변경 사항이 논리적으로 분리될 수 있다면 분할하도록 제안합니다.
필요한 도구
호버하면 설명CC
설치 + 호출 (2단계)
Claude Code CLI 기준.
- 1
SKILL.md 저장
아래 버튼으로 복사 → 다음 경로로 저장.
~/.claude/skills/everything-claude-code-pr/SKILL.md - 2
호출
Claude Code 채팅창에서 자연어로 부르면 자동 발동:
예) GitHub PR을 생성할 때
트리거가 안 잡히면 SKILL.md의
description줄에 더 구체적인 한국어 키워드를 추가해보세요.