changelog-writer について
changelog-writerは、バージョン管理の履歴から変更履歴やリリースノートを作成する、メンテナー向けスキルです。コミットを種類別に整理し、破壊的変更を示して、セマンティックバージョニングの更新案を提示します。
主な機能
- 01リリース間のGitコミット分析
- 02変更内容の種類別分類
- 03破壊的変更の検出と明示
- 04変更履歴とリリースノートの生成
- 05セマンティックバージョン更新案
活用シーン
- 01新バージョンのコミット整理
- 02ユーザー向けリリースノートの作成
- 03公開前の破壊的変更の確認
- 04変更履歴と移行ガイドの準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ patricio0312rev/ skills --skill changelog-writerインストール後、Claude Code で/changelog-writerを入力して読み込まれたか確認します。
詳細
変更履歴とリリースノートの作成者
バージョン管理の履歴から、プロフェッショナルな変更履歴とリリースノートを生成します。
基本的なワークフロー
- コミットを分析する:前回のリリース以降の Git 履歴を解析します
- 変更を分類する:種類(feat、fix、docs など)ごとにグループ化します
- 破壊的変更を特定する:互換性のない変更に印を付けます
- 主要な変更を抽出する:最も重要な変更を取り上げます
- ドキュメントをフォーマットする:Keep a Changelog の形式に従います
- バージョンを提案する:セマンティックバージョニングに基づく更新を推奨します
- リリースノートを生成する:ユーザーにわかりやすい概要を作成します
コミットの分析
次の情報を抽出する
- コミットメッセージ(Conventional Commits が望ましい)
- PR のタイトルと説明
- Issue の参照(#123)
- マージコミットのメッセージ
- コミットの作成者
パターンを解析する
feat(auth): add OAuth2 support
^ ^ ^
| | └─ Description
| └─ Scope (optional)
└─ Type
種類とカテゴリ:
feat→ 追加fix→ 修正docs→ ドキュメントstyle、refactor→ 変更perf→ パフォーマンスtest→ テストchore、ci→ 内部BREAKING CHANGE→ 破壊的変更
変更履歴の形式(Keep a Changelog)
# 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 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
```bash
npm install [email protected]
# or
yarn add [email protected]
```
🔗 リンク
**注:**これはマイナーリリースです。破壊的変更はありません。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 tag
git log $(git describe --tags --abbrev=0)..HEAD --oneline
# Get commits between two tags
git log v2.0.0..v2.1.0 --oneline
# Get commits with PR numbers
git log --merges --pretty=format:"%s" v2.0.0..HEAD
# Get contributors
git log v2.0.0..HEAD --format='%aN' | sort -u
# Get commit count by type
git log v2.0.0..HEAD --oneline | grep -E '^[a-f0-9]+ (feat|fix|docs)' | cut -d' ' -f2 | sort | uniq -c
破壊的変更の検出
次の項目を確認します。
- コミットメッセージに
BREAKING CHANGE:が含まれている - コミットの種類に
!が付いている(例:feat!:) - PR に「breaking-change」のラベルが付いている
- 依存関係がメジャーアップデートされている
- API エンドポイントに変更がある
- 設定ファイルの形式に変更がある
明確に記載します:
### Breaking Changes
⚠️ **API Response Format Changed**
The `/api/users` endpoint now returns:
```json
// Before
{ "data": [...] }
// After
{ "users": [...], "total": 100 }
```
**移行方法:**API クライアントを更新し、data の代わりに users にアクセスしてください。
## Automation Tools
### Using conventional-changelog
```bash
npm install -g conventional-changelog-cli
# Generate changelog
conventional-changelog -p angular -i CHANGELOG.md -s
# Generate for specific version
conventional-changelog -p angular -i CHANGELOG.md -s -r 0
git-cliff を使用する
# Install git-cliff
cargo install git-cliff
# Generate changelog
git-cliff --tag v2.1.0 > CHANGELOG.md
# Generate release notes
git-cliff --tag v2.1.0 --unreleased
GitHub リリーススクリプト
#!/bin/bash
# scripts/release.sh
VERSION=$1
PREVIOUS_TAG=$(git describe --tags --abbrev=0)
# Generate release notes
gh release create "$VERSION" \
--title "Release $VERSION" \
--notes "$(git log $PREVIOUS_TAG..HEAD --pretty=format:'- %s')"
ユーザー向けと開発者向け
ユーザー向け(リリースノート)
- メリットと機能に焦点を当てます
- 専門用語を控えめにします
- スクリーンショットやデモを含めます
- ユーザーエクスペリエンスの改善を強調します
- アップグレード手順を記載します
開発者向け(変更履歴)
- 技術的な詳細
- API の変更
- 移行ガイドを伴う破壊的変更
- 依存関係の更新
- 内部リファクタリング
プロジェクトの種類別テンプレート
ライブラリ/パッケージ
焦点:API の変更、破壊的変更、新しいメソッド
アプリケーション
焦点:新機能、バグ修正、UI の改善
CLI ツール
焦点:新しいコマンド、フラグの変更、動作の変更
API サービス
焦点:エンドポイントの変更、パフォーマンス、セキュリティ
ベストプラクティス
- 具体的にする:「ログインのバグを修正」→「モバイルでのセッションタイムアウトを修正」
- Issue にリンクする:GitHub の Issue を参照します(#123)
- 貢献者に謝意を示す:貢献を称えます
- 影響を強調する:破壊的変更を明確に示します
- 論理的にグループ化する:時系列ではなく種類ごとにまとめます
- 定期的に更新する:リリースごとに更新します
- 規約に従う:Keep a Changelog の形式を使用します
- セマンティックバージョニング:正しく使用します
変更履歴エントリーの例
良い例
### 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)
悪い例
### Added
- Added stuff
- New feature
### Fixed
- Fixed bug
- Updates
バージョン提案アルゴリズム
If breaking changes detected:
MAJOR++, MINOR=0, PATCH=0
Else if new features:
MINOR++, PATCH=0
Else if only fixes:
PATCH++
リリースチェックリスト
リリースを公開する前に、次の項目を確認します。
- 前回のリリース以降のコミットをすべて確認する
- 破壊的変更を特定する
- 変更を適切に分類する
- CHANGELOG.md を更新する
- リリースノートを作成する
- package.json/pyproject.toml のバージョンを更新する
- Git タグを作成する
- CI/CD を起動するためにタグをプッシュする
- パッケージレジストリ(npm、PyPI など)に公開する
- リリースノートを添えて GitHub リリースを作成する
- 関連するチャンネルで告知する
出力チェックリスト
変更履歴の生成では、毎回次の内容を提示します。
- Keep a Changelog に準拠した形式の CHANGELOG.md
- リリースノートのドラフト(ユーザー向け)
- セマンティックバージョニングの提案(X.Y.Z)
- 明確に示された破壊的変更
- 破壊的変更に対する移行ガイド
- 実行する Git タグコマンド
- 比較ビューへのリンク
コメント
Markdown 対応