| 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 Submit to GitHub
์์ฑ๋ PR ๋ฌธ์๋ฅผ GitHub์ ์
๋ก๋ํ๊ณ , CODEOWNERS ๊ธฐ๋ฐ reviewer์ ํ์
๋ณ label์ ์๋์ผ๋ก ์ค์ ํฉ๋๋ค.
How It Works
1. PR ๋ฌธ์ ์กด์ฌ ํ์ธ
BRANCH=$(git branch --show-current)
PR_DOC=".claude/pr-drafts/${BRANCH}.md"
if [ ! -f "$PR_DOC" ]; then
echo "โ PR ๋ฌธ์๊ฐ ์์ต๋๋ค. ๋จผ์ /pr-create๋ฅผ ์คํํ์ธ์."
exit 1
fi
2. PR ์ ๋ชฉ ์ถ์ถ ๋ฐ ํ์
๋ถ์
PR_TITLE=$(grep -A 1 "# ๐ฏ PR ์ ๋ชฉ" "$PR_DOC" | tail -1)
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
3. Label ์๋ ๊ฒฐ์
ํ์
๋ณ 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 |
4. Reviewer ์๋ ์ถ์ถ (ํ์ฌ ์ฌ์ฉ์ ์ ์ธ)
CURRENT_USER=$(gh api user --jq .login)
ALL_REVIEWERS=$(cat .github/CODEOWNERS | grep -v '^#' | grep -v '^$' | sed 's/@//g' | tr '\n' ',')
REVIEWERS=$(echo "$ALL_REVIEWERS" | tr ',' '\n' | grep -v "^${CURRENT_USER}$" | tr '\n' ',' | sed 's/,$//')
5. ๋ธ๋์น Push ํ์ธ
if ! git rev-parse --verify "origin/${BRANCH}" >/dev/null 2>&1; then
echo "โ ๏ธ ๋ธ๋์น๊ฐ remote์ ์์ต๋๋ค. Push ์ค..."
git push -u origin "$BRANCH"
fi
6. PR ์์ฑ
gh pr create \
--base <base-branch> \
--assignee @me \
--reviewer "$REVIEWERS" \
--label "$LABEL" \
--title "$PR_TITLE" \
--body-file "$PR_DOC"
7. ์ ๋ฆฌ ์์
if [ $? -eq 0 ]; then
rm "$PR_DOC"
echo "โ
PR ๋ฌธ์ ํ์ผ์ด ์ ๋ฆฌ๋์์ต๋๋ค."
fi
Error Handling
PR ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ
โ ์ค๋ฅ: PR ๋ฌธ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
ํ์ฌ ๋ธ๋์น: {branch}
์ฐพ๋ ํ์ผ: .claude/pr-drafts/{branch}.md
๋ค์ ๋ช
๋ น์ด๋ก PR ๋ฌธ์๋ฅผ ๋จผ์ ์์ฑํ์ธ์:
/pr-create
์๋ ๋์:
- PR ๋ฌธ์๊ฐ ์์ผ๋ฉด ์๋์ผ๋ก
/pr-create ์คํ
- ๋ฌธ์ ์์ฑ ์๋ฃ ํ ๋ค์ PR submit ์งํ
๋ธ๋์น๊ฐ remote์ ์๋ ๊ฒฝ์ฐ
โ ๏ธ ๊ฒฝ๊ณ : ๋ธ๋์น๊ฐ remote์ ์์ต๋๋ค.
์๋์ผ๋ก push๋ฅผ ์๋ํฉ๋๋ค...
git push -u origin {branch}
GitHub CLI ์ธ์ฆ ์คํจ
โ ์ค๋ฅ: GitHub CLI ์ธ์ฆ์ด ํ์ํฉ๋๋ค.
๋ค์ ๋ช
๋ น์ด๋ก ์ธ์ฆํ์ธ์:
gh auth login
Label์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ
โ ๏ธ ๊ฒฝ๊ณ : Label '{label}'์ด ์ ์ฅ์์ ์์ต๋๋ค.
Label ์์ด PR์ ์์ฑํฉ๋๋ค.
๋์ค์ GitHub ์น์์ ์๋์ผ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค.
Execution Steps
์คํฌ์ด ์คํ๋๋ฉด ๋ค์ ์์๋ก ์งํํ์ธ์:
-
๋ธ๋์น ํ์ธ
git branch --show-current๋ก ํ์ฌ ๋ธ๋์น ํ์ธ
- ์ธ์๋ก ๋ฒ ์ด์ค ๋ธ๋์น๊ฐ ์ฃผ์ด์ก์ผ๋ฉด ์ฌ์ฉ, ์์ผ๋ฉด main ์ฌ์ฉ
-
PR ๋ฌธ์ ์กด์ฌ ํ์ธ
.claude/pr-drafts/{branch}.md ํ์ผ ์กด์ฌ ์ฌ๋ถ ํ์ธ
- ์์ผ๋ฉด ์๋์ผ๋ก
/pr-create ์คํ
- ์์ฑ ํ ๋ค์ ๋จ๊ณ ์งํ
-
PR ์ ๋ชฉ ๋ฐ ํ์
์ถ์ถ
- PR ๋ฌธ์์์ ์ ๋ชฉ ๋ผ์ธ ์ถ์ถ (grep "# ๐ฏ PR ์ ๋ชฉ" ๋ค์ ์ค)
- Conventional Commit ํจํด ๋งค์นญ์ผ๋ก ํ์
์ถ์ถ
-
Label ์๋ ๊ฒฐ์
- ์ถ์ถํ ํ์
์ Label ๋งคํ ํ
์ด๋ธ๊ณผ ๋งค์นญ
- ํด๋นํ๋ label ์ ํ
-
Reviewer ์ถ์ถ (ํ์ฌ ์ฌ์ฉ์ ์ ์ธ)
gh api user --jq .login์ผ๋ก ํ์ฌ GitHub ์ฌ์ฉ์ ํ์ธ
.github/CODEOWNERS ํ์ผ ์ฝ๊ธฐ
@ ์ ๊ฑฐํ๊ณ ๋ชฉ๋ก ์์ฑ
- ํ์ฌ ์ฌ์ฉ์๋ฅผ ๋ชฉ๋ก์์ ์ ๊ฑฐ (์์ ์๊ฒ ๋ฆฌ๋ทฐ ์์ฒญํ์ง ์์)
- ์ผํ๋ก ์ฐ๊ฒฐ๋ ์ต์ข
reviewer ๋ชฉ๋ก ์์ฑ
-
๋ธ๋์น Push ํ์ธ
git rev-parse --verify origin/{branch} ์คํ
- ์์ผ๋ฉด
git push -u origin {branch} ์คํ
- ๊ถํ ์ค๋ฅ ์ ์ฌ์ฉ์์๊ฒ ์๋ push ์๋ด
-
PR ์์ฑ
gh pr create ๋ช
๋ น์ด ์คํ
- ๋ชจ๋ ํ๋ผ๋ฏธํฐ ์๋ ์ค์
-
์ ๋ฆฌ ๋ฐ ์ถ๋ ฅ
- ์ฑ๊ณต ์
.claude/pr-drafts/{branch}.md ์ญ์
- PR URL ์ถ๋ ฅ
-
๊ฒฐ๊ณผ ๋ฉ์์ง
โ
PR์ด ์์ฑ๋์์ต๋๋ค!
๐ PR URL: https://github.com/{owner}/{repo}/pull/{number}
๐ ์ ๋ชฉ: {title}
๐ค Assignee: @me
๐ฅ Reviewers: {reviewers}
๐ท๏ธ Label: {label}
๐ PR ๋ฌธ์ ํ์ผ์ด ์ ๋ฆฌ๋์์ต๋๋ค.
Usage Examples
๊ธฐ๋ณธ ์ฌ์ฉ
/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
Label Mapping
| 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 | ๋น๋ ์์คํ
๋ณ๊ฒฝ |
Notes
-
์๋ ์ค์ ํญ๋ชฉ:
- ๐ค Assignee: @me (ํ์ฌ GitHub CLI ์ธ์ฆ ์ฌ์ฉ์)
- ๐ฅ Reviewers: CODEOWNERS ํ์ผ ๊ธฐ๋ฐ ์๋ ์ถ์ถ (ํ์ฌ ์ฌ์ฉ์๋ ์๋ ์ ์ธ)
- ๐ท๏ธ Label: PR ์ ๋ชฉ์ Conventional Commit ํ์
๊ธฐ๋ฐ ์๋ ์ ํ
- PR ์ ๋ชฉ์
pr-create์์ ์์ฑ ์ scope๊ฐ ์ ๊ฑฐ๋จ (์: feat(ci): โ feat:)
- ๐ Base branch: ์ธ์๋ก ์ง์ ๋๋ main ๊ธฐ๋ณธ๊ฐ
-
PR ๋ฌธ์ ์๋ ์์ฑ:
- PR ๋ฌธ์๊ฐ ์์ผ๋ฉด ์๋์ผ๋ก
/pr-create ์คํ
- ์ฌ์ฉ์ ๊ฐ์
์์ด ๋ฌธ์ ์์ฑ โ PR ์
๋ก๋ ์๋ ์งํ
-
์ ๋ฆฌ ์์
:
- PR ์์ฑ ์ฑ๊ณต ์
.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์ ์
๋ก๋ (์์ผ๋ฉด ์๋ ์์ฑ)
- ๋ ์คํฌ์ ์กฐํฉํ์ฌ ์ ์ฐํ ์ํฌํ๋ก์ฐ ๊ตฌ์ฑ ๊ฐ๋ฅ
Workflow Patterns
ํจํด 1: ๋ถ๋ฆฌ ์คํ (๊ฒํ ํ ์
๋ก๋)
/pr-create
/pr-submit
ํจํด 2: ์์คํ
์คํ (์๋ํ)
/pr-submit
ํจํด 3: ๋ฒ ์ด์ค ๋ธ๋์น ์ง์
/pr-create develop
/pr-submit develop