releasing-versions
ソフトウェアやシステムのリリース準備を効率的に進めるために、バージョン番号の更新、ドキュメントの確認、セキュリティチェックなどを自動化し、品質向上とリリース作業の負担を軽減するSkill。
📜 元の英語説明(参考)
Manages release preparation including validation, version bumping, documentation verification, and security checks.
🇯🇵 日本人クリエイター向け解説
ソフトウェアやシステムのリリース準備を効率的に進めるために、バージョン番号の更新、ドキュメントの確認、セキュリティチェックなどを自動化し、品質向上とリリース作業の負担を軽減するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o releasing-versions.zip https://jpskill.com/download/17581.zip && unzip -o releasing-versions.zip && rm releasing-versions.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17581.zip -OutFile "$d\releasing-versions.zip"; Expand-Archive "$d\releasing-versions.zip" -DestinationPath $d -Force; ri "$d\releasing-versions.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
releasing-versions.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
releasing-versionsフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
バージョンのリリース
いつ使用するか
- 新しいリリースの準備
- バージョン番号の更新
- リリース前の検証
- リリース前のドキュメントの検証
リリースワークフローの概要
| フェーズ | 目的 | ブロックするか? |
|---|---|---|
| 1. リリース前検証 | テスト、セキュリティ | はい |
| 2. バージョン番号の更新 | バージョン文字列の更新 | はい |
| 3. ドキュメント | ドキュメントの検証/更新 | 警告 |
| 4. テンプレート同期 | Cookiecutter の整合性 | 警告 |
| 5. ビルド検証 | パッケージのビルド | はい |
| 6. Git 操作 | コミットとタグ | はい |
フェーズ 1: リリース前検証
1.1 スプリントタスクの完了確認
# 未完了のタスクの確認
bpsai-pair task list --status in_progress
bpsai-pair task list --status blocked
# 現在の状態の確認
bpsai-pair status
ブロッカー: すべてのタスクが完了しているか、次のスプリントに移動されている必要があります。
1.2 フルテストスイートの実行
# すべてのテストに合格する必要があります
pytest tests/ -v --tb=short
# カバレッジが目標(80%)を満たしているか確認
pytest tests/ --cov=bpsai_pair --cov-report=term-missing --cov-fail-under=80
ブロッカー: テストが失敗した場合、リリースは続行できません。
1.3 セキュリティスキャン
# 誤ってコミットされたシークレットのスキャン
bpsai-pair security scan-secrets
# 既知の脆弱性に対する依存関係のスキャン
bpsai-pair security scan-deps
ブロッカー: シークレットが検出された場合 = リリースできません。 警告: 依存関係の脆弱性はレビューする必要がありますが、ブロックするとは限りません。
フェーズ 2: バージョン番号の更新
バージョンファイルの検索
grep -E "^version|__version__" tools/cli/pyproject.toml tools/cli/bpsai_pair/__init__.py
両方のファイルの更新
| ファイル | フォーマット |
|---|---|
pyproject.toml |
version = "X.Y.Z" |
__init__.py |
__version__ = "X.Y.Z" |
注: ファイル内のバージョンには「v」プレフィックスはありません。Git タグは「v」プレフィックスを使用します。
更新する関連ファイル
| ファイル | 更新 |
|---|---|
capabilities.yaml |
version: "X.Y.Z" |
config.yaml |
version: "X.Y.Z" |
フェーズ 3: ドキュメントの検証
3.1 必須ドキュメント
# CHANGELOG にこのバージョンのエントリがあるか確認
grep -A 20 "## \[X.Y.Z\]" CHANGELOG.md
# README に現在の機能が記載されているか確認
head -100 README.md
# FEATURE_MATRIX が最新であるか確認
head -50 .paircoder/docs/FEATURE_MATRIX.md
3.2 ドキュメントの鮮度
# 更新日の確認
git log -1 --format="%ci" -- README.md
git log -1 --format="%ci" -- CHANGELOG.md
git log -1 --format="%ci" -- .paircoder/docs/FEATURE_MATRIX.md
必要なドキュメントが 7 日以上古い場合は警告 - 更新が必要な場合があります。
3.3 CHANGELOG エントリの形式
見つからない場合は、Keep a Changelog 形式に従ってエントリを作成します。
## [X.Y.Z] - YYYY-MM-DD
### Added
- 機能 1
- 機能 2
### Changed
- 変更 1
### Fixed
- 修正 1
### Removed
- (該当する場合)
アーカイブされたタスクからコンテンツを生成します。
bpsai-pair task changelog-preview --since <last-version>
フェーズ 4: テンプレートの同期 (PairCoder のみ)
cookiecutter テンプレートが現在のバージョンと一致することを確認します。
# テンプレートが存在するか確認
ls -la tools/cli/bpsai_pair/data/cookiecutter-paircoder/
# キーファイルの比較
diff .paircoder/config.yaml \
tools/cli/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/config.yaml
diff CLAUDE.md \
tools/cli/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/CLAUDE.md
同期を維持する必要があるキーファイル:
config.yamlの構造 (値ではない)CLAUDE.mdの手順capabilities.yamlの形式- スキルファイル
フェーズ 5: ビルドの検証
# 古いビルドのクリーンアップ
rm -rf tools/cli/dist/ tools/cli/build/ tools/cli/*.egg-info
# パッケージのビルド
cd tools/cli && pip install build && python -m build
# クリーンインストールの検証
pip install dist/*.whl --force-reinstall
# バージョンが正しいことの検証
bpsai-pair --version
フェーズ 6: リリースのチェックリスト
- [ ] すべてのスプリントタスクが完了
- [ ] テストに合格 (100%)
- [ ] カバレッジ ≥ 80%
- [ ] コードベースにシークレットがない
- [ ] pyproject.toml のバージョン番号が更新された
- [ ] init.py のバージョン番号が更新された
- [ ] capabilities.yaml のバージョン番号が更新された
- [ ] config.yaml のバージョン番号が更新された
- [ ] CHANGELOG が更新された
- [ ] README が最新である
- [ ] FEATURE_MATRIX が更新された
- [ ] Cookiecutter テンプレートが同期された (該当する場合)
- [ ] パッケージが正常にビルドされた
- [ ] パッケージがクリーンにインストールされた
フェーズ 7: Git 操作
# すべての変更をステージング
git add -A
# リリースメッセージでコミット
git commit -m "Release vX.Y.Z"
# アノテーション付きタグの作成
git tag -a "vX.Y.Z" -m "Release vX.Y.Z"
# プッシュされる内容の表示
git log --oneline -5
git tag -l | tail -5
まだプッシュしないでください - ユーザーにレビューと確認をさせます。
フェーズ 8: サマリーレポート
📦 **リリース準備完了**: vX.Y.Z
**リリース前チェック**:
- ✅ すべてのタスクが完了
- ✅ テスト: XXX 合格
- ✅ カバレッジ: XX%
- ✅ セキュリティ: クリーン
**ドキュメント**:
- ✅ CHANGELOG: 更新済み
- ✅ README: 最新
- ✅ FEATURE_MATRIX: 更新済み
- ⚠️ ユーザーガイド: 最終更新日 X 日前 (レビューを推奨)
**Cookiecutter**:
- ✅ テンプレート同期済み
**ビルド**:
- ✅ パッケージビルド済み: bpsai_pair-X.Y.Z-py3-none-any.whl
- ✅ クリーンにインストール
- ✅ バージョン検証済み
**リリース準備完了**:
```bash
git push origin main
git push origin vX.Y.Z
次に、PyPI に公開します。
cd tools/cli && twine upload dist/*
## エラーからの回復
### テストが失敗した場合
1. リリースを続行しないでください
2. 失敗したテストを修正します
3. フェーズ 1 から再実行します
### シークレットが検出された場合
1. リリースを続行しないでください
2. 履歴からシークレットを削除します (git filter-branch または BFG)
3. 公開された資格情報をローテーションします
4. セキュリティスキャンを再実行します
### ドキュメントが古い場合
1. 警告、ブロッカーではありません
2. ユーザーは更新するか続行するかを選択できます
3. 決定を記録します
### Cookiecutter が異なる場合
1. 違いが意図的なものかどうかを判断します
2. テンプレートを更新する必要がある場合は、更新します
3. 違いがプロジェクト固有の場合は、その理由を文書化します
## 構成リファレンス
`config.yaml` のリリース構成:
```yaml
release:
version_source: tools/cli/pyproject.toml
documentation:
- CHANGELOG.md
- README.md
- .paircoder/doc
(原文はここで切り詰められています) 📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Releasing Versions
When to Use
- Preparing a new release
- Version bumping
- Pre-release validation
- Documentation verification before release
Release Workflow Overview
| Phase | Purpose | Blocking? |
|---|---|---|
| 1. Pre-Release Validation | Tests, security | Yes |
| 2. Version Bump | Update version strings | Yes |
| 3. Documentation | Verify/update docs | Warning |
| 4. Template Sync | Cookiecutter alignment | Warning |
| 5. Build Verification | Package builds | Yes |
| 6. Git Operations | Commit and tag | Yes |
Phase 1: Pre-Release Validation
1.1 Verify Sprint Tasks Complete
# Check for incomplete tasks
bpsai-pair task list --status in_progress
bpsai-pair task list --status blocked
# Check current state
bpsai-pair status
BLOCKER: All tasks must be complete or moved to next sprint.
1.2 Run Full Test Suite
# All tests must pass
pytest tests/ -v --tb=short
# Check coverage meets target (80%)
pytest tests/ --cov=bpsai_pair --cov-report=term-missing --cov-fail-under=80
BLOCKER: Release cannot proceed if tests fail.
1.3 Security Scans
# Scan for accidentally committed secrets
bpsai-pair security scan-secrets
# Scan dependencies for known vulnerabilities
bpsai-pair security scan-deps
BLOCKER: Secrets detected = cannot release. WARNING: Dependency vulnerabilities should be reviewed but may not block.
Phase 2: Version Bump
Locate Version Files
grep -E "^version|__version__" tools/cli/pyproject.toml tools/cli/bpsai_pair/__init__.py
Update Both Files
| File | Format |
|---|---|
pyproject.toml |
version = "X.Y.Z" |
__init__.py |
__version__ = "X.Y.Z" |
Note: Version in files has NO 'v' prefix. Git tags use 'v' prefix.
Related Files to Update
| File | Update |
|---|---|
capabilities.yaml |
version: "X.Y.Z" |
config.yaml |
version: "X.Y.Z" |
Phase 3: Documentation Verification
3.1 Required Documentation
# Check CHANGELOG has entry for this version
grep -A 20 "## \[X.Y.Z\]" CHANGELOG.md
# Check README mentions current features
head -100 README.md
# Check FEATURE_MATRIX is current
head -50 .paircoder/docs/FEATURE_MATRIX.md
3.2 Documentation Freshness
# Check modification dates
git log -1 --format="%ci" -- README.md
git log -1 --format="%ci" -- CHANGELOG.md
git log -1 --format="%ci" -- .paircoder/docs/FEATURE_MATRIX.md
WARNING if any required doc older than 7 days - may need update.
3.3 CHANGELOG Entry Format
If missing, create entry following Keep a Changelog format:
## [X.Y.Z] - YYYY-MM-DD
### Added
- Feature 1
- Feature 2
### Changed
- Change 1
### Fixed
- Fix 1
### Removed
- (if applicable)
Generate content from archived tasks:
bpsai-pair task changelog-preview --since <last-version>
Phase 4: Template Sync (PairCoder Only)
Verify cookiecutter template matches current version:
# Check template exists
ls -la tools/cli/bpsai_pair/data/cookiecutter-paircoder/
# Compare key files
diff .paircoder/config.yaml \
tools/cli/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/config.yaml
diff CLAUDE.md \
tools/cli/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/CLAUDE.md
Key files that should stay in sync:
config.yamlstructure (not values)CLAUDE.mdinstructionscapabilities.yamlformat- Skill files
Phase 5: Build Verification
# Clean old builds
rm -rf tools/cli/dist/ tools/cli/build/ tools/cli/*.egg-info
# Build the package
cd tools/cli && pip install build && python -m build
# Verify clean install
pip install dist/*.whl --force-reinstall
# Verify version is correct
bpsai-pair --version
Phase 6: Release Checklist
- [ ] All sprint tasks complete
- [ ] Tests passing (100%)
- [ ] Coverage ≥ 80%
- [ ] No secrets in codebase
- [ ] Version bumped in pyproject.toml
- [ ] Version bumped in init.py
- [ ] Version bumped in capabilities.yaml
- [ ] Version bumped in config.yaml
- [ ] CHANGELOG updated
- [ ] README current
- [ ] FEATURE_MATRIX updated
- [ ] Cookiecutter template synced (if applicable)
- [ ] Package builds successfully
- [ ] Package installs cleanly
Phase 7: Git Operations
# Stage all changes
git add -A
# Commit with release message
git commit -m "Release vX.Y.Z"
# Create annotated tag
git tag -a "vX.Y.Z" -m "Release vX.Y.Z"
# Show what will be pushed
git log --oneline -5
git tag -l | tail -5
DO NOT push yet - let user review and confirm.
Phase 8: Report Summary
📦 **Release Prepared**: vX.Y.Z
**Pre-Release Checks**:
- ✅ All tasks complete
- ✅ Tests: XXX passed
- ✅ Coverage: XX%
- ✅ Security: Clean
**Documentation**:
- ✅ CHANGELOG: Updated
- ✅ README: Current
- ✅ FEATURE_MATRIX: Updated
- ⚠️ User guide: Last updated X days ago (review recommended)
**Cookiecutter**:
- ✅ Template synced
**Build**:
- ✅ Package built: bpsai_pair-X.Y.Z-py3-none-any.whl
- ✅ Installs cleanly
- ✅ Version verified
**Ready to Release**:
```bash
git push origin main
git push origin vX.Y.Z
Then publish to PyPI:
cd tools/cli && twine upload dist/*
## Error Recovery
### Tests Fail
1. Do not proceed with release
2. Fix failing tests
3. Re-run from Phase 1
### Secrets Detected
1. Do not proceed with release
2. Remove secrets from history (git filter-branch or BFG)
3. Rotate any exposed credentials
4. Re-run security scan
### Documentation Stale
1. WARNING, not blocker
2. User can choose to update or proceed
3. Log the decision
### Cookiecutter Differs
1. Determine if difference is intentional
2. If template should be updated, do so
3. If difference is project-specific, document why
## Configuration Reference
Release configuration in `config.yaml`:
```yaml
release:
version_source: tools/cli/pyproject.toml
documentation:
- CHANGELOG.md
- README.md
- .paircoder/docs/FEATURE_MATRIX.md
cookie_cutter:
template_path: tools/cli/bpsai_pair/data/cookiecutter-paircoder
sync_required: true
freshness_days: 7
Version Format Reference
| Location | Format | Example |
|---|---|---|
| pyproject.toml | X.Y.Z | 2.9.0 |
| init.py | X.Y.Z | 2.9.0 |
| Git tags | vX.Y.Z | v2.9.0 |
| CHANGELOG | [X.Y.Z] | [2.9.0] |