一键导入
pr-submit
Submit PR to GitHub with auto-assigned reviewers and labels. Trigger with "submit pr", "upload pr", "/pr-submit", or "create github pr".
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Submit PR to GitHub with auto-assigned reviewers and labels. Trigger with "submit pr", "upload pr", "/pr-submit", or "create github pr".
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | pr-submit |
| description | Submit PR to GitHub with auto-assigned reviewers and labels. Trigger with "submit pr", "upload pr", "/pr-submit", or "create github pr". |
| metadata | {"author":"Yogieat Team","version":"1.0.0","argument-hint":"<optional-base-branch>"} |
생성된 PR 문서를 GitHub에 업로드하고, CODEOWNERS 기반 reviewer와 타입별 label을 자동으로 설정합니다.
# 현재 브랜치명 가져오기
BRANCH=$(git branch --show-current)
# PR 문서 파일 경로
PR_DOC=".claude/pr-drafts/${BRANCH}.md"
# 파일 존재 여부 확인
if [ ! -f "$PR_DOC" ]; then
echo "❌ PR 문서가 없습니다. 먼저 /pr-create를 실행하세요."
exit 1
fi
# PR 문서에서 제목 추출
PR_TITLE=$(grep -A 1 "# 🎯 PR 제목" "$PR_DOC" | tail -1)
# Conventional Commit 타입 추출
if [[ "$PR_TITLE" =~ ^(feat|fix|docs|style|refactor|perf|test|chore|ci|build): ]]; then
TYPE="${BASH_REMATCH[1]}"
else
echo "⚠️ 경고: Conventional Commit 형식이 아닙니다."
TYPE="unknown"
fi
타입별 Label 매핑 (.github/workflows/pr-auto-labeler.yml 기반):
| Commit Type | Label |
|---|---|
feat | ✨ Feature |
fix | 🐞 Fix |
docs | 📃 Docs |
style | 🧑🎨 Style |
refactor, perf | 🔨 Refactor |
chore, test | ⚙ Setting |
ci, build | 🌏 Deploy |
# 현재 GitHub 사용자 확인
CURRENT_USER=$(gh api user --jq .login)
# .github/CODEOWNERS 파일에서 reviewer 추출
ALL_REVIEWERS=$(cat .github/CODEOWNERS | grep -v '^#' | grep -v '^$' | sed 's/@//g' | tr '\n' ',')
# 현재 사용자를 reviewer 목록에서 제거
REVIEWERS=$(echo "$ALL_REVIEWERS" | tr ',' '\n' | grep -v "^${CURRENT_USER}$" | tr '\n' ',' | sed 's/,$//')
# 예: CODEOWNERS에 "RookieAND,youngminss"가 있고 현재 사용자가 RookieAND면
# 결과: "youngminss"
# 브랜치가 remote에 있는지 확인
if ! git rev-parse --verify "origin/${BRANCH}" >/dev/null 2>&1; then
echo "⚠️ 브랜치가 remote에 없습니다. Push 중..."
git push -u origin "$BRANCH"
fi
gh pr create \
--base <base-branch> \
--assignee @me \
--reviewer "$REVIEWERS" \
--label "$LABEL" \
--title "$PR_TITLE" \
--body-file "$PR_DOC"
# PR 생성 성공 시 임시 문서 파일 삭제
if [ $? -eq 0 ]; then
rm "$PR_DOC"
echo "✅ PR 문서 파일이 정리되었습니다."
fi
❌ 오류: PR 문서를 찾을 수 없습니다.
현재 브랜치: {branch}
찾는 파일: .claude/pr-drafts/{branch}.md
다음 명령어로 PR 문서를 먼저 생성하세요:
/pr-create
자동 대응:
/pr-create 실행⚠️ 경고: 브랜치가 remote에 없습니다.
자동으로 push를 시도합니다...
git push -u origin {branch}
❌ 오류: GitHub CLI 인증이 필요합니다.
다음 명령어로 인증하세요:
gh auth login
⚠️ 경고: Label '{label}'이 저장소에 없습니다.
Label 없이 PR을 생성합니다.
나중에 GitHub 웹에서 수동으로 추가할 수 있습니다.
스킬이 실행되면 다음 순서로 진행하세요:
브랜치 확인
git branch --show-current로 현재 브랜치 확인PR 문서 존재 확인
.claude/pr-drafts/{branch}.md 파일 존재 여부 확인/pr-create 실행PR 제목 및 타입 추출
Label 자동 결정
Reviewer 추출 (현재 사용자 제외)
gh api user --jq .login으로 현재 GitHub 사용자 확인.github/CODEOWNERS 파일 읽기@ 제거하고 목록 생성브랜치 Push 확인
git rev-parse --verify origin/{branch} 실행git push -u origin {branch} 실행PR 생성
gh pr create 명령어 실행정리 및 출력
.claude/pr-drafts/{branch}.md 삭제결과 메시지
✅ PR이 생성되었습니다!
🔗 PR URL: https://github.com/{owner}/{repo}/pull/{number}
📝 제목: {title}
👤 Assignee: @me
👥 Reviewers: {reviewers}
🏷️ Label: {label}
📄 PR 문서 파일이 정리되었습니다.
/pr-submit
main 브랜치를 베이스로 PR 생성
/pr-submit develop
develop 브랜치를 베이스로 PR 생성
User: "PR 올려줘"
User: "GitHub에 PR 생성해줘"
User: "pull request 제출해줘"
시나리오 1: PR 문서가 이미 있는 경우
$ /pr-submit
✅ PR 문서를 찾았습니다: .claude/pr-drafts/hotfix-prod-ci-health-check.md
📝 PR 제목: fix: CI/CD health check 타이밍 개선 및 수동 배포 기능 추가
🏷️ 자동 Label: 🐞 Fix
👤 현재 사용자: RookieAND
👥 자동 Reviewers: youngminss (현재 사용자 제외됨)
⚠️ 브랜치가 remote에 없습니다. Push 중...
To github.com:Nexters/hereeat.git
* [new branch] hotfix/prod-ci-health-check -> hotfix/prod-ci-health-check
🚀 PR 생성 중...
✅ PR이 생성되었습니다!
🔗 PR URL: https://github.com/Nexters/hereeat/pull/82
📝 제목: fix: CI/CD health check 타이밍 개선 및 수동 배포 기능 추가
👤 Assignee: RookieAND
👥 Reviewers: youngminss (현재 사용자 제외)
🏷️ Label: 🐞 Fix
📄 PR 문서 파일이 정리되었습니다.
시나리오 2: PR 문서가 없는 경우
$ /pr-submit
❌ PR 문서를 찾을 수 없습니다.
현재 브랜치: feature/new-component
찾는 파일: .claude/pr-drafts/feature-new-component.md
📝 PR 문서를 먼저 생성합니다...
[pr-create 스킬 자동 실행]
✅ PR 문서가 생성되었습니다!
📄 파일 경로: .claude/pr-drafts/feature-new-component.md
🚀 이제 PR을 생성합니다...
✅ PR이 생성되었습니다!
🔗 PR URL: https://github.com/Nexters/hereeat/pull/83
| Commit Type | Label | 설명 |
|---|---|---|
feat | ✨ Feature | 새로운 기능 추가 |
fix | 🐞 Fix | 버그 수정 |
docs | 📃 Docs | 문서 작업 |
style | 🧑🎨 Style | 코드 스타일 변경 |
refactor | 🔨 Refactor | 리팩토링 |
perf | 🔨 Refactor | 성능 개선 |
test | ⚙ Setting | 테스트 추가/수정 |
chore | ⚙ Setting | 빌드/설정 변경 |
ci | 🌏 Deploy | CI/CD 변경 |
build | 🌏 Deploy | 빌드 시스템 변경 |
자동 설정 항목:
pr-create에서 생성 시 scope가 제거됨 (예: feat(ci): → feat:)PR 문서 자동 생성:
/pr-create 실행정리 작업:
.claude/pr-drafts/{branch}.md 자동 삭제권한 처리:
git push 권한 오류 시 사용자에게 수동 push 안내gh pr create 권한 오류 시 인증 방법 안내의존성:
git 명령어 필수gh (GitHub CLI) 필수.github/CODEOWNERS 파일 권장.github/workflows/pr-auto-labeler.yml 참고용pr-create와의 관계:
pr-create: PR 문서만 생성 (.md 파일)pr-submit: PR 문서를 GitHub에 업로드 (없으면 자동 생성)# 1단계: PR 문서 생성
/pr-create
# 2단계: 문서 검토 및 수정
# .claude/pr-drafts/{branch}.md 파일 열어서 내용 확인/수정
# 3단계: GitHub에 업로드
/pr-submit
# PR 문서 없으면 자동 생성 → 바로 업로드
/pr-submit
# develop 브랜치를 베이스로 PR 생성
/pr-create develop
/pr-submit develop