소스 정보
- 저장소
- takemo101/compose-workflow
- 최근 소스 활동
- 2026년 2월 3일 23:26
- 감지된 SKILL.md 언어
- 일본어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
파일 탐색기
2 개 파일SKILL.md 표시 중
SKILL.md
소스 지침 · 읽기 전용 미리보기- 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操作のみ |
```bash
# リリース作業はホスト環境で直接実行
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.toml` | `Cargo.toml` 存在 |
| **Node.js** | `package.json` | `package.json` 存在 |
| **Python (pyproject)** | `pyproject.toml` | `pyproject.toml` 存在 |
| **Python (setup.py)** | `setup.py` | `setup.py` 存在 |
| **Go** | タグのみ | `go.mod` 存在 |
| **Generic** | `VERSION` | `VERSION` ファイル存在 |
| **Tag-only** | なし | 上記いずれも該当しない |
### 自動検出の優先順位
1. `Cargo.toml` → Rust
2. `package.json` → Node.js
3. `pyproject.toml` → Python (pyproject)
4. `setup.py` → Python (setup.py)
5. `go.mod` → Go
6. `VERSION` → Generic
7. いずれもなし → Tag-only
> **Note**: 複数のエコシステムファイルが存在する場合、上記の優先順位で最初にマッチしたものを使用します。
> スクリプトは検出時に警告を表示します。
---
## Phase 0.5: バージョン整合性チェック
リリース前にコードベース内のハードコードされたバージョンを検出し、修正を提案する。
### 0.5.1 目的
- ハードコードされたバージョン文字列の検出
- 推奨パターン(動的バージョン取得)への移行提案
- リリース時のバージョン不整合を防止
### 0.5.2 エコシステム別チェックパターン
#### Rust
| パターン | 検索コマンド | 問題 | 推奨修正 |
|---------|-------------|------|---------|
| `#[command(version = "x.x.x")]` | `rg '#\[command\(version\s*=' --type rust` | clap属性にハードコード | `#[command(version)]` |
| `const VERSION: &str = "x.x.x"` | `rg 'const\s+VERSION.*=.*"\d+\.\d+' --type rust` | 定数定義 | `env!("CARGO_PKG_VERSION")` |
| `static VERSION` | `rg 'static\s+VERSION.*=.*"\d+\.\d+' --type rust` | static定義 | `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').version` |
| `VERSION = "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.py` | setup.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` に統合されています:
```bash
# Phase 0.5 のみ実行
.pi/skills/release-workflow/scripts/release.sh --version-check <new-version>
# 完全リリースフロー内で自動実行(デフォルト)
.pi/skills/release-workflow/scripts/release.sh --version 1.2.3
# Phase 0.5 をスキップして実行
.pi/skills/release-workflow/scripts/release.sh --version 1.2.3 --skip-version-check
```
> **依存**: `rg`(ripgrep)がインストールされている場合は高速検索を使用。
> 未インストールの場合は `grep -E` にフォールバック。
### 0.5.5 出力フォーマット
```markdown
## バージョン整合性チェック結果
### ⚠️ 検出されたハードコードバージョン
| ファイル | 行 | 現在の値 | 種別 | 推奨対応 |
|---------|-----|---------|------|---------|
| 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"` → `version` |
| Rust定数 | ✅ | `"x.x.x"` → `env!("CARGO_PKG_VERSION")` |
| READMEバッジ | ✅ | バージョン番号を新バージョンに置換 |
| Node.js定数 | ⚠️ 確認必要 | 使用箇所により異なる |
| Python `__version__` | ⚠️ 確認必要 | importlib使用可否による |
| Go変数 | ❌ 手動 | ビルドスクリプト修正が必要 |
| ドキュメント内 | ⚠️ 確認必要 | コンテキストによる |
### 0.5.7 Phase 0.5 スキップ条件
以下の場合はPhase 0.5をスキップ可能:
- `--skip-version-check` フラグ指定時
- 前回リリースからコード変更がない場合(CHANGELOG.mdのみ等)
- ユーザーが明示的にスキップを選択
---
## Phase 1: バージョン提案
### 1.1 エコシステム検出とバージョン取得
```bash
# スクリプトを使用(推奨)
.pi/skills/release-workflow/scripts/release.sh --detect
# または手動で検出
# Rust
grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/'
# Node.js
jq -r '.version' package.json
# Python (pyproject.toml)
grep '^version = ' pyproject.toml | head -1 | sed 's/version = "\(.*\)"/\1/'
# Python (setup.py)
grep -o "version=['\"][^'\"]*['\"]" setup.py | sed "s/version=['\"]\\([^'\"]*\\)['\"/\\1/"
# Go / Tag-only
git tag --sort=-version:refname | head -1 | sed 's/^v//'
# Generic
cat VERSION
```
### 1.2 変更内容の分析
```bash
# 前回リリースからのコミットを取得
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 提案フォーマット
```markdown
## リリース提案
### エコシステム
<detected-ecosystem>
### 現在のバージョン
v0.4.0
### 前回リリースからの変更
- feat: 新機能追加(#XX)
- fix: バグ修正(#YY)
### 提案バージョン
**v0.5.0** (MINOR: 新機能追加)
### 変更種別
- ✨ 新機能: N件
- 🐛 バグ修正: N件
- 📝 ドキュメント: N件
---
**このバージョンでリリースしますか?**
1. **提案バージョンで続行** → v0.5.0 でリリース開始
2. **バージョン変更** → 手動でバージョンを入力
3. **キャンセル** → リリース中止
> 番号を選択してください(1-3):
GitHub에서 보기이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기