‹ 首页

changelog-automation

@vibeeval · 收录于 1 周前 · 上游提交 1 个月前

Git history'den otomatik changelog, semantic versioning, release notes, conventional commits

适合你,如果每次发版都要手动整理更新日志

/ 下载安装
changelog-automation.skill双击,或拖进 Claude 桌面版 / Cowork,即完成安装↓ .skill↓ .zip
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
Claude Code~/.claude/skills/(项目级 .claude/skills/)
Codex CLI~/.codex/skills/
Cursor自动读取上面两处目录
其他工具见其文档的「skills」目录;两个下载是同一份文件,只是名字不同
/ 通过 npx 安装 校验哈希
npx oh-my-skill add vibeeval/vibecosystem/changelog-automation
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- vibeeval/vibecosystem/changelog-automation
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify vibeeval/vibecosystem/changelog-automation
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
515GitHub stars
~1.2K上下文体积 · 单文件
镜像托管

怎么用

技能原文 SKILL.md作者撰写 · MIT · cea9462

Changelog Automation

Conventional Commits

Commit mesajlari bu formatta olmali:

<type>(<scope>): <description>

[optional body]

[optional footer(s)]
Type'lar

| Type | Aciklama | SemVer Etkisi | |------|---------|---------------| | feat | Yeni ozellik | MINOR | | fix | Bug fix | PATCH | | docs | Dokumantasyon | - | | style | Formatting (kod degisikligi yok) | - | | refactor | Kod degisikligi (feature/fix degil) | - | | perf | Performans iyilestirme | PATCH | | test | Test ekleme/duzeltme | - | | chore | Build, CI, tooling | - | | ci | CI/CD degisikligi | - | | build | Build sistemi degisikligi | - | | revert | Geri alma | PATCH |

Breaking Change
feat(api)!: remove deprecated endpoints

BREAKING CHANGE: /v1/users endpoint kaldirildi, /v2/users kullanin

! isareti veya BREAKING CHANGE: footer'i = MAJOR versiyon artisi.

Semantic Versioning (SemVer)
MAJOR.MINOR.PATCH

MAJOR: Breaking change (geriye uyumsuz)
MINOR: Yeni ozellik (geriye uyumlu)
PATCH: Bug fix (geriye uyumlu)
Versiyon Artirma Kurallari
Commit'lerde BREAKING CHANGE varsa → MAJOR++
Commit'lerde feat varsa → MINOR++
Sadece fix/perf/refactor varsa → PATCH++
Sadece docs/style/test/chore varsa → versiyon artmaz
CHANGELOG.md Formati (Keep a Changelog)
# Changelog

All notable changes to this project will be documented in this file.

## [Unreleased]

## [1.2.0] - 2026-03-25

### Added
- Yeni ozellik aciklamasi (#123)

### Changed
- Degisiklik aciklamasi (#124)

### Deprecated
- Kaldirilacak ozellik uyarisi

### Removed
- Kaldirilan ozellik

### Fixed
- Bug fix aciklamasi (#125)

### Security
- Guvenlik duzeltmesi

## [1.1.0] - 2026-03-20

### Added
- ...

[Unreleased]: https://github.com/user/repo/compare/v1.2.0...HEAD
[1.2.0]: https://github.com/user/repo/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/user/repo/releases/tag/v1.1.0
Type -> Section Mapping

| Commit Type | Changelog Section | |-------------|------------------| | feat | Added | | fix | Fixed | | perf | Changed | | refactor | Changed | | docs | - (changelog'a eklenmez) | | style | - | | test | - | | chore | - | | BREAKING CHANGE | Removed / Changed (breaking note ile) | | security fix | Security | | deprecation | Deprecated |

Changelog Olusturma
Git Log'dan Changelog
# Son tag'den bu yana commit'ler
git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"%s" --no-merges

# Tum tag'ler arasi
git log v1.0.0..v1.1.0 --pretty=format:"- %s (%h)" --no-merges

# Conventional commit parse
git log --pretty=format:"%s" | grep -E "^(feat|fix|refactor|perf|docs|test|chore|ci|build)"
Otomatik Changelog Script
# Son release'den bu yana degisiklikleri kategorize et
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")

if [ -z "$LAST_TAG" ]; then
  RANGE="HEAD"
else
  RANGE="${LAST_TAG}..HEAD"
fi

echo "## [Unreleased]"
echo ""

echo "### Added"
git log $RANGE --pretty=format:"- %s" --no-merges | grep "^- feat" | sed 's/^- feat[^:]*: /- /'

echo ""
echo "### Fixed"
git log $RANGE --pretty=format:"- %s" --no-merges | grep "^- fix" | sed 's/^- fix[^:]*: /- /'

echo ""
echo "### Changed"
git log $RANGE --pretty=format:"- %s" --no-merges | grep -E "^- (refactor|perf)" | sed 's/^- [^:]*: /- /'
Release Notes
GitHub Release Olusturma
# Changelog'dan release notes
VERSION="v1.2.0"
NOTES=$(cat <<'EOF'
## What's New

### Features
- Feature 1 description
- Feature 2 description

### Bug Fixes
- Fix 1 description

### Breaking Changes
- Breaking change description

**Full Changelog**: https://github.com/user/repo/compare/v1.1.0...v1.2.0
EOF
)

gh release create "$VERSION" --title "$VERSION" --notes "$NOTES"
Pre-release
gh release create "v2.0.0-beta.1" --prerelease --title "v2.0.0 Beta 1" --notes "..."
CI/CD Entegrasyonu
GitHub Actions Changelog
name: Release
on:
  push:
    tags: ['v*']

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Generate changelog
        run: |
          PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
          if [ -n "$PREV_TAG" ]; then
            git log ${PREV_TAG}..HEAD --pretty=format:"- %s" --no-merges > RELEASE_NOTES.md
          fi

      - name: Create Release
        uses: softprops/action-gh-release@v1
        with:
          body_path: RELEASE_NOTES.md
Breaking Change Tespiti
# Breaking change iceren commit'leri bul
git log --pretty=format:"%H %s" | grep -i "breaking\|BREAKING CHANGE\|!"

# feat! veya fix! formatinda
git log --pretty=format:"%s" | grep -E "^(feat|fix|refactor)!"
Changelog Validation

Changelog formatini dogrulama kurallari:

  • Her version header'i tarih icermeli: ## [X.Y.Z] - YYYY-MM-DD
  • Section'lar dogru sirayla: Added, Changed, Deprecated, Removed, Fixed, Security
  • Bos section olmamali
  • Link referanslari dosya sonunda olmali
  • Unreleased section en ustte olmali
Session Changelog Hook

changelog-on-release.ts Stop hook'u session sonunda:

  • Session'da yapilan commit'leri otomatik toplar
  • Conventional commit formatinda parse eder
  • Ozet changelog gosterir
按 MIT 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。