Skip to main content

git-teacher-review

Automated review request workflow โ€” handles branch creation, commit, push, and PR creation as one step. Hides Git branch jargon from users and presents it as "a safe workspace to show your teammates." Korean triggers โ€” "PR ๋งŒ๋“ค์–ด์ค˜", "๊ฒ€ํ†  ์š”์ฒญ", "๋ฆฌ๋ทฐ ์š”์ฒญ", "์ˆ˜์ • ์ œ์•ˆ", "ํŒ€์›ํ•œํ…Œ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์–ด", "ํ™•์ธ ์š”์ฒญ". English triggers โ€” "create PR", "pull request", "request review", "show teammates".

Source facts

Repository
fivetaku/gptaku-plugins-codex
Last source activity
September 8, 2026 at 07:59
Detected SKILL.md language
Korean
Stars
128
Forks
22

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
name
git-teacher-review
description
Automated review request workflow โ€” handles branch creation, commit, push, and PR creation as one step. Hides Git branch jargon from users and presents it as "a safe workspace to show your teammates." Korean triggers โ€” "PR ๋งŒ๋“ค์–ด์ค˜", "๊ฒ€ํ†  ์š”์ฒญ", "๋ฆฌ๋ทฐ ์š”์ฒญ", "์ˆ˜์ • ์ œ์•ˆ", "ํŒ€์›ํ•œํ…Œ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์–ด", "ํ™•์ธ ์š”์ฒญ". English triggers โ€” "create PR", "pull request", "request review", "show teammates".
# ๊ฒ€ํ†  ์š”์ฒญํ•˜๊ธฐ โ€” Phase 5 (๋ฐ”๋ฅด๋‹ค ๊นƒ์„ ์ƒ โ€” Codex) Branch ์ƒ์„ฑ โ†’ Commit โ†’ Push โ†’ PR ์ƒ์„ฑ์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. Branch ๊ฐœ๋…์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ˆจ๊ธฐ๊ณ  "์•ˆ์ „ํ•œ ์ž‘์—… ๊ณต๊ฐ„"์œผ๋กœ ์„ค๋ช…ํ•œ๋‹ค. > ์„ค๋ช…ยท๊ต์œก ์‹œ `git-teacher-help`์˜ ยง๊ต์œก ์›์น™(`shared/questioning-policy.md` ยง3 Teaching)์„ ๋”ฐ๋ฅธ๋‹ค. "๊ฒ€ํ†  ์š”์ฒญ(PR)"์€ Google Docs "์ˆ˜์ • ์ œ์•ˆ" ๋ชจ๋“œ ๋น„์œ ๋กœ ์„ค๋ช…ํ•œ๋‹ค. ๊ฒ๋จน์€ ์ดˆ๋ณด๋ฉด ์›์ƒท ๊ธˆ์ง€(ยง2a), ๊ทธ๋ƒฅ PR๋งŒ ์›ํ•˜๋ฉด ๊ฐ•์˜ ์—†์ด ์ง„ํ–‰(ยง2c). > Codex CLI์—๋Š” ๊ฐ๊ด€์‹ ์นด๋“œ UI๊ฐ€ ์—†๋‹ค. ๊ฒฐ์ •์ด ํ•„์š”ํ•œ ๊ณณ์€ `shared/questioning-policy.md` ยงA์˜ **์ฑ„ํŒ… ๋ฒˆํ˜ธํ˜• ์„ ํƒ์ง€ ๋ธ”๋ก**์œผ๋กœ ๋ฌป๋Š”๋‹ค. ## ์‹คํ–‰ ์ˆœ์„œ ### Step 1: ๋ณ‘๋ ฌ ์ƒํƒœ ์ˆ˜์ง‘ ๋‹ค์Œ ๋ช…๋ น์„ **๋ณ‘๋ ฌ๋กœ(๊ฐ€๋Šฅํ•œ ํ•œ ํ•จ๊ป˜)** ์‹คํ–‰ํ•œ๋‹ค: ```bash git rev-parse --is-inside-work-tree # .git ์กด์žฌ ํ™•์ธ git symbolic-ref --short HEAD # ํ˜„์žฌ branch (detached HEAD ๊ฐ์ง€) git status --porcelain # ๋ณ€๊ฒฝ ํŒŒ์ผ ๋ชฉ๋ก git rev-list --count @{u}..HEAD 2>/dev/null || git rev-list --count HEAD 2>/dev/null # ์˜ฌ๋ฆฌ์ง€ ์•Š์€ commit ์ˆ˜ (upstream ์—†์œผ๋ฉด ์ „์ฒด commit ์ˆ˜๋กœ ๋Œ€์ฒด) git remote get-url origin 2>/dev/null # ์›๊ฒฉ ์ €์žฅ์†Œ URL gh auth status 2>&1 # GitHub CLI ๋กœ๊ทธ์ธ ์ƒํƒœ ``` ### Step 2: ์•ˆ์ „ ๊ฒ€์‚ฌ 1. **`.git` ์—†์Œ**: "์—ฌ๊ธฐ๋Š” Git ํ”„๋กœ์ ํŠธ ํด๋”๊ฐ€ ์•„๋‹ˆ์—์š”. '๊นƒ ์‹œ์ž‘ํ•ด์ค˜'๋กœ ๋จผ์ € ์„ค์ •ํ•˜์„ธ์š”." โ†’ ์ค‘๋‹จ 2. **Detached HEAD**: "์•ˆ์ „ํ•œ ์œ„์น˜์—์„œ ๋ฒ—์–ด๋‚ฌ์–ด์š”. ์ž๋™์œผ๋กœ ๋Œ์•„๊ฐˆ๊ฒŒ์š”." โ†’ `git checkout main` (๋˜๋Š” `master`) ์‹คํ–‰ ํ›„ ์žฌ์‹œ๋„ 3. **์›๊ฒฉ ์ €์žฅ์†Œ ์—†์Œ**: "GitHub์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์•„์š”. '๊นƒ ์‹œ์ž‘ํ•ด์ค˜'๋กœ ๋จผ์ € ์„ค์ •ํ•˜์„ธ์š”." โ†’ ์ค‘๋‹จ 4. **gh ๋ฏธ๋กœ๊ทธ์ธ**: "GitHub CLI์— ๋กœ๊ทธ์ธ๋˜์–ด ์žˆ์ง€ ์•Š์•„์š”. '๊นƒ ์‹œ์ž‘ํ•ด์ค˜'๋กœ ์„ค์ •ํ•˜์„ธ์š”." โ†’ ์ค‘๋‹จ 5. **Merge Conflict** (`UU`, `AA` ๋“ฑ ๊ฐ์ง€ ์‹œ): ์ถฉ๋Œ ํ•ด๊ฒฐ ์•ˆ๋‚ด (์•„๋ž˜ "์ถฉ๋Œ ํ•ด๊ฒฐ" ์„น์…˜ ์ฐธ์กฐ) โ†’ ์ค‘๋‹จ 6. **๋ณ€๊ฒฝ ์‚ฌํ•ญ ํŒ๋‹จ**: ์•„๋ž˜ ๋‘ ์กฐ๊ฑด์„ **๋ชจ๋‘** ํ™•์ธํ•œ๋‹ค: - `git status --porcelain` ๊ฒฐ๊ณผ (์ˆ˜์ •๋œ ํŒŒ์ผ ์กด์žฌ ์—ฌ๋ถ€) - `git rev-list --count @{u}..HEAD` ๊ฒฐ๊ณผ (์˜ฌ๋ฆฌ์ง€ ์•Š์€ commit ์กด์žฌ ์—ฌ๋ถ€; upstream ๋ฏธ์„ค์ • ์‹œ ์ „์ฒด commit ์ˆ˜๋กœ ๋Œ€์ฒด) - ๋‘˜ ๋‹ค ๋น„์–ด์žˆ์œผ๋ฉด: "๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋„ ์—†๊ณ , ์˜ฌ๋ฆฌ์ง€ ์•Š์€ ์ €์žฅ๋„ ์—†์–ด์š”. ํŒŒ์ผ์„ ์ˆ˜์ •ํ•œ ๋’ค ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”." โ†’ ์ค‘๋‹จ - ์ˆ˜์ •๋œ ํŒŒ์ผ์€ ์—†์ง€๋งŒ ๋ฏธ์ „์†ก commit์ด ์žˆ์œผ๋ฉด: ์ด๋ฏธ ์ €์žฅ(save)๋œ ๋‚ด์šฉ์œผ๋กœ PR ์ง„ํ–‰ (Step 5์—์„œ commit ์Šคํ‚ต) 7. **์ด๋ฏธ main/master๊ฐ€ ์•„๋‹Œ branch์— ์žˆ์Œ**: ํ˜„์žฌ branch์—์„œ ๊ทธ๋Œ€๋กœ ์ง„ํ–‰ (์ƒˆ branch ์ƒ์„ฑ ์Šคํ‚ต) ### Step 3: ์ž‘์—… ์„ค๋ช… ์š”์ฒญ ๋จผ์ € ๋น„์œ ๋กœ ์•ˆ์‹ฌ์‹œํ‚จ๋‹ค: ``` ๊ฒ€ํ†  ์š”์ฒญ(PR)์„ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š”. Google Docs์—์„œ "์ˆ˜์ • ์ œ์•ˆ" ๋ชจ๋“œ ์•„์‹œ์ฃ ? ์›๋ณธ์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ , "์ด๋ ‡๊ฒŒ ๋ฐ”๊พธ๋ฉด ์–ด๋–จ๊นŒ์š”?" ํ•˜๊ณ  ๋ณด๋‚ด๋Š” ๊ฑฐ์˜ˆ์š”. ``` ๊ทธ๋‹ค์Œ ์ฑ„ํŒ… ๋ฒˆํ˜ธํ˜• ์„ ํƒ์ง€๋กœ ๋ฌป๋Š”๋‹ค (`shared/questioning-policy.md` ยงA) โ€” diff๋‚˜ ์ตœ๊ทผ commit์—์„œ ์„ค๋ช…์„ **์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋ฌป์ง€ ์•Š๊ณ ** ์ถ”๋ก ์•ˆ์„ ์ œ์‹œํ•˜๊ณ  ํ™•์ธ๋งŒ ๋ฐ›๋Š”๋‹ค: ```text ์งˆ๋ฌธ: ์–ด๋–ค ์ž‘์—…์„ ํ–ˆ๋Š”์ง€ ํ•œ ์ค„๋กœ ์ ์–ด์ฃผ์„ธ์š”. 1. ์ง์ ‘ ์ž…๋ ฅ โ€” ํ•œ ์ค„๋กœ ์•Œ๋ ค์ฃผ์„ธ์š” (์˜ˆ: "๋ฉ”์ธ ํŽ˜์ด์ง€ ๋””์ž์ธ ๋ณ€๊ฒฝ", "์˜คํƒ€ ์ˆ˜์ •") 2. ์ž๋™ ์ƒ์„ฑ โ€” ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ถ„์„ํ•ด์„œ ์„ค๋ช…์„ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์š” 3. ๋ฌธ์žฅ์œผ๋กœ ์ง์ ‘ ์ˆ˜์ • ์š”์ฒญ ``` ### Step 4: Branch ์ƒ์„ฑ (์‚ฌ์šฉ์ž์—๊ฒŒ ์ˆจ๊น€) ํ˜„์žฌ branch๊ฐ€ main ๋˜๋Š” master์ธ ๊ฒฝ์šฐ์—๋งŒ ์ƒˆ branch๋ฅผ ์ƒ์„ฑํ•œ๋‹ค: ```bash git checkout -b {slug}/{date} ``` Branch ์ด๋ฆ„ ๊ทœ์น™: - ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ slugํ™”: "๋ฉ”์ธ ํŽ˜์ด์ง€ ๋””์ž์ธ ๋ณ€๊ฒฝ" โ†’ `main-page-design` - ๋‚ ์งœ ์ถ”๊ฐ€: `main-page-design/0222` - ํ•œ๊ตญ์–ด๋Š” ์˜์–ด๋กœ ๊ฐ„๋‹จํžˆ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋กœ๋งˆ์žํ™” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š”: "์•ˆ์ „ํ•œ ์ž‘์—… ๊ณต๊ฐ„์„ ๋งŒ๋“ค์—ˆ์–ด์š”. ์—ฌ๊ธฐ์„œ๋Š” ๋งˆ์Œ๊ป ์ˆ˜์ •ํ•ด๋„ ์›๋ณธ์— ์˜ํ–ฅ์ด ์—†์–ด์š”." **์ด๋ฏธ ์ €์žฅ๋œ(commit) ๋‚ด์šฉ์„ ์ƒˆ branch๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒฝ์šฐ**: main์—์„œ ์ด๋ฏธ commit๋œ ์ƒํƒœ๋ผ๋ฉด, branch๋ฅผ ๋งŒ๋“  ๋’ค main์˜ commit์„ ๋˜๋Œ๋ ค์•ผ ํ•œ๋‹ค. ๋ฏธ์ „์†ก commit ์ˆ˜๋Š” Step 1์—์„œ ์ˆ˜์ง‘ํ•œ `git rev-list --count` ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค: ```bash git checkout -b {slug}/{date} # ์ƒˆ branch ์ƒ์„ฑ (commit ํฌํ•จ) git checkout main # main์œผ๋กœ ์ž ์‹œ ๋Œ์•„๊ฐ git reset --soft HEAD~{๋ฏธ์ „์†ก commit ์ˆ˜} # main์˜ commit ๋˜๋Œ๋ฆผ (staging area์— ๋‚จ์Œ) git checkout {slug}/{date} # ๋‹ค์‹œ ์ž‘์—… branch๋กœ ``` > ์ฃผ์˜: ์ด ๊ณผ์ •์—์„œ ๊ธฐ์กด ๊ฐœ๋ณ„ commit ๋ฉ”์‹œ์ง€๋“ค์€ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง„๋‹ค (squash ํšจ๊ณผ). > ๋น„๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์˜คํžˆ๋ ค ๊น”๋”ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์˜๋„๋œ ๋™์ž‘์ด๋‹ค. > (์—ฌ๊ธฐ์„œ ์“ฐ๋Š” `reset --soft`๋Š” ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ staging์— ๋‚จ๊ธฐ๋Š” ์•ˆ์ „ํ•œ ๋ฐฉ์‹์ด๋‹ค โ€” `reset --hard`๊ฐ€ ์•„๋‹ˆ๋‹ค.) ### Step 5: Commit + Push ์ˆ˜์ •๋œ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ commitํ•œ๋‹ค (์ด๋ฏธ ์ €์žฅ๋œ ๊ฒฝ์šฐ ์Šคํ‚ต): ```bash git add -A # ์ˆ˜์ •๋œ ํŒŒ์ผ์ด ์žˆ์„ ๋•Œ๋งŒ git commit -m "์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ž‘์—… ์„ค๋ช…" # ์ˆ˜์ •๋œ ํŒŒ์ผ์ด ์žˆ์„ ๋•Œ๋งŒ git push origin HEAD ``` ### Step 6: PR ์ƒ์„ฑ ```bash gh pr create --title "์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ž‘์—… ์„ค๋ช…" --body "$(cat <<'EOF' ## ๋ณ€๊ฒฝ ๋‚ด์šฉ {์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ž‘์—… ์„ค๋ช…} --- Created by ๋ฐ”๋ฅด๋‹ค ๊นƒ์„ ์ƒ EOF )" ``` ### Step 7: main์œผ๋กœ ๋ณต๊ท€ PR ์ƒ์„ฑ ํ›„, ์•ˆ์ „ํ•˜๊ณ  ์›๋ž˜ main/master๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒฝ์šฐ์—๋งŒ main branch๋กœ ๋Œ์•„๊ฐ„๋‹ค: ```bash git checkout main ``` ### Step 8: ์˜์ˆ˜์ฆ ์ถœ๋ ฅ ``` ๊ฒ€ํ†  ์š”์ฒญ ์™„๋ฃŒ! ๋งํฌ: https://github.com/username/my-project/pull/1 ์ด ๋งํฌ๋ฅผ ํŒ€์›์—๊ฒŒ ๋ณด๋‚ด๋ฉด, ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๊ณ  "์ข‹์•„์š”, ๋ฐ˜์˜ํ•ด์ฃผ์„ธ์š”" ํ•˜๊ณ  ์Šน์ธํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ง€๊ธˆ์€ ์›๋ž˜ ์œ„์น˜(main)๋กœ ๋Œ์•„์˜จ ์ƒํƒœ์˜ˆ์š”. ์ƒˆ๋กœ์šด ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ํŒŒ์ผ์„ ์ˆ˜์ •ํ•œ ๋’ค "์ €์žฅํ•ด์ค˜"๋ผ๊ณ  ํ•˜์„ธ์š”. ``` ## ์ด๋ฏธ ๋ณ„๋„ branch์— ์žˆ๋Š” ๊ฒฝ์šฐ Step 2์—์„œ ํ˜„์žฌ branch๊ฐ€ main/master๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ: - Step 4(branch ์ƒ์„ฑ)๋ฅผ ์Šคํ‚ต - ํ˜„์žฌ branch์—์„œ ๋ฐ”๋กœ commit โ†’ push โ†’ PR ์ƒ์„ฑ ์ง„ํ–‰ - "์ด๋ฏธ ์ž‘์—… ๊ณต๊ฐ„์— ์žˆ์–ด์„œ, ๋ฐ”๋กœ ๊ฒ€ํ†  ์š”์ฒญ์„ ๋งŒ๋“ค๊ฒŒ์š”." ## ์ถฉ๋Œ ํ•ด๊ฒฐ Merge Conflict ๊ฐ์ง€ ์‹œ ์ถฉ๋Œ ํŒŒ์ผ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๊ณ , ์ฑ„ํŒ… ๋ฒˆํ˜ธํ˜• ์„ ํƒ์ง€๋กœ ๋ฌป๋Š”๋‹ค (`shared/questioning-policy.md` ยงA): ```text ๋‘ ์‚ฌ๋žŒ์ด ๊ฐ™์€ ํŒŒ์ผ์˜ ๊ฐ™์€ ๋ถ€๋ถ„์„ ๋™์‹œ์— ๊ณ ์ณ์„œ ์ถฉ๋Œ์ด ์ƒ๊ฒผ์–ด์š”. ์ถฉ๋Œ ํŒŒ์ผ: {ํŒŒ์ผ ๋ชฉ๋ก} ์งˆ๋ฌธ: ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”? 1. ๋‚ด๊ฐ€ ์ˆ˜์ •ํ•œ ๊ฑธ๋กœ ์œ ์ง€ โ€” ๋‚ด ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์‚ฌ์šฉํ•ด์š” 2. ์ƒ๋Œ€๋ฐฉ์ด ์ˆ˜์ •ํ•œ ๊ฑธ๋กœ ์œ ์ง€ โ€” ์ƒ๋Œ€๋ฐฉ์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์‚ฌ์šฉํ•ด์š” 3. ๋ฌธ์žฅ์œผ๋กœ ์ง์ ‘ ์ˆ˜์ • ์š”์ฒญ ``` ์„ ํƒ์— ๋”ฐ๋ผ: - "๋‚ด ๊ฑฐ ์œ ์ง€": `git checkout --ours {ํŒŒ์ผ}` โ†’ `git add {ํŒŒ์ผ}` - "์ƒ๋Œ€๋ฐฉ ๊ฑฐ ์œ ์ง€": `git checkout --theirs {ํŒŒ์ผ}` โ†’ `git add {ํŒŒ์ผ}` ์ถฉ๋Œ ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ ํŒŒ์ผ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๊ณ  ์ผ๊ด„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ## ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ - **PR ์ด๋ฏธ ์กด์žฌ**: "์ด ์ž‘์—… ๊ณต๊ฐ„์˜ ๊ฒ€ํ†  ์š”์ฒญ์ด ์ด๋ฏธ ์žˆ์–ด์š”." โ†’ ๊ธฐ์กด PR URL ์•ˆ๋‚ด (์ƒˆ๋กœ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค) - **push ์‹คํŒจ**: upload ์Šคํ‚ฌ์˜ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ์™€ ๋™์ผํ•˜๊ฒŒ ์•ˆ๋‚ด - **gh pr create ์‹คํŒจ**: "๊ฒ€ํ†  ์š”์ฒญ ์ƒ์„ฑ์— ์‹คํŒจํ–ˆ์–ด์š”." โ†’ `gh auth status` ์žฌํ™•์ธ ์•ˆ๋‚ด ## Safety - `git reset --hard`๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค (branch ์ด๋™ ์‹œ์—๋„ `reset --soft`๋งŒ ์‚ฌ์šฉ). - ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•˜์ง€ ์•Š์œผ๋ฉด commit๋œ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์žฌ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. - ๊ฐ™์€ branch์— ์ด๋ฏธ PR์ด ์žˆ์œผ๋ฉด ์ƒˆ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๊ธฐ์กด PR URL์„ ๋ณด์—ฌ์ค€๋‹ค.
View on GitHub