GitHub 기본 활성
GitHub gh CLI — 이슈, PR, CI, 코드 리뷰, 릴리스
이 스킬은 기본으로 활성화되어 있으며 모든 세션에 주입됩니다. 이전에 분리되어 있던
gh-address-comments, gh-fix-ci, gh-issues, yeet 스킬의 통합 기능을 포함하여 gh CLI를 통한 모든 GitHub 상호작용을 처리합니다.빠른 참조
| 명령어 | 설명 | 예시 |
|---|---|---|
gh pr list | 풀 리퀘스트 목록 조회 | gh pr list --repo owner/repo |
gh pr view | PR 상세 정보 조회 | gh pr view 55 --repo owner/repo |
gh pr checks | PR의 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 list | CI 워크플로우 실행 목록 조회 | gh run list --limit 10 |
gh run view | 특정 CI 실행 조회 | gh run view <id> --log-failed |
gh run rerun | 실패한 작업 재실행 | gh run rerun <id> --failed |
gh api | GitHub 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에 달린 리뷰 코멘트와 이슈 코멘트를 처리합니다.
- 인증 확인:
gh auth status - 현재 PR 찾기:
gh pr view --json number,url - 리뷰 코멘트 목록 조회:
gh api repos/{owner}/{repo}/pulls/{pr}/comments --jq '.[] | "\(.id): \(.body[:80])"' - 각 코멘트를 처리하고, 수정 사항을 구현한 뒤 변경 사항을 커밋
- 푸시 후 원래 리뷰어에게 리뷰를 다시 요청
실패한 CI 수정
실패한 GitHub Actions 체크를 자동으로 디버깅하고 수정합니다.
- 실패한 체크 찾기:
gh pr checks <PR> --repo owner/repo - 실패한 실행 로그 가져오기:
gh run view <run-id> --log-failed - 실패 내용을 요약하고 근본 원인 파악
- 수정 계획을 작성하고, 승인을 받은 후 수정 구현
- 수정 사항을 푸시하고 CI 통과 여부 확인
이슈 자동 수정
저장소에서 이슈를 가져와 수정을 구현하고 각 이슈에 대해 PR을 생성합니다.
- 대상 이슈 목록 조회:
gh issue list --label bug --limit 5 - 각 이슈에 대해: 브랜치 생성, 수정 구현, PR 생성
- PR 리뷰를 모니터링하고 코멘트 처리
- 자동화를 위해
$GH_TOKEN과 함께 GitHub REST API 사용
Yeet: 스테이징, 커밋, 푸시, PR 한 번에
작업 트리의 변경 사항을 단일 명령으로 PR까지 한 번에 처리하는 원샷 플로우입니다.
main/master에 있는 경우 새 브랜치 생성:git checkout -b codex/{description}- 모든 변경 사항 스테이징:
git add -A - 설명과 함께 커밋:
git commit -m "{description}" - 리모트에 푸시:
git push -u origin HEAD - 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를 사용하여 종속성 경고 및 보안 권고를 확인합니다. |