skill-versioning-plugin 리뷰 및 개선 제안
작성일: 2026-01-30 연구 방법: SCAR Scoring (Semantic + Credibility + Accuracy + Recency)
Source: https://semver.org/ (P1 - Official Documentation, SCAR: 95)
MAJOR.MINOR.PATCH
예: 2.1.3
| 구분 | 조건 | 예시 |
|---|---|---|
| MAJOR | 호환되지 않는 API 변경 | 1.0.0 → 2.0.0 |
| MINOR | 하위 호환 새 기능 추가 | 1.0.0 → 1.1.0 |
| PATCH | 하위 호환 버그 수정 | 1.0.0 → 1.0.1 |
- Pre-release 버전:
1.0.0-alpha,1.0.0-beta.1 - Build metadata:
1.0.0+20130313144700 - 버전 0.x.x: 초기 개발, API 불안정 허용
- 버전 1.0.0: 공개 API 정의 시점
skill-versioning-plugin/
├── .claude-plugin/plugin.json ✅ 올바른 메타데이터
├── hooks/
│ ├── hooks.json ✅ PostToolUse 설정 정확
│ └── skill-version-hook.ts ✅ 핵심 로직 구현
├── skills/versioning-guide/ ✅ 가이드 스킬 포함
├── scripts/migrate-*.ts ✅ 마이그레이션 지원
├── examples/ ✅ 예시 포함
└── README.md ✅ 문서화 완료
skill-version-hook.ts (324줄)
| 항목 | 상태 | 비고 |
|---|---|---|
| Write/Edit 감지 | ✅ | PostToolUse 트리거 |
| 버전 추출 | ✅ | 4가지 패턴 지원 |
| 백업 생성 | ✅ | releases/ 폴더 |
| 중복 스킵 | ✅ | 동일 버전 체크 |
| CHANGELOG 업데이트 | ✅ | Keep a Changelog 형식 |
| 에러 처리 | ✅ | graceful degradation |
| 로깅 | ✅ | 파일 로그 지원 |
.claude/rules/skill-versioning-rules.md와 비교
| 규칙 | rules.md | plugin | 상태 |
|---|---|---|---|
| 폴더 구조 | releases/ | releases/ | ✅ 일치 |
| 파일 명명 | v{VER}_{DATE}_SKILL.md | v{VER}_{DATE}_SKILL.md | ✅ 일치 |
| CHANGELOG 형식 | Keep a Changelog | Keep a Changelog | ✅ 일치 |
| 버전 헤더 | **Version**: X.X.X |
지원 | ✅ 일치 |
현재: 1.0.0 형식만 지원
개선: 1.0.0-alpha, 1.0.0-beta.1 지원 필요
// 현재 extractVersion 패턴
/(\d+\.\d+\.\d+)/
// 개선 제안
/(\d+\.\d+\.\d+)(-[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?/이유: semver.org 표준에서 pre-release는 핵심 기능
현재: 0.1.0도 일반 버전으로 취급 개선: 0.x.x는 "초기 개발" 표시 추가
if (version.startsWith("0.")) {
message += " (Initial Development - API may change)";
}현재: "Version X.X.X snapshot created"만 기록 개선: 실제 변경 내용 자동 감지
// git diff 또는 파일 비교를 통해 변경 내용 추출
const changes = detectChanges(oldContent, newContent);현재: 사용자가 직접 버전 변경 개선: 변경 크기에 따라 버전 증가 제안
// 변경 규모 감지
const changeSize = calculateChangeSize(diff);
if (changeSize > MAJOR_THRESHOLD) {
suggestVersion("MAJOR");
} else if (changeSize > MINOR_THRESHOLD) {
suggestVersion("MINOR");
} else {
suggestVersion("PATCH");
}추가 기능: 두 버전 간 diff 보기
/skill-versioning:compare v1.0.0 v2.0.0현재: CHANGELOG만 업데이트
개선: SKILL.md의 Last Updated 필드도 자동 업데이트
1.0.0+build.123
1.0.0+20260130
/skill-versioning:history [skill-name]
# 출력 예시:
v3.0.0 ──● 2026-01-30 (current)
│
v2.1.0 ──○ 2026-01-15
│
v2.0.0 ──○ 2025-12-20
│
v1.0.0 ──○ 2025-12-01현재 영어 + 한국어 혼용 → 일관성 개선
// 현재 코드
const isInPluginSkills = normalizedPath.includes(path.join("skills", ""));문제: path.join("skills", "")은 OS에 따라 skills/ 또는 skills\를 반환
개선: 명시적 구분자 사용 또는 정규식 패턴 사용
const patterns = [
/\*\*Version\*\*:\s*(\d+\.\d+\.\d+)/i, // **Version**: X.X.X
/Version:\s*(\d+\.\d+\.\d+)/i, // Version: X.X.X
/^#.*v(\d+\.\d+\.\d+)/im, // # Title v1.0.0
/version[:\s]+(\d+\.\d+\.\d+)/i, // version X.X.X
];문제: 여러 형식이 섞여있을 경우 첫 번째 매칭만 반환 개선: 우선순위 명확화 또는 모든 버전 추출 후 최신 선택
- 매 Write/Edit마다 Hook 실행 → 대부분 SKILL.md 아님 → 조기 반환 최적화 필요
fs.readFileSync2번 호출 (버전 추출 + 백업 생성) → 1번으로 통합 가능
| 순위 | 항목 | 난이도 | 영향도 |
|---|---|---|---|
| 1 | Pre-release 버전 지원 | 낮음 | 높음 |
| 2 | 경로 구분자 버그 수정 | 낮음 | 중간 |
| 3 | Last Updated 자동 업데이트 | 낮음 | 중간 |
| 4 | fs.readFileSync 최적화 | 낮음 | 낮음 |
| 5 | CHANGELOG 상세 내용 | 중간 | 높음 |
| 6 | 버전 자동 증가 제안 | 높음 | 높음 |
| 7 | 버전 비교 기능 | 중간 | 중간 |
점수: 85/100
| 항목 | 점수 | 비고 |
|---|---|---|
| 기능 완성도 | 18/20 | 핵심 기능 구현 완료 |
| semver 준수 | 15/20 | pre-release 미지원 |
| 코드 품질 | 17/20 | 경미한 버그 존재 |
| 문서화 | 18/20 | 충실한 README |
| workspace 일치 | 17/20 | rules와 잘 맞음 |
skill-versioning-plugin은 잘 설계되고 구현된 플러그인입니다.
강점:
- Keep a Changelog 형식 준수
- workspace rules와 일관성 유지
- graceful error handling
- 마이그레이션 스크립트 제공
개선 필요:
- Pre-release 버전 지원 (semver 표준)
- 경로 구분자 호환성
- 변경 내용 자동 감지
| Source | Type | SCAR | 사용 여부 |
|---|---|---|---|
| semver.org | P1 Official | 95 | ✅ 핵심 참조 |
| keepachangelog.com | P2 Standard | 85 | ✅ CHANGELOG 형식 |
| skill-versioning-rules.md | P0 Local | 100 | ✅ 일관성 검증 |
| skill-version-hook.ts | P0 Local | 100 | ✅ 구현 리뷰 |
Generated by research-catalyst skill