mcpField
R
release-check

release-check

github.com/jackin-projectテスト・品質3162 回インストール4 週間前に更新
リポジトリ

release-check について

jackin のメンテナー向けリリース準備確認スキルです。CI、ローカルテスト、コード品質、ドキュメントリンクなどを確認し、準備状況のレポートにまとめます。

主な機能

  1. 01CI 状態の確認
  2. 02テスト、Clippy、フォーマットの実行
  3. 03直接コミットとドキュメントリンクの確認
  4. 04TODO の鮮度確認
  5. 05セキュリティ例外の確認

活用シーン

  1. 01リリース前の準備状況の評価
  2. 02リリースを妨げるテストや CI の問題の特定
  3. 03リンク、セキュリティ例外、古いタスクの確認

インストール

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

$npx skills add https://github.com/jackin-project/jackin-dev --skill release-check

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

詳細

リリースチェック

jackin プロジェクトのリリース前検証です。一連のチェックを実行し、リリース準備状況レポートを作成します。

使用するタイミング

  • /release を実行する前
  • プロジェクトがリリース可能な状態か確認したいとき
  • 前回のリリースチェックで見つかった問題を修正した後

プロセス

各チェックを順番に実行します。結果をリリース準備状況レポートにまとめます。

チェック 1:CI ステータス

main の最新の CI 実行が成功していることを確認します。

gh run list --workflow=ci.yml --branch=main --limit=1 --json status,conclusion --jq '.[0]'

conclusion が success でない場合は FAIL と報告して終了します。

また、前回のタグから対象パスに変更があった場合は、パス固有のワークフローも確認します。

LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")

# Check if docker/construct/** changed since last tag
if [ -n "$LAST_TAG" ] && [ -n "$(git diff --name-only "$LAST_TAG"..HEAD -- docker/construct/)" ]; then
  gh run list --workflow=construct.yml --branch=main --limit=1 --json status,conclusion --jq '.[0]'
fi

# Check if docs/** changed since last tag
if [ -n "$LAST_TAG" ] && [ -n "$(git diff --name-only "$LAST_TAG"..HEAD -- docs/)" ]; then
  gh run list --workflow=docs.yml --branch=main --limit=1 --json status,conclusion --jq '.[0]'
fi

結果を PASS、FAIL、または SKIP(対象パスに変更がない場合)として報告します。

チェック 2:ローカルテスト
cargo test --locked

テストが1つでも失敗した場合は FAIL と報告して終了します。

チェック 3:Clippy
cargo clippy -- -D warnings

clippy が警告をエラーとして報告した場合は FAIL と報告して終了します。

チェック 4:フォーマットチェック
cargo fmt --check

フォーマット違反が見つかった場合は FAIL と報告して終了します。

チェック 5:直接コミットに関する警告

前回のタグ以降のコミットから、PR によるマージコミットではないものを探します。

LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -n "$LAST_TAG" ]; then
  git log "$LAST_TAG"..HEAD --oneline --no-merges
fi

各コミットについて、PR に含まれていたか確認します。

gh pr list --state merged --search "<commit-sha>" --json number --jq '.[0].number'

どの PR にも関連付けられていないコミットがある場合は、一覧とともに WARN と報告します。リリースはブロックしません。

チェック 6:ドキュメントリンクの検証

docs/content/docs/ 内の壊れた内部リンクを確認します。

  • Markdown ファイルを読み込み、内部リンク(相対パス、href 属性)を抽出します
  • リンク先のファイルが存在することを確認します
  • 外部 URL は HTTP 200 を返すことを確認します(レート制限のあるドメインはスキップします)

壊れたリンクの一覧とともに PASS または WARN と報告します。

チェック 7:TODO の最新性

TODO.md と todo/ 内のすべてのファイルを読み込みます。

  • すでに完了した作業に関する項目がないか確認します(該当するコミットやクローズ済みの PR を探します)
  • 古くなった項目がないか確認します(最近のコミットに関連する動きがないもの)

確認結果とともに PASS または WARN と報告します。

チェック 8:セキュリティ例外

SECURITY_EXCEPTIONS.md を読み込み、内容をユーザーに提示します。

次のように質問します。「これらのセキュリティ例外は現在も有効ですか?(yes/no)」

ユーザーが no と回答した場合は REVIEW と報告します。リリース前にユーザーがファイルを更新する必要があります。

ユーザーが yes と回答した場合は PASS と報告します。

チェック 9:Docker ビルドステータス

前回のタグから Docker 関連ファイルに変更があったか確認します。

LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
CONSTRUCT_CHANGED=$(git diff --name-only "$LAST_TAG"..HEAD -- docker/construct/ 2>/dev/null)
RUNTIME_CHANGED=$(git diff --name-only "$LAST_TAG"..HEAD -- docker/runtime/ 2>/dev/null)

変更があった場合は、construct.yml ワークフローが成功したことを確認します(チェック 1 ですでに確認済みです)。PASS または SKIP と報告します。

出力

構造化されたリリース準備状況レポートを提示します。

Release Readiness Report
========================
✓ CI: all workflows green
✓ Local tests: N passed, 0 failed
✓ Clippy: no warnings
✓ Format: clean
⚠ Direct commits: N commits since vX.Y.Z not from PRs
  - <sha> <message>
✓ Doc links: all valid
✓ TODOs: up to date
? Security exceptions: review required (N items)
✓ Docker: builds pass (or: no changes, skipped)

Result: PASS | REVIEW NEEDED | FAIL

ブロック対象と非ブロック対象

チェック失敗時の動作
CI ステータスBLOCK — CI が失敗している状態ではリリースできません
ローカルテストBLOCK — テストが失敗している状態ではリリースできません
ClippyBLOCK — clippy エラーがある状態ではリリースできません
フォーマットBLOCK — fmt 違反がある状態ではリリースできません
直接コミットWARN — 一覧を表示しますが、リリースはブロックしません
ドキュメントリンクWARN — 壊れたリンクを表示しますが、リリースはブロックしません
TODO の最新性WARN — 古くなった項目を表示しますが、リリースはブロックしません
セキュリティ例外REVIEW — ユーザーに確認し、no の場合のみリリースをブロックします
Docker ビルド変更があり CI が失敗した場合は BLOCK、変更がない場合は SKIP

コメント