github logo

github

github

SKILL.md

Full skill instructions

GitHub CLI

์ฐธ๊ณ : GitHub ์ž‘์—…์€ Git ๋ช…๋ น์–ด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜, ๋ธŒ๋žœ์น˜ ์ „๋žต, ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ ๋“ฑ์€ git ์Šคํ‚ฌ์„ ํ•จ๊ป˜ ๋กœ๋“œํ•˜์—ฌ ์ฐธ์กฐํ•œ๋‹ค.

์ฃผ์˜ ์‚ฌํ•ญ (Anti-patterns)

1. gh api ์‚ฌ์šฉ ๊ธˆ์ง€

# โŒ gh api - ์ž„์˜์˜ REST/GraphQL ์—”๋“œํฌ์ธํŠธ ํ˜ธ์ถœ ๊ฐ€๋Šฅ (๊ถŒํ•œ ์ œ์–ด ๋ถˆ๊ฐ€)
gh api repos/{owner}/{repo}/issues
gh api graphql -f query='{ viewer { login } }'

# โœ… ๊ตฌ์ฒด์  ์„œ๋ธŒ์ปค๋งจ๋“œ ์‚ฌ์šฉ (allowed-tools๋กœ ๊ถŒํ•œ ์ œํ•œ ๊ฐ€๋Šฅ)
gh issue list
gh pr list
gh release list

gh api๋Š” ๋ชจ๋“  GitHub API ์—”๋“œํฌ์ธํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด allowed-tools๋กœ ํŠน์ • ๋™์ž‘๋งŒ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. gh issue, gh pr ๋“ฑ ๊ตฌ์ฒด์  ์„œ๋ธŒ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Bash(gh issue:*) ํ˜•ํƒœ๋กœ ์„ธ๋ฐ€ํ•œ ๊ถŒํ•œ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

2. Write ์ž‘์—… ๋ฌด๋‹จ ์ˆ˜ํ–‰ ๊ธˆ์ง€

# โŒ ์‚ฌ์šฉ์ž ํ™•์ธ ์—†์ด Write ์ž‘์—… ์ˆ˜ํ–‰
gh issue create --title "Bug fix" --body "Fixed it"
gh pr merge 123
gh issue close 456

# โœ… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋จผ์ € ํ™•์ธ ํ›„ ์ˆ˜ํ–‰
# "์ด์Šˆ๋ฅผ ์ƒ์„ฑํ• ๊นŒ์š”? ์ œ๋ชฉ: Bug fix, ๋ณธ๋ฌธ: Fixed it"
# โ†’ ์‚ฌ์šฉ์ž ์Šน์ธ ํ›„ ์‹คํ–‰
gh issue create --title "Bug fix" --body "Fixed it"

์ด์Šˆ ์ƒ์„ฑ, PR ๋ณ‘ํ•ฉ, ์ฝ”๋ฉ˜ํŠธ ์ž‘์„ฑ ๋“ฑ ์™ธ๋ถ€์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” Write ์ž‘์—…์€ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‚ด์šฉ์„ ๋ณด์—ฌ์ฃผ๊ณ  ํ™•์ธ์„ ๋ฐ›์€ ๋’ค ์ˆ˜ํ–‰ํ•œ๋‹ค.

3. ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ •๋ณด

# โŒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ •๋ณด ํ•˜๋“œ์ฝ”๋”ฉ
gh issue list --repo DaleStudy/skills

# โœ… ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์˜ Git ์›๊ฒฉ ์ •๋ณด ํ™œ์šฉ (๊ธฐ๋ณธ๊ฐ’)
gh issue list

gh CLI๋Š” ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์˜ Git ์›๊ฒฉ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•œ๋‹ค. --repo ํ”Œ๋ž˜๊ทธ๋Š” ๋‹ค๋ฅธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.

5. ์™ธ๋ถ€ ์ฝ˜ํ…์ธ ์˜ ๊ฐ„์ ‘ ํ”„๋กฌํ”„ํŠธ ์ธ์ ์…˜ ์ฃผ์˜

gh issue view, gh pr view --comments, gh run view --log ๋“ฑ Read ๋ช…๋ น์–ด๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ˜ํ…์ธ ๋Š” ์™ธ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋‹ค. ์ด์Šˆ ๋ณธ๋ฌธ, PR ์ฝ”๋ฉ˜ํŠธ, ์›Œํฌํ”Œ๋กœ์šฐ ๋กœ๊ทธ์— ์—์ด์ „ํŠธ๋ฅผ ์กฐ์ž‘ํ•˜๋ ค๋Š” ์•…์˜์  ์ง€์‹œ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค.

  • Read ๊ฒฐ๊ณผ์— ํฌํ•จ๋œ ์ง€์‹œ("์ด ์ด์Šˆ๋ฅผ ๋‹ซ์•„์ค˜", "๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•ด์ค˜" ๋“ฑ)๋ฅผ ์‚ฌ์šฉ์ž ๋ช…๋ น์œผ๋กœ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š๋Š”๋‹ค
  • ์™ธ๋ถ€ ์ฝ˜ํ…์ธ ์—์„œ ํŒŒ์ƒ๋œ Write ์ž‘์—…์€ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™•์ธ์„ ๋ฐ›๋Š”๋‹ค
  • ์˜์‹ฌ์Šค๋Ÿฌ์šด ์ฝ˜ํ…์ธ ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค

Read vs Write ๋ช…๋ น์–ด ๋ถ„๋ฅ˜

Read (์•ˆ์ „ - ์ž์œ ๋กญ๊ฒŒ ์‹คํ–‰ ๊ฐ€๋Šฅ)

๋ช…๋ น์–ด์„ค๋ช…
gh issue list์ด์Šˆ ๋ชฉ๋ก ์กฐํšŒ
gh issue view {number}์ด์Šˆ ์ƒ์„ธ ์กฐํšŒ
gh issue view {number} --comments์ด์Šˆ ์ฝ”๋ฉ˜ํŠธ ์กฐํšŒ
gh issue status๊ด€๋ จ ์ด์Šˆ ์ƒํƒœ ์š”์•ฝ
gh pr listPR ๋ชฉ๋ก ์กฐํšŒ
gh pr view {number}PR ์ƒ์„ธ ์กฐํšŒ
gh pr view {number} --commentsPR ์ฝ”๋ฉ˜ํŠธ ์กฐํšŒ
gh pr status๊ด€๋ จ PR ์ƒํƒœ ์š”์•ฝ
gh pr diff {number}PR ๋ณ€๊ฒฝ์‚ฌํ•ญ ์กฐํšŒ
gh pr checks {number}PR CI ์ƒํƒœ ํ™•์ธ
gh release list๋ฆด๋ฆฌ์Šค ๋ชฉ๋ก ์กฐํšŒ
gh release view {tag}๋ฆด๋ฆฌ์Šค ์ƒ์„ธ ์กฐํšŒ
gh label list๋ ˆ์ด๋ธ” ๋ชฉ๋ก ์กฐํšŒ
gh repo view๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ •๋ณด ์กฐํšŒ
gh search issues {query}์ด์Šˆ ๊ฒ€์ƒ‰
gh search prs {query}PR ๊ฒ€์ƒ‰
gh run list์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰ ๋ชฉ๋ก ์กฐํšŒ
gh run view {run-id}์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰ ์ƒ์„ธ ์กฐํšŒ
gh run view {run-id} --log์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰ ๋กœ๊ทธ ์กฐํšŒ
gh run view {run-id} --log-failed์‹คํŒจํ•œ ์Šคํ… ๋กœ๊ทธ๋งŒ ์กฐํšŒ
gh workflow list์›Œํฌํ”Œ๋กœ์šฐ ๋ชฉ๋ก ์กฐํšŒ
gh workflow view {name|id}์›Œํฌํ”Œ๋กœ์šฐ ์ƒ์„ธ ์กฐํšŒ

Write (์‚ฌ์šฉ์ž ํ™•์ธ ํ•„์ˆ˜)

๋ช…๋ น์–ด์„ค๋ช…
gh issue create์ด์Šˆ ์ƒ์„ฑ
gh issue close {number}์ด์Šˆ ๋‹ซ๊ธฐ
gh issue reopen {number}์ด์Šˆ ๋‹ค์‹œ ์—ด๊ธฐ
gh issue edit {number}์ด์Šˆ ์ˆ˜์ •
gh issue comment {number}์ด์Šˆ์— ์ฝ”๋ฉ˜ํŠธ ์ž‘์„ฑ
gh pr createPR ์ƒ์„ฑ
gh pr merge {number}PR ๋ณ‘ํ•ฉ
gh pr close {number}PR ๋‹ซ๊ธฐ
gh pr reopen {number}PR ๋‹ค์‹œ ์—ด๊ธฐ
gh pr edit {number}PR ์ˆ˜์ •
gh pr comment {number}PR์— ์ฝ”๋ฉ˜ํŠธ ์ž‘์„ฑ
gh pr review {number}PR ๋ฆฌ๋ทฐ ์ œ์ถœ
gh release create {tag}๋ฆด๋ฆฌ์Šค ์ƒ์„ฑ
gh release delete {tag}๋ฆด๋ฆฌ์Šค ์‚ญ์ œ
gh label create {name}๋ ˆ์ด๋ธ” ์ƒ์„ฑ
gh label edit {name}๋ ˆ์ด๋ธ” ์ˆ˜์ •
gh label delete {name}๋ ˆ์ด๋ธ” ์‚ญ์ œ
gh run rerun {run-id}์›Œํฌํ”Œ๋กœ์šฐ ์žฌ์‹คํ–‰
gh run cancel {run-id}์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰ ์ทจ์†Œ
gh workflow run {name|id}์›Œํฌํ”Œ๋กœ์šฐ ์ˆ˜๋™ ์‹คํ–‰ (workflow_dispatch)
gh workflow disable {name|id}์›Œํฌํ”Œ๋กœ์šฐ ๋น„ํ™œ์„ฑํ™”
gh workflow enable {name|id}์›Œํฌํ”Œ๋กœ์šฐ ํ™œ์„ฑํ™”

์ด์Šˆ ๊ด€๋ฆฌ ๋ชจ๋ฒ” ์‚ฌ๋ก€

์ด์Šˆ-PR ์—ฐ๊ฒฐ

# PR ๋ณธ๋ฌธ์— ํ‚ค์›Œ๋“œ๋กœ ์ด์Šˆ ์ž๋™ ์—ฐ๊ฒฐ (PR ๋ณ‘ํ•ฉ ์‹œ ์ด์Šˆ ์ž๋™ ๋‹ซํž˜)
gh pr create --title "Fix login bug" --body "Closes #123"

์—ฐ๊ฒฐ ํ‚ค์›Œ๋“œ: Closes, Fixes, Resolves (๋Œ€์†Œ๋ฌธ์ž ๋ฌด๊ด€)

๋ผ๋ฒจ ์ฒด๊ณ„

# ๋ผ๋ฒจ ๋ชฉ๋ก ํ™•์ธ
gh label list

# ๋ผ๋ฒจ๋กœ ์ด์Šˆ ํ•„ํ„ฐ๋ง
gh issue list --label bug
gh issue list --label "good first issue"

์ด์Šˆ ๊ฒ€์ƒ‰

# ๋‹ด๋‹น์ž๋ณ„ ์ด์Šˆ
gh issue list --assignee @me

# ์ƒํƒœ๋ณ„ ์ด์Šˆ
gh issue list --state open
gh issue list --state closed

# ์กฐํ•ฉ ๊ฒ€์ƒ‰
gh issue list --label bug --assignee @me --state open

Pull Request ๋ชจ๋ฒ” ์‚ฌ๋ก€

PR ์ƒ์„ฑ

# ๊ธฐ๋ณธ PR ์ƒ์„ฑ
gh pr create --title "Add user authentication" --body "## Summary
- JWT ๊ธฐ๋ฐ˜ ์ธ์ฆ ๊ตฌํ˜„
- ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ API ์ถ”๊ฐ€

## Test Plan
- [ ] ๋กœ๊ทธ์ธ ์„ฑ๊ณต/์‹คํŒจ ํ…Œ์ŠคํŠธ
- [ ] ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ ๊ฐฑ์‹  ํ…Œ์ŠคํŠธ"

# Draft PR ์ƒ์„ฑ (๋ฆฌ๋ทฐ ์ค€๋น„๊ฐ€ ์•ˆ ๋œ ๊ฒฝ์šฐ)
gh pr create --draft --title "WIP: Add user authentication"

# ๋ฆฌ๋ทฐ์–ด ์ง€์ •
gh pr create --reviewer user1,user2 --title "Add feature"

PR ํฌ๊ธฐ ๊ฐ€์ด๋“œ

  • ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ์ˆ˜: 10๊ฐœ ์ดํ•˜ ๊ถŒ์žฅ
  • ๋ณ€๊ฒฝ๋œ ๋ผ์ธ ์ˆ˜: 400์ค„ ์ดํ•˜ ๊ถŒ์žฅ
  • ํ•˜๋‚˜์˜ PR์€ ํ•˜๋‚˜์˜ ๋ชฉ์ ๋งŒ ๋‹ฌ์„ฑ
  • ํฌ๋ฉด ๋‚˜๋ˆ„๊ธฐ: ๋ฆฌํŒฉํ† ๋ง๊ณผ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋ฅผ ๋ณ„๋„ PR๋กœ ๋ถ„๋ฆฌ

PR ๋ฆฌ๋ทฐ

# PR ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ™•์ธ
gh pr diff 123

# PR CI ์ƒํƒœ ํ™•์ธ
gh pr checks 123

# PR ๋ฆฌ๋ทฐ ์Šน์ธ
gh pr review 123 --approve

# PR ๋ฆฌ๋ทฐ ์ฝ”๋ฉ˜ํŠธ
gh pr review 123 --comment --body "์ „๋ฐ˜์ ์œผ๋กœ ์ข‹์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์ œ์•ˆ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค."

# PR ๋ณ€๊ฒฝ ์š”์ฒญ
gh pr review 123 --request-changes --body "์ธ์ฆ ๋กœ์ง์— ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค."

PR ๋ณ‘ํ•ฉ

# Squash merge (์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ ์ •๋ฆฌ, ๊ถŒ์žฅ)
gh pr merge 123 --squash

# Merge commit
gh pr merge 123 --merge

# Rebase merge
gh pr merge 123 --rebase

# ๋ณ‘ํ•ฉ ํ›„ ๋กœ์ปฌ/์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์ž๋™ ์‚ญ์ œ
gh pr merge 123 --squash --delete-branch

๋ฆด๋ฆฌ์Šค ๊ด€๋ฆฌ

์‹œ๋งจํ‹ฑ ๋ฒ„์ €๋‹

  • MAJOR (v2.0.0): ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์ด ๊นจ์ง€๋Š” ๋ณ€๊ฒฝ
  • MINOR (v1.1.0): ํ•˜์œ„ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  • PATCH (v1.0.1): ํ•˜์œ„ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๋ฒ„๊ทธ ์ˆ˜์ •

๋ฆด๋ฆฌ์Šค ์ƒ์„ฑ

# ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ ์ž๋™ ์ƒ์„ฑ
gh release create v1.0.0 --generate-notes

# ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ ์ง€์ •
gh release create v1.0.0 --title "v1.0.0" --notes "์ฒซ ๋ฒˆ์งธ ์•ˆ์ • ๋ฆด๋ฆฌ์Šค"

# ํ”„๋ฆฌ๋ฆด๋ฆฌ์Šค
gh release create v2.0.0-beta.1 --prerelease --generate-notes

# Draft ๋ฆด๋ฆฌ์Šค (๋ฐ”๋กœ ๊ณต๊ฐœํ•˜์ง€ ์•Š์Œ)
gh release create v1.0.0 --draft --generate-notes

๋ฆด๋ฆฌ์Šค ์กฐํšŒ

# ์ตœ์‹  ๋ฆด๋ฆฌ์Šค ํ™•์ธ
gh release view --repo {owner}/{repo}

# ๋ฆด๋ฆฌ์Šค ๋ชฉ๋ก
gh release list

# ํŠน์ • ๋ฆด๋ฆฌ์Šค ์ƒ์„ธ
gh release view v1.0.0

์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰ ๋ฐ ๊ฒฐ๊ณผ ์กฐํšŒ

์‹คํ–‰ ๊ฒฐ๊ณผ ํ™•์ธ

# ์ตœ๊ทผ ์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰ ๋ชฉ๋ก
gh run list

# ํŠน์ • ์›Œํฌํ”Œ๋กœ์šฐ๋งŒ ํ•„ํ„ฐ๋ง
gh run list --workflow ci.yml

# ์‹คํ–‰ ์ƒ์„ธ ์ •๋ณด (์ƒํƒœ, ์†Œ์š” ์‹œ๊ฐ„, ํŠธ๋ฆฌ๊ฑฐ ๋“ฑ)
gh run view {run-id}

# ์‹คํŒจํ•œ ์Šคํ…์˜ ๋กœ๊ทธ๋งŒ ํ™•์ธ (๋””๋ฒ„๊น…์— ์œ ์šฉ)
gh run view {run-id} --log-failed

# ์ „์ฒด ๋กœ๊ทธ ํ™•์ธ
gh run view {run-id} --log

์›Œํฌํ”Œ๋กœ์šฐ ์ˆ˜๋™ ์‹คํ–‰

# workflow_dispatch ์ด๋ฒคํŠธ๊ฐ€ ์„ค์ •๋œ ์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰
gh workflow run ci.yml

# ์ž…๋ ฅ ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ
gh workflow run deploy.yml -f environment=staging -f version=1.2.0

# ํŠน์ • ๋ธŒ๋žœ์น˜์—์„œ ์‹คํ–‰
gh workflow run ci.yml --ref feature/my-branch

์‹คํŒจ ๋Œ€์‘

# ์‹คํŒจํ•œ job๋งŒ ์žฌ์‹คํ–‰
gh run rerun {run-id} --failed

# ์ „์ฒด ์žฌ์‹คํ–‰
gh run rerun {run-id}

# ์ง„ํ–‰ ์ค‘์ธ ์‹คํ–‰ ์ทจ์†Œ
gh run cancel {run-id}

์ฃผ์š” gh ์„œ๋ธŒ์ปค๋งจ๋“œ ๋ ˆํผ๋Ÿฐ์Šค

gh issue

gh issue list [--state open|closed|all] [--label name] [--assignee handle]
gh issue view {number} [--comments]
gh issue create --title "์ œ๋ชฉ" --body "๋ณธ๋ฌธ" [--label name] [--assignee handle]
gh issue close {number} [--reason completed|not_planned]
gh issue reopen {number}
gh issue edit {number} [--title "์ƒˆ ์ œ๋ชฉ"] [--add-label name] [--remove-label name]
gh issue comment {number} --body "์ฝ”๋ฉ˜ํŠธ"
gh issue status

gh pr

gh pr list [--state open|closed|merged|all] [--label name] [--author handle]
gh pr view {number} [--comments]
gh pr create --title "์ œ๋ชฉ" --body "๋ณธ๋ฌธ" [--draft] [--reviewer handle]
gh pr merge {number} [--squash|--merge|--rebase] [--delete-branch]
gh pr close {number}
gh pr reopen {number}
gh pr edit {number} [--title "์ƒˆ ์ œ๋ชฉ"] [--add-label name] [--add-reviewer handle]
gh pr comment {number} --body "์ฝ”๋ฉ˜ํŠธ"
gh pr review {number} [--approve|--comment|--request-changes] [--body "๋ฆฌ๋ทฐ"]
gh pr diff {number}
gh pr checks {number}
gh pr status

gh release

gh release list
gh release view {tag}
gh release create {tag} [--title "์ œ๋ชฉ"] [--notes "๋…ธํŠธ"] [--generate-notes]
gh release delete {tag} [--yes]

gh label

gh label list
gh label create {name} [--color hex] [--description "์„ค๋ช…"]
gh label edit {name} [--name "์ƒˆ์ด๋ฆ„"] [--color hex] [--description "์„ค๋ช…"]
gh label delete {name} [--yes]

gh repo

gh repo view [--web]
gh repo clone {owner}/{repo}

gh run

gh run list [--workflow name] [--status completed|in_progress|failure|success]
gh run view {run-id} [--log] [--log-failed]
gh run rerun {run-id} [--failed]
gh run cancel {run-id}
gh run watch {run-id}

gh workflow

gh workflow list
gh workflow view {name|id}
gh workflow run {name|id} [-f key=value] [--ref branch]
gh workflow disable {name|id}
gh workflow enable {name|id}

gh search

gh search issues {query} [--repo owner/repo] [--state open|closed]
gh search prs {query} [--repo owner/repo] [--state open|closed|merged]