Skip to content

Latest commit

 

History

History
275 lines (194 loc) · 7.11 KB

File metadata and controls

275 lines (194 loc) · 7.11 KB

Semantic Versioning Research Summary

skill-versioning-plugin 리뷰 및 개선 제안

작성일: 2026-01-30 연구 방법: SCAR Scoring (Semantic + Credibility + Accuracy + Recency)


1. Semantic Versioning 핵심 원칙 (semver.org)

Source: https://semver.org/ (P1 - Official Documentation, SCAR: 95)

1.1 버전 형식

MAJOR.MINOR.PATCH

예: 2.1.3

1.2 버전 증가 규칙

구분 조건 예시
MAJOR 호환되지 않는 API 변경 1.0.0 → 2.0.0
MINOR 하위 호환 새 기능 추가 1.0.0 → 1.1.0
PATCH 하위 호환 버그 수정 1.0.0 → 1.0.1

1.3 추가 규칙 (현재 플러그인에 미반영)

  1. Pre-release 버전: 1.0.0-alpha, 1.0.0-beta.1
  2. Build metadata: 1.0.0+20130313144700
  3. 버전 0.x.x: 초기 개발, API 불안정 허용
  4. 버전 1.0.0: 공개 API 정의 시점

2. 현재 플러그인 리뷰

2.1 구조 평가 (✅ 양호)

skill-versioning-plugin/
├── .claude-plugin/plugin.json    ✅ 올바른 메타데이터
├── hooks/
│   ├── hooks.json               ✅ PostToolUse 설정 정확
│   └── skill-version-hook.ts    ✅ 핵심 로직 구현
├── skills/versioning-guide/     ✅ 가이드 스킬 포함
├── scripts/migrate-*.ts         ✅ 마이그레이션 지원
├── examples/                    ✅ 예시 포함
└── README.md                    ✅ 문서화 완료

2.2 Hook 구현 평가

skill-version-hook.ts (324줄)

항목 상태 비고
Write/Edit 감지 PostToolUse 트리거
버전 추출 4가지 패턴 지원
백업 생성 releases/ 폴더
중복 스킵 동일 버전 체크
CHANGELOG 업데이트 Keep a Changelog 형식
에러 처리 graceful degradation
로깅 파일 로그 지원

2.3 workspace rules와 일치 여부

.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 지원 ✅ 일치

3. 개선 제안

3.1 높은 우선순위 (High Priority)

A. Pre-release 버전 지원

현재: 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는 핵심 기능

B. 버전 0.x.x 처리

현재: 0.1.0도 일반 버전으로 취급 개선: 0.x.x는 "초기 개발" 표시 추가

if (version.startsWith("0.")) {
  message += " (Initial Development - API may change)";
}

C. CHANGELOG에 상세 변경 내용 추가

현재: "Version X.X.X snapshot created"만 기록 개선: 실제 변경 내용 자동 감지

// git diff 또는 파일 비교를 통해 변경 내용 추출
const changes = detectChanges(oldContent, newContent);

3.2 중간 우선순위 (Medium Priority)

D. 버전 자동 증가 제안

현재: 사용자가 직접 버전 변경 개선: 변경 크기에 따라 버전 증가 제안

// 변경 규모 감지
const changeSize = calculateChangeSize(diff);
if (changeSize > MAJOR_THRESHOLD) {
  suggestVersion("MAJOR");
} else if (changeSize > MINOR_THRESHOLD) {
  suggestVersion("MINOR");
} else {
  suggestVersion("PATCH");
}

E. 버전 비교 기능

추가 기능: 두 버전 간 diff 보기

/skill-versioning:compare v1.0.0 v2.0.0

F. Last Updated 자동 업데이트

현재: CHANGELOG만 업데이트 개선: SKILL.md의 Last Updated 필드도 자동 업데이트

3.3 낮은 우선순위 (Low Priority)

G. Build Metadata 지원

1.0.0+build.123
1.0.0+20260130

H. 버전 히스토리 시각화

/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

I. 다국어 CHANGELOG 지원

현재 영어 + 한국어 혼용 → 일관성 개선


4. 코드 품질 이슈

4.1 잠재적 버그

A. 경로 구분자 문제 (Line 175-176)

// 현재 코드
const isInPluginSkills = normalizedPath.includes(path.join("skills", ""));

문제: path.join("skills", "")은 OS에 따라 skills/ 또는 skills\를 반환 개선: 명시적 구분자 사용 또는 정규식 패턴 사용

B. 버전 패턴 우선순위

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
];

문제: 여러 형식이 섞여있을 경우 첫 번째 매칭만 반환 개선: 우선순위 명확화 또는 모든 버전 추출 후 최신 선택

4.2 성능 고려사항

  • 매 Write/Edit마다 Hook 실행 → 대부분 SKILL.md 아님 → 조기 반환 최적화 필요
  • fs.readFileSync 2번 호출 (버전 추출 + 백업 생성) → 1번으로 통합 가능

5. 추천 우선순위

순위 항목 난이도 영향도
1 Pre-release 버전 지원 낮음 높음
2 경로 구분자 버그 수정 낮음 중간
3 Last Updated 자동 업데이트 낮음 중간
4 fs.readFileSync 최적화 낮음 낮음
5 CHANGELOG 상세 내용 중간 높음
6 버전 자동 증가 제안 높음 높음
7 버전 비교 기능 중간 중간

6. 결론

6.1 현재 플러그인 평가

점수: 85/100

항목 점수 비고
기능 완성도 18/20 핵심 기능 구현 완료
semver 준수 15/20 pre-release 미지원
코드 품질 17/20 경미한 버그 존재
문서화 18/20 충실한 README
workspace 일치 17/20 rules와 잘 맞음

6.2 요약

skill-versioning-plugin은 잘 설계되고 구현된 플러그인입니다.

강점:

  • Keep a Changelog 형식 준수
  • workspace rules와 일관성 유지
  • graceful error handling
  • 마이그레이션 스크립트 제공

개선 필요:

  • Pre-release 버전 지원 (semver 표준)
  • 경로 구분자 호환성
  • 변경 내용 자동 감지

SCAR 점수 요약

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