Optimization check-config-validation

설정 파일 검증 스킬. YAML 구문, Pydantic 스키마 준수, 환경별 일관성을 검사한다. convention-config 스킬의 규칙을 기반으로 검증을 수행한다.

install
source · Clone the upstream repo
git clone https://github.com/sunLeee/optimization
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sunLeee/optimization "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/quality/check/check-config-validation" ~/.claude/skills/sunleee-optimization-check-config-validation && rm -rf "$T"
manifest: .claude/skills/quality/check/check-config-validation/SKILL.md
source content

설정 파일 검증

설정 파일의 구문과 스키마 준수 여부를 검증한다.

목적

  • YAML 구문 유효성 검사
  • Pydantic 스키마 준수 검증
  • 환경별 설정 일관성 확인
  • 하드코딩 패턴 탐지
  • 누락된 필수 설정 식별

사용법

/check-config-validation config/
/check-config-validation config/config.yaml
/check-config-validation --all
옵션설명
경로
특정 파일 또는 디렉토리 검증
--all
모든 환경 설정 파일 검증
--schema
스키마 파일과 비교 검증

검증 프로세스

1단계: YAML 구문 검사

import yaml

try:
    with open("config/config.yaml") as f:
        config = yaml.safe_load(f)
    print("✓ YAML 구문 유효")
except yaml.YAMLError as e:
    print(f"✗ YAML 구문 오류: {e}")

2단계: 스키마 검증

Pydantic 스키마와 비교하여 타입 및 제약조건 검증:

from config.schemas.config_schema import Config
from omegaconf import OmegaConf

raw = OmegaConf.load("config/config.yaml")
try:
    config = Config(**OmegaConf.to_container(raw))
    print("✓ 스키마 검증 통과")
except ValidationError as e:
    print(f"✗ 스키마 검증 실패: {e}")

3단계: 환경 일관성 검사

모든 환경 파일(dev, prod, test)의 키 일관성 검증:

flowchart TD
    Base["config.yaml (base)"]

    BaseKey1["paths.data_dir ✓"]
    BaseKey2["data.batch_size ✓"]
    BaseKey3["model.name ✓"]

    Dev["config.dev.yaml"]
    DevKey1["database.debug ✓<br/>(추가 키)"]
    DevKey2["(base 키 모두 존재) ✓"]

    Prod["config.prod.yaml"]
    ProdKey1["database.pool_size ✓<br/>(추가 키)"]
    ProdKey2["paths.data_dir ✗<br/>(누락)"]

    Base --> BaseKey1
    Base --> BaseKey2
    Base --> BaseKey3

    Dev --> DevKey1
    Dev --> DevKey2

    Prod --> ProdKey1
    Prod --> ProdKey2

    style Base fill:#e1f5ff
    style BaseKey1 fill:#e1ffe1
    style BaseKey2 fill:#e1ffe1
    style BaseKey3 fill:#e1ffe1
    style Dev fill:#fff4e1
    style DevKey1 fill:#e1ffe1
    style DevKey2 fill:#e1ffe1
    style Prod fill:#ffe1f5
    style ProdKey1 fill:#e1ffe1
    style ProdKey2 fill:#FFE4E1

4단계: 결과 보고

## 설정 파일 검증 결과

### 요약
- 검사 파일: 4개
- 통과: 3개
- 실패: 1개

### 파일별 결과

| 파일 | YAML | 스키마 | 상태 |
|------|------|--------|------|
| config.yaml | ✓ | ✓ | 통과 |
| config.dev.yaml | ✓ | ✓ | 통과 |
| config.prod.yaml | ✓ | ✗ | 실패 |
| config.test.yaml | ✓ | ✓ | 통과 |

### 위반 상세: config.prod.yaml

| 항목 | 문제 | 권장 수정 |
|------|------|----------|
| model.learning_rate | 타입 오류 (str → float) | "0.001" → 0.001 |
| paths.output_dir | 누락 | 필수 필드 추가 |

검증 규칙

이 스킬은 검증(validation)만 수행합니다. 규칙 정의는 [@skills/convention-config/SKILL.md] 스킬을 참조하세요.

@skills/convention-config/SKILL.md

검증 항목 요약

카테고리검증 내용심각도
YAML 구문들여쓰기, 중복 키, 문자셋Critical/Warning
스키마 검증타입 일치, 필수 필드, 범위 제약Critical/Warning
환경 일관성dev/prod/test 간 키 및 타입 일치Critical/Warning
안티패턴하드코딩 경로, 민감 정보, 매직 넘버Critical/Warning/Info

상세 규칙 (디렉토리 구조, Pydantic 스키마 예시, 오버라이드 패턴 등):

/convention-config
실행

심각도 기준

심각도의미동작
Critical런타임 오류 가능즉시 수정 필요
Warning유지보수 저하수정 권장
Info개선 권장선택적 수정

예시

예시 1: 단일 파일 검증

/check-config-validation config/config.yaml

출력:

## 설정 파일 검증 결과

### config/config.yaml

#### YAML 구문: ✓ 유효

#### 스키마 검증: ✓ 통과

#### 안티패턴 검사: 1개 경고

| 라인 | 문제 | 권장 수정 |
|------|------|----------|
| 12 | 하드코딩 경로 `/home/user/data` | 상대 경로 `./data` 사용 |

### 결과: 경고 1개 (Critical 없음)

예시 2: 전체 환경 검증

/check-config-validation --all

출력:

## 전체 설정 파일 검증 결과

### 요약
- 검사 파일: 4개
- 통과: 4개
- Critical: 0개
- Warning: 2개

### 환경 일관성 검사

#### 키 매트릭스
| 키 | base | dev | prod | test |
|----|------|-----|------|------|
| paths.data_dir | ✓ | ✓ | ✓ | ✓ |
| data.batch_size | ✓ | ✓ | ✓ | ✓ |
| database.debug | - | ✓ | ✓ | ✓ |
| database.pool_size | - | - | ✓ | - |

#### 경고
- `database.pool_size`: prod에만 존재 (의도적이면 무시)

### 타입 일관성: ✓ 모든 환경에서 동일

예시 3: 스키마 불일치

/check-config-validation config/config.yaml --schema

출력:

## 스키마 검증 결과

### 위반 목록

#### Critical
| 필드 | 현재 값 | 예상 타입 | 문제 |
|------|---------|----------|------|
| model.epochs | "100" | int | str 타입 |
| data.batch_size | -1 | int (ge=1) | 범위 위반 |

#### 수정 필요
config.yaml:
  model:
    epochs: 100      # "100" → 100 (따옴표 제거)
  data:
    batch_size: 32   # -1 → 32 (양수로 변경)

자동 수정

일부 문제는 자동 수정 가능:

# YAML 포맷팅
yamlfmt config/

# 타입 변환 (주의 필요)
# "100" → 100 등은 수동 확인 후 수정 권장

민감 정보, 스키마 불일치는 수동 수정 필요.


관련 스킬

스킬역할
[@skills/convention-config/SKILL.md]설정 관리 컨벤션 참조
[@skills/project-init/SKILL.md]프로젝트 초기화 (설정 파일 생성)

Changelog

날짜버전변경 내용
2026-01-221.1.0convention-config 참조 방식으로 리팩토링
2026-01-211.0.0초기 생성 - YAML 구문, 스키마, 환경 일관성 검증