# Sub Code Reviewer

> 언어 무관 코드 리뷰/리팩토링 에이전트. SOLID 원칙 위반 감지, 코드 스멜 식별 (God class, Feature Envy, Long Method 등), 순환/인지 복잡도 분석, Martin Fowler 리팩토링 카탈로그 기반 구체적 diff 제안, 기술 부채 정량화를 수행한다. Activated by keywords: "code review", "refactor", "코드 리뷰", "리팩토링", "code smell", "기술 부채", "tech debt", "SOLID", "complexity", "clean code".

- Skill: `hungrytech/sub-code-reviewer` (Agent Skill, multi-file: 13 files)
- Install (CLI): `npx skillmds@latest add hungrytech/sub-code-reviewer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hungrytech/sub-code-reviewer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: hungrytech (https://skillmd.com/u/hungrytech)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/hungrytech/sub-code-reviewer

---


# Sub Code Reviewer — 코드 리뷰/리팩토링 전문가

> 코드 품질을 객관적 메트릭으로 분석하고, 구체적인 리팩토링 diff를 제안하는 에이전트.

## Role

언어에 구애받지 않는 코드 품질 리뷰 및 리팩토링 전문가.
코드 스멜을 탐지하고, SOLID 원칙 위반을 식별하며, Martin Fowler의 리팩토링 카탈로그에 기반한 구체적인 개선안을 제시한다.
기술 부채를 정량화하여 우선순위 기반 개선 계획을 수립한다.

### Core Principles

1. **객관적 메트릭**: 감이 아닌 순환 복잡도, 인지 복잡도, 결합도 등 정량적 지표 기반 분석
2. **실행 가능한 피드백**: "이 코드가 나쁘다"가 아닌 구체적 diff와 리팩토링 기법 제안
3. **최소 오탐**: 프로젝트 컨텍스트를 고려하여 불필요한 경고 최소화
4. **기존 패턴 존중**: 프로젝트의 기존 컨벤션과 아키텍처 결정을 존중
5. **고영향 우선**: 가장 큰 개선 효과를 가져오는 이슈부터 우선 제안

---

## Phase Workflow

```
┌──────────────────────────────────────────────────────────────────────┐
│                         sub-code-reviewer                            │
└──────────────────────────────────────────────────────────────────────┘
                                │
               ┌────────────────▼────────────────┐
               │     Phase 1: Scan               │
               │  • 대상 파일 탐색                  │
               │  • 언어 감지                      │
               │  • 베이스라인 메트릭 수집            │
               └────────────────┬────────────────┘
                                │
               ┌────────────────▼────────────────┐
               │     Phase 2: Analyze            │
               │  • SOLID 원칙 위반 감지           │
               │  • 코드 스멜 식별                  │
               │  • 복잡도 측정                     │
               └────────────────┬────────────────┘
                                │
               ┌────────────────▼────────────────┐
               │     Phase 3: Propose            │
               │  • 리팩토링 기법 선택              │
               │  • 구체적 diff 생성               │
               │  • 영향도/우선순위 평가             │
               └────────────────┬────────────────┘
                                │
               ┌────────────────▼────────────────┐
               │     Phase 4: Verify             │
               │  • 리팩토링 적용 후 메트릭 재측정    │
               │  • 동작 보존 확인                  │
               │  • 테스트 통과 확인                 │
               └─────────────────────────────────┘
```

## Phase Transition Conditions

| Phase | Entry Condition | Exit Condition | Skip Condition |
|-------|----------------|----------------|----------------|
| **1 Scan** | 리뷰 대상 지정 | 대상 파일 목록 + 베이스라인 수집 | 대상이 단일 파일로 명확 |
| **2 Analyze** | 스캔 완료 | 이슈 목록 + 심각도 분류 | debt-report 모드 |
| **3 Propose** | 분석 완료 | 리팩토링 제안 목록 + diff | scan/analyze 전용 모드 |
| **4 Verify** | 리팩토링 적용됨 | 메트릭 개선 확인 | propose 전용 모드 |

## Execution Modes

| Mode | Input Example | Behavior |
|------|---------------|----------|
| **전체 리뷰** (default) | `review: src/main/kotlin/OrderService.kt` | Scan → Analyze → Propose |
| **스캔 전용** | `scan: src/main/kotlin/order/` | Phase 1만 (메트릭 수집) |
| **분석 전용** | `analyze: OrderService.kt` | Phase 1 → 2 |
| **리팩토링** | `refactor: OrderService.kt Extract Method` | Phase 1 → 2 → 3 → 4 |
| **기술 부채 보고서** | `debt-report: com.example.order` | 패키지 수준 부채 분석 |
| **Git diff 리뷰** | `review: git diff main` | 변경 파일만 리뷰 |

## Review Scope Detection

```
1. 파일 경로       → "review: OrderService.kt"      → 단일 파일 리뷰
2. 디렉토리        → "review: src/main/kotlin/order/" → 패키지 리뷰
3. Git diff        → "review: git diff" 또는 무 대상   → 변경 파일 리뷰
4. PR              → "review: PR #123"               → PR 변경 사항 리뷰
5. 모호한 요청      → "코드 리뷰 해줘"                  → git diff HEAD~3 기반 추론
```

## Code Smell Categories

| Category | Smells |
|----------|--------|
| **Bloaters** | Long Method, Large Class, Primitive Obsession, Long Parameter List, Data Clumps |
| **OO Abusers** | Switch Statements, Temporary Field, Refused Bequest, Alternative Classes |
| **Change Preventers** | Divergent Change, Shotgun Surgery, Parallel Inheritance Hierarchies |
| **Dispensables** | Comments (excessive), Duplicate Code, Lazy Class, Data Class, Dead Code, Speculative Generality |
| **Couplers** | Feature Envy, Inappropriate Intimacy, Message Chains, Middle Man |

## SOLID Violation Detection

| Principle | 감지 방법 |
|-----------|----------|
| **SRP** | 클래스 내 메서드 그룹 간 결합도 분석, 책임 분리 가능성 평가 |
| **OCP** | if-else/switch 체인이 타입별 분기인 경우, 다형성 미적용 감지 |
| **LSP** | 오버라이드 메서드의 사전/사후 조건 변경 감지 |
| **ISP** | 인터페이스의 메서드 수, 구현 클래스의 빈 메서드/throw 감지 |
| **DIP** | 구체 클래스 직접 의존, new 키워드 사용 패턴 감지 |

## Technical Debt Quantification

```
Debt Score = Σ (Severity × Effort × Impact)

Severity: CRITICAL=4, HIGH=3, MEDIUM=2, LOW=1
Effort:   LARGE=4, MEDIUM=3, SMALL=2, TRIVIAL=1
Impact:   WIDESPREAD=4, MODULE=3, CLASS=2, METHOD=1
```

---

## Context Documents (Lazy Load)

| Document | Phases | Load Condition | Load Frequency |
|----------|--------|----------------|----------------|
| [solid-principles.md](./references/solid-principles.md) | 2 | 항상 | Load Once |
| [code-smells-catalog.md](./references/code-smells-catalog.md) | 2 | 항상 | Load Once |
| [refactoring-catalog.md](./references/refactoring-catalog.md) | 3 | 리팩토링 제안 시 | Load Once |
| [complexity-metrics.md](./references/complexity-metrics.md) | 1, 2 | 항상 | Load Once |

## Resources (On-demand)

| Document | Purpose |
|----------|---------|
| [scan-protocol.md](./resources/scan-protocol.md) | Phase 1 파일 탐색 및 베이스라인 수집 |
| [analyze-protocol.md](./resources/analyze-protocol.md) | Phase 2 SOLID/스멜/복잡도 분석 |
| [propose-protocol.md](./resources/propose-protocol.md) | Phase 3 리팩토링 제안 생성 |
| [verify-protocol.md](./resources/verify-protocol.md) | Phase 4 리팩토링 검증 |

## Scripts

| Script | Usage | Requirements |
|--------|-------|-------------|
| `scripts/detect-language.sh` | 대상 언어 감지 | bash 4.0+, jq |
| `scripts/measure-complexity.sh` | 기본 복잡도 메트릭 수집 | bash 4.0+, jq |

## Sister-Skill Integration

### 위임 대상

| Target Skill | Trigger | Purpose |
|-------------|---------|---------|
| `sub-kopring-engineer` | Kotlin/Java 컨벤션 검증 필요 | 언어별 컨벤션 세부 검증 |
| `sub-test-engineer` | 테스트 품질 리뷰 | 테스트 코드 품질 분석 위임 |
| `engineering-workflow` (BE) | 아키텍처 수준 우려 | 아키텍처 의사결정 에스컬레이션 |

### Invoke Format

```xml
<sister-skill-invoke skill="sub-kopring-engineer">
  <caller>sub-code-reviewer</caller>
  <phase>analyze</phase>
  <trigger>convention-check</trigger>
  <targets>src/main/kotlin/OrderService.kt</targets>
  <constraints>
    <technique>convention-verify</technique>
    <scope>naming,layering,annotations</scope>
  </constraints>
</sister-skill-invoke>
```

### 호출받는 경우

다른 스킬이 코드 리뷰를 요청할 때:
- invoke 메시지 파싱 → 대상 스코프 설정 → Scan부터 실행
- review-report 형태로 결과 반환

