들어가면서

지난 번 Cursor로 PR 리뷰하기를 작성한지도 벌써 1년이 다 되어 갑니다.

툴을 실사용하면서 여러 가지 업데이트를 진행했고 결국에는 LLM 플랫폼에 독립적인 에이전트 스킬 형태로 구조를 완전히 바꾸게 되었습니다. 어떤 고민을 거쳐 어떻게 변화시켰는지 그 과정을 공유하고자 합니다.

개발 배경

지난 번 글에서도 언급했지만 저는 팀내 유일한 개발자로 사내 플랫폼 개발과 운영을 담당하고 있습니다. 그러다보니 항상 코드 리뷰에 대한 갈망이 있었습니다. 제가 작성한 코드를 제가 리뷰하는 시스템이다 보니 아무리 꼼꼼하게 확인해도 놓치고 지나가는 부분이 있었기 때문입니다.

현실적으로 코드 리뷰를 같이 해줄 동료가 없는 상황이다보니 자연스럽게 LLM을 활용한 코드 리뷰에 관심을 갖게 되었습니다. 다만 기존 서비스들은 비용이 발생하거나 코드가 외부에 노출될 리스크가 있어 선뜻 이용하기 어려웠습니다.

하지만 코드 리뷰를 해줄 수 있는 동료가 없었기에 LLM을 활용한 코드 리뷰에 관심을 갖게 되었습니다. 하지만 기존 서비스는 비용이 발생하거나 코드가 외부에 노출될 수 있기 때문에 이용하기 어려웠습니다.

그래서 오늘 소개드릴 PR 리뷰어(Github Repostiory)를 개발하게 되었습니다.

다른 PR 리뷰 툴과의 차별점

1년 전과 다르게 최근에는 AI 에이전트 리뷰 툴이 쏟아져 나오고 있습니다. 그럼에도 제가 만든 툴을 계속 사용하고 있는 이유는 PR 리뷰어가 처음부터 1인 개발자 환경에 맞춰서 설계한 툴이기 때문입니다. 덕분에 다른 범용 툴보다 제 워크플로우에 가장 잘 맞았습니다.

제 툴이 다른 리뷰 툴과 다른 점을 정리해보면 아래와 같습니다.

  • 일단 비용 부담이 없습니다.
    • 구독하고 있는 LLM이 있다면 추가 비용 없이 무제한으로 리뷰할 수 있습니다.
  • 불필요한 칭찬과 제안은 과감히 생략합니다.
    • 제안하지 않습니다. 생산적인 아키텍처 제안은 이미 설계 단계에서 끝났다고 상정합니다.
    • 칭찬하지 않습니다. 1인 개발자로서 AI의 의미 없는 칭찬 코멘트를 읽는 시간마저 아끼고 싶었습니다.
    • 단순 오류는 패스합니다. 개행 오류 같은 자잘한 피드백은 불필요한 노이즈라고 판단했습니다.
  • 필요한 부분에만 집중합니다.
    • 개선 사항이 아닌 실제 버그, 보안 결함, 코드 품질 문제만 집중해서 리뷰합니다.
    • 이번 PR에서 변경된 부분만 리뷰합니다. 불필요한 전체 코드 스캔을 하지 않습니다.
  • 명확한 액션을 제시합니다.
    • 추가 액션이 있다면 라인 코멘트로 분명히 제시합니다.
    • 문제가 없다면 승인 코멘트를 달아 명시적으로 PR을 종료합니다.

추가적으로 현재 제가 근무하고 있는 회사가 글로벌 스타트업이다 보니 타 팀의 동료도 사용할 수 있도록 리뷰 언어를 자유롭게 선택할 수 있게 했습니다.

이번 업데이트로 달라진 점

Cursor 기반 리뷰 툴을 1년간 사용하면서 여러 업데이트를 진행했고, 그 중에서 가장 집중했던 부분은 사용 편의성 개선입니다. 구체적으로 변경된 점은 아래와 같습니다.

  • 단일 에이전트 스킬(Agent Skill)로 전환했습니다.
    • 특정 LLM 플랫폼에 종속되지 않고 Claude, Codex 등 다양한 환경에서 사용할 수 있게 되었습니다.
    • 여러 파일을 번거롭게 다운로드받을 필요 없이 Claude Code 플러그인 마켓플레이스나 gh, npx skills로 간단하게 설치할 수 있습니다. 자세한 설치 방법은 레포지토리를 참고하세요.
  • 인증 방식을 GitHub 토큰 방식에서 gh CLI에 위임하는 방식으로 변경했습니다.
    • 별도로 토큰을 발급하고 관리하는 번거로움을 없애고 토큰 유출 위험도 원천 차단했습니다.
  • 코멘트 등록 방식을 변경했습니다.
    • 코멘트를 생성할 때마다 매번 API를 호출해 등록하던 방식에서 전체 리뷰를 모두 완료한 후 한 번에 모아서 호출하는 방식으로 변경했습니다. 이를 통해 GitHub 알림이 여러 번 가는 것을 방지하고 API 호출 효율도 높였습니다.
  • 재리뷰 루프 프로세스를 도입했습니다.
    • 기존에는 지적사항을 수정하고 나면 별도로 리뷰를 요청해야 했습니다. 요청하는 경우에도 수정된 부분만 리뷰하고 끝나는 경우가 많았습니다. 재리뷰 루프 프로세스를 도입해서 “수정했어” 한마디만 던지면 수정한 부분 확인 후 해당 수정이 다른 파일이나 로직에 영향을 주지 않았는지 전체적인 재검토를 진행하도록 개선했습니다.

마무리하면서

지난 1년간 PR 리뷰어는 제가 목표로 했던 ‘가볍지만 꼭 필요한 부분을 잡아주는 리뷰어 역할’을 아주 잘 수행해 주었습니다. 덕분에 현재 제 작업 워크플로우에도 성공적으로 정착한 상태입니다.

최근에는 LLM과 협업해서 프로젝트를 진행하는 일이 많아졌습니다. 그러다 보니 ‘LLM이 만든 결과물을 어떻게 효율적으로 교차 검증할 것인가’에 대한 고민도 자연스럽게 커졌습니다. 이 과정에서 제 개발 워크플로우 역시 함께 변화하는 중입니다. 그리고 이 PR 리뷰어도 지난 1년간 그랬듯, 앞으로 변화할 제 업무 방식에 맞춰 또 한번 변해가지 않을까 싶습니다.

또 공유할 만한 유용한 업데이트가 생기면 찾아오겠습니다.