Skip to main content
release-workflow バージョン整合性チェック→提案→承認→GitHub Release作成までの標準リリースフロー(マルチエコシステム対応)
Jump to install Skills Marketplace Discover and explore AI skills built by the community.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Copy promptShow prompt details A direct command skips the review prompt. Inspect the source before running it.
npx skills add https://github.com/takemo101/compose-workflow --skill release-workflowThe command stays on one line. Scroll horizontally to inspect it before copying.
Prefer a local copy? Download the files currently available to SkillsMP.
Download Zip Downloading... More from this repository name release-workflow description バージョン整合性チェック→提案→承認→GitHub Release作成までの標準リリースフロー(マルチエコシステム対応)
リリースワークフロー
バージョン提案 → ユーザー承認 → リリース作成までの標準フローを定義する。
フロー概要
0.5. バージョン整合性チェック(ハードコード検出)
↓
1. バージョン提案(Sisyphusが自動計算)
↓
2. ユーザーがバージョンを承認/変更
↓
3. リリース実行(自動)
- ハードコードバージョン修正(検出時)
- バージョンファイル更新
- CHANGELOG.md更新
- コミット & タグ作成
- push
- GitHub Release作成
- Release Workflow完了待機
実装環境
ホスト環境で実行
リリース作業はホスト環境で直接実行します。
理由 説明 コード変更なし バージョンファイル(Cargo.toml等)とCHANGELOG.mdのみ更新 ドキュメント操作のみ 実行可能コードの変更を伴わない タグ・リリース操作 Gitタグ作成とGitHub Release操作のみ
git add Cargo.toml CHANGELOG.md
git commit -m "chore: release v<version>"
git tag -a v<version> -m "Release v<version>"
git push origin <default-branch> --tags
gh release create v<version> ...
対応エコシステム
エコシステム バージョンファイル 検出条件 Rust Cargo.tomlCargo.toml 存在Node.js package.jsonpackage.json 存在Python (pyproject) pyproject.tomlpyproject.toml 存在
Python (setup.py) setup.pysetup.py 存在
Generic VERSIONVERSION ファイル存在
自動検出の優先順位
Cargo.toml → Rust
package.json → Node.js
pyproject.toml → Python (pyproject)
setup.py → Python (setup.py)
go.mod → Go
VERSION → Generic
いずれもなし → Tag-only
Note : 複数のエコシステムファイルが存在する場合、上記の優先順位で最初にマッチしたものを使用します。
スクリプトは検出時に警告を表示します。
Phase 0.5: バージョン整合性チェック リリース前にコードベース内のハードコードされたバージョンを検出し、修正を提案する。
0.5.1 目的
ハードコードされたバージョン文字列の検出
推奨パターン(動的バージョン取得)への移行提案
リリース時のバージョン不整合を防止
0.5.2 エコシステム別チェックパターン
Rust パターン 検索コマンド 問題 推奨修正 #[command(version = "x.x.x")]rg '#\[command\(version\s*=' --type rustclap属性にハードコード #[command(version)]const VERSION: &str = "x.x.x"rg 'const\s+VERSION.*=.*"\d+\.\d+' --type rust定数定義 env!("CARGO_PKG_VERSION")static VERSIONrg 'static\s+VERSION.*=.*"\d+\.\d+' --type ruststatic定義 env!("CARGO_PKG_VERSION")
Node.js パターン 検索コマンド 問題 推奨修正 const version = "x.x.x"rg 'const\s+version\s*=\s*["\x27]\d+\.\d+' --type js --type ts定数定義 require('./package.json').versionVERSION = "x.x.x"rg 'VERSION\s*=\s*["\x27]\d+\.\d+' --type js --type ts大文字定数 process.env.npm_package_version.version("x.x.x")rg '\.version\(["\x27]\d+\.\d+' --type js --type tsメソッドチェーン 動的取得に変更
Python パターン 検索コマンド 問題 推奨修正 __version__ = "x.x.x"rg '__version__\s*=\s*["\x27]\d+\.\d+' --type pyモジュールバージョン importlib.metadata.version("pkg")VERSION = "x.x.x"rg 'VERSION\s*=\s*["\x27]\d+\.\d+' --type py定数定義 importlib.metadata.version("pkg")version="x.x.x" in setup()rg 'version\s*=\s*["\x27]\d+\.\d+' setup.pysetup.py内 pyproject.tomlに移行
Go パターン 検索コマンド 問題 推奨修正 var Version = "x.x.x"rg 'var\s+[Vv]ersion\s*=\s*"\d+\.\d+' --type go変数定義 -ldflags "-X main.Version=..."const Version = "x.x.x"rg 'const\s+[Vv]ersion\s*=\s*"\d+\.\d+' --type go定数定義 -ldflagsでビルド時注入
0.5.3 共通チェックパターン(全エコシステム) パターン 検索コマンド 対応 READMEバッジ rg 'badge/v?\d+\.\d+\.\d+' README.md新バージョンに更新 シールドバッジ rg 'shields\.io.*\d+\.\d+\.\d+' README.md新バージョンに更新 インストール例 rg '@\d+\.\d+\.\d+' README.md新バージョンに更新 ドキュメント内バージョン rg 'v\d+\.\d+\.\d+' docs/警告表示(確認必要)
0.5.4 スクリプト実行 バージョン整合性チェックは release.sh に統合されています:
.pi/skills/release-workflow/scripts/release.sh --version-check <new-version>
.pi/skills/release-workflow/scripts/release.sh --version 1.2.3
.pi/skills/release-workflow/scripts/release.sh --version 1.2.3 --skip-version-check
依存 : rg(ripgrep)がインストールされている場合は高速検索を使用。
未インストールの場合は grep -E にフォールバック。
0.5.5 出力フォーマット ## バージョン整合性チェック結果
### ⚠️ 検出されたハードコードバージョン
| ファイル | 行 | 現在の値 | 種別 | 推奨対応 |
|---------|-----|---------|------|---------|
| src/cli/args.rs | 5 | `version = "0.1.0"` | Rust/clap | `#[command(version)]` に変更 |
| README.md | 12 | `badge/v0.1.0` | バッジ | `v{NEW_VERSION}` に更新 |
### 対応オプション
1. **自動修正を適用** → 推奨パターンに変換(コード変更あり)
2. **バージョン番号のみ更新** → 現在のパターンを維持し値のみ更新
3. **スキップ** → 警告のみ、修正なし
> 番号を選択してください(1-3):
0.5.6 自動修正ルール 種別 自動修正可能 修正内容 Rust clap属性 ✅ version = "x.x.x" → versionRust定数 ✅ "x.x.x" → env!("CARGO_PKG_VERSION")READMEバッジ ✅ バージョン番号を新バージョンに置換 Node.js定数 ⚠️ 確認必要 使用箇所により異なる Python __version__ ⚠️ 確認必要 importlib使用可否による Go変数 ❌ 手動 ビルドスクリプト修正が必要 ドキュメント内 ⚠️ 確認必要 コンテキストによる
0.5.7 Phase 0.5 スキップ条件
--skip-version-check フラグ指定時
前回リリースからコード変更がない場合(CHANGELOG.mdのみ等)
ユーザーが明示的にスキップを選択
Phase 1: バージョン提案
1.1 エコシステム検出とバージョン取得
.pi/skills/release-workflow/scripts/release.sh --detect
grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/'
jq -r '.version' package.json
grep '^version = ' pyproject.toml | head -1 | sed 's/version = "\(.*\)"/\1/'
grep -o "version=['\"][^'\"]*['\"]" setup.py | sed "s/version=['\"]\\([^'\"]*\\)['\"/\\1/"
git tag --sort =-version:refname | head -1 | sed 's/^v//'
cat VERSION
1.2 変更内容の分析
git log <last-tag>..HEAD --oneline
1.3 セマンティックバージョニング判定 変更種別 バージョン変更 例 Breaking Change MAJOR (x.0.0) API変更、後方互換性なし 新機能追加 MINOR (0.x.0) 機能追加、後方互換性あり バグ修正 PATCH (0.0.x) バグ修正、リファクタリング
1.4 提案フォーマット ## リリース提案
### エコシステム
<detected-ecosystem >
### 現在のバージョン
v0.4.0
### 前回リリースからの変更
- feat: 新機能追加(#XX)
- fix: バグ修正(#YY)
### 提案バージョン
**v0.5.0** (MINOR: 新機能追加)
### 変更種別
- ✨ 新機能: N件
- 🐛 バグ修正: N件
- 📝 ドキュメント: N件
---
**このバージョンでリリースしますか?**
1. **提案バージョンで続行** → v0.5.0 でリリース開始
2. **バージョン変更** → 手動でバージョンを入力
3. **キャンセル** → リリース中止
> 番号を選択してください(1-3):
参照 : approval-gate skill 形式に準拠
Phase 2: ユーザー承認 ユーザーがバージョンを承認または変更するまで待機。
選択 アクション 1 提案バージョンでリリース 2 指定バージョンでリリース(入力プロンプト) 3 リリース中止
Phase 3: リリース実行
3.1 バージョンファイル更新
.pi/skills/release-workflow/scripts/release.sh --update-version <new-version>
Rust (Cargo.toml) sed -i '' 's/^version = ".*"/version = "<new-version>"/' Cargo.toml
Node.js (package.json) npm version <new-version> --no-git-tag-version
jq '.version = "<new-version>"' package.json > tmp.json && mv tmp.json package.json
Python (pyproject.toml) sed -i '' 's/^version = ".*"/version = "<new-version>"/' pyproject.toml
Python (setup.py) sed -i '' "s/version=['\"][^'\"]*['\"]/version='<new-version>'/" setup.py
Generic (VERSION) echo "<new-version>" > VERSION
Go / Tag-only
3.2 CHANGELOG.md更新 変更内容を ## [Unreleased] の下に追加:
## [<new-version > ] - <YYYY-MM-DD >
### Added
- 機能追加項目
### Fixed
- バグ修正項目
### Changed
- 変更項目
3.3 コミット & タグ作成
.pi/skills/release-workflow/scripts/release.sh --commit <new-version>
git add -A
git commit -m "chore: release v<new-version>"
git tag -a v<new-version> -m "Release v<new-version> - <summary>"
git push origin <default-branch> --tags
3.4 GitHub Release作成
.pi/skills/release-workflow/scripts/release.sh --create-release <new-version> "<release-notes>"
gh release create v<new-version> \
--title "v<new-version> - <summary>" \
--notes "<release-notes>"
3.5 Release Workflow完了待機
.pi/skills/release-workflow/scripts/release.sh --watch
gh run list --workflow=Release --limit 1
gh run watch <run-id>
3.6 リリースアセット確認 gh release view v<new-version> --json tagName,assets --jq '.tagName, (.assets[].name)'
スクリプト使用方法 .pi/skills/release-workflow/scripts/release.sh を使用することで、上記の処理を自動化できます。
基本コマンド
.pi/skills/release-workflow/scripts/release.sh --detect
.pi/skills/release-workflow/scripts/release.sh
.pi/skills/release-workflow/scripts/release.sh --version 1.2.3
.pi/skills/release-workflow/scripts/release.sh --dry-run --version 1.2.3
個別操作
.pi/skills/release-workflow/scripts/release.sh --update-version 1.2.3
.pi/skills/release-workflow/scripts/release.sh --commit 1.2.3
.pi/skills/release-workflow/scripts/release.sh --create-release 1.2.3 "Release notes here"
.pi/skills/release-workflow/scripts/release.sh --watch
リリースノートテンプレート ## <project-name > v<version >
### ✨ 新機能
#### <機能名>
<説明>
### 🐛 バグ修正
- <修正内容> (#<issue-number > )
### 📝 ドキュメント
- <ドキュメント変更>
---
### インストール方法
```bash
# エコシステムに応じたインストールコマンド
動作確認
システム要件
---
## CHANGELOG.md テンプレート
```markdown
## [<version>] - <YYYY-MM-DD>
### Added
- **<機能名>**: <説明> (#<issue>)
- <詳細1>
- <詳細2>
### Fixed
- **<修正名>**: <説明> (#<issue>, #<pr>)
### Changed
- **<変更名>**: <説明>
### Deprecated
- **<非推奨名>**: <説明>
### Removed
- **<削除名>**: <説明>
### Security
- **<セキュリティ修正>**: <説明>
エラーハンドリング
タグが既に存在する場合
git tag -d v<version>
git push origin :refs/tags/v<version>
Release Workflow失敗時
gh run rerun <run-id>
gh release upload v<version> <asset-file>
チェックリスト
リリース前
リリース中
リリース後
関連ドキュメント
変更履歴 日付 バージョン 変更内容 2026-01-17 3.1.0 承認ゲート形式を番号形式に統一。workflow-phase-convention参照を追加。複数エコシステム警告を追加 2026-01-17 3.0.0 Phase 0.5(バージョン整合性チェック)追加。エコシステム別ハードコード検出パターン定義。自動修正ルール追加 2026-01-10 2.0.0 マルチエコシステム対応(Rust, Node.js, Python, Go, Generic)。release.sh スクリプト追加 2026-01-09 1.0.0 初版作成(Rust専用)
Related occupations SOC
Based on SOC occupation classification