시맨틱 버저닝(SemVer) 규칙에 따라 변경사항을 분석하고 적절한 버전 번호를 결정하는 방법론. 'SemVer 분석', '버전 번호 결정', 'Breaking Change 판정', '버전 범프 결정' 등 버전 관리 시 사용한다. 단, git 태그 자동 생성, CI/CD 릴리스 실행은 이 스킬의 범위가 아니다.
Scanned 5/29/2026
Install via CLI
openskills install revfactory/harness-100---
name: semver-analyzer
description: "시맨틱 버저닝(SemVer) 규칙에 따라 변경사항을 분석하고 적절한 버전 번호를 결정하는 방법론. 'SemVer 분석', '버전 번호 결정', 'Breaking Change 판정', '버전 범프 결정' 등 버전 관리 시 사용한다. 단, git 태그 자동 생성, CI/CD 릴리스 실행은 이 스킬의 범위가 아니다."
---
# SemVer Analyzer — 시맨틱 버저닝 분석 방법론
change-classifier와 release-note-writer의 버전 결정 역량을 강화하는 스킬.
## 대상 에이전트
- **change-classifier** — 변경사항의 SemVer 영향도를 판정한다
- **release-note-writer** — 버전 번호와 하이라이트를 결정한다
## SemVer 2.0.0 핵심 규칙
```
MAJOR.MINOR.PATCH[-prerelease][+build]
MAJOR: 호환되지 않는 API 변경 (Breaking Change)
MINOR: 하위 호환 기능 추가
PATCH: 하위 호환 버그 수정
```
## Breaking Change 판정 매트릭스
### API/라이브러리
| 변경 유형 | Breaking? | 예시 |
|----------|-----------|------|
| 공개 함수 삭제 | YES | `remove_user()` 삭제 |
| 공개 함수 시그니처 변경 | YES | 필수 매개변수 추가/제거 |
| 반환 타입 변경 | YES | `dict` → `list` |
| 예외 타입 변경 | YES | `ValueError` → `TypeError` |
| 기본값 변경 | MAYBE | 동작 변경 여부에 따라 |
| 새 선택 매개변수 추가 | NO | `def func(x, new=None)` |
| 새 공개 함수 추가 | NO | 기존 코드 영향 없음 |
| 내부 함수 변경 | NO | `_private_func()` |
| 성능 개선 | NO | 동작 동일 |
### 웹 API (REST/GraphQL)
| 변경 유형 | Breaking? |
|----------|-----------|
| 엔드포인트 삭제/이동 | YES |
| 필수 필드 추가 (요청) | YES |
| 응답 필드 삭제 | YES |
| 응답 구조 변경 | YES |
| 인증 방식 변경 | YES |
| 새 선택 필드 추가 (요청) | NO |
| 새 응답 필드 추가 | NO |
| 새 엔드포인트 추가 | NO |
### 데이터베이스
| 변경 유형 | Breaking? |
|----------|-----------|
| 테이블/컬럼 삭제 | YES |
| NOT NULL 제약 추가 | YES |
| 컬럼 타입 변경 | YES |
| 새 nullable 컬럼 추가 | NO |
| 새 인덱스 추가 | NO |
## 버전 범프 결정 알고리즘
```
입력: 변경사항 목록
1. Breaking Change 있음? → MAJOR 범프
2. 새 기능 있음? → MINOR 범프
3. 버그 수정만? → PATCH 범프
특수 규칙:
- MAJOR = 0 (개발 중): Breaking Change도 MINOR로 허용
- pre-release 붙은 경우: 0.x.y-alpha.1 → 정식 릴리스 시 MAJOR
- 여러 유형 혼합 시: 가장 높은 수준 적용
```
## Conventional Commits 매핑
| 접두사 | SemVer 영향 | 릴리스 노트 섹션 |
|--------|-----------|----------------|
| `feat:` | MINOR | Added (추가) |
| `fix:` | PATCH | Fixed (수정) |
| `feat!:` / `BREAKING CHANGE:` | MAJOR | Breaking Changes |
| `perf:` | PATCH | Performance (성능) |
| `refactor:` | - | Changed (변경) |
| `docs:` | - | Documentation |
| `test:` | - | - (노트 제외 가능) |
| `chore:` | - | - (노트 제외 가능) |
| `ci:` | - | - (노트 제외 가능) |
| `style:` | - | - (노트 제외 가능) |
| `deps:` | PATCH~MAJOR | Dependencies |
## Keep a Changelog 형식
```markdown
# Changelog
## [Unreleased]
## [2.0.0] - 2025-01-15
### Breaking Changes
- `createUser()` API가 `registerUser()`로 이름 변경 (#123)
### Added
- 팀 관리 기능 추가 (#456)
- 다크모드 지원 (#789)
### Changed
- 로그인 화면 UI 개선 (#234)
### Deprecated
- `v1` API 엔드포인트 (v3.0에서 제거 예정)
### Fixed
- 비밀번호 재설정 이메일 미발송 문제 (#567)
### Security
- XSS 취약점 패치 (#890)
```
## 프리릴리스 버전 체계
```
1.0.0-alpha.1 → 초기 알파
1.0.0-alpha.2 → 알파 수정
1.0.0-beta.1 → 베타 진입
1.0.0-beta.2 → 베타 수정
1.0.0-rc.1 → 릴리스 후보
1.0.0 → 정식 릴리스
우선순위: alpha < beta < rc < release
```

No comments yet. Be the first to comment!