リリーススキル
SkillDev toolsA skill that guides the release process for Evolution CMS JP Edition interactively. Walks through version updates, tag creation, and package builds via GitHub Actions step by step. Triggered when asked to "リリース" or "release".
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the リリーススキル skill
What this skill tells your AI
The instructions your AI receives, as published by modxcms-jp/evolution-jp in .claude/skills/release/SKILL.md and read by ahel’s review.
手順の正本は assets/docs/release-process.md。このスキルはその手順を対話形式で実行するラッパー。リリースパッケージは git archive で生成し、配布対象外のパスは .gitattributes の export-ignore で管理する。
コマンド
/release
assets/docs/release-process.md の「基本手順」を読み込み、各ステップでユーザー確認を取りながら進める。
引数なしで開始した場合
最初に、このスキルが行うことを次のように簡単に説明する。
バージョン情報を更新し、リリースタグを作成してGitHub Actionsで配布ZIPを作成します。その後、ドラフトRelease・ZIP・リリースノートを確認し、ユーザーの最終確認後に公開します。回答が固まるまでは変更や公開操作を行いません。
続けて、次の項目を1問ずつ質問する。1つの回答を受けてから次の質問へ進み、既に回答済みの項目は再質問しない。回答が曖昧な場合は、その項目だけを聞き直す。
- リリースするバージョン(
X.Y.ZJ形式、例:1.4.0J)。回答後、既存のrelease-*タグをバージョン順で確認する - リリース日(指定がなければ今日の日付)
- リリース対象は、リリース準備PRがマージされた後の
mainの先端で固定することを確認する。mainへ直接コミットしない - 候補タグを確認したうえで、「比較対象の前回リリースタグは
release-X.Y.ZJで合っていますか?」と質問する。はいならそのタグを使い、いいえなら別のタグまたは比較開始コミットを質問する - リリースノートを日本語のドラフトとして生成し、ユーザー確認後に適用するか
- ZIP確認後に公開まで進めるか、ドラフト作成・検証までで止めるか
前回タグの候補は、作成日時ではなくバージョン順で表示する。候補がない場合、またはユーザーがタグを使わない場合は、比較開始コミットを BASE_REF として指定する。候補を自動確定せず、ユーザーの はい を受けて初めて PREV_TAG に設定する。
git tag --list 'release-*' --sort=-v:refname
回答を受けたら、バージョン、リリース日、main の先端、PREV_TAG または BASE_REF、CURR_TAG、リリースノートの扱い、公開範囲を要約して再確認する。ユーザーが要件を確定するまで、開始前チェック後の更新・コミット・タグ作成・push・Release編集を開始しない。
開始前チェック(この順序を崩さない):
git fetch origin main後のorigin/mainをリリース準備の基準にする。現在のブランチがmainであること自体は問題にしないが、git log --oneline origin/main..mainで未 push コミットが見つかれば、失われないよう処理方針を確認して停止するgit status— 未コミット変更があれば保留する。既存ブランチを勝手に切り替えたり、変更をstash・破棄したりしないgit show origin/main:.agent/roadmap.mdでStatus: WIP/Status: BLOCKEDタスクを実体のあるタスクブロックとして確認する。未対応のものがあれば、原則としてリリースを保留し、対象タスクと保留理由を提示する。ユーザーが明示的に進行を許可した場合だけ例外扱いにするgit show origin/main:manager/includes/version.inc.phpで現在のバージョン($modx_version)とリリースタグ候補を確認するorigin/mainの対象コミットから.github/workflows/release.ymlを読み、release-*タグトリガー、git archive --format=zip、ドラフトRelease、想定したZIP添付を設定していることを確認する- 対象バージョンのローカル・リモートタグが存在しないことを確認する
保留条件が1つでもある場合は、バージョンファイル更新、リリース準備ブランチ作成、コミット、タグ作成、push、Release編集を開始しない。保留後に再開する場合は、改めて origin/main と作業ツリー、WIP / BLOCKED、タグを確認する。
問題がなければ assets/docs/release-process.md の手順に従いリリースを進める。
リリース準備ブランチとPR
開始前チェックを通過した後、origin/main から chore/release-{version} 形式のリリース準備ブランチを作成する。バージョン更新とコミットはこのブランチで行い、main へ直接コミットしない。push とPR作成はユーザー確認後に行う。
PRがマージされるまでタグを作成しない。マージ後に git fetch origin main で更新した origin/main の先端、バージョン情報、作業ツリーを確認し、そのコミットにだけ release-{version} タグを作成する。
バージョン入力後の安全確認
新しいバージョン番号を受け取った後、更新前に次を確認する。
- バージョン番号が
X.Y.ZJ形式であること(例:1.3.0J) - ローカルに
release-{version}タグが存在しないこと - リモート
originにrelease-{version}タグが存在しないこと - タグ作成対象が、バージョン更新PRをマージした後の
origin/mainの先端になること
タグの存在確認には次を使う。既存タグが見つかった場合は削除や上書きを行わず、ユーザーに対応を確認する。
VERSION="1.3.0J"
WORKFLOW=".github/workflows/release.yml"
MAIN_REF="origin/main"
set -e
git cat-file -e "${MAIN_REF}:${WORKFLOW}"
git show "${MAIN_REF}:${WORKFLOW}" | rg -q --fixed-strings " - 'release-*'"
git show "${MAIN_REF}:${WORKFLOW}" | rg -q --fixed-strings "git archive --format=zip"
git show "${MAIN_REF}:${WORKFLOW}" | rg -q --fixed-strings "draft: true"
git show "${MAIN_REF}:${WORKFLOW}" | rg -q --fixed-strings 'files: evo-${{ github.ref_name }}.zip'
git show "${MAIN_REF}:${WORKFLOW}" | rg -q --fixed-strings "generate_release_notes: false"
if git rev-parse --verify "refs/tags/release-${VERSION}" >/dev/null 2>&1; then
echo "ローカルに既存タグがあります"
exit 1
else
status=$?
if [[ "${status}" -ne 128 ]]; then
echo "ローカルタグ確認に失敗しました(終了コード: ${status})"
exit "${status}"
fi
fi
if git ls-remote --exit-code --refs origin "refs/tags/release-${VERSION}" >/dev/null 2>&1; then
echo "リモートに既存タグがあります"
exit 1
else
status=$?
if [[ "${status}" -ne 2 ]]; then
echo "リモートタグ確認に失敗しました(終了コード: ${status})"
exit "${status}"
fi
fi
ローカルタグ確認では終了コード 128、リモートタグ確認では終了コード 2 の場合だけ「タグなし」と判定する。それ以外の終了コードは認証・ネットワーク・リモート障害などの可能性があるため、バージョンファイルを更新せずに中止する。更新後は git diff --check と対象ファイルの差分を提示し、コミット前にユーザー確認を取る。
リリース後のロードマップ整理
「Publish release」完了後、assets/docs/release-process.md の「リリース後の対応」手順 3 に従い、Status: DONE のタスクを別の整理ブランチで .agent/roadmap-archive.md へ移動し、PR経由で main に反映する。保護された main へ直接コミットしない。
リリースノート生成(手順 4)
タグ push 後、GitHub Actions の完了を待ってからリリースノートを生成する。
コミット抽出コマンド・構成フォーマット・除外ルール・ドラフトへの適用方法は assets/docs/release-process.md の「リリースノートの生成と適用」セクションに従う。
リリースノートの比較範囲は、作成日時順から自動推測しない。今回のタグと比較対象のタグをユーザーと確認し、手順書の PREV_TAG / CURR_TAG に明示してから生成する。適切な前回タグがない場合は、BASE_REF から CURR_TAG までを比較する。タグ専用の検証と gh release view は PREV_TAG が指定されている場合だけ実行する。
リリースノート適用後は、同手順書の「ドラフト確認と公開」に従い、Actions の成功、ドラフト状態、添付ZIP、必須ファイル、配布対象外パスの有無を確認する。Actionsが作成するドラフトの説明文は使用せず、確認済みの PREV_TAG または BASE_REF から生成した本文を gh release edit で適用してから検証する。これらの確認が終わるまで公開操作を行わない。
生成後はユーザーへ提示し、以下のチェックリストで確認を促す:
【リリースノート レビューチェックリスト】
□ 対象読者(非エンジニア)に伝わる言葉になっているか
□ 各改修の「なぜ変えたのか」が説明されているか
□ トレードオフや制限事項を隠していないか
□ 事実と異なる記述はないか
□ 概要・ハイライトの優先順位は適切か
ユーザーの修正指示を受けて内容を更新し、最終確認後に gh release edit で適用する。
Signals
- GitHub stars
- 33
- Forks
- 25
- Last commit
- Aug 2026
- Hacker News mentions
- 20
Advanced
- Catalog kind
- skill
- Gateway key
release-modxcms-jp- Source
- github.com/modxcms-jp/evolution-jp