release について
バージョンと変更履歴をまとめて更新するリリーススキルです。Conventional Commits から更新幅を判定でき、プラグインやドキュメントのバージョン表記も同期します。
主な機能
- 01patch、minor、major、任意バージョンの指定
- 02Conventional Commits による更新幅の判定
- 03プラグインとドキュメントのバージョン同期
- 04Keep a Changelog 形式の生成と調整
活用シーン
- 01patch、minor、major リリースの実施
- 02コミット履歴に基づく更新幅の決定
- 03プロジェクト、プラグイン、サイト文書の同期
- 04リリース変更履歴の生成と確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ s-hiraoku/ synapse-a2a --skill releaseインストール後、Claude Code で/releaseを入力して読み込まれたか確認します。
詳細
リリースバージョンの更新
このスキルでは、プロジェクトのバージョン、プラグインのバージョン、変更履歴を更新します。
使用方法
/release [version-type-or-number] [description]
バージョンの種類
patch- パッチバージョンを上げます(例:0.2.12 → 0.2.13)minor- マイナーバージョンを上げます(例:0.2.12 → 0.3.0)major- メジャーバージョンを上げます(例:0.2.12 → 1.0.0)X.Y.Z- 特定のバージョンを設定します(例:1.0.0)
バージョンの種類は省略可能 — Conventional Commits から自動検出
バージョンの種類が省略された場合、最新タグ以降のコミットから、標準的な Semantic Versioning と Conventional Commits の対応関係に基づいて、バージョンの更新レベルを自動検出します。
- major — コミット本文に
BREAKING CHANGE:を含むコミット、または件名のコロンの前に!があるコミットが1つでもある場合(例:feat!:、refactor(core)!:)。 - minor — それ以外で、
feat:(またはfeat(scope):)のコミットが少なくとも1つある場合。 - patch — それ以外(修正、雑務、ドキュメントなど)。
手順:
git describe --tags --abbrev=0→ 最新タグ。リポジトリにタグがまだないためこのコマンドがゼロ以外の終了コードを返した場合は、全履歴に切り替えます:git log HEAD --pretty=%H%x00%s%x00%b(最初のコミットから HEAD まで)。すべてのコミットを「未リリース」として扱います。- それ以外の場合は、
git log <tag>..HEAD --pretty=%H%x00%s%x00%b→ 分類対象のコミット。(NUL 区切りのフィールドを使うことで、複数行の本文を解析可能な状態に保ちます。) - 範囲が空の場合は、
No commits since <tag>; nothing to releaseで中止します。 - 検出した更新の種類とコミット数の概要を1行で表示してから、通常の更新フローに進みます。確認は求めません — これにより、
post-impl-codexのような非対話型ワークフローが中断されません。
明示的な引数が常に優先されます。 ユーザーが patch/minor/major/X.Y.Z を指定した場合は、自動検出を完全にスキップします。
説明(任意)
指定されている場合は、変更履歴のエントリーの説明として使用します。指定されていない場合は、最近のコミットを分析して変更履歴を生成します。
ワークフロー
ステップ 1:現在のバージョンを読み取る
pyproject.toml を読み取り、現在のバージョンを抽出します:
# Look for: version = "X.Y.Z"
ステップ 2:新しいバージョンを計算する
バージョンの種類に基づきます:
- patch:
major.minor.patch→major.minor.(patch+1) - minor:
major.minor.patch→major.(minor+1).0 - major:
major.minor.patch→(major+1).0.0 - specific:指定されたバージョンをそのまま使用します
強制指定されていない限り、新しいバージョンが現在のバージョンより大きいことを検証します。
ステップ 3:pyproject.toml を更新する
pyproject.toml を編集します:
version = "NEW_VERSION"
ステップ 3.5:plugin.json を更新する
plugins/synapse-a2a/.claude-plugin/plugin.json を編集します:
"version": "NEW_VERSION",
重要: プラグインのバージョンを pyproject.toml のバージョンと一致させてください。
ステップ 3.6:site-docs のバージョン参照を更新する
GitHub Pages ドキュメント内のハードコードされたバージョン文字列を更新します:
-
site-docs/getting-started/installation.md— 検証セクションのバージョン例:You should see the version number (e.g., `NEW_VERSION`). -
site-docs/concepts/a2a-protocol.md— Agent Card の JSON 例:"version": "NEW_VERSION", -
site-docs/changelog.md— 「Recent Highlights」の先頭に新しいバージョンのエントリーを追加します(ステップ 4~5 で CHANGELOG.md を更新した場合のみ)。 -
mkdocs.yml—repo_nameには、GitHub Pages のヘッダーに表示されるバージョンが含まれています:repo_name: s-hiraoku/synapse-a2a vNEW_VERSION
重要: site-docs のバージョンを pyproject.toml のバージョンと一致させてください。
ステップ 4:git-cliff で変更履歴を生成する
git-cliff を使って、Conventional Commits から変更履歴のエントリーを自動生成します:
# Preview the generated changelog
python scripts/generate_changelog.py --unreleased --tag vNEW_VERSION --dry-run
# Write to CHANGELOG.md
python scripts/generate_changelog.py --unreleased --tag vNEW_VERSION
ステップ 5:CHANGELOG.md を確認して調整する
生成されたエントリーを確認し、必要に応じて手動で調整します:
- エントリーをわかりやすい表現に修正する
- 不足している場合は、背景情報や PR への参照を追加する
- フィルターをすり抜けた不要なエントリーを削除する
- 日付が正しいことを確認する:
## [NEW_VERSION] - YYYY-MM-DD
git-cliff が利用できない場合、または手動で上書きする場合は、Keep a Changelog 形式を使ってエントリーを直接記述します(以下を参照)。
ステップ 6:結果を報告する
以下を表示します:
- 旧バージョン → 新バージョン
- 変更履歴エントリーのプレビュー
- 変更したファイル
例
パッチバージョンを上げる
/release patch
説明を指定してマイナーバージョンを上げる
/release minor "Add new authentication system"
メジャーバージョンを上げる
/release major
特定のバージョンを設定する
/release 1.0.0
短縮形
/version patch # Same as /release patch
ファイルの場所
- バージョン:
pyproject.toml(version = "..."の行) - プラグインのバージョン:
plugins/synapse-a2a/.claude-plugin/plugin.json("version": "..."の行) - サイトドキュメントのバージョン:
site-docs/getting-started/installation.md、site-docs/concepts/a2a-protocol.md - サイトヘッダーのバージョン:
mkdocs.yml(repo_nameフィールド) - 変更履歴:
CHANGELOG.md - サイトドキュメントの変更履歴:
site-docs/changelog.md
変更履歴の形式
Keep a Changelog の形式に従ってください。
## [X.Y.Z] - YYYY-MM-DD
### Added
- New features
### Changed
- Changes in existing functionality
### Fixed
- Bug fixes
### Removed
- Removed features
### Documentation
- Documentation updates
### Tests
- Test updates
項目があるセクションのみ記載してください。セクションは上記の順序に並べてください。