AI가 PR을 자동으로 리뷰하게 만들기 (GitHub Actions)
PR을 올리면 사람이 보기 전에 버그 후보와 보안 문제가 댓글로 달립니다.
이런 분께: GitHub로 코드를 관리하고 PR 리뷰 부담을 줄이고 싶은 개발자 (일반 사용자용이 아닙니다)
- 쓰는 도구
- Claude Code
- 걸리는 시간
- 1시간
- 난이도
- 어려움
- 비용
- 유료 플랜 필요
준비물
- GitHub 저장소와 워크플로 파일을 추가할 권한 (저장소 관리자 또는 쓰기 권한)
- Claude Code 설치와 Anthropic API 키 (유료, 사용량만큼 과금됩니다)
- 터미널과 Git 기본 사용 경험
- 저장소 비밀 값(secrets)을 설정할 권한
이런 결과가 나옵니다
PR이 열리거나 새 커밋이 올라올 때마다 자동으로 실행되어, 동작 버그, 보안, 빠진 테스트를 PR 댓글 하나로 남깁니다. 같은 PR에서는 새 댓글을 달지 않고 기존 댓글을 수정합니다.
PR에 달린 리뷰 댓글 예시. 가상 데이터입니다.
따라 하기
- 1
저장소에서 이미 있는 워크플로 확인하기
터미널에서 저장소 폴더로 이동해 ls .github/workflows 를 실행합니다. 이미 리뷰 관련 워크플로가 있는지, 어떤 이름 규칙을 쓰는지 봅니다.
이렇게 되면 성공기존 파일 목록을 확인했으면 됩니다. 폴더가 없다면 아직 워크플로가 없는 것입니다.
팁PR 코멘트 기능을 이미 쓰는 앱(예: 다른 리뷰 봇)이 있으면 댓글이 중복될 수 있습니다. 먼저 정리하세요.
- 2
API 키를 저장소 secrets에 넣기
GitHub 저장소 화면의 Settings > Secrets and variables > Actions 로 갑니다. New repository secret 을 눌러 이름을 ANTHROPIC_API_KEY, 값을 발급받은 API 키로 저장합니다. 키는 채팅이나 코드에 절대 붙여넣지 않습니다.
이렇게 되면 성공목록에 ANTHROPIC_API_KEY 가 보이면 성공입니다. 값은 다시 볼 수 없는 게 정상입니다.
팁이 키로 호출된 만큼 비용이 청구됩니다. Anthropic 콘솔에서 월 사용 한도를 먼저 정해 두세요.
- 3
새 브랜치에서 Claude Code에 워크플로 만들게 하기
git checkout -b ci/auto-review 로 새 브랜치를 만들고 Claude Code를 실행합니다. 아래 프롬프트를 보냅니다. .github/workflows/ 아래에 YAML 파일이 만들어집니다.
붙여넣을 프롬프트이 저장소에 PR 자동 리뷰 GitHub Actions를 추가해줘. - PR이 열리거나 커밋이 추가되면 실행 - Claude Code를 헤드리스(-p)로 돌려서 /code-review 결과를 PR 댓글로 - 리뷰 기준: 동작 버그, 보안, 빠진 테스트. 스타일 지적은 하지 말 것 - 같은 PR에 댓글이 이미 있으면 새로 달지 말고 수정 - API 키는 secrets.ANTHROPIC_API_KEY 먼저 .github/workflows 에 기존 워크플로가 있는지 확인하고 충돌 없게 만들어줘.
내 것으로 바꿀 곳
- 리뷰 기준(동작 버그, 보안, 빠진 테스트)을 팀 규칙에 맞게 바꿉니다.
- 실행 조건을 좁히려면 "src/ 폴더가 바뀐 PR에만 실행"처럼 경로를 지정합니다.
- 비용을 줄이려면 "초안(draft) PR은 건너뛰고, 변경 파일이 50개를 넘으면 실행하지 않기"를 추가합니다.
더 자세히 지시하고 싶다면 (조금 기술적인 버전)
위 워크플로를 만들 때 아래도 지켜줘. - on: pull_request 이벤트 (opened, synchronize, reopened) - permissions는 contents: read, pull-requests: write 로 최소화 - fork에서 온 PR은 secrets에 접근할 수 없으니 실행하지 않거나 pull_request_target 위험을 설명하고 안전한 대안 제안 - 댓글 식별용 마커(예: <!-- auto-review -->)를 넣고, 있으면 PATCH, 없으면 POST - 리뷰 결과가 길면 상위 5건으로 자르기 - 실패해도 PR 머지를 막지 않게 continue-on-error
이렇게 되면 성공git status 에 새 워크플로 파일이 보이고, Claude가 설명한 내용(트리거, 권한, 댓글 로직)이 요구사항과 맞으면 성공입니다.
- 4
워크플로 파일 직접 읽어 확인하기
만들어진 파일을 열어 아래를 확인합니다. permissions 가 최소 권한인지, secrets 값이 로그에 출력되지 않는지, fork PR 처리가 있는지, 댓글을 찾는 마커가 있는지. 이해가 안 되는 줄은 Claude에게 "이 줄이 무엇을 하는지 설명해줘"라고 묻습니다.
이렇게 되면 성공permissions 에 contents: read, pull-requests: write 만 있으면 됩니다. write-all 이 있다면 줄이세요.
팁secrets 를 쓰는 워크플로는 외부 기여자의 PR에서 악용되기 쉽습니다. 공개 저장소라면 fork PR에서는 실행하지 않는 것이 기본입니다.
- 5
말로 고치기
요구사항과 다른 부분을 Claude Code에 말로 수정시킵니다.
팁이렇게 말하면 됩니다. "초안 PR은 건너뛰어줘", "리뷰는 한국어로 써줘", "최대 5건까지만 남기게 해줘", "docs/ 폴더만 바뀐 PR은 실행하지 않게 해줘", "비용 때문에 변경 파일이 50개 넘으면 실행하지 않게 해줘"
- 6
테스트 PR로 시험하기
변경을 커밋하고 push한 뒤 PR을 엽니다. 일부러 간단한 버그(예: 입력 검증 없는 나눗셈)를 넣은 파일을 포함한 테스트 PR을 하나 올립니다. 저장소의 Actions 탭에서 워크플로가 실행 중인지 확인합니다.
이렇게 되면 성공몇 분 뒤 PR 화면에 자동 리뷰 댓글이 달리면 성공입니다. Actions 탭에는 초록색 체크가 보입니다.
팁워크플로 파일이 기본 브랜치에 있어야 동작하는 이벤트도 있습니다. 첫 실행이 안 보이면 이 점을 확인하세요.
- 7
댓글이 중복되지 않는지 확인하고 머지하기
테스트 PR에 커밋을 하나 더 push 합니다. 새 댓글이 생기지 않고 기존 댓글 내용이 갱신되면 의도대로 동작한 것입니다. 테스트 PR은 닫고, 워크플로 PR을 머지합니다.
이렇게 되면 성공한 PR에 자동 리뷰 댓글이 항상 하나만 있으면 성공입니다.
막히면
Actions 탭에 실행이 안 보여요
워크플로 파일 위치가 .github/workflows/ 인지, 확장자가 .yml 또는 .yaml 인지 확인하세요. on 조건이 pull_request 인지, PR 대상 브랜치가 맞는지도 확인합니다.
워크플로는 도는데 댓글이 안 달려요
permissions 에 pull-requests: write 가 있는지 확인하세요. fork에서 온 PR이면 토큰이 읽기 전용이라 댓글을 쓰지 못합니다. 실행 로그에서 403 오류가 있는지 봅니다.
인증 오류(401, API key)가 나와요
시크릿 이름이 ANTHROPIC_API_KEY 와 정확히 같은지, 키가 만료되거나 한도를 넘지 않았는지 확인하세요. 시크릿을 다시 저장하고 실행을 다시 돌립니다.
댓글이 PR마다 계속 늘어나요
댓글 식별 마커가 없거나 찾는 조건이 어긋난 경우입니다. 마커 문자열을 댓글 본문에 넣고, 기존 댓글을 마커로 찾아 수정하도록 워크플로를 고치게 하세요.
비용이 걱정돼요
초안 PR 제외, 변경 파일 수 제한, 경로 제한을 추가하고 콘솔에서 월 사용 한도를 설정하세요. 며칠 돌려보며 PR당 비용을 확인합니다.
다음에 해볼 것
- 리뷰 기준을 저장소의 CLAUDE.md 에 적어 두면 팀 규칙에 맞는 리뷰가 나옵니다.
- 리뷰에서 보안 문제가 자주 나오면 /security-review 를 별도 워크플로로 분리해 보세요.
- 자동 리뷰는 보조 도구입니다. 사람이 하는 리뷰를 대체하지 말고, 먼저 걸러주는 용도로 쓰세요.
여기 쓰인 기능
다른 레시피
20분, 무료, 바로 해보기
AI로 브라우저 게임 만들기 (스네이크 게임)
말로 설명하면 스네이크 게임이 나옵니다. 설치 없이 인터넷 창에서 바로 플레이하고, 링크로 친구에게 보낼 수 있습니다.
30분, 무료, 바로 해보기
AI로 공유형 테스트(유형 검사) 만들기
질문 6개, 결과 4가지. 친구에게 보내고 싶은 성향 테스트를 30분 안에 만들 수 있습니다.
2026-10-30 기준으로 작성했습니다. 서비스 화면은 바뀔 수 있어 메뉴 이름은 일반적인 표현으로 적었습니다. 예시의 인물과 데이터는 가상입니다. 작성 원칙