---
name: code-quality-checker
description: >
  코드 품질 검사 자동화. 린트, 포맷, 타입 체크, 보안 스캔 통합.
version: 2.0.0

triggers:
  keywords:
    - "린트"
    - "품질 검사"
    - "코드 체크"
    - "보안 스캔"
    - "ruff"
    - "mypy"
    - "eslint"
    - "React 검사"
    - "React 성능"
  file_patterns:
    - "src/**/*.py"
    - "src/**/*.ts"
    - "**/*.js"
    - "**/*.tsx"
    - "**/*.jsx"
  context:
    - "코드 품질 개선"
    - "린트 오류 수정"
    - "React 성능 최적화"

capabilities:
  - run_quality_check
  - auto_fix_lint
  - security_scan
  - react_performance_check

model_preference: haiku

phase: [2, 2.5]
auto_trigger: true
dependencies:
  - code-reviewer
  - security-auditor
  - vercel-react-best-practices
token_budget: 1400
---

# Code Quality Checker

코드 품질 검사 자동화 워크플로우입니다.

## Quick Start

```bash
# 전체 품질 검사
python .claude/skills/code-quality-checker/scripts/run_quality_check.py

# Python만 검사
python scripts/run_quality_check.py --python-only

# 자동 수정 적용
python scripts/run_quality_check.py --fix
```

## 검사 항목

### Python

| 도구 | 용도 | 명령어 |
|------|------|--------|
| **ruff** | 린트 + 포맷 | `ruff check src/` |
| **black** | 포맷팅 | `black --check src/` |
| **mypy** | 타입 체크 | `mypy src/` |
| **pip-audit** | 보안 취약점 | `pip-audit` |

### TypeScript/JavaScript

| 도구 | 용도 | 명령어 |
|------|------|--------|
| **eslint** | 린트 | `npx eslint src/` |
| **prettier** | 포맷팅 | `npx prettier --check src/` |
| **tsc** | 타입 체크 | `npx tsc --noEmit` |
| **npm audit** | 보안 취약점 | `npm audit` |

## 검사 수준

### Level 1: 기본 (CI 필수)

```bash
# Python
ruff check src/
black --check src/

# TypeScript
npx eslint src/
npx prettier --check src/
```

### Level 2: 타입 검사 (권장)

```bash
# Python
mypy src/ --strict

# TypeScript
npx tsc --noEmit --strict
```

### Level 3: 보안 (배포 전 필수)

```bash
# Python
pip-audit --strict
bandit -r src/

# TypeScript
npm audit --audit-level=high
```

## 자동 수정

### 안전한 자동 수정

```bash
# Python 포맷팅
black src/
ruff check src/ --fix

# TypeScript 포맷팅
npx prettier --write src/
npx eslint src/ --fix
```

### 수동 확인 필요

| 이슈 | 이유 |
|------|------|
| 타입 오류 | 로직 변경 가능성 |
| 보안 취약점 | 의존성 호환성 |
| 복잡한 린트 규칙 | 의도적일 수 있음 |

## 설정 파일

### Python (pyproject.toml)

```toml
[tool.ruff]
line-length = 100
select = ["E", "F", "W", "I", "N", "UP", "B", "C4"]

[tool.black]
line-length = 100

[tool.mypy]
python_version = "3.11"
strict = true
```

### TypeScript (eslint.config.js)

```javascript
export default [
  {
    rules: {
      "@typescript-eslint/no-unused-vars": "error",
      "@typescript-eslint/explicit-function-return-type": "warn",
    }
  }
];
```

## CI 통합

### GitHub Actions

```yaml
- name: Code Quality
  run: |
    ruff check src/
    black --check src/
    mypy src/
```

### Pre-commit Hook

```yaml
# .pre-commit-config.yaml
repos:
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.1.0
    hooks:
      - id: ruff
      - id: ruff-format
```

## 오류 해결 가이드

### 일반적인 ruff 오류

| 코드 | 설명 | 해결 |
|------|------|------|
| E501 | 줄 길이 초과 | 줄 분할 또는 무시 설정 |
| F401 | 미사용 import | import 제거 |
| F841 | 미사용 변수 | 변수 제거 또는 _ 사용 |

### mypy 오류

| 오류 | 설명 | 해결 |
|------|------|------|
| Missing return | 반환 타입 누락 | `-> Type` 추가 |
| Incompatible types | 타입 불일치 | 타입 수정 또는 캐스팅 |
| Module has no attribute | 모듈 속성 없음 | 타입 스텁 설치 |

## React 성능 검사

### React 검사 모드

```bash
# React 성능 규칙 검사
/check --react

# 특정 디렉토리만
/check --react src/components/

# 품질 + React 검사 조합
python scripts/run_quality_check.py --react
```

### 검사 항목

| 우선순위 | 카테고리 | 검사 내용 |
|:--------:|----------|----------|
| 🔴 CRITICAL | Waterfall | sequential await 감지 |
| 🔴 CRITICAL | Bundle | barrel file import 감지 |
| 🟠 HIGH | Server | RSC 직렬화 최적화 |
| 🟡 MEDIUM | Re-render | stale closure, 불필요한 렌더링 |

### 연동 스킬

`vercel-react-best-practices` 스킬의 49개 규칙을 기반으로 검사합니다.
상세 규칙: `.claude/skills/vercel-react-best-practices/AGENTS.md`

---

## 관련 도구

| 도구 | 용도 |
|------|------|
| `scripts/run_quality_check.py` | 통합 검사 |
| `code-reviewer` 에이전트 | 코드 리뷰 |
| `security-auditor` 에이전트 | 보안 검사 |
| `vercel-react-best-practices` 스킬 | React 성능 검사 |
| `/check` | 통합 검증 커맨드 |

---

> 참조: CLAUDE.md 섹션 2 Build & Test
