OpenClaw는 gh CLI를 통해 GitHub의 모든 기능을 자연어로 제어할 수 있습니다.
PR 생성, 이슈 관리, 코드 리뷰까지 대화만으로 처리하세요.
사전 준비
# gh CLI 설치 (macOS)
brew install gh
# GitHub 인증
gh auth login
gh auth status로 인증 상태를 확인할 수 있습니다.
OpenClaw는 시스템에 설치된 gh CLI를 그대로 사용합니다.
Pull Request 관리
PR 생성
"현재 브랜치로 PR 만들어줘. 제목은 'feat: 사용자 프로필 페이지 추가'"
OpenClaw가 실행하는 명령:
gh pr create --title "feat: 사용자 프로필 페이지 추가" \
--body "## 변경사항\n- 프로필 페이지 컴포넌트 추가\n- API 라우트 구현" \
--assignee @me
PR 리뷰
"PR #15 diff 보여줘"
"PR #15에 리뷰 코멘트 남겨줘"
# PR 상세 보기
gh pr view 15
# diff 확인
gh pr diff 15
# 리뷰 제출
gh pr review 15 --approve --body "LGTM! 깔끔합니다."
gh pr review 15 --request-changes --body "몇 가지 수정이 필요합니다."
PR 머지
gh pr merge 15 --squash --delete-branch
Issues 관리
이슈 생성 및 조회
"로그인 버그 이슈 만들어줘"
"열린 이슈 목록 보여줘"
# 이슈 생성
gh issue create --title "🐛 로그인 시 세션 만료 오류" \
--body "## 재현 방법\n1. 로그인\n2. 30분 대기\n3. 페이지 새로고침" \
--label "bug" --assignee @me
# 이슈 목록
gh issue list --state open --limit 20
# 이슈 검색
gh issue list --search "login bug" --label "bug"
이슈 관리
# 이슈 닫기
gh issue close 42 --comment "PR #15에서 수정됨"
# 라벨 추가
gh issue edit 42 --add-label "priority:high"
# 마일스톤 설정
gh issue edit 42 --milestone "v2.0"
GitHub Actions
"마지막 워크플로우 실행 결과 보여줘"
"CI 실패 로그 확인해줘"
# 워크플로우 실행 목록
gh run list --limit 5
# 실패한 실행의 로그
gh run view 12345 --log-failed
# 워크플로우 수동 실행
gh workflow run deploy.yml --ref main
릴리즈 관리
# 릴리즈 생성
gh release create v1.2.0 --title "v1.2.0" \
--notes "## What's New\n- 프로필 페이지\n- 성능 개선" \
--generate-notes
# 릴리즈 목록
gh release list
실전 자동화 예시
매일 이슈 요약 크론잡
openclaw cron add --name "github-daily" \
--cron "0 9 * * 1-5" --tz "Asia/Seoul" \
--message "GitHub 이슈 현황 요약해줘. 열린 이슈, 내게 할당된 PR, 실패한 CI" \
--announce --session isolated
PR 자동 리뷰 요청
"새 PR이 올라오면 알려줘" → 하트비트에서 주기적으로 확인:
# HEARTBEAT.md에 추가
gh pr list --search "is:open review-requested:@me" --json number,title
gh api를 사용하면 GitHub REST/GraphQL API에 직접 접근할 수 있습니다.
복잡한 쿼리나 커스텀 자동화에 활용하세요.
유용한 gh 별칭
# 자주 쓰는 명령 별칭 설정
gh alias set prs 'pr list --search "is:open author:@me"'
gh alias set reviews 'pr list --search "is:open review-requested:@me"'
gh alias set myissues 'issue list --assignee @me --state open'