GitHub 기본 활성

GitHub gh CLI — 이슈, PR, CI, 코드 리뷰, 릴리스

스킬 이름
github
카테고리
개발 워크플로우
필수 요건
gh CLI 바이너리
소스
~/.cli-jaw/skills/github/SKILL.md
이 스킬은 기본으로 활성화되어 있으며 모든 세션에 주입됩니다. 이전에 분리되어 있던 gh-address-comments, gh-fix-ci, gh-issues, yeet 스킬의 통합 기능을 포함하여 gh CLI를 통한 모든 GitHub 상호작용을 처리합니다.

빠른 참조

명령어설명예시
gh pr list풀 리퀘스트 목록 조회gh pr list --repo owner/repo
gh pr viewPR 상세 정보 조회gh pr view 55 --repo owner/repo
gh pr checksPR의 CI 상태 확인gh pr checks 55 --repo owner/repo
gh pr create풀 리퀘스트 생성gh pr create --title "feat: X" --body "..."
gh pr merge풀 리퀘스트 병합gh pr merge 55 --squash
gh issue list이슈 목록 조회gh issue list --state open
gh issue create이슈 생성gh issue create --title "Bug: X"
gh issue close이슈 닫기gh issue close 42
gh run listCI 워크플로우 실행 목록 조회gh run list --limit 10
gh run view특정 CI 실행 조회gh run view <id> --log-failed
gh run rerun실패한 작업 재실행gh run rerun <id> --failed
gh apiGitHub REST/GraphQL API 쿼리gh api repos/o/r/pulls/55 --jq '.title'

사용 시점 / 사용하지 말아야 할 시점

이 스킬을 사용할 때

  • PR 상태, 리뷰, 병합 가능 여부 확인
  • CI/워크플로우 실행 상태 및 로그 확인
  • 이슈 생성, 닫기, 코멘트 작성
  • 풀 리퀘스트 생성 또는 병합
  • GitHub API를 통한 저장소 데이터 쿼리
  • 저장소, 릴리스, 협력자 목록 조회
  • PR 리뷰 코멘트 처리
  • 실패한 CI 체크 디버깅 및 수정
  • 이슈 자동 수정 및 PR 생성
  • 스테이징, 커밋, 푸시, PR을 한 번에 처리 (yeet)

사용하지 말아야 할 때

  • 로컬 git 작업 (commit, push, pull, branch) — git을 직접 사용하세요
  • GitHub 이외의 저장소 (GitLab, Bitbucket, 자체 호스팅) — 별도의 CLI를 사용하세요
  • 저장소 클론 — git clone을 사용하세요
  • 실제 코드 변경 사항 리뷰 — coding-agent 스킬을 사용하세요
  • 복잡한 다중 파일 diff — coding-agent를 사용하거나 파일을 직접 읽으세요

설치 및 설정

github 스킬은 gh CLI 바이너리가 필요합니다. CLI-JAW가 자동으로 설치할 수 있으며, 수동으로 설치할 수도 있습니다:

# macOS (Homebrew) brew install gh
# Linux (apt) sudo apt install gh

설치 후 한 번 인증을 진행합니다:

# 일회성 인증
gh auth login

# 인증 상태 확인
gh auth status
토큰 범위: gh 토큰에 repo, read:org, workflow 스코프가 있는지 확인하세요. CI 작업이 실패하면 gh auth login으로 다시 인증하고 필요한 스코프를 선택하세요.

풀 리퀘스트

PR 목록 조회

# 저장소의 열린 PR 목록 조회
gh pr list --repo owner/repo

# 상태별 필터링
gh pr list --repo owner/repo --state merged --limit 20

# jq 필터링을 사용한 JSON 출력
gh pr list --json number,title,state,mergeable \
  --jq '.[] | select(.mergeable == "MERGEABLE")'

PR 상세 정보 조회

# 번호로 PR 조회
gh pr view 55 --repo owner/repo

# URL로 직접 조회
gh pr view https://github.com/owner/repo/pull/55

# 구조화된 JSON 출력
gh pr view 55 --repo owner/repo \
  --json title,body,author,additions,deletions,changedFiles \
  --jq '"**\(.title)** by @\(.author.login)\n+\(.additions) -\(.deletions) across \(.changedFiles) files"'

CI 상태 확인

# PR의 모든 CI 체크 확인
gh pr checks 55 --repo owner/repo

PR 생성

# 기본 PR 생성
gh pr create --title "feat: add feature" --body "Description"

# 리뷰어 및 라벨 지정
gh pr create --title "fix: resolve timeout" \
  --body "Fixes #42" \
  --reviewer alice,bob \
  --label bug,urgent

# 드래프트 PR
gh pr create --title "wip: new dashboard" --body "WIP" --draft

PR 병합

# 스쿼시 병합
gh pr merge 55 --squash --repo owner/repo

# 머지 커밋
gh pr merge 55 --merge --repo owner/repo

# 리베이스 병합
gh pr merge 55 --rebase --repo owner/repo

# 체크 통과 시 자동 병합
gh pr merge 55 --auto --squash

이슈

이슈 목록 조회

# 열린 이슈
gh issue list --repo owner/repo --state open

# 라벨로 필터링
gh issue list --repo owner/repo --label bug --limit 10

# 서식 지정된 JSON
gh issue list --repo owner/repo --state open \
  --json number,title,labels,createdAt \
  --jq '.[] | "[\(.number)] \(.title) - \([.labels[].name] | join(", ")) (\(.createdAt[:10]))"'

이슈 생성

# 기본 이슈
gh issue create --title "Bug: something broken" --body "Details..."

# 라벨 및 담당자 지정
gh issue create --title "Feature: dark mode" \
  --body "Add dark mode toggle" \
  --label enhancement \
  --assignee @me

이슈 닫기

# 번호로 닫기
gh issue close 42 --repo owner/repo

# 코멘트와 함께 닫기
gh issue close 42 --comment "Fixed in PR #55"

CI / 워크플로우 실행

실행 목록 조회

# 최근 실행
gh run list --repo owner/repo --limit 10

# 워크플로우별 필터링
gh run list --workflow build.yml --limit 5

# 상태별 필터링
gh run list --status failure --limit 10

실행 상세 정보 조회

# 특정 실행 조회
gh run view <run-id> --repo owner/repo

# 실패한 단계의 로그만 조회 (디버깅에 가장 유용)
gh run view <run-id> --repo owner/repo --log-failed

실패한 작업 재실행

# 실패한 작업만 재실행
gh run rerun <run-id> --failed --repo owner/repo

# 모든 작업 재실행
gh run rerun <run-id> --repo owner/repo

API 쿼리

gh api 명령어는 GitHub REST 및 GraphQL API에 직접 접근할 수 있게 합니다. --jq를 사용하여 JSON 결과를 필터링할 수 있습니다.

# 특정 필드로 PR 조회
gh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login'

# 모든 라벨 목록
gh api repos/owner/repo/labels --jq '.[].name'

# 저장소 통계
gh api repos/owner/repo --jq '{stars: .stargazers_count, forks: .forks_count}'

# PR 리뷰 코멘트 목록
gh api repos/{owner}/{repo}/pulls/{pr}/comments \
  --jq '.[] | "\(.id): \(.body[:80])"'

# 반복 쿼리 캐시 (1시간)
gh api --cache 1h repos/owner/repo

JSON 출력 모드

대부분의 gh 명령어는 --json을 통한 구조화된 출력과 --jq 필터링을 지원합니다:

# 서식 지정된 이슈 목록
gh issue list --repo owner/repo --json number,title \
  --jq '.[] | "\(.number): \(.title)"'

# 병합 가능한 PR
gh pr list --json number,title,state,mergeable \
  --jq '.[] | select(.mergeable == "MERGEABLE")'

통합 워크플로우

github 스킬은 이전에 분리되어 있던 여러 스킬을 통합 워크플로우로 합쳤습니다. 이러한 워크플로우는 자연어로 트리거되는 다단계 절차로 실행됩니다.

PR 코멘트 처리

현재 브랜치의 열린 PR에 달린 리뷰 코멘트와 이슈 코멘트를 처리합니다.

  1. 인증 확인: gh auth status
  2. 현재 PR 찾기: gh pr view --json number,url
  3. 리뷰 코멘트 목록 조회: gh api repos/{owner}/{repo}/pulls/{pr}/comments --jq '.[] | "\(.id): \(.body[:80])"'
  4. 각 코멘트를 처리하고, 수정 사항을 구현한 뒤 변경 사항을 커밋
  5. 푸시 후 원래 리뷰어에게 리뷰를 다시 요청

실패한 CI 수정

실패한 GitHub Actions 체크를 자동으로 디버깅하고 수정합니다.

  1. 실패한 체크 찾기: gh pr checks <PR> --repo owner/repo
  2. 실패한 실행 로그 가져오기: gh run view <run-id> --log-failed
  3. 실패 내용을 요약하고 근본 원인 파악
  4. 수정 계획을 작성하고, 승인을 받은 후 수정 구현
  5. 수정 사항을 푸시하고 CI 통과 여부 확인

이슈 자동 수정

저장소에서 이슈를 가져와 수정을 구현하고 각 이슈에 대해 PR을 생성합니다.

  1. 대상 이슈 목록 조회: gh issue list --label bug --limit 5
  2. 각 이슈에 대해: 브랜치 생성, 수정 구현, PR 생성
  3. PR 리뷰를 모니터링하고 코멘트 처리
  4. 자동화를 위해 $GH_TOKEN과 함께 GitHub REST API 사용

Yeet: 스테이징, 커밋, 푸시, PR 한 번에

작업 트리의 변경 사항을 단일 명령으로 PR까지 한 번에 처리하는 원샷 플로우입니다.

  1. main/master에 있는 경우 새 브랜치 생성: git checkout -b codex/{description}
  2. 모든 변경 사항 스테이징: git add -A
  3. 설명과 함께 커밋: git commit -m "{description}"
  4. 리모트에 푸시: git push -u origin HEAD
  5. PR 생성: gh pr create --title "[codex] {description}" --body "..."

템플릿

PR 리뷰 요약

PR=55 REPO=owner/repo
echo "## PR #$PR Summary"
gh pr view $PR --repo $REPO \
  --json title,body,author,additions,deletions,changedFiles \
  --jq '"**\(.title)** by @\(.author.login)\n\n\(.body)\n\n+\(.additions) -\(.deletions) across \(.changedFiles) files"'
gh pr checks $PR --repo $REPO

이슈 분류 보고서

gh issue list --repo owner/repo --state open \
  --json number,title,labels,createdAt \
  --jq '.[] | "[\(.number)] \(.title) - \([.labels[].name] | join(", ")) (\(.createdAt[:10]))"'

규칙 및 모범 사례

규칙상세 내용
항상 --repo 지정git 디렉토리 내부가 아닌 경우, 모호함을 피하기 위해 항상 --repo owner/repo를 전달하세요.
URL을 직접 사용gh pr view https://github.com/owner/repo/pull/55는 동작하며 모호함이 없습니다.
반복 API 호출 캐시자주 실행하는 쿼리에는 gh api --cache 1h를 사용하여 속도 제한을 방지하세요.
--log-failed 우선 사용CI 디버깅 시 방대한 출력을 피하기 위해 --log 대신 gh run view <id> --log-failed를 사용하세요.
--json + --jq 사용구조화된 데이터 추출 시 텍스트 파싱보다 항상 JSON 출력과 jq 필터링을 사용하세요.
로컬 git은 로컬에서git commit, git push, git pull, git branch에는 이 스킬을 사용하지 마세요. git을 직접 사용하세요.
속도 제한GitHub API에는 속도 제한이 있습니다 (인증 시 5,000 요청/시간). 적극적으로 캐시하고 쿼리를 일괄 처리하세요.

사용 예시 (~haejwo)

아래 예시들은 자연어로 github 스킬을 호출하는 방법을 보여줍니다. 한국어와 영어 모두 동일하게 사용할 수 있습니다.

예시 1
"PR 55번 상태 확인해줘 -- CI 다 통과했는지 봐줘"
gh pr checks 55를 사용하여 PR #55의 CI 상태를 확인하고 통과/실패 결과를 요약합니다.
예시 2
"이 변경사항 PR로 올려줘 -- 리뷰어 alice 지정하고 bug 라벨 붙여줘"
yeet 플로우를 실행합니다: 모든 변경 사항을 스테이징하고, 커밋하고, 푸시한 뒤 --reviewer alice --label bug로 PR을 생성합니다.
예시 3
"CI 실패한 거 고쳐줘 -- 로그 보고 원인 분석해줘"
실패한 CI 수정 워크플로우를 트리거합니다: 실패한 체크를 찾고, --log-failed를 가져와 근본 원인을 진단하고 수정을 제안합니다.
예시 4
"이 리포에 bug 라벨 이슈 목록 보여주고 정리해줘"
bug 라벨이 붙은 열린 이슈를 나열하고, 생성 날짜와 라벨을 포함한 분류 보고서로 서식을 지정합니다.
예시 5
"PR 리뷰 코멘트 다 처리하고 다시 리뷰 요청해줘"
PR 코멘트 처리 플로우를 실행합니다: 모든 리뷰 코멘트를 읽고, 각각을 처리하고, 수정 사항을 커밋하고 푸시한 뒤 리뷰를 다시 요청합니다.

관련 스킬

스킬관계
dev-code-reviewer코드 내용을 리뷰합니다. github는 PR 메커니즘(생성, 병합, 코멘트)을 처리합니다.
dev 오케스트레이터개발 작업에 PR 생성이나 CI 확인이 필요한 경우 github에 위임할 수 있습니다.
code-review심층 코드 리뷰 스킬로, github--comment와 함께 사용하여 PR에 인라인 피드백을 게시합니다.
security-review보안 감사 스킬로, github를 사용하여 종속성 경고 및 보안 권고를 확인합니다.