mcpField
C
changelog-generator

changelog-generator

github.com/decebals開発767245 回インストール6 日前に更新
リポジトリ

changelog-generator について

Conventional Commits から Java プロジェクトの変更ログを作成するスキルです。バージョン規則と既存の形式を判定し、変更を分類してバージョン更新を提案します。

主な機能

  1. 01プロジェクトファイルやタグからバージョン規則を判定
  2. 02既存の変更ログ形式を確認
  3. 03コミットを項目別に分類
  4. 04課題と比較リンクを追加
  5. 05バージョン更新を提案

活用シーン

  1. 01リリース前の変更ログ作成
  2. 02指定タグ以降の変更確認
  3. 03特定課題のログ項目追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/decebals/claude-code-java --skill changelog-generator

インストール後、Claude Code で/changelog-generatorを入力して読み込まれたか確認します。

同梱ファイルREADME.md

詳細

変更履歴生成スキル

Java プロジェクトの Conventional Commits から変更履歴を生成します。

使用するタイミング

  • リリース前
  • ユーザーが「変更履歴を生成して」「変更履歴を更新して」「前回のリリース以降の変更点は?」と言ったとき
  • マイルストーンの完了後

バージョン管理規則の検出

次の優先順位でバージョン管理のスタイルを検出します。

1. CLAUDE.md を確認する(存在する場合)
grep -A5 "## Versioning" CLAUDE.md 2>/dev/null

明示的な規則を探します。

## Versioning
This project uses Semantic Versioning (x.y.z).
Tag format: `release-x.y.z`
2. フォールバック:Git タグから検出する
git tag --sort=-version:refname | head -10
検出されたパターンバージョン管理のスタイル
v3.15.0、3.15.0SemVer(x.y.z)
release-3.15.0プレフィックス付き SemVer
v2.1、2.12 コンポーネント(x.y)
2026.01、26.1CalVer
パターンなしユーザーに確認
3. フォールバック:CHANGELOG.md から検出する
grep -E "^\#+ \[.*\]" CHANGELOG.md | head -5

既存の項目からバージョン形式を抽出します。

4. 最終手段:ユーザーに確認する
No versioning convention detected. Which format does this project use?
- Semantic Versioning (x.y.z) - e.g., 3.15.0
- Two-component (x.y) - e.g., 2.1
- Calendar Versioning - e.g., 2026.01
対応するバージョン管理スタイル
スタイル形式タグの例バージョンの更新
SemVerx.y.zv3.15.0、release-3.15.0major.minor.patch
2 コンポーネントx.yv2.1、2.1major.minor
CalVerYYYY.MM[.patch]2026.01、2026.01.1year.month[.patch]
レガシープロジェクト(CLAUDE.md にバージョン管理のセクションがない場合)

CLAUDE.md は存在するものの、バージョン管理の情報がない場合:

  1. 推測せず、タグ/変更履歴から検出します
  2. 検出できた場合は、CLAUDE.md への追記を任意で提案します。
    Detected versioning: SemVer (x.y.z) with tag prefix 'release-'
    Want me to add this to CLAUDE.md for future reference?
    

出力形式

2 種類の形式に対応しています。既存の CHANGELOG.md から形式を検出するか、ユーザーに希望を確認します。

形式 A:Keep a Changelog(バージョン見出しは h2)
# Changelog

## [Unreleased]

## [1.2.0] - 2026-01-29

### Added
- [#123]: New feature for plugin dependencies

### Changed
- [#456]: Improved performance of plugin loading

### Fixed
- [#234]: Resolved NPE when directory missing
形式 B:pf4j スタイル(バージョン見出しは h3)
## Change Log

### [Unreleased][unreleased]

### [3.15.0] - 2026-01-29

#### Added
- [#123]: New feature for plugin dependencies

#### Changed
- [#456]: Improved performance of plugin loading

#### Fixed
- [#234]: Resolved NPE when directory missing

参照スタイルのリンク(推奨)

項目をすっきりと読みやすくするため、参照スタイルのリンクを使用します。

#### Fixed
- [#648]: Restore missing `module-info.class` in multi-release JAR
- [#625]: Fix exception handling inconsistency in `startPlugin()`

#### Added
- [#629]: Validate dependency state on plugin start
- [#633]: Allow customization of `PluginClassLoader` parent delegation


[#648]: https://github.com/user/repo/issues/648
[#633]: https://github.com/user/repo/pull/633
[#629]: https://github.com/user/repo/pull/629
[#625]: https://github.com/user/repo/pull/625

メリット:

  • インラインに長い URL がなく、読みやすくなります
  • リンクを一度だけ定義して再利用できます
  • 記述と保守が容易になります

バージョン比較リンク

差分を簡単に確認できるよう、末尾に比較リンクを追加します。

[unreleased]: https://github.com/user/repo/compare/release-3.15.0...HEAD
[3.15.0]: https://github.com/user/repo/compare/release-3.14.1...release-3.15.0
[3.14.1]: https://github.com/user/repo/compare/release-3.14.0...release-3.14.1

パターン: [version]: https://github.com/{owner}/{repo}/compare/{previous-tag}...{current-tag}

セクションの順序

既存のファイルに合わせるか、次のデフォルトの順序を使用します。

セクション使用する内容
Fixedバグ修正
Changed既存機能の変更
Added新機能
Deprecatedまもなく削除される機能
Removed削除された機能
Security脆弱性の修正(CVE)

注:pf4j では Fixed → Changed → Added → Removed の順です。Keep a Changelog では Added → Changed → Deprecated → Removed → Fixed → Security の順です。

ルール:既存のファイルがある場合は、その順序に従います。

Conventional Commits から変更履歴へのマッピング

コミット種別変更履歴のセクション
featAdded
fixFixed
perfChanged
refactorChanged
build(deps)Changed または Security(CVE の場合)
BREAKING CHANGEChanged(太字の注記付き)
deprecateDeprecated

ワークフロー

  1. 既存の CHANGELOG.md を確認する

    cat CHANGELOG.md | head -20
    

    形式(バージョン見出しが h2 か h3 か、セクションの順序、リンクのスタイル)を検出します。

  2. バージョン範囲を決定する

    # Find last tag
    git describe --tags --abbrev=0
    
    # List recent tags
    git tag --sort=-version:refname | head -5
    
  3. 前回のリリース以降のコミットを取得する

    git log v3.14.1..HEAD --oneline
    
  4. Issue/PR への参照を抽出する パターンを探します:#123、fixes #123、closes #123、(#123)

  5. 変更履歴の項目を生成する

    • セクションごとにグループ化します
    • 参照スタイルのリンクを使用します
    • バージョン比較リンクを追加します
  6. バージョンの更新を提案する(検出したバージョン管理スタイルに基づく)

    SemVer(x.y.z):

    • BREAKING CHANGE → Major(3.0.0 → 4.0.0)
    • feat → Minor(3.14.0 → 3.15.0)
    • fix のみ → Patch(3.14.0 → 3.14.1)

    2 コンポーネント(x.y):

    • BREAKING CHANGE → Major(2.0 → 3.0)
    • feat/fix → Minor(2.1 → 2.2)

    CalVer(YYYY.MM):

    • 月が変わった場合 → 2026.01 → 2026.02
    • 同じ月に新しいリリースを行う場合 → 2026.01 → 2026.01.1

トークンの最適化

  • 最初のスキャンには git log --oneline を使用します
  • BREAKING CHANGE が疑われる場合に限り、コミットの全文を取得します
  • 既存のファイルにあるリンク定義を再利用します
  • 変更履歴全体を読み直さず、新しいセクションだけを先頭に追加します

例:ワークフロー全体

入力: ユーザーが「次のリリースの変更履歴を生成して」と言います

ステップ 1: 既存の形式を確認

head -30 CHANGELOG.md

→ pf4j スタイル(h3 のバージョン見出し、「Fixed」が先)を検出します

ステップ 2: バージョンの範囲を特定

git describe --tags --abbrev=0

→ release-3.15.0

ステップ 3: コミットを取得

git log release-3.15.0..HEAD --oneline

→ 5 件のコミットが見つかりました

ステップ 4: エントリを生成

### [Unreleased][unreleased]

#### Fixed
- [#650]: Fix memory leak in extension factory

#### Changed
- [#651]: Rename `LegacyExtension*` to `IndexedExtension*`

#### Added
- [#652]: Add support for plugin priority ordering

ステップ 5: リンク定義を生成

[#652]: https://github.com/pf4j/pf4j/pull/652
[#651]: https://github.com/pf4j/pf4j/pull/651
[#650]: https://github.com/pf4j/pf4j/issues/650

ステップ 6: バージョン比較リンクを更新

[unreleased]: https://github.com/pf4j/pf4j/compare/release-3.15.0...HEAD

ステップ 7: バージョンを提案

Suggested: 3.16.0 (minor - has new feature)

特殊ケースへの対応

Conventional Commits がない場合

元のメッセージを使用して「Changed」の下に記載します:

#### Changed
- Updated plugin loading mechanism
- Refactored test utilities
セキュリティ修正
#### Security
- [#618], [#623]: Fix path traversal vulnerabilities in ZIP extraction
破壊的変更
#### Changed
- **BREAKING**: [#645] Renamed `LegacyExtension*` classes to `IndexedExtension*`
同じ修正に複数の課題がある場合
- [#630], [#631]: Set `failedException` when plugin validation fails

既存の CHANGELOG.md との統合

  1. 既存のファイルを読み取り、次の項目を確認します:

    • 見出しレベル(バージョンには ## または ###)
    • セクションの順序
    • リンクのスタイル(参照形式またはインライン形式)
    • 既存のリンク定義
  2. [Unreleased] セクションの後に新しいバージョンを挿入します

  3. リンク定義を統合します。新しい定義を追加し、既存の定義は保持します

  4. [unreleased] 比較リンクが新しいバージョンを指すように更新します

クイックリファレンス

ユーザーの発言操作
"generate changelog"最後のタグ以降の変更履歴全体
"changelog since v3.14"指定したバージョン以降の変更履歴
"what's unreleased"未リリースの変更をプレビュー
"update changelog for 3.16"バージョン 3.16 の変更履歴を生成して挿入
"add changelog entry for #123"単一の課題のエントリ

コメント