# Agy Review

> Antigravity CLI(agy)에게 코드 검수 요청. Gemini 3.1 Pro가 독립적으로 리뷰한다. 사용: /agy-review, /agy-review --base main, /agy-review 보안 집중해서 봐줘

- Skill: `wjb127/agy-review` (Agent Skill)
- Install (CLI): `npx skillmds@latest add wjb127/agy-review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wjb127/agy-review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: wjb127 (https://skillmd.com/u/wjb127)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/wjb127/agy-review

---


# Antigravity(Gemini) 코드 검수

현재 프로젝트의 코드 변경사항을 Google Gemini 3.1 Pro에게 독립적으로 리뷰 요청한다.
Antigravity CLI(`agy`)의 `--print` 모드로 비대화형 실행.

## Step 1: agy CLI 확인

```bash
~/.local/bin/agy --help 2>/dev/null | head -3 || echo "NOT_FOUND"
```

`NOT_FOUND`면 중단: "agy CLI 없음. https://antigravity.dev 에서 설치 후 로그인해."

## Step 2: 인자 파싱

사용자 입력(`$ARGUMENTS`)에서:
- `--base <branch>` → base 브랜치 지정 (없으면 자동 감지)
- 나머지 텍스트 → 커스텀 검수 지시사항

**base 브랜치 자동 감지** (`--base` 없을 때):
```bash
git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/origin/||' || echo "main"
```

## Step 3: 변경사항 확인

```bash
_BASE="<감지된 base 브랜치>"
_DIFF_STAT=$(git diff origin/$_BASE --stat 2>/dev/null | tail -5)
```

변경사항이 없으면 uncommitted 확인:
```bash
_DIFF_STAT=$(git diff --stat 2>/dev/null | tail -5)
```

아무 변경도 없으면 "변경사항 없음. 커밋하거나 수정 후 다시 실행해." 안내.

## Step 4: diff 추출 + 리뷰 실행

diff가 너무 크면 agy 컨텍스트를 넘길 수 있으므로 파일 단위로 축약:

```bash
_REPO_ROOT=$(git rev-parse --show-toplevel)
cd "$_REPO_ROOT"

# diff 추출 (최대 8000줄 제한)
_DIFF=$(git diff origin/$_BASE 2>/dev/null || git diff 2>/dev/null)
_DIFF_LINES=$(echo "$_DIFF" | wc -l)

if [ "$_DIFF_LINES" -gt 8000 ]; then
  _DIFF=$(git diff origin/$_BASE --stat && echo "---" && git diff origin/$_BASE -- '*.ts' '*.tsx' '*.js' '*.jsx' '*.css' '*.py' | head -8000)
fi
```

리뷰 요청:

```bash
echo "$_DIFF" | ~/.local/bin/agy --print \
  "You are a senior code reviewer. Review the following git diff thoroughly. Focus on:
1. Bugs and logic errors
2. Security vulnerabilities (XSS, injection, auth issues)
3. Performance issues
4. TypeScript type safety
5. React/Next.js best practices (if applicable)
6. Code style and maintainability
<사용자 커스텀 지시사항이 있으면 여기에 추가>

Answer in Korean. Be specific — file names, line numbers, concrete suggestions.
If the code looks good, say so briefly.

Here is the diff:
$(cat)" \
  --print-timeout 300s \
  2>&1
```

timeout: 300000ms (5분)

**커스텀 포커스가 있을 때** (예: "보안 집중", "성능 이슈 찾아줘"):
위 프롬프트의 Focus 섹션에 사용자 지시사항을 우선 배치.

## Step 5: 결과 출력

```
═══════════════════════════════════════════════
GEMINI 3.1 PRO 검수 결과
═══════════════════════════════════════════════
<agy 출력 전문 — 요약하지 말고 그대로 표시>
═══════════════════════════════════════════════
```

## Step 6: Claude 의견 추가

Gemini 결과를 본 후, Claude 자신의 관점에서 간략히 덧붙인다:
- 동의하는 지적사항
- 추가로 발견한 이슈
- 의견이 다른 부분 (있다면)

## 에러 처리

| Error | Message |
|-------|---------|
| 인증 에러 | "Google OAuth 만료. 터미널에서 `agy` 실행 후 재로그인." |
| 타임아웃 | "5분 초과. diff가 너무 큼. `--base`로 범위 좁혀서 다시 시도." |
| 빈 응답 | stderr 내용 표시 후 재시도 안내 |
| NOT_FOUND | "agy CLI 없음. ~/.local/bin/agy 확인." |

## 규칙

- 읽기 전용 — 파일 수정 절대 안 함
- Gemini 출력은 요약/편집 없이 전문 그대로 표시
- Claude 의견은 Gemini 출력 이후에 별도로 추가
- 항상 `~/.local/bin/agy` 풀 경로 사용 (IDE 버전 충돌 방지)
- diff가 8000줄 초과 시 코드 파일만 필터링해서 전달

