ASTRA PR Review & Merge Workflow
커밋부터 코드 리뷰, 이슈 수정, 머지까지 전체 사이클을 자동화합니다. 리뷰 → 수정 → 재리뷰 반복 사이클을 최대 반복 횟수까지 자동 실행합니다.
Execution Procedure
Step 1: 사전 검증
$ARGUMENTS를 파싱하여 옵션을 결정한다:
- •max-iterations: 숫자 인자 → 최대 리뷰 반복 횟수 (기본값: 3)
- •--no-review: 코드 리뷰 없이 커밋→푸시→PR 생성→머지만 실행
- •--draft: PR을 Draft 상태로 생성
- •--patch / --minor / --major: 버전 범프 유형 (기본값: --patch)
다음 사전 조건을 검증한다:
- •브랜치 확인: 현재 브랜치가
main또는master가 아닌지 확인한다. main/master에서 실행 시 경고를 출력하고 중단한다. - •gh CLI 인증:
gh auth status를 실행하여 GitHub CLI 인증 상태를 확인한다. 인증되지 않은 경우gh auth login을 안내하고 중단한다. - •클린 상태 확인:
git status로 현재 상태를 파악한다 (커밋되지 않은 변경사항, 스테이징된 파일 등).
Step 1.5: main 동기화
원격 main 브랜치의 최신 변경사항을 현재 브랜치에 동기화한다:
code
git fetch origin main git merge origin/main
- •충돌 없음: 다음 단계로 진행
- •충돌 발생: 충돌 파일 목록을 출력하고, 사용자에게 수동 해결을 안내한 후 중단한다. 자동 충돌 해결은 시도하지 않는다.
Step 2: 커밋 & 푸시
미커밋 변경사항을 처리한다:
- •
git status로 변경사항을 확인한다. - •변경사항이 있으면 변경 내용 요약을 사용자에게 보여주고 AskUserQuestion으로 커밋 진행 여부를 확인한다.
- •사용자 확인 후:
- •변경된 파일을
git add로 스테이징 (민감 파일.env,credentials등 제외) - •
git diff --staged로 스테이징된 변경사항 분석 - •
git log로 최근 커밋 메시지 스타일 확인 - •변경사항을 분석하여 커밋 메시지 작성 후
git commit실행
- •변경된 파일을
- •
git push -u origin {branch-name}으로 원격에 푸시한다.
변경사항이 없으면 이 단계를 건너뛴다.
Step 3: PR 생성
기존 PR이 있는지 확인하고, 없으면 새로 생성한다:
- •
gh pr list --head {branch-name} --state open으로 기존 PR 확인 - •기존 PR이 있으면: PR URL을 출력하고 Step 4로 진행
- •기존 PR이 없으면: ASTRA 템플릿으로 PR 생성
bash
gh pr create --title "{PR 제목}" --body "$(cat <<'EOF'
## Summary
- {변경사항 요약 1}
- {변경사항 요약 2}
## Test plan
- [ ] 코드 리뷰 통과
- [ ] 테스트 실행 확인
🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"
- •
--draft옵션이 지정된 경우--draft플래그 추가 - •PR 제목은 70자 이내로 작성
- •PR URL을 출력한다
Step 4: 코드 리뷰
--no-review 옵션이 지정된 경우 이 단계를 건너뛰고 Step 7로 진행한다.
feature-dev:code-reviewer Task 에이전트를 스폰하여 코드 리뷰를 실행한다:
code
Task tool (subagent_type: "feature-dev:code-reviewer") - PR의 변경사항을 기준으로 코드 리뷰 실행 - 버그, 로직 오류, 보안 취약점, 코드 품질 이슈를 분석
리뷰 결과를 다음 4단계로 분류하여 출력한다:
| 심각도 | 설명 | 예시 |
|---|---|---|
| Critical | 즉시 수정 필수, 프로덕션 장애 위험 | SQL injection, null 참조, 데이터 손실 |
| High | 수정 권장, 중요 버그 또는 보안 이슈 | 미처리 예외, 인증 우회 가능성 |
| Medium | 코드 품질 개선, 기능에는 영향 없음 | 중복 코드, 비효율 로직, 불명확한 네이밍 |
| Low | 스타일/컨벤션, 선택적 개선 | 포매팅, 주석 누락, 미사용 import |
Step 4.5: 리뷰 결과 판정
리뷰 결과를 바탕으로 다음 행동을 결정한다:
- •Critical + High = 0건: 리뷰 통과 → Step 7로 진행
- •Critical + High > 0건 AND 반복 횟수 < MAX: 이슈 수정 필요 → Step 5로 진행
- •반복 횟수 = MAX에 도달: AskUserQuestion으로 사용자에게 선택지를 제공
- •(a) 추가 반복 허용 (MAX 증가)
- •(b) 남은 이슈를 무시하고 머지 진행 (단, Critical 이슈가 있으면 이 선택지는 제공하지 않음)
- •(c) 워크플로우 중단
머지 차단 조건: Critical 이슈가 1건이라도 남아있으면 머지를 진행할 수 없다.
Step 5: 이슈 수정
Step 4에서 발견된 Critical 및 High 이슈를 수정한다:
- •이슈 목록을 사용자에게 표시한다.
- •AskUserQuestion으로 자동 수정 진행 여부를 확인한다.
- •사용자 확인 후, 각 이슈를 순서대로 수정한다:
- •해당 파일을 읽고 이슈 위치를 파악
- •Edit tool로 코드 수정
- •수정 내용 요약 출력
- •프로젝트에 테스트가 설정되어 있으면 테스트를 실행하여 수정이 기존 기능을 깨뜨리지 않았는지 확인한다.
Step 6: 재커밋 & 푸시
수정사항을 커밋하고 푸시한 뒤 재리뷰한다:
- •수정된 파일을
git add로 스테이징 - •
git commit— 메시지는 "fix: address code review issues (iteration {N})" 형식 - •
git push로 원격에 푸시 - •Step 4로 복귀하여 재리뷰 실행
Step 7: 버전 업데이트
.claude-plugin/plugin.json 파일이 존재하는 플러그인 프로젝트에서만 실행한다.
- •
.claude-plugin/plugin.json과.claude-plugin/marketplace.json의 존재 여부를 확인한다. - •파일이 존재하면
--patch/--minor/--major옵션에 따라 SemVer 버전을 범프한다:- •
--patch(기본값):x.y.z→x.y.z+1 - •
--minor:x.y.z→x.y+1.0 - •
--major:x.y.z→x+1.0.0
- •
- •두 파일 모두 동일한 버전으로 업데이트한다.
- •버전 변경을 커밋하고 푸시한다: "chore: bump version to {new-version}"
- •파일이 존재하지 않으면 이 단계를 건너뛴다.
Step 8: PR 머지
PR을 머지한다:
- •AskUserQuestion으로 사용자에게 최종 머지 확인을 요청한다.
- •PR URL, 리뷰 결과 요약 (통과 여부, 반복 횟수), 변경 파일 수를 표시
- •사용자 확인 후:
- •Draft PR인 경우 먼저
gh pr ready로 Ready 상태로 변경 - •
gh pr merge --merge --delete-branch로 머지 실행
- •Draft PR인 경우 먼저
Step 9: 정리
머지 후 로컬 환경을 정리한다:
- •
git checkout main으로 main 브랜치로 전환 - •
git pull로 최신 상태 동기화 - •머지된 로컬 브랜치 삭제:
git branch -d {branch-name} - •최종 요약을 출력한다:
code
## PR Review & Merge 완료
### 결과 요약
- PR: {PR URL}
- 리뷰 반복: {N}회
- 수정된 이슈: Critical {n}건, High {n}건
- 버전: {old-version} → {new-version} (해당 시)
- 상태: ✅ 머지 완료
### 변경사항
- {커밋 요약 1}
- {커밋 요약 2}
Quick Run Examples
code
# 기본 실행 (최대 3회 리뷰 반복) /pr-merge # 리뷰 반복 최대 5회 /pr-merge 5 # 코드 리뷰 없이 빠른 머지 /pr-merge --no-review # Draft PR로 생성 후 리뷰 /pr-merge --draft # minor 버전 범프와 함께 실행 /pr-merge --minor # 옵션 조합 /pr-merge 5 --minor --draft
Notes
- •main/master 브랜치에서는 실행할 수 없다.
- •Critical 이슈가 남아있으면 머지가 차단된다.
- •충돌 발생 시 자동 해결을 시도하지 않고, 사용자에게 안내 후 중단한다.
- •버전 범프는
.claude-plugin/plugin.json이 존재하는 프로젝트에서만 실행된다. - •커밋, 자동 수정, 머지 전에는 반드시 사용자 확인을 거친다.