| name | resolve-review |
| description | GitHub PR의 코드 리뷰 코멘트를 읽어와 피드백을 반영하고, 각 코멘트에 답글을 남깁니다. |
Resolve Review Skill
GitHub PR에 남겨진 코드 리뷰 코멘트를 확인하고, 피드백을 코드에 반영한 뒤, 각 코멘트에 처리 결과를 답글로 남깁니다.
사용법
사용 시점
PR에 코드 리뷰 코멘트가 달린 후, 피드백을 반영할 때 사용합니다.
호출 방법
/resolve-review <PR번호>
동작 흐름
- PR의 리뷰 코멘트 조회
- 각 코멘트의 우선순위와 내용 분석
- 해당 PR 브랜치로 체크아웃 (worktree 포함)
- 피드백을 코드에 반영
- 변경 사항 커밋 및 푸시
- 각 리뷰 코멘트에 처리 결과 답글 작성
상세 절차
Step 1: 리뷰 코멘트 조회
gh pr view <PR번호> --comments --json comments,reviews \
--jq '.reviews[] | "[\(.author.login)] state: \(.state)\n\(.body)"'
gh api repos/{owner}/{repo}/pulls/{pull_number}/comments \
--jq '.[] | "\(.id)\t\(.path):\(.original_line)\t\(.body)"'
Step 2: 코멘트 분석
각 코멘트에서 다음을 파악:
- 우선순위: high, medium, low (뱃지 이미지 또는 텍스트에서 추출)
- 대상 파일 및 라인:
path와 line 필드
- 제안 내용:
suggestion 코드 블록 또는 본문 설명
- 이미 답글이 달렸는지:
in_reply_to_id가 있는 코멘트는 답글이므로 원본만 처리
Step 3: 브랜치 체크아웃
gh pr view <PR번호> --json headRefName --jq '.headRefName'
git checkout <branch>
Step 4: 코드 수정
- 리뷰 코멘트의 suggestion이 있으면 해당 내용을 우선 반영
- suggestion이 없으면 코멘트의 설명을 바탕으로 적절히 수정
- high priority 코멘트를 먼저 처리
Step 5: 커밋 및 푸시
git add <수정된 파일들>
git commit -m "refactor: 코드 리뷰 피드백 반영
Co-Authored-By: Claude <model> <noreply@anthropic.com>"
git push
Step 6: 리뷰 코멘트에 답글
각 코멘트에 처리 결과를 답글로 남김:
gh api repos/{owner}/{repo}/pulls/{pull_number}/comments -X POST \
-f body="반영 완료했습니다. <변경 요약> (<commit-hash>)" \
-F in_reply_to=<comment_id>
Step 7: AI Agent 코멘트 Resolve
AI Agent(봇)가 남긴 코멘트를 반영한 경우, 해당 코멘트 스레드를 resolve 처리:
- 대상:
user.type이 "Bot"인 코멘트만 resolve (예: gemini-code-assist[bot], github-actions[bot] 등)
- 사람이 남긴 코멘트는 절대 resolve하지 않음 — 사람의 코멘트는 본인이 직접 resolve해야 함
gh api graphql -f query='
mutation {
resolveReviewThread(input: {threadId: "<thread_node_id>"}) {
thread { isResolved }
}
}
'
thread_node_id 조회 방법: 리뷰 코멘트 조회 시 node_id 필드 대신, PR의 review threads에서 GraphQL로 조회:
gh api graphql -f query='
query {
repository(owner: "{owner}", name: "{repo}") {
pullRequest(number: {pull_number}) {
reviewThreads(first: 100) {
nodes {
id
isResolved
comments(first: 1) {
nodes {
databaseId
author { login }
}
}
}
}
}
}
}
'
comments(first: 1)의 databaseId가 원본 코멘트 ID와 일치하는 thread의 id를 사용하여 resolve
규칙
- 원본 코멘트만 처리:
in_reply_to_id가 null인 코멘트만 대상으로 함 (답글은 무시)
- 우선순위 순서: high → medium → low 순으로 처리
- 판단이 필요한 경우: 코멘트의 제안이 프로젝트 컨벤션과 충돌하거나 부적절하다고 판단되면, 사용자에게 확인을 요청
- 답글 형식: 간결하게 무엇을 변경했는지 + 커밋 해시 포함
- 답글이 이미 있는 코멘트: 이미 답글이 달린 코멘트는 건너뜀
- AI Agent 코멘트 자동 resolve:
user.type == "Bot"인 코멘트는 반영 후 자동으로 resolve 처리. 사람이 남긴 코멘트는 절대 resolve하지 않음
GitHub API 참고
리뷰 코멘트 조회
GET /repos/{owner}/{repo}/pulls/{pull_number}/comments
주요 필드:
id: 코멘트 고유 ID (답글 시 in_reply_to에 사용)
path: 대상 파일 경로
line / original_line: 코멘트가 달린 라인 번호
body: 코멘트 본문
in_reply_to_id: 답글 대상 코멘트 ID (null이면 원본 코멘트)
리뷰 코멘트에 답글
POST /repos/{owner}/{repo}/pulls/{pull_number}/comments
필수 파라미터:
body (string): 답글 내용 → -f body="..."
in_reply_to (integer): 원본 코멘트 ID → -F in_reply_to=<id> (-F로 숫자 전달)