Changelog Writer

作者 patricio0312rev79ea6af48569無授權條款62 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫8 個月前更新

Generates changelogs and release notes from git commits, PR titles, and issue references. Organizes changes by impact type (breaking, features, fixes, improvements), formats according to Keep a Changelog standard, and provides version tagging and semantic versioning suggestions. Use when users request "create changelog", "write release notes", "document version changes", or "prepare release".

AI 產生的概覽

將 git 提交、PR 標題與 issue 參照整理成 Keep a Changelog 變更記錄、發行說明與語意化版本建議。

功能
此技能會解析上次發行以來的版本控制歷史,依類型(新功能、修正、文件、破壞性變更)分類提交,並標記不相容的改動。接著產出符合 Keep a Changelog 格式的 CHANGELOG.md、面向使用者的發行說明草稿、語意化版本號升級建議、破壞性變更的遷移說明,以及要執行的 git tag 指令。它也會列出用來蒐集提交資料的 git 指令與可選的自動化工具。
適用情境
適用於準備發行版本時,使用者要求建立變更記錄、撰寫發行說明、記錄版本變更或準備發行。適合遵循 conventional commits 或 Keep a Changelog 慣例的專案。
執行需求
僅為說明文件,未附帶指令碼。需要存取 git 歷史記錄;若採用可選的自動化方式,還需要 conventional-changelog-cli、git-cliff、cargo、npm 或 GitHub CLI 等工具。

Changelog & Release Notes Writer

Generate professional changelogs and release notes from version control history.

Core Workflow

  1. Analyze commits: Parse git history since last release
  2. Categorize changes: Group by type (feat, fix, docs, etc.)
  3. Identify breaking changes: Flag incompatible changes
  4. Extract highlights: Surface most important changes
  5. Format document: Follow Keep a Changelog format
  6. Suggest version: Recommend semantic version bump
  7. Generate release notes: Create user-friendly summary

Commit Analysis

Extract Information From

  • Commit messages (preferably conventional commits)
  • PR titles and descriptions
  • Issue references (#123)
  • Merge commit messages
  • Commit authors

Parse Patterns

feat(auth): add OAuth2 support^    ^      ^|    |      └─ Description|    └─ Scope (optional)└─ Type

Types to Categories:

  • feat → Added
  • fix → Fixed
  • docs → Documentation
  • style, refactor → Changed
  • perf → Performance
  • test → Testing
  • chore, ci → Internal
  • BREAKING CHANGE → Breaking Changes

Changelog Format (Keep a Changelog)

markdown
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- New feature X- Support for Y
### Changed
- Updated Z behavior
### Fixed
- Resolved issue #123
## [2.1.0] - 2024-01-15
### Added
- OAuth2 authentication support- User profile management API- Dark mode toggle
### Changed
- Improved error messages- Updated dependencies to latest versions
### Deprecated
- Legacy authentication method (will be removed in 3.0.0)
### Fixed
- Memory leak in WebSocket connection- Incorrect date formatting in reports- Race condition in concurrent requests
### Security
- Patched XSS vulnerability in user input
## [2.0.0] - 2023-12-01
### Breaking Changes
- ⚠️ Removed support for Node.js 16- ⚠️ Changed API response format for `/users` endpoint- ⚠️ Renamed `config.yaml` to `config.yml`
### Added
- Complete API rewrite with improved performance- WebSocket support for real-time updates
### Migration Guide
See [MIGRATION_v2.md](./docs/MIGRATION_v2.md) for upgrade instructions.
[unreleased]: https://github.com/user/project/compare/v2.1.0...HEAD[2.1.0]: https://github.com/user/project/compare/v2.0.0...v2.1.0[2.0.0]: https://github.com/user/project/releases/tag/v2.0.0

Release Notes Format

markdown
# Release v2.1.0 - "Feature Release Name"
Released: January 15, 2024
## 🎉 Highlights
This release brings major improvements to authentication and user experience:
- **OAuth2 Support**: Users can now sign in with Google, GitHub, and Microsoft- **Dark Mode**: Toggle between light and dark themes- **Performance**: 40% faster API response times
## ✨ New Features
- OAuth2 authentication with popular providers (#456)- User profile management API (#478)- Dark mode toggle in settings (#492)- Export data in CSV format (#501)
## 🐛 Bug Fixes
- Fixed memory leak in WebSocket connections (#489)- Resolved incorrect date formatting in reports (#495)- Fixed race condition in concurrent API requests (#503)
## 🔄 Changes
- Improved error messages across the application- Updated all dependencies to latest stable versions- Refined UI animations for smoother experience
## 🔒 Security
- Patched XSS vulnerability in user input validation- Updated JWT library to address CVE-2024-1234
## 📚 Documentation
- Added OAuth2 setup guide- Updated API reference with new endpoints- Improved troubleshooting section
## 🙏 Contributors
Thank you to all contributors who made this release possible:
- @alice - OAuth2 implementation- @bob - Dark mode feature- @charlie - Bug fixes and testing
## 📦 Installation
```bashnpm install [email protected]# oryarn add [email protected]```

🔗 Links


Note: This is a minor release. No breaking changes. Safe to upgrade from 2.0.x.


## Semantic Versioning Rules
Given a version number MAJOR.MINOR.PATCH (e.g., 2.1.0):
1. **MAJOR** (2.x.x → 3.x.x)   - Breaking changes   - Incompatible API changes   - Removed features
2. **MINOR** (2.1.x → 2.2.x)   - New features   - Backward-compatible functionality   - Deprecated features
3. **PATCH** (2.1.0 → 2.1.1)   - Bug fixes   - Security patches   - Performance improvements
**Special versions:**- `0.x.x` - Initial development (breaking changes allowed in minor)- `x.y.0-alpha.1` - Pre-release- `x.y.0-beta.2` - Beta release- `x.y.0-rc.1` - Release candidate
## Git Commands for Changelog Generation
```bash# Get commits since last taggit log $(git describe --tags --abbrev=0)..HEAD --oneline
# Get commits between two tagsgit log v2.0.0..v2.1.0 --oneline
# Get commits with PR numbersgit log --merges --pretty=format:"%s" v2.0.0..HEAD
# Get contributorsgit log v2.0.0..HEAD --format='%aN' | sort -u
# Get commit count by typegit log v2.0.0..HEAD --oneline | grep -E '^[a-f0-9]+ (feat|fix|docs)' | cut -d' ' -f2 | sort | uniq -c

Breaking Changes Detection

Look for these indicators:

  • Commit message contains BREAKING CHANGE:
  • Commit type has ! (e.g., feat!:)
  • PR labeled with "breaking-change"
  • Major dependency updates
  • API endpoint changes
  • Config file format changes

Document clearly:

markdown
### Breaking Changes
⚠️ **API Response Format Changed**
The `/api/users` endpoint now returns:
```json// Before{ "data": [...] }
// After{ "users": [...], "total": 100 }```

Migration: Update your API client to access users instead of data.


## Automation Tools
### Using conventional-changelog```bashnpm install -g conventional-changelog-cli
# Generate changelogconventional-changelog -p angular -i CHANGELOG.md -s
# Generate for specific versionconventional-changelog -p angular -i CHANGELOG.md -s -r 0

Using git-cliff

bash
# Install git-cliffcargo install git-cliff
# Generate changeloggit-cliff --tag v2.1.0 > CHANGELOG.md
# Generate release notesgit-cliff --tag v2.1.0 --unreleased

GitHub Release Script

bash
#!/bin/bash# scripts/release.sh
VERSION=$1PREVIOUS_TAG=$(git describe --tags --abbrev=0)
# Generate release notesgh release create "$VERSION" \  --title "Release $VERSION" \  --notes "$(git log $PREVIOUS_TAG..HEAD --pretty=format:'- %s')"

User-Facing vs Developer-Facing

User-Facing (Release Notes)

  • Focus on benefits and features
  • Less technical jargon
  • Include screenshots/demos
  • Highlight user experience improvements
  • Provide upgrade instructions

Developer-Facing (Changelog)

  • Technical details
  • API changes
  • Breaking changes with migration guides
  • Dependencies updates
  • Internal refactorings

Templates by Project Type

Library/Package

Focus on: API changes, breaking changes, new methods

Application

Focus on: New features, bug fixes, UI improvements

CLI Tool

Focus on: New commands, flag changes, behavior changes

API Service

Focus on: Endpoint changes, performance, security

Best Practices

  1. Be specific: "Fixed login bug" → "Fixed session timeout on mobile"
  2. Link issues: Reference GitHub issues (#123)
  3. Credit contributors: Acknowledge work
  4. Highlight impact: Mark breaking changes clearly
  5. Group logically: By type, not chronologically
  6. Update regularly: With each release
  7. Follow conventions: Keep a Changelog format
  8. Semantic versioning: Use correctly

Changelog Entry Examples

Good Examples

markdown
### Added
- OAuth2 authentication support (#456) - @alice- Export data in CSV format with custom column selection (#501)
### Fixed
- Resolved memory leak in WebSocket connections affecting long-running sessions (#489)- Fixed race condition in concurrent API requests that caused data inconsistency (#503)

Bad Examples

markdown
### Added
- Added stuff- New feature
### Fixed
- Fixed bug- Updates

Version Suggestion Algorithm

If breaking changes detected:  MAJOR++, MINOR=0, PATCH=0Else if new features:  MINOR++, PATCH=0Else if only fixes:  PATCH++

Release Checklist

Before publishing release:

  • Review all commits since last release
  • Identify breaking changes
  • Categorize changes properly
  • Update CHANGELOG.md
  • Write release notes
  • Update version in package.json/pyproject.toml
  • Create git tag
  • Push tag to trigger CI/CD
  • Publish to package registry (npm, PyPI, etc.)
  • Create GitHub release with notes
  • Announce on relevant channels

Output Checklist

Every changelog generation should provide:

  • Formatted CHANGELOG.md following Keep a Changelog
  • Release notes draft (user-friendly)
  • Semantic version suggestion (X.Y.Z)
  • Breaking changes clearly marked
  • Migration guide for breaking changes
  • Git tag command to run
  • Links to compare view

來源與署名

來源:patricio0312rev/skills位於foundation/changelog-writer提交79ea6af

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架