with one click
release-app
// アプリのリリース(バージョンbump + CHANGELOG + タグ → GH Actions で自動ビルド・配布)。iOS / Android / macOS / Linux / Windows の任意の組み合わせでリリースできる。「リリース」「バージョン上げて」「リリースして」と言われたときに使う。
// アプリのリリース(バージョンbump + CHANGELOG + タグ → GH Actions で自動ビルド・配布)。iOS / Android / macOS / Linux / Windows の任意の組み合わせでリリースできる。「リリース」「バージョン上げて」「リリースして」と言われたときに使う。
| name | release-app |
| description | アプリのリリース(バージョンbump + CHANGELOG + タグ → GH Actions で自動ビルド・配布)。iOS / Android / macOS / Linux / Windows の任意の組み合わせでリリースできる。「リリース」「バージョン上げて」「リリースして」と言われたときに使う。 |
| disable-model-invocation | true |
| allowed-tools | Bash(git:*), Bash(grep:*), Bash(gh:*), Bash(jq:*), Bash(dart analyze:*), Bash(cd apps/mobile && flutter test), Read, Edit, AskUserQuestion |
Flutter アプリのリリースを行う。 タグ push 後は GH Actions が自動でビルド・署名・配布・GitHub Release を作成する。
grep '^version:' apps/mobile/pubspec.yaml
version: X.Y.Z+N の形式。+N は build number。
前回リリースからの差分を確認する:
# 前回のタグ(iOS/Android/macOS/Linux/Windows のいずれか新しい方)
git tag -l 'ios/v*' 'android/v*' 'macos/v*' 'linux/v*' 'windows/v*' --sort=-v:refname | head -1
# 差分コミット(bridge 以外)
git log $(git tag -l 'ios/v*' 'android/v*' 'macos/v*' 'linux/v*' 'windows/v*' --sort=-v:refname | head -1)..HEAD --oneline -- apps/mobile/ CHANGELOG.md
差分コミットの内容を分析し、AskUserQuestion で 2つの質問を同時に 確認する。
選択肢の決定ルール:
feat コミットがある → minor を推奨(1番目の選択肢にし「(Recommended)」を付ける)feat がなく fix のみ → patch を推奨選択肢は具体的なバージョン番号で提示する(例: 「1.20.0+43 (minor)」「1.19.1+43 (patch)」)。 build number は現在の値 +1 で統一する。
以下の選択肢を提示する:
CHANGELOG.md(ルート)の先頭に新しいセクションを追加する。
## [X.Y.Z] - YYYY-MM-DD
### Added
- ...
### Changed
- ...
### Fixed
- ...
ステップ 1 で確認したコミットを元に、Added / Changed / Fixed に分類する。 空のセクション(該当なし)は省略する。
apps/mobile/pubspec.yaml の version をステップ 2 で決定したバージョンに更新する。
タグ push 前に、CD と同じチェックをローカルで実行する。 すべて pass しなければ次のステップに進まない。
# 静的解析
dart analyze apps/mobile
# テスト
cd apps/mobile && flutter test
失敗した場合はユーザーに報告し、修正を待つ。
git add apps/mobile/pubspec.yaml CHANGELOG.md
git commit -m "chore: bump version to X.Y.Z+N"
git push origin main
ステップ 2 で選択されたプラットフォームのタグを打つ:
# iOS(選択された場合)
git tag ios/vX.Y.Z+N
git push origin ios/vX.Y.Z+N
# Android(選択された場合)
git tag android/vX.Y.Z+N
git push origin android/vX.Y.Z+N
# macOS(選択された場合)
git tag macos/vX.Y.Z+N
git push origin macos/vX.Y.Z+N
# Linux(選択された場合)
git tag linux/vX.Y.Z+N
git push origin linux/vX.Y.Z+N
# Windows(選択された場合)
git tag windows/vX.Y.Z+N
git push origin windows/vX.Y.Z+N
タグ push 後、GH Actions が自動実行される:
| タグ | ワークフロー | 内容 |
|---|---|---|
ios/v* | ios-release.yml | Shorebird release iOS → TestFlight → GitHub Release |
android/v* | android-release.yml | Shorebird release Android → Google Play (internal draft) → GitHub Release |
macos/v* | macos-release.yml | Developer ID 署名 → 公証 → DMG → GitHub Release |
linux/v* | linux-release.yml | Linux release build → Xvfb smoke → tar.gz → GitHub Release |
windows/v* | windows-release.yml | Windows release build → smoke → zip → GitHub Release |
# 各プラットフォームのワークフロー確認(タグを打ったもののみ)
gh run list --workflow=ios-release.yml --limit 1
gh run list --workflow=android-release.yml --limit 1
gh run list --workflow=macos-release.yml --limit 1
gh run list --workflow=linux-release.yml --limit 1
gh run list --workflow=windows-release.yml --limit 1
選択した全プラットフォームの CD が completed/success になるまで確認を継続する。
失敗した場合は gh run view <run-id> --log-failed で原因を確認し、修正後に再実行する。
リリース CD は Shorebird release、署名、公証、ストア配布を含むため、通常 15 分前後かかる。
タグ push 直後から gh run watch で張り付くと出力が大きくなりやすいので、効率よく待つ場合は低頻度ポーリングにする。
推奨:
# 起動確認
gh run list --workflow=ios-release.yml --limit 1
gh run list --workflow=android-release.yml --limit 1
gh run list --workflow=macos-release.yml --limit 1
gh run list --workflow=linux-release.yml --limit 1
gh run list --workflow=windows-release.yml --limit 1
# 10〜15分ほど待ってから再確認
gh run list --workflow=ios-release.yml --limit 1
gh run list --workflow=android-release.yml --limit 1
gh run list --workflow=macos-release.yml --limit 1
gh run list --workflow=linux-release.yml --limit 1
gh run list --workflow=windows-release.yml --limit 1
途中確認する場合も 2〜3 分間隔を目安にする。failure / cancelled が出た場合だけ gh run view <run-id> --log-failed で詳細を確認する。
タグを打った workflow だけを対象に、成功するまでループする。以下の例では全プラットフォームを確認するが、実行していない workflow は release_tags から外す。
version="X.Y.Z+N"
declare -A release_tags=(
[ios-release.yml]="ios/v${version}"
[android-release.yml]="android/v${version}"
[macos-release.yml]="macos/v${version}"
[linux-release.yml]="linux/v${version}"
[windows-release.yml]="windows/v${version}"
)
while true; do
all_success=true
for workflow in "${!release_tags[@]}"; do
tag="${release_tags[$workflow]}"
run_json=$(gh run list --workflow="$workflow" --branch="$tag" --limit 1 --json databaseId,status,conclusion,url)
status=$(echo "$run_json" | jq -r '.[0].status')
conclusion=$(echo "$run_json" | jq -r '.[0].conclusion')
run_id=$(echo "$run_json" | jq -r '.[0].databaseId')
url=$(echo "$run_json" | jq -r '.[0].url')
echo "$workflow ($tag): $status/$conclusion $url"
if [ "$status" = "completed" ] && [ "$conclusion" = "success" ]; then
continue
fi
all_success=false
if [ "$status" = "completed" ]; then
gh run view "$run_id" --log-failed
exit 1
fi
done
if [ "$all_success" = true ]; then
echo "All selected release workflows completed successfully."
break
fi
sleep 180
done
ccpocket の X 向けリリース告知カード画像を作成・更新する。最新の iOS/Android/macOS リリースタグ、App Store release_notes、既存の scripts/release-card/generate.mjs を使って英語・日本語の告知PNGを生成し、画像を目視確認して不備があれば生成スクリプトを修正する。「リリースカード」「X告知画像」「リリース報告用画像」「release-card」と言われたときに使用する。
ストア情報の更新自動化 — スクリーンショット撮影(シミュレーター × モック画面 × Marionette MCP)とメタデータテキスト更新。ストア更新、スクショ更新、App Store / Google Play のメタデータ更新、リリースノート作成の際に使用すること。
Codex の使い方、CLI/app/IDE、rules・hooks・AGENTS.md・skills・subagents・config などを案内する。Codex や OpenAI 製品の仕様を答える前に必ず公式ドキュメントを確認し、rules/approval は `codex execpolicy check` で実検証すること。
MCP (dart-mcp + Marionette) を使ったFlutterアプリのE2E自動化・UI検証ガイド。シミュレーターでのUI動作確認、モックプレビュー検証、Bridge経由のE2Eテスト、スクリーンショット撮影など、アプリの動作検証が必要なときに使う。「動作確認して」「UIを検証して」「E2Eテスト」「シミュレーターで確認」「モックで確認」と言われたときや、UI変更後の検証フェーズで使用すること。
GitHub Issue・PRのトリアージ。番号を渡すと、要望の要約・実現難易度・既存機能との重複チェック・対応判断を調査してレポートする。Issue/PRの番号が出てきたとき、トリアージ、優先度判断、対応判断と言われたときに使用する。
Shorebird OTA パッチの作成・staging 配布(stable 昇格はユーザー実施)