Prompt file imported from gymcoding/claude-nextjs-starters (
.claude/commands/git/pr.md). Copyright stays with the author.
Claude ๋ช ๋ น์ด: Pull Request
GitHub Pull Request๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ํตํฉ ๋๊ตฌ์ ๋๋ค.
์ฌ์ฉ๋ฒ
/git:pr # ํ์ฌ ๋ธ๋์น๋ก PR ์์ฑ (๋ํํ)
/git:pr "PR ์ ๋ชฉ" # ์ ๋ชฉ ์ง์ ํ์ฌ PR ์์ฑ
/git:pr --draft # Draft PR ์์ฑ
/git:pr --ready # Draft PR์ Ready๋ก ์ ํ
์ฃผ์ ๊ธฐ๋ฅ
1. ์ค๋งํธ PR ์์ฑ
- ์ปค๋ฐ ํ์คํ ๋ฆฌ ๊ธฐ๋ฐ ์ ๋ชฉ/์ค๋ช ์๋ ์์ฑ
- ๋ณ๊ฒฝ๋ ํ์ผ ๋ถ์์ผ๋ก PR ์ ํ ์๋ ๋ถ๋ฅ
- ๋ธ๋์น๋ช ์์ ์์ ์ ํ ์ถ์ถ (feature, fix, docs ๋ฑ)
2. ์๋ ๋ฉํ๋ฐ์ดํฐ ์ค์
- ๋ผ๋ฒจ ์๋ ํ ๋น (feat, fix, docs, breaking-change)
- ๋ฆฌ๋ทฐ์ด ์๋ ํ ๋น (ํ ๊ท์น ๊ธฐ๋ฐ)
- ๋ง์ผ์คํค ๋ฐ ํ๋ก์ ํธ ์ฐ๊ฒฐ
3. ํ ํ๋ฆฟ ๊ธฐ๋ฐ PR ์ค๋ช
- ์ฒดํฌ๋ฆฌ์คํธ ์๋ ์์ฑ
- ๋ณ๊ฒฝ์ฌํญ ์์ฝ
- ํ ์คํธ ๊ณํ ํฌํจ
ํ๋ก์ธ์ค
PR ์์ฑ ์ ์ ๊ฒ
-
๋ธ๋์น ์ํ ํ์ธ
- ํ์ฌ ๋ธ๋์น๊ฐ ์ต์ ์ํ์ธ์ง ํ์ธ
- ์๊ฒฉ ๋ธ๋์น ํธ์ ์ํ ์ ๊ฒ
- Uncommitted ๋ณ๊ฒฝ์ฌํญ ํ์ธ
-
๋ณ๊ฒฝ์ฌํญ ๋ถ์
- ์์ ๋ ํ์ผ ๋ชฉ๋ก ๋ฐ ํต๊ณ
- ์ถ๊ฐ/์ญ์ ๋ ์ค ์ ๊ณ์ฐ
- ๋ณ๊ฒฝ ์ ํ ๋ถ๋ฅ (feature/fix/docs/test)
-
PR ์๊ตฌ์ฌํญ ๊ฒ์ฆ
- ๋ธ๋์น๋ช ๊ท์น ์ค์ ํ์ธ
- ์ปค๋ฐ ๋ฉ์์ง ํ์ง ๊ฒ์ฌ
- ํ์ ํ์ผ ๋ณ๊ฒฝ ์ฌ๋ถ ํ์ธ
์๋ PR ๋ด์ฉ ์์ฑ
-
์ ๋ชฉ ์์ฑ ๊ท์น
๋ธ๋์น ์ ํ๋ณ ์ ๋ชฉ ํจํด: feature/user-auth โ "โจ feat: ์ฌ์ฉ์ ์ธ์ฆ ๊ธฐ๋ฅ ์ถ๊ฐ" fix/login-bug โ "๐ fix: ๋ก๊ทธ์ธ ๋ฒ๊ทธ ์์ " docs/readme โ "๐ docs: README ๋ฌธ์ ์ ๋ฐ์ดํธ" -
์ค๋ช ์๋ ์์ฑ
- ์ปค๋ฐ ๋ฉ์์ง ์์ฝ
- ์ฃผ์ ๋ณ๊ฒฝ์ฌํญ ํ์ด๋ผ์ดํธ
- ์ํฅ๋ ๋ถ์
-
์ฒดํฌ๋ฆฌ์คํธ ์์ฑ
- ์ฝ๋ ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์คํธ
- ํ ์คํธ ๊ด๋ จ ํญ๋ชฉ
- ๋ฌธ์ ์ ๋ฐ์ดํธ ํญ๋ชฉ
PR ๋ฉํ๋ฐ์ดํฐ ์ค์
-
๋ผ๋ฒจ ์๋ ํ ๋น
๋ณ๊ฒฝ์ฌํญ ๊ธฐ๋ฐ ๋ผ๋ฒจ: - ์ ํ์ผ ์ถ๊ฐ โ "feature" - ๋ฒ๊ทธ ์์ ํจํด โ "bug", "fix" - ๋ฌธ์ ํ์ผ ๋ณ๊ฒฝ โ "documentation" - ํ ์คํธ ํ์ผ โ "test" - ์ค์ /๋น๋ ํ์ผ โ "chore" - Breaking Change โ "breaking-change" -
๋ฆฌ๋ทฐ์ด ํ ๋น
- CODEOWNERS ํ์ผ ๊ธฐ๋ฐ ์๋ ํ ๋น
- ํ ๊ตฌ์ฑ์ ๋ผ์ด๋๋ก๋น ํ ๋น
- ํ์ผ๋ณ ์ ๋ฌธ๊ฐ ํ ๋น
-
์ฐ๊ฒฐ ํญ๋ชฉ
- ๊ด๋ จ Issue ์๋ ์ฐ๊ฒฐ
- ๋ง์ผ์คํค ํ ๋น
- ํ๋ก์ ํธ ๋ณด๋ ์ถ๊ฐ
PR ํ ํ๋ฆฟ
๊ธฐ๋ณธ PR ํ ํ๋ฆฟ
## ๐ ๋ณ๊ฒฝ์ฌํญ ์์ฝ
[์๋ ์์ฑ๋ ๋ณ๊ฒฝ์ฌํญ ์์ฝ]
## ๐ฏ ๋ชฉ์ ๋ฐ ๋ฐฐ๊ฒฝ
[๋ธ๋์น๋ช
๊ณผ ์ปค๋ฐ ๋ฉ์์ง ๊ธฐ๋ฐ ๋ชฉ์ ์ค๋ช
]
## ๐ง ์ฃผ์ ๋ณ๊ฒฝ๋ด์ฉ
- [ ] [๋ณ๊ฒฝ์ฌํญ 1]
- [ ] [๋ณ๊ฒฝ์ฌํญ 2]
- [ ] [๋ณ๊ฒฝ์ฌํญ 3]
## โ
์ฒดํฌ๋ฆฌ์คํธ
### ์ฝ๋ ํ์ง
- [ ] ์ฝ๋๊ฐ ํ๋ก์ ํธ์ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฆ
- [ ] Self-review ์๋ฃ
- [ ] ์ ์ ํ ์ฃผ์ ์ถ๊ฐ
- [ ] ๋ถํ์ํ console.log/debug ์ฝ๋ ์ ๊ฑฐ
### ํ
์คํธ
- [ ] ๊ธฐ์กด ํ
์คํธ ๋ชจ๋ ํต๊ณผ
- [ ] ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ํ
์คํธ ์ถ๊ฐ
- [ ] ์ฃ์ง ์ผ์ด์ค ํ
์คํธ ํฌํจ
### ๋ฌธ์ํ
- [ ] ์ฝ๋ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ๋ฌธ์ ์
๋ฐ์ดํธ
- [ ] README.md ์
๋ฐ์ดํธ (ํ์์)
- [ ] API ๋ฌธ์ ์
๋ฐ์ดํธ (ํ์์)
## ๐งช ํ
์คํธ ๋ฐฉ๋ฒ
[ํ
์คํธ ์๋๋ฆฌ์ค ๋ฐ ํ์ธ ๋ฐฉ๋ฒ]
## ๐ธ ์คํฌ๋ฆฐ์ท (UI ๋ณ๊ฒฝ ์)
[ํ์์ Before/After ์คํฌ๋ฆฐ์ท]
## ๐ ๊ด๋ จ ์ด์
Closes #[issue-number]
## ๐ ์ถ๊ฐ ๋
ธํธ
[๋ฆฌ๋ทฐ์ด๊ฐ ์์์ผ ํ ์ถ๊ฐ ์ ๋ณด]
ํนํ๋ ํ ํ๋ฆฟ
Feature PR ํ ํ๋ฆฟ
- ๊ธฐ๋ฅ ๋ช ์ธ ๋ฐ ์๊ตฌ์ฌํญ
- ์ฌ์ฉ์ ์๋๋ฆฌ์ค
- ์ฑ๋ฅ ์ํฅ๋ ๋ถ์
Bugfix PR ํ ํ๋ฆฟ
- ๋ฒ๊ทธ ์ฌํ ๋ฐฉ๋ฒ
- ๊ทผ๋ณธ ์์ธ ๋ถ์
- ์์ ๋ฐฉ๋ฒ ์ค๋ช
- ํ๊ท ๋ฐฉ์ง ๊ณํ
Documentation PR ํ ํ๋ฆฟ
- ๋ฌธ์ ๋ณ๊ฒฝ ๋ฒ์
- ๋ ์ ๋์
- ๊ฒํ ํฌ์ธํธ
๋ํํ PR ์์ฑ
PR ์์ฑ ๋ง๋ฒ์ฌ
๐ Pull Request ์์ฑ ๋ง๋ฒ์ฌ
1. ๐ ๋ณ๊ฒฝ์ฌํญ ๋ถ์ ์ค...
โ
ํ์ผ 15๊ฐ ๋ณ๊ฒฝ๋จ (+234, -67)
โ
๋ธ๋์น: feature/user-authentication
โ
๊ธฐ๋ฐ ๋ธ๋์น: main
2. ๐ท๏ธ PR ์ ํ ์๋ ๊ฐ์ง
โ โจ Feature: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
3. ๐ PR ์ ๋ชฉ ์ ์
โ "โจ feat: ์ฌ์ฉ์ ์ธ์ฆ ์์คํ
๊ตฌํ"
4. ๐ฅ ๋ฆฌ๋ทฐ์ด ์ถ์ฒ
โ @frontend-team, @security-team
5. ๐ท๏ธ ๋ผ๋ฒจ ์ ์
โ feature, authentication, breaking-change
PR์ ์์ฑํ์๊ฒ ์ต๋๊น? (y/N)
๊ณ ๊ธ ์ต์ ์ค์
โ๏ธ ๊ณ ๊ธ ์ค์
๐ ํ
ํ๋ฆฟ ์ ํ:
1. ๊ธฐ๋ณธ ํ
ํ๋ฆฟ
2. ๊ธฐ๋ฅ ๊ฐ๋ฐ ํ
ํ๋ฆฟ
3. ๋ฒ๊ทธ ์์ ํ
ํ๋ฆฟ
4. ๋ฌธ์ ์
๋ฐ์ดํธ ํ
ํ๋ฆฟ
๐ฏ ๋์ ๋ธ๋์น: main โผ
๐ฅ ๋ฆฌ๋ทฐ์ด: @team-frontend โผ
๐ท๏ธ ๋ผ๋ฒจ: feature, ui โผ
๐ ๋ง์ผ์คํค: v2.1.0 โผ
โญ ์ถ๊ฐ ์ต์
:
[ ] Draft PR๋ก ์์ฑ
[ ] Auto-merge ํ์ฑํ
[ ] ๋ธ๋์น ์๋ ์ญ์ ์ค์
GitHub Actions ํตํฉ
์๋ CI/CD ํธ๋ฆฌ๊ฑฐ
- PR ์์ฑ ์ ์๋ ๋น๋ ์์
- ํ ์คํธ ์คํ ๋ฐ ๊ฒฐ๊ณผ ํ์
- ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง ๋ฆฌํฌํธ
ํ์ง ๊ฒ์ฌ
- ESLint/Prettier ๊ฒ์ฌ
- TypeScript ํ์ ์ฒดํฌ
- ๋ณด์ ์ค์บ (Dependabot)
์๋ ์ ๋ฐ์ดํธ
- ์์กด์ฑ ์ถฉ๋ ์๋ ํด๊ฒฐ
- ์ฝ๋ ํฌ๋งทํ ์๋ ์ ์ฉ
- ๋ผ์ด์ผ์ค ํ์ธ
๊ณ ๊ธ ๊ธฐ๋ฅ
PR ์ํ ๊ด๋ฆฌ
/git:pr --status # PR ์ํ ํ์ธ
/git:pr --draft # Draft๋ก ์ ํ
/git:pr --ready # Ready for review๋ก ์ ํ
/git:pr --merge # ์๋ ๋ณํฉ (์กฐ๊ฑด ์ถฉ์กฑ์)
/git:pr --close # PR ๋ซ๊ธฐ
๋ฐฐ์น ์์
/git:pr --sync-all # ๋ชจ๋ PR ์ํ ๋๊ธฐํ
/git:pr --cleanup # ๋ณํฉ๋ PR์ ๋ธ๋์น ์ ๋ฆฌ
/git:pr --update-all # ๋ชจ๋ PR์ ์ต์ ๋ฒ ์ด์ค๋ก ์
๋ฐ์ดํธ
๋ถ์ ๋ฐ ๋ฆฌํฌํธ
/git:pr --analytics # PR ๋ถ์ ๋ฆฌํฌํธ
/git:pr --conflicts # ์ถฉ๋ ๋ฐ์ PR ๋ชฉ๋ก
/git:pr --reviews # ๋ฆฌ๋ทฐ ๋๊ธฐ ์ค์ธ PR ๋ชฉ๋ก
ํ ํ์ ๊ธฐ๋ฅ
์ฝ๋ ๋ฆฌ๋ทฐ ์ง์
- ๋ฆฌ๋ทฐ ์์ฒญ ์๋ ์๋ฆผ
- ๋ฆฌ๋ทฐ ์๋ฃ ์ํ ์ถ์
- ์น์ธ ์กฐ๊ฑด ์๋ ์ฒดํฌ
ํ๋ก์ ํธ ๊ด๋ฆฌ ์ฐ๋
- Jira/Linear ์ด์ ์ฐ๋
- ์คํ๋ฆฐํธ ๋ณด๋ ์ ๋ฐ์ดํธ
- ์์ ์๊ฐ ์ถ์
๋ณด์ ๋ฐ ๊ถํ
๊ถํ ๊ด๋ฆฌ
- PR ์์ฑ ๊ถํ ํ์ธ
- ๋ธ๋์น ๋ณดํธ ๊ท์น ์ค์
- ๋ฆฌ๋ทฐ ์น์ธ ์๊ตฌ์ฌํญ ์ฒดํฌ
๋ณด์ ๊ฒ์ฌ
- ์ํฌ๋ฆฟ ์ ๋ณด ๋์ถ ๊ฒ์ฌ
- ์์กด์ฑ ๋ณด์ ์ค์บ
- ๋ผ์ด์ผ์ค ํธํ์ฑ ํ์ธ
์ฌ์ฉ ์์
๊ธฐ๋ณธ PR ์์ฑ
/git:pr
# ๋ํํ์ผ๋ก PR ์์ฑ
/git:pr "์ฌ์ฉ์ ์ธ์ฆ ๊ธฐ๋ฅ ๊ตฌํ"
# ์ ๋ชฉ ์ง์ ํ์ฌ PR ์์ฑ
ํน์ ์ต์ ์ฌ์ฉ
/git:pr --draft --reviewer="@team-lead"
# Draft PR๋ก ์์ฑํ๊ณ ํน์ ๋ฆฌ๋ทฐ์ด ์ง์
/git:pr --template=bugfix --label="urgent"
# ๋ฒ๊ทธ ์์ ํ
ํ๋ฆฟ ์ฌ์ฉํ๊ณ urgent ๋ผ๋ฒจ ์ถ๊ฐ
๋ฌธ์ ํด๊ฒฐ
์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์
-
GitHub CLI ์ธ์ฆ ์ค๋ฅ
gh auth login์คํ ์๋ด- ํ ํฐ ๊ถํ ํ์ธ
-
๋ธ๋์น ํธ์ ์ค๋ฅ
- ์๊ฒฉ ๋ธ๋์น ์์ฑ
- ๊ถํ ๋ฌธ์ ํด๊ฒฐ
-
PR ์์ฑ ์คํจ
- ์ค๋ณต PR ํ์ธ
- ๋ฒ ์ด์ค ๋ธ๋์น ํ์ธ
๋ณต๊ตฌ ๋ฐฉ๋ฒ
- ์คํจํ PR ์ฌ์์ฑ
- ๋ฉํ๋ฐ์ดํฐ ์๋ ์์
- ํ ํ๋ฆฟ ์ฌ์ ์ฉ
์ด ์ปค๋งจ๋๋ GitHub Pull Request ์์ฑ์ ๋ชจ๋ ๊ณผ์ ์ ์๋ํํ๋ฉด์๋ ํ์ ์ํฌํ๋ก์ฐ์ ๋ง๊ฒ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.