Skip to content

PR 리뷰 방식을 로컬 세션 → CI 기반 AI 리뷰로 전환하자 (당근마켓 안드로이드 팀 사례 참고) #268

Description

@Guryss

Issue Title

PR 리뷰 방식을 로컬 세션 → CI 기반 AI 리뷰로 전환하자 (당근마켓 안드로이드 팀 사례 참고)

Issue Content

한 줄 요약: 지금은 AI 리뷰가 로컬에서만 돌고 PR엔 흔적이 안 남는다. 당근마켓처럼 CI에서 자동으로 돌려 심각도별로 PR에 남기는 방식을 제안한다. 아래는 초안이고 팀 논의 후 확정한다.


🤔 문제

지금 PR 리뷰는 전부 각자 노트북의 로컬 Claude Code 세션에서 일어난다.

  • make-PR 스킬 1단계가 wss-pr-reviewer(cross-layer 통합)·wss-feature-reviewer(Feature 전문)를 불러 🔴Blocker/🟡Warning/🔵Nit로 리뷰
  • Blocker+Warning = 0이 될 때까지 최대 3라운드 로컬에서 직접 수정 후 PR 생성

PR에는 이미 반영된 최종 코드만 올라가서, 팀원 누구도 AI가 무엇을 지적했었는지 확인할 수 없다.


💡 당근마켓 안드로이드 팀 사례

같은 문제를 겪었는데, 처음엔 AI 리뷰를 전부 PR 코멘트로 달았더니 가독성이 떨어지고 중요한 이슈에 집중이 안 됐다고 한다. 그래서 심각도를 4단계로 나눠 노출 방식을 다르게 했다.

심각도 정의 노출 위치
🔴 Critical 제품에 영향을 주는 버그 PR 코멘트
🟠 High 기능은 동작하지만 UX 문제 PR 코멘트
🟡 Medium 구조·유지보수성·컨벤션 PR 본문
⚪ Low 사소한 리팩터링·주석 PR 본문

📋 조사로 확인한 현재 상태

  • 로컬 리뷰(wss-pr-reviewer.md)는 테스트를 실행하지 않는다 — 리포트 끝 "검증 권고" 한 줄뿐
  • 테스트는 이미 .github/workflows/test.yml이 PR마다 diff-aware로 돌고, gate("All Tests Passed")가 develop 브랜치 보호의 필수 체크
  • 같은 워크플로우의 arch-lint("Architecture Rules")가 ::error::/::warning:: 주석으로 위반을 PR diff에 인라인 표시하고, error면 exit 1 — 새 AI 리뷰도 이 패턴을 그대로 따라갈 수 있음
  • report job은 커버리지를 sticky-pull-request-comment로 PR에 지속 코멘트로 남기는 선례도 있음
  • AI/LLM 기반 워크플로우, Anthropic API 키 secret은 현재 전무 — 신규 도입 시 GitHub 웹에서 ANTHROPIC_API_KEY secret 등록(과금 발생) 필요

🚀 제안하는 방향 (초안 — 논의 대상)

1. 로컬 리뷰를 CI 리뷰로 완전 대체
make-PR 스킬의 로컬 리뷰 수렴 루프(1단계)를 없애고, PR 생성 후 CI(.github/workflows/test.yml에 새 job ai-review 추가)가 유일한 리뷰 지점이 된다. 테스트 job과 같은 워크플로우에 두면 Checks 탭에 테스트·리뷰가 나란히 뜬다.

2. 심각도 4단계로 재편
Critical/High/Medium/Low. 기존 wss-pr-reviewer/wss-feature-reviewer 체크리스트(cross-layer 정합성·의존성 방향·비동기 모델·Feature 계약 등)를 재매핑해 .github/CI_REVIEW_GUIDE.md(신설)에 체크리스트 정본으로 옮긴다.

3. Critical은 머지 차단
Critical이 하나라도 있으면 CI job을 fail시켜 develop 브랜치 보호의 필수 체크로 막는다(arch-lint와 동일 패턴).

4. Critical·High는 인라인 코드 리뷰 코멘트, Medium·Low는 PR 본문
PR 본문에 ## 🤖 AI Review (Medium / Low) 섹션을 새로 추가한다(마커 주석으로 재실행 시 교체, 중복 방지).

5. 기존 로컬 리뷰어는 삭제하지 않고 존치
wss-pr-reviewer.md/wss-feature-reviewer.md는 make-PR의 자동 호출 경로에서만 빠지고, 필요하면 수동으로 부를 수 있는 보조 도구로 남긴다.

6. LLM 호출 수단
Anthropic 공식 claude-code-action(GitHub Action) 사용을 가정했다 — 실제 파라미터·권한 스코프는 구현 직전 공식 문서로 재확인 필요.


✅ 팀에서 같이 정했으면 하는 것

  • 이 방향 자체에 동의하는지 (로컬 리뷰 완전 대체 vs 로컬+CI 병행)
  • Critical 발견 시 정말로 머지를 막을지 — 초기엔 report-only로 신뢰도를 확인한 뒤 승격하는 단계적 롤아웃이 안전할 수 있음(arch-lint·swift-format이 이미 이 순서를 밟음)
  • ANTHROPIC_API_KEY 도입에 따른 비용을 누가/어떻게 감당할지 — 커밋(synchronize)마다 자동 실행되므로 PR 하나에 여러 번 API 호출 발생
  • 심각도 매핑 기준이 타당한지 — 특히 "Domain 테스트 누락"·"서드파티 라이브러리 무단 추가"처럼 이 레포의 비협상 정책 위반을 Critical로 볼지

📎 참고

초안 구현 계획(파일 목록·job 뼈대·심각도 매핑 표·PR 본문 갱신 전략·스킬 개정안까지 정리됨)이 있다. 논의 후 방향이 정해지면 이 계획을 다시 다듬어 실제 작업 이슈로 쪼갠다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions