release-skills について
release-skillsは、複数のプロジェクト種別に対応するリリースワークフローのスキルです。バージョンファイルを検出してコミットを分析し、多言語の変更履歴やプレビュー、リリース前の確認に対応します。
主な機能
- 01プロジェクトのバージョンファイルを自動検出
- 02コミットを分析してバージョン更新を提案
- 03多言語の変更履歴を生成
- 04スキルやモジュール単位でコミットを分類
- 05プレビューとリリース確認に対応
活用シーン
- 01Node.js、Python、Rustのリリースを準備
- 02コミット履歴から変更履歴を作成
- 03実行せずにバージョン変更を確認
- 04モジュール別のコミットを整理してタグを作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ xy121718/ baoyu-skills --skill release-skillsインストール後、Claude Code で/release-skillsを入力して読み込まれたか確認します。
詳細
リリーススキル
複数言語の変更履歴に対応した、あらゆるプロジェクトタイプで使える汎用リリースワークフローです。
クイックスタート
/release-skills を実行するだけで、プロジェクトの設定を自動検出します。
対応プロジェクト
| プロジェクトタイプ | バージョンファイル | 自動検出 |
|---|---|---|
| Node.js | package.json | ✓ |
| Python | pyproject.toml | ✓ |
| Rust | Cargo.toml | ✓ |
| Claude Plugin | marketplace.json | ✓ |
| 汎用 | VERSION / version.txt | ✓ |
オプション
| フラグ | 説明 |
|---|---|
--dry-run | 実行せずに変更内容をプレビューします |
--major | メジャーバージョンの更新を強制します |
--minor | マイナーバージョンの更新を強制します |
--patch | パッチバージョンの更新を強制します |
ワークフロー
ステップ 1:プロジェクト設定の検出
.releaserc.ymlを確認します(設定の上書きは任意)- ファイルをスキャンしてバージョンファイルを自動検出します(優先順位順):
package.json(Node.js)pyproject.toml(Python)Cargo.toml(Rust)marketplace.jsonまたは.claude-plugin/marketplace.json(Claude Plugin)VERSIONまたはversion.txt(汎用)
- グロブパターンを使って変更履歴ファイルをスキャンします:
CHANGELOG*.mdHISTORY*.mdCHANGES*.md
- ファイル名の接尾辞から各変更履歴の言語を特定します
- 検出した設定を表示します
言語の検出ルール:
| ファイル名のパターン | 言語 |
|---|---|
CHANGELOG.md(接尾辞なし) | en(デフォルト) |
CHANGELOG.zh.md / CHANGELOG_CN.md / CHANGELOG.zh-CN.md | zh |
CHANGELOG.ja.md / CHANGELOG_JP.md | ja |
CHANGELOG.ko.md / CHANGELOG_KR.md | ko |
CHANGELOG.de.md / CHANGELOG_DE.md | de |
CHANGELOG.fr.md / CHANGELOG_FR.md | fr |
CHANGELOG.es.md / CHANGELOG_ES.md | es |
CHANGELOG.{lang}.md | 対応する言語コード |
出力例:
Project detected:
Version file: package.json (1.2.3)
Changelogs:
- CHANGELOG.md (en)
- CHANGELOG.zh.md (zh)
- CHANGELOG.ja.md (ja)
ステップ 2:最後のタグ以降の変更を分析
LAST_TAG=$(git tag --sort=-v:refname | head -1)
git log ${LAST_TAG}..HEAD --oneline
git diff ${LAST_TAG}..HEAD --stat
従来型コミットのタイプごとに分類します:
| タイプ | 説明 |
|---|---|
| feat | 新機能 |
| fix | バグ修正 |
| docs | ドキュメント |
| refactor | コードのリファクタリング |
| perf | パフォーマンスの改善 |
| test | テストの変更 |
| style | フォーマット、スタイル |
| chore | メンテナンス(変更履歴には含めません) |
破壊的変更の検出:
- コミットメッセージが
BREAKING CHANGEで始まる - コミット本文またはフッターに
BREAKING CHANGE:が含まれる - 公開 API の削除、エクスポート名の変更、インターフェースの変更
破壊的変更が検出された場合は、ユーザーに警告します:「破壊的変更が検出されました。メジャーバージョンの更新を検討してください(--major フラグ)。」
ステップ 3:バージョン更新を決定
ルール(優先順位順):
- ユーザー指定のフラグ
--major/--minor/--patch→ 指定されたものを使用 BREAKING CHANGEが検出された場合 → メジャーバージョンを更新(1.x.x → 2.0.0)feat:コミットがある場合 → マイナーバージョンを更新(1.2.x → 1.3.0)- それ以外の場合 → パッチバージョンを更新(1.2.3 → 1.2.4)
バージョンの変更を表示します:1.2.3 → 1.3.0
Step 4: Generate Multi-language Changelogs
For each detected changelog file:
- Identify language from filename suffix
- Detect third-party contributors:
- Check merge commits:
git log ${LAST_TAG}..HEAD --merges --pretty=format:"%H %s" - For each merged PR, identify the PR author via
gh pr view <number> --json author --jq '.author.login' - Compare against repo owner (
gh repo view --json owner --jq '.owner.login') - If PR author ≠ repo owner → third-party contributor
- Check merge commits:
- Generate content in that language:
- Section titles in target language
- Change descriptions written naturally in target language (not translated)
- Date format: YYYY-MM-DD (universal)
- Third-party contributions: Append contributor attribution
(by @username)to the changelog entry
- Insert at file head (preserve existing content)
Section Title Translations (built-in):
| Type | en | zh | ja | ko | de | fr | es |
|---|---|---|---|---|---|---|---|
| feat | Features | 新功能 | 新機能 | 새로운 기능 | Funktionen | Fonctionnalités | Características |
| fix | Fixes | 修复 | 修正 | 수정 | Fehlerbehebungen | Corrections | Correcciones |
| docs | Documentation | 文档 | ドキュメント | 문서 | Dokumentation | Documentation | Documentación |
| refactor | Refactor | 重构 | リファクタリング | 리팩토링 | Refactoring | Refactorisation | Refactorización |
| perf | Performance | 性能优化 | パフォーマンス | 성능 | Leistung | Performance | Rendimiento |
| breaking | Breaking Changes | 破坏性变更 | 破壊的変更 | 주요 변경사항 | Breaking Changes | Changements majeurs | Cambios importantes |
Changelog Format:
## {VERSION} - {YYYY-MM-DD}
### Features
- Description of new feature
- Description of third-party contribution (by @username)
### Fixes
- Description of fix
### Documentation
- Description of docs changes
Only include sections that have changes. Omit empty sections.
Third-Party Attribution Rules:
- Only add
(by @username)for contributors who are NOT the repo owner - Use GitHub username with
@prefix - Place at the end of the changelog entry line
- Apply to all languages consistently (always use
(by @username)format, not translated)
Multi-language Example:
English (CHANGELOG.md):
## 1.3.0 - 2026-01-22
### Features
- Add user authentication module (by @contributor1)
- Support OAuth2 login
### Fixes
- Fix memory leak in connection pool
Chinese (CHANGELOG.zh.md):
## 1.3.0 - 2026-01-22
### 新功能
- 新增用户认证模块 (by @contributor1)
- 支持 OAuth2 登录
### 修复
- 修复连接池内存泄漏问题
Japanese (CHANGELOG.ja.md):
## 1.3.0 - 2026-01-22
### 新機能
- ユーザー認証モジュールを追加 (by @contributor1)
- OAuth2 ログインをサポート
### 修正
- コネクションプールのメモリリークを修正
Step 5: Group Changes by Skill/Module
Analyze commits since last tag and group by affected skill/module:
- Identify changed files per commit
- Group by skill/module:
skills/<skill-name>/*→ Group under that skill- Root files (CLAUDE.md, etc.) → Group as "project"
- Multiple skills in one commit → Split into multiple groups
- For each group, identify related README updates needed
Example Grouping:
baoyu-cover-image:
- feat: add new style options
- fix: handle transparent backgrounds
→ README updates: options table
baoyu-comic:
- refactor: improve panel layout algorithm
→ No README updates needed
project:
- docs: update CLAUDE.md architecture section
Step 6: Commit Each Skill/Module Separately
For each skill/module group (in order of changes):
-
Check README updates needed:
- Scan
README*.mdfor mentions of this skill/module - Verify options/flags documented correctly
- Update usage examples if syntax changed
- Update feature descriptions if behavior changed
- Scan
-
Stage and commit:
git add skills/<skill-name>/* git add README.md README.zh.md # If updated for this skill git commit -m "<type>(<skill-name>): <meaningful description>" -
Commit message format:
- Use conventional commit format:
<type>(<scope>): <description> <type>: feat, fix, refactor, docs, perf, etc.<scope>: skill name or "project"<description>: Clear, meaningful description of changes
- Use conventional commit format:
Example Commits:
git commit -m "feat(baoyu-cover-image): add watercolor and minimalist styles"
git commit -m "fix(baoyu-comic): improve panel layout for long dialogues"
git commit -m "docs(project): update architecture documentation"
Common README Updates Needed:
| Change Type | README Section to Check |
|---|---|
| New options/flags | Options table, usage examples |
| Renamed options | Options table, usage examples |
| New features | Feature description, examples |
| Breaking changes | Migration notes, deprecation warnings |
| Restructured internals | Architecture section (if exposed to users) |
ステップ 7:変更履歴を生成してバージョンを更新する
- 多言語の変更履歴を生成する(ステップ 4 の説明を参照)
- バージョンファイルを更新する:
- バージョンファイルを読み込む(JSON/TOML/テキスト)
- バージョン番号を更新する
- 書き戻す(書式を維持する)
ファイル形式別のバージョンパス:
| ファイル | パス |
|---|---|
| package.json | $.version |
| pyproject.toml | project.version |
| Cargo.toml | package.version |
| marketplace.json | $.metadata.version |
| VERSION / version.txt | 内容を直接指定 |
ステップ 8:ユーザーの確認
リリースコミットを作成する前に、ユーザーに確認を求めます。
AskUserQuestion を使用して、次の 2 つの質問をします:
-
バージョンの更新(単一選択):
- ステップ 3 の分析に基づく推奨バージョンを表示する
- 選択肢:推奨バージョン(ラベル付き)、その他の semver の選択肢
- 例:
1.2.3 → 1.3.0 (Recommended)、1.2.3 → 1.2.4、1.2.3 → 2.0.0
-
リモートにプッシュ(単一選択):
- 選択肢:「はい、コミット後にプッシュする」、「いいえ、ローカルのみ」
確認前の出力例:
Commits created:
1. feat(baoyu-cover-image): add watercolor and minimalist styles
2. fix(baoyu-comic): improve panel layout for long dialogues
3. docs(project): update architecture documentation
Changelog preview (en):
## 1.3.0 - 2026-01-22
### Features
- Add watercolor and minimalist styles to cover-image
### Fixes
- Improve panel layout for long dialogues in comic
Ready to create release commit and tag.
ステップ 9:リリースコミットとタグを作成する
ユーザーの確認後:
-
バージョンファイルと変更履歴ファイルをステージする:
git add <version-file> git add CHANGELOG*.md -
リリースコミットを作成する:
git commit -m "chore: release v{VERSION}" -
タグを作成する:
git tag v{VERSION} -
ユーザーが確認した場合にプッシュする(ステップ 8):
git push origin main git push origin v{VERSION}
注:Co-Authored-By の行は追加しないでください。これはリリースコミットであり、コードへの貢献ではありません。
リリース後の出力:
Release v1.3.0 created.
Commits:
1. feat(baoyu-cover-image): add watercolor and minimalist styles
2. fix(baoyu-comic): improve panel layout for long dialogues
3. docs(project): update architecture documentation
4. chore: release v1.3.0
Tag: v1.3.0
Status: Pushed to origin # or "Local only - run git push when ready"
設定(.releaserc.yml)
デフォルト設定を上書きする場合は、プロジェクトのルートに任意の設定ファイルを配置します。
# .releaserc.yml - Optional configuration
# Version file (auto-detected if not specified)
version:
file: package.json
path: $.version # JSONPath for JSON, dotted path for TOML
# Changelog files (auto-detected if not specified)
changelog:
files:
- path: CHANGELOG.md
lang: en
- path: CHANGELOG.zh.md
lang: zh
- path: CHANGELOG.ja.md
lang: ja
# Section mapping (conventional commit type → changelog section)
# Use null to skip a type in changelog
sections:
feat: Features
fix: Fixes
docs: Documentation
refactor: Refactor
perf: Performance
test: Tests
chore: null
# Commit message format
commit:
message: "chore: release v{version}"
# Tag format
tag:
prefix: v # Results in v1.0.0
sign: false
# Additional files to include in release commit
include:
- README.md
- package.json
ドライランモード
--dry-run が指定された場合:
=== DRY RUN MODE ===
Project detected:
Version file: package.json (1.2.3)
Changelogs: CHANGELOG.md (en), CHANGELOG.zh.md (zh)
Last tag: v1.2.3
Proposed version: v1.3.0
Changes grouped by skill/module:
baoyu-cover-image:
- feat: add watercolor style
- feat: add minimalist style
→ Commit: feat(baoyu-cover-image): add watercolor and minimalist styles
→ README updates: options table
baoyu-comic:
- fix: panel layout for long dialogues
→ Commit: fix(baoyu-comic): improve panel layout for long dialogues
→ No README updates
Changelog preview (en):
## 1.3.0 - 2026-01-22
### Features
- Add watercolor and minimalist styles to cover-image
### Fixes
- Improve panel layout for long dialogues in comic
Changelog preview (zh):
## 1.3.0 - 2026-01-22
### 新功能
- 为 cover-image 添加水彩和极简风格
### 修复
- 改进 comic 长对话的面板布局
Commits to create:
1. feat(baoyu-cover-image): add watercolor and minimalist styles
2. fix(baoyu-comic): improve panel layout for long dialogues
3. chore: release v1.3.0
No changes made. Run without --dry-run to execute.
使用例
/release-skills # Auto-detect version bump
/release-skills --dry-run # Preview only
/release-skills --minor # Force minor bump
/release-skills --patch # Force patch bump
/release-skills --major # Force major bump (with confirmation)
使用するタイミング
ユーザーから次の依頼があった場合に、このスキルを起動します:
- 「リリース」、「发布」、「リリースを作成」、「新しいバージョン」、「新バージョン」
- 「バージョンを上げる」、「バージョンを更新する」、「バージョンを更新」
- 「リリースを準備する」
- 「リモートにプッシュする」(未コミットの変更がある場合)
重要:未コミットの変更がある状態で、ユーザーが「プッシュだけ」または「直接 push」と言った場合でも、まず上記の手順をすべて実行してください。