release-guard について
Rust プロジェクトのリリース前提条件を確認するスキルです。ブランチ、PR、CI、作業ツリー、バージョンを検証し、条件に合わないリリースを阻止します。
主な機能
- 01main からのリリースを必須化
- 02PR のマージ状態を確認
- 03CI の完了と成功を確認
- 04Cargo.toml のバージョンとタグを照合
- 05セマンティックバージョンを検査
活用シーン
- 01タグ作成前のリリース条件確認
- 02CI 未完了または失敗時のリリース阻止
- 03リリースブランチと PR 状態の確認
- 04公開前のバージョン整合性確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ d-o-hub/ rust-self-learning-memory --skill release-guardインストール後、Claude Code で/release-guardを入力して読み込まれたか確認します。
同梱ファイルci-reference.md
詳細
リリースガードスキル
コア規則(絶対に違反しないこと)
- リリースは、PR のマージ後に main からのみ行います。
- すべての CI ジョブが完了し、成功している必要があります。キューに入っているジョブがあってはなりません。
- ブランチ保護でステータスチェックが必須になっていることを確認します。
- リリースを作成する前に、バージョンがタグと一致している必要があります(cargo-dist の要件)。
有効化手順
- PR の確認:必要に応じて PR 番号を尋ねます。
gh pr view $PR_NUM --json state,baseRefNameを実行します。条件:state=CLOSED、baseRefName=main。 - ブランチ:
git branch --show-currentとgh repo view --json default_branchを実行します。main 以外の場合は失敗とします。 - CI:
gh run list --branch main --limit 5 --json status,conclusionを実行します。すべて完了済みかつ成功している必要があります。ログ/スクリーンショットを保存します。 - クリーン状態:
git statusを実行します(作業ディレクトリがクリーンであること)。 - バージョン確認(重要):
grep '^version =' Cargo.tomlの結果がタグと一致している必要があります(v接頭辞なし)。
失敗時の応答
🚫 BLOCKED: [Exact violation]
Fix:
- Merge PR to main
- Wait CI: gh run list --branch main
- git checkout main && git pull
- BUMP VERSION in Cargo.toml FIRST (must match tag)
Re-run task.
バージョン不一致の例(v0.1.22 のインシデント)
Tag: v0.1.22 pushed at commit 05c0481
Cargo.toml version: 0.1.21 (MISMATCH!)
Result: cargo-dist failed: "This workspace doesn't have anything for dist to Release!"
Fix: ALWAYS bump version BEFORE pushing tag.
Use: cargo release patch|minor|major (handles atomically)
合格:安全なリリース
- Semver チェック:
cargo semver-checks check-release --workspace(ADR-034) - タグ:vMAJOR.MINOR.PATCH(セマンティックバージョニング)。
- 推奨:
cargo release patch|minor|major(ADR-034) - 代替手段:
gh release create v1.2.3 --generate-notes --target main - 実行前に確認します。
例
- ユーザー:「develop の PR #199 からリリースを作成」→ ブロック:ブランチが誤っています。
- ユーザー:「PR #199 の後に v1.0.0 をタグ付け」→ PR/CI/ブランチを確認 → 条件を満たせば続行。
段階的な開示:CI の詳細については、必要に応じて ci-reference.md を参照してください。
## Best Practices Applied
- **Description**: Keyword-rich for matching ("release", "tag").
- **allowed-tools**: Read + Bash wildcards (gh/git CLI). Install `gh`.[2]
- **Structure**: Essential in SKILL.md; link supports (add `ci-reference.md` for details).
- **Load/Test**: Restart Claude Code. Ask "What Skills available?". Test: "Create release PR #199".
コメント
Markdown 対応