mcpField
R
release-skills

release-skills

github.com/xy121718開発103125 回インストール35 週間前に更新
リポジトリ

release-skills について

release-skillsは、複数のプロジェクト種別に対応するリリースワークフローのスキルです。バージョンファイルを検出してコミットを分析し、多言語の変更履歴やプレビュー、リリース前の確認に対応します。

主な機能

  1. 01プロジェクトのバージョンファイルを自動検出
  2. 02コミットを分析してバージョン更新を提案
  3. 03多言語の変更履歴を生成
  4. 04スキルやモジュール単位でコミットを分類
  5. 05プレビューとリリース確認に対応

活用シーン

  1. 01Node.js、Python、Rustのリリースを準備
  2. 02コミット履歴から変更履歴を作成
  3. 03実行せずにバージョン変更を確認
  4. 04モジュール別のコミットを整理してタグを作成

インストール

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

$npx skills add https://github.com/xy121718/baoyu-skills --skill release-skills

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

詳細

リリーススキル

複数言語の変更履歴に対応した、あらゆるプロジェクトタイプで使える汎用リリースワークフローです。

クイックスタート

/release-skills を実行するだけで、プロジェクトの設定を自動検出します。

対応プロジェクト

プロジェクトタイプバージョンファイル自動検出
Node.jspackage.json✓
Pythonpyproject.toml✓
RustCargo.toml✓
Claude Pluginmarketplace.json✓
汎用VERSION / version.txt✓

オプション

フラグ説明
--dry-run実行せずに変更内容をプレビューします
--majorメジャーバージョンの更新を強制します
--minorマイナーバージョンの更新を強制します
--patchパッチバージョンの更新を強制します

ワークフロー

ステップ 1:プロジェクト設定の検出
  1. .releaserc.yml を確認します(設定の上書きは任意)
  2. ファイルをスキャンしてバージョンファイルを自動検出します(優先順位順):
    • package.json(Node.js)
    • pyproject.toml(Python)
    • Cargo.toml(Rust)
    • marketplace.json または .claude-plugin/marketplace.json(Claude Plugin)
    • VERSION または version.txt(汎用)
  3. グロブパターンを使って変更履歴ファイルをスキャンします:
    • CHANGELOG*.md
    • HISTORY*.md
    • CHANGES*.md
  4. ファイル名の接尾辞から各変更履歴の言語を特定します
  5. 検出した設定を表示します

言語の検出ルール:

ファイル名のパターン言語
CHANGELOG.md(接尾辞なし)en(デフォルト)
CHANGELOG.zh.md / CHANGELOG_CN.md / CHANGELOG.zh-CN.mdzh
CHANGELOG.ja.md / CHANGELOG_JP.mdja
CHANGELOG.ko.md / CHANGELOG_KR.mdko
CHANGELOG.de.md / CHANGELOG_DE.mdde
CHANGELOG.fr.md / CHANGELOG_FR.mdfr
CHANGELOG.es.md / CHANGELOG_ES.mdes
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:バージョン更新を決定

ルール(優先順位順):

  1. ユーザー指定のフラグ --major/--minor/--patch → 指定されたものを使用
  2. BREAKING CHANGE が検出された場合 → メジャーバージョンを更新(1.x.x → 2.0.0)
  3. feat: コミットがある場合 → マイナーバージョンを更新(1.2.x → 1.3.0)
  4. それ以外の場合 → パッチバージョンを更新(1.2.3 → 1.2.4)

バージョンの変更を表示します:1.2.3 → 1.3.0

Step 4: Generate Multi-language Changelogs

For each detected changelog file:

  1. Identify language from filename suffix
  2. 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
  3. 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
  4. Insert at file head (preserve existing content)

Section Title Translations (built-in):

Typeenzhjakodefres
featFeatures新功能新機能새로운 기능FunktionenFonctionnalitésCaracterísticas
fixFixes修复修正수정FehlerbehebungenCorrectionsCorrecciones
docsDocumentation文档ドキュメント문서DokumentationDocumentationDocumentación
refactorRefactor重构リファクタリング리팩토링RefactoringRefactorisationRefactorización
perfPerformance性能优化パフォーマンス성능LeistungPerformanceRendimiento
breakingBreaking Changes破坏性变更破壊的変更주요 변경사항Breaking ChangesChangements majeursCambios 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:

  1. Identify changed files per commit
  2. 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
  3. 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):

  1. Check README updates needed:

    • Scan README*.md for mentions of this skill/module
    • Verify options/flags documented correctly
    • Update usage examples if syntax changed
    • Update feature descriptions if behavior changed
  2. 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>"
    
  3. 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

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 TypeREADME Section to Check
New options/flagsOptions table, usage examples
Renamed optionsOptions table, usage examples
New featuresFeature description, examples
Breaking changesMigration notes, deprecation warnings
Restructured internalsArchitecture section (if exposed to users)
ステップ 7:変更履歴を生成してバージョンを更新する
  1. 多言語の変更履歴を生成する(ステップ 4 の説明を参照)
  2. バージョンファイルを更新する:
    • バージョンファイルを読み込む(JSON/TOML/テキスト)
    • バージョン番号を更新する
    • 書き戻す(書式を維持する)

ファイル形式別のバージョンパス:

ファイルパス
package.json$.version
pyproject.tomlproject.version
Cargo.tomlpackage.version
marketplace.json$.metadata.version
VERSION / version.txt内容を直接指定
ステップ 8:ユーザーの確認

リリースコミットを作成する前に、ユーザーに確認を求めます。

AskUserQuestion を使用して、次の 2 つの質問をします:

  1. バージョンの更新(単一選択):

    • ステップ 3 の分析に基づく推奨バージョンを表示する
    • 選択肢:推奨バージョン(ラベル付き)、その他の semver の選択肢
    • 例:1.2.3 → 1.3.0 (Recommended)、1.2.3 → 1.2.4、1.2.3 → 2.0.0
  2. リモートにプッシュ(単一選択):

    • 選択肢:「はい、コミット後にプッシュする」、「いいえ、ローカルのみ」

確認前の出力例:

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:リリースコミットとタグを作成する

ユーザーの確認後:

  1. バージョンファイルと変更履歴ファイルをステージする:

    git add <version-file>
    git add CHANGELOG*.md
    
  2. リリースコミットを作成する:

    git commit -m "chore: release v{VERSION}"
    
  3. タグを作成する:

    git tag v{VERSION}
    
  4. ユーザーが確認した場合にプッシュする(ステップ 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」と言った場合でも、まず上記の手順をすべて実行してください。

コメント