$npx -y skills add vibeeval/vibecosystem --skill changelog-automation--- name: changelog-automation description: Git history'den otomatik changelog, semantic versioning, release notes, conventional commits ---
| 1 | # Changelog Automation |
| 2 | |
| 3 | ## Conventional Commits |
| 4 | |
| 5 | Commit mesajlari bu formatta olmali: |
| 6 | |
| 7 | ``` |
| 8 | <type>(<scope>): <description> |
| 9 | |
| 10 | [optional body] |
| 11 | |
| 12 | [optional footer(s)] |
| 13 | ``` |
| 14 | |
| 15 | ### Type'lar |
| 16 | |
| 17 | | Type | Aciklama | SemVer Etkisi | |
| 18 | |------|---------|---------------| |
| 19 | | feat | Yeni ozellik | MINOR | |
| 20 | | fix | Bug fix | PATCH | |
| 21 | | docs | Dokumantasyon | - | |
| 22 | | style | Formatting (kod degisikligi yok) | - | |
| 23 | | refactor | Kod degisikligi (feature/fix degil) | - | |
| 24 | | perf | Performans iyilestirme | PATCH | |
| 25 | | test | Test ekleme/duzeltme | - | |
| 26 | | chore | Build, CI, tooling | - | |
| 27 | | ci | CI/CD degisikligi | - | |
| 28 | | build | Build sistemi degisikligi | - | |
| 29 | | revert | Geri alma | PATCH | |
| 30 | |
| 31 | ### Breaking Change |
| 32 | |
| 33 | ``` |
| 34 | feat(api)!: remove deprecated endpoints |
| 35 | |
| 36 | BREAKING CHANGE: /v1/users endpoint kaldirildi, /v2/users kullanin |
| 37 | ``` |
| 38 | |
| 39 | `!` isareti veya `BREAKING CHANGE:` footer'i = MAJOR versiyon artisi. |
| 40 | |
| 41 | ## Semantic Versioning (SemVer) |
| 42 | |
| 43 | ``` |
| 44 | MAJOR.MINOR.PATCH |
| 45 | |
| 46 | MAJOR: Breaking change (geriye uyumsuz) |
| 47 | MINOR: Yeni ozellik (geriye uyumlu) |
| 48 | PATCH: Bug fix (geriye uyumlu) |
| 49 | ``` |
| 50 | |
| 51 | ### Versiyon Artirma Kurallari |
| 52 | |
| 53 | ``` |
| 54 | Commit'lerde BREAKING CHANGE varsa → MAJOR++ |
| 55 | Commit'lerde feat varsa → MINOR++ |
| 56 | Sadece fix/perf/refactor varsa → PATCH++ |
| 57 | Sadece docs/style/test/chore varsa → versiyon artmaz |
| 58 | ``` |
| 59 | |
| 60 | ## CHANGELOG.md Formati (Keep a Changelog) |
| 61 | |
| 62 | ```markdown |
| 63 | # Changelog |
| 64 | |
| 65 | All notable changes to this project will be documented in this file. |
| 66 | |
| 67 | ## [Unreleased] |
| 68 | |
| 69 | ## [1.2.0] - 2026-03-25 |
| 70 | |
| 71 | ### Added |
| 72 | - Yeni ozellik aciklamasi (#123) |
| 73 | |
| 74 | ### Changed |
| 75 | - Degisiklik aciklamasi (#124) |
| 76 | |
| 77 | ### Deprecated |
| 78 | - Kaldirilacak ozellik uyarisi |
| 79 | |
| 80 | ### Removed |
| 81 | - Kaldirilan ozellik |
| 82 | |
| 83 | ### Fixed |
| 84 | - Bug fix aciklamasi (#125) |
| 85 | |
| 86 | ### Security |
| 87 | - Guvenlik duzeltmesi |
| 88 | |
| 89 | ## [1.1.0] - 2026-03-20 |
| 90 | |
| 91 | ### Added |
| 92 | - ... |
| 93 | |
| 94 | [Unreleased]: https://github.com/user/repo/compare/v1.2.0...HEAD |
| 95 | [1.2.0]: https://github.com/user/repo/compare/v1.1.0...v1.2.0 |
| 96 | [1.1.0]: https://github.com/user/repo/releases/tag/v1.1.0 |
| 97 | ``` |
| 98 | |
| 99 | ### Type -> Section Mapping |
| 100 | |
| 101 | | Commit Type | Changelog Section | |
| 102 | |-------------|------------------| |
| 103 | | feat | Added | |
| 104 | | fix | Fixed | |
| 105 | | perf | Changed | |
| 106 | | refactor | Changed | |
| 107 | | docs | - (changelog'a eklenmez) | |
| 108 | | style | - | |
| 109 | | test | - | |
| 110 | | chore | - | |
| 111 | | BREAKING CHANGE | Removed / Changed (breaking note ile) | |
| 112 | | security fix | Security | |
| 113 | | deprecation | Deprecated | |
| 114 | |
| 115 | ## Changelog Olusturma |
| 116 | |
| 117 | ### Git Log'dan Changelog |
| 118 | |
| 119 | ```bash |
| 120 | # Son tag'den bu yana commit'ler |
| 121 | git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"%s" --no-merges |
| 122 | |
| 123 | # Tum tag'ler arasi |
| 124 | git log v1.0.0..v1.1.0 --pretty=format:"- %s (%h)" --no-merges |
| 125 | |
| 126 | # Conventional commit parse |
| 127 | git log --pretty=format:"%s" | grep -E "^(feat|fix|refactor|perf|docs|test|chore|ci|build)" |
| 128 | ``` |
| 129 | |
| 130 | ### Otomatik Changelog Script |
| 131 | |
| 132 | ```bash |
| 133 | # Son release'den bu yana degisiklikleri kategorize et |
| 134 | LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") |
| 135 | |
| 136 | if [ -z "$LAST_TAG" ]; then |
| 137 | RANGE="HEAD" |
| 138 | else |
| 139 | RANGE="${LAST_TAG}..HEAD" |
| 140 | fi |
| 141 | |
| 142 | echo "## [Unreleased]" |
| 143 | echo "" |
| 144 | |
| 145 | echo "### Added" |
| 146 | git log $RANGE --pretty=format:"- %s" --no-merges | grep "^- feat" | sed 's/^- feat[^:]*: /- /' |
| 147 | |
| 148 | echo "" |
| 149 | echo "### Fixed" |
| 150 | git log $RANGE --pretty=format:"- %s" --no-merges | grep "^- fix" | sed 's/^- fix[^:]*: /- /' |
| 151 | |
| 152 | echo "" |
| 153 | echo "### Changed" |
| 154 | git log $RANGE --pretty=format:"- %s" --no-merges | grep -E "^- (refactor|perf)" | sed 's/^- [^:]*: /- /' |
| 155 | ``` |
| 156 | |
| 157 | ## Release Notes |
| 158 | |
| 159 | ### GitHub Release Olusturma |
| 160 | |
| 161 | ```bash |
| 162 | # Changelog'dan release notes |
| 163 | VERSION="v1.2.0" |
| 164 | NOTES=$(cat <<'EOF' |
| 165 | ## What's New |
| 166 | |
| 167 | ### Features |
| 168 | - Feature 1 description |
| 169 | - Feature 2 description |
| 170 | |
| 171 | ### Bug Fixes |
| 172 | - Fix 1 description |
| 173 | |
| 174 | ### Breaking Changes |
| 175 | - Breaking change description |
| 176 | |
| 177 | **Full Changelog**: https://github.com/user/repo/compare/v1.1.0...v1.2.0 |
| 178 | EOF |
| 179 | ) |
| 180 | |
| 181 | gh release create "$VERSION" --title "$VERSION" --notes "$NOTES" |
| 182 | ``` |
| 183 | |
| 184 | ### Pre-release |
| 185 | |
| 186 | ```bash |
| 187 | gh release create "v2.0.0-beta.1" --prerelease --title "v2.0.0 Beta 1" --notes "..." |
| 188 | ``` |
| 189 | |
| 190 | ## CI/CD Entegrasyonu |
| 191 | |
| 192 | ### GitHub Actions Changelog |
| 193 | |
| 194 | ```yaml |
| 195 | name: Release |
| 196 | on: |
| 197 | push: |
| 198 | tags: ['v*'] |
| 199 | |
| 200 | jobs: |
| 201 | release: |
| 202 | runs-on: ubuntu-latest |
| 203 | steps: |
| 204 | - uses: actions/checkout@v4 |
| 205 | with: |
| 206 | fetch-depth: 0 |
| 207 | |
| 208 | - name: Generate changelog |
| 209 | run: | |
| 210 | PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "") |
| 211 | if [ -n "$PREV_TAG" ]; then |
| 212 | git log ${PREV_TAG}..HEAD --pretty=format:"- %s" --no-merges > RELEASE_NOTES.md |
| 213 | fi |
| 214 | |
| 215 | - name: Create Release |
| 216 | uses: softprops/action-gh-release@v1 |
| 217 | with: |
| 218 | body_path: RELEASE_NOTES.md |
| 219 | ``` |
| 220 | |
| 221 | ## Breaking Change Tespiti |
| 222 | |
| 223 | ```bash |
| 224 | # Breaking change iceren commit'leri bul |
| 225 | git log --pretty=format:"%H %s" | grep -i "breaking\|BR |