# Release

> Automates versioning and release notes generation for hwp2md. Use this skill when preparing a new release, creating version tags, or generating changelogs from git history.

- Skill: `tomevault-io/release-30` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/release-30`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/release-30/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/release-30

---


# Release Automation Skill

이 스킬은 hwp2md의 버저닝과 릴리즈를 자동화합니다.

## 사용법

```
/release [version] [options]
```

**예시:**
- `/release` - 다음 버전 자동 결정 및 릴리즈 준비
- `/release v0.2.0` - 특정 버전으로 릴리즈
- `/release patch` - 패치 버전 증가 (v0.1.0 → v0.1.1)
- `/release minor` - 마이너 버전 증가 (v0.1.0 → v0.2.0)
- `/release major` - 메이저 버전 증가 (v0.1.0 → v1.0.0)

## 릴리즈 프로세스

### 1. 버전 결정

현재 태그 확인:
```bash
git tag -l 'v*' --sort=-version:refname | head -5
```

버전 형식: `vMAJOR.MINOR.PATCH` (Semantic Versioning)

**버전 증가 기준:**
- **MAJOR**: 하위 호환성이 깨지는 변경
- **MINOR**: 새로운 기능 추가 (하위 호환)
- **PATCH**: 버그 수정, 문서 수정

### 2. 변경사항 분석

마지막 태그 이후 커밋 분석:
```bash
# 마지막 태그 찾기
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")

# 커밋 로그 (태그 이후 또는 전체)
if [ -n "$LAST_TAG" ]; then
  git log $LAST_TAG..HEAD --oneline
else
  git log --oneline
fi
```

### 3. 릴리즈 태그 생성

```bash
# 태그 생성 (annotated tag)
git tag -a v0.2.0 -m "Release v0.2.0

주요 변경사항:
- 기능 1
- 기능 2
- 버그 수정
"

# 원격에 푸시
git push origin v0.2.0
```

### 4. GitHub Release

goreleaser를 사용한 릴리즈:
```bash
# 로컬 테스트 (실제 릴리즈 없이)
goreleaser release --snapshot --clean

# 실제 릴리즈 (CI에서 자동 실행)
goreleaser release --clean
```

## 릴리즈 체크리스트

릴리즈 전 확인사항:

- [ ] 모든 테스트 통과 (`make test`)
- [ ] 린트 검사 통과 (`make lint`)
- [ ] README.md 버전 정보 확인
- [ ] main 브랜치에 모든 변경사항 병합
- [ ] 이전 릴리즈 이후 breaking change 확인

## 예시: 전체 릴리즈 워크플로우

```bash
# 1. 현재 상태 확인
git status
make test

# 2. 마지막 태그 확인
git describe --tags --abbrev=0

# 3. 변경사항 확인
git log $(git describe --tags --abbrev=0)..HEAD --oneline

# 4. 태그 생성 및 푸시
git tag -a v0.2.0 -m "Release v0.2.0"
git push origin main
git push origin v0.2.0

# 5. GitHub Actions가 자동으로 goreleaser 실행
```

## GitHub Actions 자동 릴리즈

태그를 푸시하면 GitHub Actions가 자동으로 릴리즈를 생성합니다.

### 워크플로우 (.github/workflows/release.yml)

1. `v*` 태그 푸시 시 트리거
2. goreleaser가 자동 실행
3. 크로스 플랫폼 바이너리 빌드 (Linux, macOS, Windows)
4. GitHub Release 페이지에 자동 게시
5. 릴리즈 노트 자동 생성 (커밋 메시지 기반)

### 릴리즈 노트 구조

goreleaser가 커밋 메시지를 분석하여 카테고리별로 정리:

- **New Features**: Add, Implement, Create, feat 접두사
- **Bug Fixes**: Fix, Resolve, Correct 접두사
- **Improvements**: Update, Change, Refactor, Improve 접두사
- **Documentation**: docs 접두사

### 릴리즈 실행 방법

```bash
# 1. 태그 생성
git tag -a v0.2.0 -m "Release v0.2.0"

# 2. main과 태그 푸시
git push origin main
git push origin v0.2.0

# 3. GitHub Actions가 자동으로:
#    - 바이너리 빌드
#    - 릴리즈 페이지 생성
#    - 릴리즈 노트 생성
```

### 릴리즈 페이지 내용

자동 생성되는 릴리즈 페이지:
- 설치 방법 (바이너리 다운로드, go install)
- 주요 기능 소개
- 변경 내역 (커밋 기반)
- 전체 변경 로그 링크
- 플랫폼별 바이너리 다운로드

## 긴급 패치 릴리즈

핫픽스가 필요한 경우:

```bash
# 1. 핫픽스 브랜치 생성
git checkout -b hotfix/v0.1.1 v0.1.0

# 2. 수정 적용
# ... 코드 수정 ...

# 3. 커밋 및 태그
git commit -m "Fix: Critical bug description"
git tag -a v0.1.1 -m "Hotfix release v0.1.1"

# 4. main에 병합 및 푸시
git checkout main
git merge hotfix/v0.1.1
git push origin main
git push origin v0.1.1
```

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/roboco-io) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

