제8장: 버전 관리

8.1 개요

프로토콜 버전 관리는 프로토콜 진화 과정에서 호환성을 보장하여, 스킬 제공자와 소비자가 새 버전으로 원활하게 전환할 수 있도록 합니다.

8.2 시맨틱 버저닝

프로토콜은 Semantic Versioning(시맨틱 버저닝) 사양을 따릅니다:

MAJOR.MINOR.PATCH
버전 번호변경 유형호환성
MAJOR호환되지 않는 프로토콜 변경파괴적 변경. 소비자 업그레이드 필요
MINOR하위 호환되는 기능 추가이전 버전 소비자가 정상 작동 유지
PATCH하위 호환되는 문제 수정문서 수정, Schema 수정

8.3 버전 선언

모든 Skill Descriptor는 준수하는 프로토콜 버전을 선언해야 합니다:

{
  "protocol": {
    "version": "1.0.0",
    "changelog_url": "https://skill-sharing.org/changelog"
  }
}

8.4 버전 호환성 규칙

호환성 판정

소비자 지원 버전: X.Y.Z
Descriptor 프로토콜 버전: A.B.C

호환 조건: A == X (메이저 버전 동일)
비호환 조건: A != X (메이저 버전 상이)

호환성 매트릭스 예시

소비자 버전Descriptor 버전호환성설명
1.0.01.0.0✓ 호환정확히 일치
1.0.01.2.0✓ 호환마이너 버전은 하위 호환
1.0.01.2.3✓ 호환패치 버전은 하위 호환
1.0.02.0.0✗ 비호환메이저 버전 상이
2.0.01.5.0✗ 비호환메이저 버전 상이

버전 비호환 응답

소비자가 비호환 프로토콜 버전을 만난 경우:

{
  "error": {
    "code": "VERSION_INCOMPATIBLE",
    "message": "Protocol version 2.0.0 is not compatible with consumer version 1.x",
    "details": {
      "descriptor_version": "2.0.0",
      "consumer_supported_range": "1.x.x",
      "upgrade_url": "https://skill-sharing.org/upgrade-guide"
    }
  }
}

8.5 Schema 버전화 디렉토리

Schema 정의 파일은 버전별로 구성됩니다:

schema/
├── draft/                    # 현재 개발 중인 초안
│   ├── schema.json
│   ├── schema.ts
│   └── schema.mdx
└── 2025-10-25/              # 게시된 버전
    ├── schema.json
    ├── schema.ts
    └── schema.mdx
  • draft/: 현재 개발 중인 최신 버전. 불안정한 변경을 포함할 수 있음
  • {date}/: 게시된 안정 버전. 릴리스 날짜로 명명

8.6 버전 변경 로그

프로토콜 Schema에는 버전 변경 로그에 대한 참조 경로(changelog_url)가 포함되어 각 버전의 변경 내용을 기록합니다:

  • 새로 추가된 필드 또는 기능
  • 더 이상 사용되지 않는 필드 또는 기능
  • 파괴적 변경 설명
  • 마이그레이션 가이드

8.7 하위 호환성 보장

마이너 버전 업데이트 시 하위 호환성 보장:

  1. 기존 필수 필드를 삭제하지 않음
  2. 새 필드는 기본적으로 선택사항
  3. 기존 필드의 의미를 변경하지 않음
  4. 열거형 타입의 값 범위를 축소하지 않음
  5. 기존 인터페이스의 필수 파라미터를 추가하지 않음