---
name: review-cheatsheet
description: |
나노바나나 치트시트 이미지를 Gemini Vision으로 분석하여
해당 kr md 파일의 내용과 일치하는지 검증합니다.
기술적/문맥적 오류, 잘못된 텍스트/그래프/그림을 찾아냅니다.
사용: /review-cheatsheet week1/slug/chapter
arguments:
- name: path
description: |
week/slug/chapter 형식의 문서 경로
예: week1/deep-dive-llms/tokenization
required: true
- name: all
description: week1의 모든 치트시트를 검증 (--all)
required: false
---
# review-cheatsheet Skill
나노바나나 치트시트 이미지를 Gemini Vision API로 분석하여 원본 한국어 문서와 비교 검증합니다.
## 사용법
```
# 개별 챕터 검증
/review-cheatsheet week1/deep-dive-llms/tokenization
# 단일 페이지 검증
/review-cheatsheet week1/how-openai-uses-codex
# week1 전체 검증
/review-cheatsheet --all
```
## 입출력
### 입력 파일
| 파일 유형 | 경로 |
|----------|------|
| 치트시트 이미지 | `public/cheatsheets/week{N}/{slug}/{chapter}.png` |
| 한국어 번역 | `docs/week{N}/{slug}/kr/{chapter}.md` |
### 출력 파일
```
.claude/outputs/review-cheatsheet/
└── week{N}/{slug}/
├── {chapter}-gemini-analysis.json # Gemini Vision 분석 결과
└── {chapter}-review-report.md # 검증 리포트
```
## 검증 항목
1. **텍스트 정확성**: 이미지 내 텍스트가 md 파일 내용과 일치하는지
2. **기술적 정확성**: 수치, 용어, 개념이 올바른지
3. **문맥적 일관성**: 그래프/다이어그램이 설명과 맞는지
4. **오탈자/오류**: 잘못된 텍스트, 깨진 문자 등
## 워크플로우
```
/review-cheatsheet week1/deep-dive-llms/tokenization
│
▼
┌──────────────────────────────────────┐
│ 1. 파일 경로 확인 │
│ - 치트시트: public/cheatsheets/... │
│ - kr md: docs/.../kr/*.md │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 2. Gemini Vision API 호출 │
│ - 이미지 분석 │
│ - 모든 텍스트/요소 추출 │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 3. md 파일과 비교 분석 │
│ - Task agent로 비교 │
│ - 불일치/오류 탐지 │
└──────────────────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 4. 리포트 생성 │
│ - 발견된 이슈 정리 │
│ - 심각도 분류 │
└──────────────────────────────────────┘
```
## 실행 지침
이 스킬이 호출되면 다음 단계를 따르세요.
### Step 1: 경로 파싱 및 파일 확인
```
경로 파싱:
- week1/deep-dive-llms/tokenization
→ week: 1
→ slug: deep-dive-llms
→ chapter: tokenization
파일 경로:
- 이미지: public/cheatsheets/week1/deep-dive-llms/tokenization.png
- kr md: docs/week1/deep-dive-llms/kr/tokenization.md
파일명 매핑 주의:
- 일부 파일명이 다를 수 있음
- 이미지: preview-of-things-to-come.png → md: preview-things-to-come.md
- 이미지: sft-to-rl.png → md: supervised-finetuning-to-rl.md
- 매핑 실패 시 Glob으로 유사 파일 검색
```
### Step 2: Gemini Vision API 호출
Python 스크립트로 Gemini Vision API를 호출합니다:
```bash
python3 << 'PYEOF'
import os
import json
from pathlib import Path
# .env 파일에서 API 키 로드
env_path = Path(".env")
if env_path.exists():
for line in env_path.read_text().split('\n'):
if '=' in line and not line.strip().startswith('#'):
key, value = line.strip().split('=', 1)
os.environ[key] = value
import warnings
warnings.filterwarnings('ignore')
import google.generativeai as genai
genai.configure(api_key=os.environ.get('GOOGLE_API_KEY'))
# 이미지 경로 (실제 경로로 대체)
image_path = Path("public/cheatsheets/week1/deep-dive-llms/tokenization.png")
image_data = image_path.read_bytes()
model = genai.GenerativeModel('gemini-2.0-flash')
prompt = """
이 치트시트 이미지를 분석해주세요. 다음 항목들을 JSON 형식으로 반환해주세요:
1. extracted_text: 이미지에서 추출한 모든 텍스트 (섹션별로 구분)
2. diagrams: 다이어그램/그래프 설명
3. technical_terms: 기술 용어 목록
4. numbers: 이미지에 나타난 모든 숫자/수치
5. potential_issues: 발견된 잠재적 오류나 이상한 점
JSON 형식으로만 답변해주세요.
"""
response = model.generate_content([prompt, {"mime_type": "image/png", "data": image_data}])
print(response.text)
PYEOF
```
결과를 `.claude/outputs/review-cheatsheet/week{N}/{slug}/{chapter}-gemini-analysis.json`에 저장합니다.
### Step 3: md 파일과 비교 분석
Task agent를 호출하여 비교 분석을 수행합니다:
```
Task tool 호출:
- subagent_type: "general-purpose"
- prompt: .claude/agents/review-cheatsheet/compare-analyzer.md 내용
+ Gemini 분석 결과 JSON
+ kr md 파일 내용
- description: "cheatsheet-compare - 치트시트 검증"
```
### Step 4: 리포트 생성
비교 분석 결과를 바탕으로 리포트를 생성합니다:
```markdown
# 치트시트 검증 리포트
## 문서 정보
- **경로**: week1/deep-dive-llms/tokenization
- **이미지**: public/cheatsheets/week1/deep-dive-llms/tokenization.png
- **검증일**: {날짜}
## 검증 결과 요약
| 항목 | 상태 | 비고 |
|------|------|------|
| 텍스트 정확성 | ✅/⚠️/❌ | {설명} |
| 기술적 정확성 | ✅/⚠️/❌ | {설명} |
| 문맥적 일관성 | ✅/⚠️/❌ | {설명} |
## 발견된 이슈
### Critical (즉시 수정 필요)
- {이슈 설명}
### Warning (확인 권장)
- {이슈 설명}
### Info (참고)
- {이슈 설명}
## 상세 비교
### 이미지 추출 텍스트
{Gemini가 추출한 텍스트}
### md 파일 핵심 내용
{kr md 파일의 요약/핵심 정리 섹션}
### 불일치 항목
{구체적인 불일치 내용}
```
Write tool로 `.claude/outputs/review-cheatsheet/week{N}/{slug}/{chapter}-review-report.md`에 저장합니다.
### Step 5: 결과 출력
```
✅ 치트시트 검증 완료!
📊 **검증 결과**: {전체 상태}
📋 **발견된 이슈**:
- Critical: {N}건
- Warning: {N}건
- Info: {N}건
📁 **리포트 저장 위치**:
.claude/outputs/review-cheatsheet/week1/deep-dive-llms/
├── tokenization-gemini-analysis.json
└── tokenization-review-report.md
💡 **권장 조치**:
{Critical 이슈가 있으면 수정 권장}
```
## --all 옵션
week1의 모든 치트시트를 순차적으로 검증합니다:
```
1. public/cheatsheets/week1/**/*.png 파일 목록 가져오기
2. 각 이미지에 대해 Step 1-5 반복
3. 전체 요약 리포트 생성: master-report.md
```
## 에러 처리
| 상황 | 처리 |
|------|------|
| 이미지 파일 없음 | "치트시트 이미지를 찾을 수 없습니다: {경로}" |
| md 파일 없음 | "한국어 번역 파일을 찾을 수 없습니다: {경로}" |
| API 키 없음 | ".env 파일에 GOOGLE_API_KEY를 설정해주세요" |
| API 오류 | 에러 메시지 출력 후 스킵 |
## 요구사항
- **Python 패키지**: `google-generativeai` (또는 `google-genai`)
- **환경변수**: `.env` 파일에 `GOOGLE_API_KEY` 설정
- **API 키 발급**: https://aistudio.google.com/app/apikey