erberkk/review-readiness

App Store / Google Play の審査提出前や却下後に使用します。Go/No-Go チェックリストを実行し、レポートを作成します。パスワードでログインできるデモアカウント(メールワンタイムコード不要)、データ投入済み・プレミアムアンロック済み、審査ノート、アプリ内課金の可視・購入可能(ガイドライン 2.1(b))、iPhone 専用アプリの iPad 互換モード、プレースホルダーや「近日公開」の排除、メタデータとアプリの一致、動作するプライバシー URL、クラッシュフリーのコールドスタートなどを確認し、Resolution Center での返信や異議申し立ての判断基準も提供します。

review-readiness とは?

このスキルは、App Store と Google Play へのアプリ提出前に包括的な Go/No-Go チェックリストを実行し、却下を未然に防ぎます。レビュアーの視点で、デモアカウント(メール+パスワードログイン、データ投入済み、プレミアムアンロック済み)、アプリ内課金の購入テスト、iPad 互換モード、メタデータの整合性、プライバシー URL の動作、クラッシュ耐性などを検証し、詳細なレポートを生成します。主に Claude Code や Cursor などの AI エージェントから呼び出して利用することを想定しており、審査却下後の対応プレイブックも含みます。プラットフォームは iOS と Android の両方に対応し、審査担当者が直面する典型的な却下理由(ログイン不能、購入不能、プレースホルダー、メタデータ不一致)を体系的に排除します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/erberkk/mobile-app-launch-skills/tree/HEAD/skills/review-readiness

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

審査準備チェックリスト

目的

一度提出して通過する。ほとんどの却下理由はアプリのアイデア自体ではなく、レビュアーがログインできない、購入できない、プレースホルダーを見た、メタデータとアプリに矛盾がある、といった点に起因します。

前提条件

  • 提出する正確なビルドが TestFlight / Play テストトラックにあること。
  • subscriptions-and-payments チェックポイントを通過していること(両プラットフォームで実際の購入によりプレミアムがアンロックされた状態)。
  • privacy-and-declarations が完了していること。listing-and-aso バリデーターがクリーンであること。スクリーンショットがアップロードされていること。

知識ゼロのレビュアーとして考える

レビュアーは、あなたがテストしていない端末(iPhone 専用アプリでも iPad 互換モードで審査される可能性あり)、新しいストアアカウント、限られた時間で、クリーンビルドをインストールすると仮定します。レビュアーはあなたのノートを読み、サインインを試し、購入を探し、スクリーンショットとアプリを比較します。一回の却下で複数の要素(アカウント状態、バックエンド動作、メタデータ)が重なることがあります。

手順

1. デモアカウント

  • 認証情報は App Store Connect › App Review Information(「Sign-in required」)と Play › App content › App access に記載します。リポジトリには絶対に含めません。
  • アカウントはメールアドレス + パスワードでサインインします。 通常のサインインがメールワンタイムコードやマジックリンクの場合、レビュアーはそれを受信できません。審査用アドレスのみパスワードパスを追加する(サーバーサイドで許可リスト)か、そのアドレスでのみ機能する固定テストコードを用意します。
  • データが投入されていること: プロフィールが完了、数日分の履歴、すべての主要画面にデータが表示される状態。空のアカウントでは機能が隠れ、「機能 X を見つけられませんでした」という却下を招きます。
  • プレミアムがアンロックされていること: サーバーサイドで手動付与(審査中に期限切れにならないもの)により、レビュアーは購入せずに有料機能を確認できます。
  • 別途、新規ユーザーがペイウォールに到達し、レビュアーのサンドボックスアカウントで購入できること(審査時にも購入テストが行われます)。
  • 審査が公開されている間、このアカウントを変更、削除、再シードしないでください。

2. 購入(2.1(b) および 3.1.x)

  • 初回バージョンのサブスクリプションは App Store Connect のバージョンページ(「In-App Purchases and Subscriptions」セクション)に紐付けられ、審査用スクリーンショットとノートが必要です。新しい App Store Connect UI ではバージョンページにこのセクションがない場合があります。その場合はサブスクリプショングループと各サブスクリプションを開き、Add for Review → Draft Submission を使用します。バージョン自体はそのページから追加します。ドラフトにはバージョン、グループ、すべてのサブスクリプションがリストされている必要があります。
  • 各サブスクリプションには最低1つの表示名 + 説明のローカライゼーションと審査用スクリーンショットが必要です。これがないと「Add for Review」が失敗します(「You must add at least one subscription localization / a Review Information screenshot」)。
  • 審査用スクリーンショットは実際のペイウォールと実際の価格、正しいストア表記を示す必要があります。ウィジェット/UI テストからレンダリングする場合は iOS プラットフォームを強制し(そうしないと「Google Play」と表示される)、実際のストア価格を入力します。「価格情報なし」の状態は許容されません。
  • App Store のバージョン文字列はビルドのマーケティングバージョン(CFBundleShortVersionString)と一致している必要があります。 バージョン 1.0 と名付けると、1.0.0 としてアップロードされたビルドは表示されません。「Build」セクションに「Upload your builds」と表示され「Add Build」ボタンがありません。バージョン名を一致させてください。
  • TestFlight で新しいサンドボックス Apple アカウント(あなたのアプリアカウントとリンクしていないもの)を使用して:商品がロードされ、購入が機能し、リストアが機能すること。
  • ペイウォールのエラー状態は再試行を表示し、無効な「Coming soon」を表示しないこと。
  • アプリ内で IAP にアクセスできない場合(例:特定リージョンのみ)、審査ノートでその理由を説明してください。
  • 「購入をリストア」、「利用規約」、「プライバシー」のリンク、サブスクリプション管理リンクが存在すること。

3. 端末とビルド

  • ネットワークなし、低速ネットワーク、機内モードの切り替えでのコールドスタート:クラッシュなし、無限スピナーなし。
  • iPad: iPhone 専用アプリでも iPad 互換モードで動作し、そこで審査される可能性があります。iPad シミュレーターで全フローを実行:サインイン(Apple でサインインを含む)、ペイウォールのスクロール、購入シート、フォーム上のキーボード、許可プロンプト、画面回転。HealthKit など一部の API が利用できない場合は、丁寧なメッセージを表示し、クラッシュしないこと。
  • 最小対応電話と最大テキストサイズ:ペイウォールや同意画面でボタンがクリップされないこと。
  • リリースビルド(デバッグではない):デバッグバナー、テストメニューなし。分析/クラッシュレポートは本番設定で動作すること。
  • 物理端末で、提出する正確なビルドを使用して全アカウントライフサイクルを確認:インストール、サインアップ、主要機能、サンドボックス購入、アカウント削除、削除後のアプリ表示。

4. コンテンツとメタデータ

  • アプリの文字列とリストで以下を検索:TODO、lorem、coming soon、beta、test、[PRICE]、プレースホルダー画像。これらが表示されてはいけません。
  • iOS ビルドとメタデータに Android / Google Play の表記がないこと。Play に Apple 専用の表記がないこと(2.3.10)。アプリ内文字列も含む。「Cancel in App Store or Google Play」のような表記はランタイムでプラットフォームに合わせたテキストにすること。
  • すべてのスクリーンショットが現在の UI と一致していること。説明文の数字がアプリと一致していること。
  • プライバシーポリシー、利用規約、サポート、アカウント削除の URL がログインなしで読み込め、アプリについて言及し、プライバシーフォームと一致していること。
  • 年齢制限が利用規約と一貫していること。

5. バックエンド

  • バックエンドが起動しており、審査中に制限に達しないプランであること(無料枠が一時停止/スロットリングされると却下)。
  • 審査中に破壊的変更をデプロイしないこと。審査中のビルドに対して後方互換性のある API。
  • アラートが設定されていること(post-launch-ops)。審査中の障害に気づくため。

6. 審査ノート

templates/review-notes.md を記入します。事実のみを記載:機能の場所、サインイン方法、購入のテスト方法、AI と健康データの取り扱い、アカウント削除の場所。

Apple は審査の代わりに ガイドライン 2.1「Information Needed」 で応答することがあります。ある事例では以下の6項目を求められました。最初の提出でこれらを事前に回答しておくことでラウンドトリップを回避できます:

  1. 最新 OS の物理端末での画面録画。アプリ起動から、登録、ログイン、アカウント削除、ユーザー生成コンテンツ(報告/ブロック機能)、有料コンテンツへのアクセスまでの典型的なフロー。提出するビルドで録画し、提出のメッセージにファイルを添付(またはリンク)し、ノートにその旨を記載。削除部分にはデモアカウントを使用せず、録画内で新規アカウントを作成すること。
  2. アプリの目的とターゲットオーディエンス:解決する問題とその価値。
  3. 主要機能のセットアップとアクセス手順。デモ認証情報とメニューパス。
  4. コア機能の背後にあるすべての外部サービス:認証/データベース、決済(StoreKit + ラッパー)、AI プロバイダー、データソース(地図 API など)、メール、ヘルスフレームワーク。
  5. 地域差、またはすべての地域で同じ機能であるという声明。
  6. 規制対象分野または第三者の保護コンテンツ:該当しない旨のドキュメントまたは声明(例:「一般ウェルネス、医療機器ではない」)。

7. Go/No-Go レポート

templates/go-no-go-report.md に各項目の証拠(スクリーンショット、ビルド番号、コマンド出力)を記入します。ブロッキング項目で No がある場合は提出不可。

8. 提出(APPROVAL)

アカウント所有者にレポートを添付して明示的な承認を求めます。iOS では手動リリースを選択し、承認後すぐに公開されないようにします。Play では、プロダクションアクセス(新規個人アカウント)には14日間のクローズドテスト完了とプロダクションアクセス申請が先に必要です。

却下後

references/rejection-playbook.md を参照:正確なガイドラインを読み、再現し、根本原因(多くの場合複数レイヤー)を修正し、Resolution Center で具体的に返信し、再提出。異議申し立ては、レビュアーが証明可能な事実を誤解した場合のみ。

人間の承認が必要な判断ポイント

提出、リリース方法の選択、却下への返信(トーンとコミットメント)、異議申し立ての提出、審査アカウントへのプレミアム付与。

検証

Go/No-Go レポートが証拠とともに完全であり、機能を構築していない人がクリーン端末で審査ノートを実行し成功すること。

よくある落とし穴

  • デモアカウントがレビュアーの読めないメールコードに依存している。
  • デモアカウントが空、凍結、またはクリーンアップジョブで削除されている。
  • 商品が「Missing Metadata」(審査用スクリーンショットなし)の状態で、審査中にロードされない。
  • バージョンを審査から取り下げる(「Developer Rejected」)と、サブスクリプションもドラフトから削除される。再提出前にグループと各サブスクリプションを再追加しないと、バージョン単独で提出される。
  • プロダクトページアセットはバージョンが「Waiting for Review」の間ロックされる(例:新しい Header アセット)。提出前にすべて追加する。そうしないと、バージョンを審査から取り下げ、編集し、再提出する必要があり(キュー内の位置を失う)。
  • Apple の「Add for Review」チェックが通っても、オプションアセットが設定されているとは限らない:空の Header アセットが許可されるため、提出前にその点を判断すること。
  • レビュアーの新しい Apple アカウントがリストア/移行ルールと衝突し、購入が「失敗」する。
  • バックエンドが非アクティブ後に一時停止するプラン、またはレビュアーをレート制限するプラン。
  • ビルド内に「Coming soon」が存在する。
  • アプリ内テキストが他ストアに言及している。
  • 審査ノートがデモログインの説明のみ(録画、目的、サービス、地域の説明がない)。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

erberkk/privacy-and-declarations

Use when filling in or auditing App Store privacy and compliance answers and Google Play App content declarations - Apple App Privacy labels, Play Data safety (CSV import), Health apps declaration and Health Connect permissions, advertising ID, PrivacyInfo.xcprivacy and required-reason APIs, export compliance (ITSAppUsesNonExemptEncryption), age rating, account deletion (in-app, web URL, re-authentication), consent and disclosure for AI features, and rules for health data. Derives every answer from a code and SDK scan so the forms, the privacy policy and the in-app text say the same thing.

erberkk/social-publishing

Use when setting up scheduled publishing of an app's marketing content to Instagram (Reels, carousels, Stories), Threads, X and TikTok through official APIs - self-hosting Postiz in Docker behind a Cloudflare Tunnel, creating the Meta app with the newer use-case flow (business portfolio, Facebook Page linked to the Instagram professional account, Threads tester invite), X developer pay-per-use credits and spend cap, TikTok and YouTube audit limits, safe OAuth account selection when one browser holds personal and brand accounts, resource limits, and phasing a posting calendar around real launch events.

erberkk/store-screenshots

Use when producing or updating App Store and Google Play screenshots and the Play feature graphic - planning a connected "panorama" story across frames, capturing real in-app screens with the app's own test/screenshot harness at each device's logical size and pixel ratio, covering the full device matrix (iPhone 6.9", the required medium Dynamic Island slot, iPhone Duo outer and inner displays, iPad 13" if the app runs on iPad, Play phone, 7" and 10" tablets, 1024x500 feature graphic), checking for alpha channels and wrong sizes, and uploading in order via the App Store Connect and Google Play APIs.

erberkk/web-presence-and-seo

Use when building, checking or deploying the website that a mobile app needs for its store listings and launch - privacy policy, terms, support and web account-deletion pages that work signed-out; hosting apple-app-site-association and assetlinks.json; invite/referral pages (/i/<code>) that open the app or fall back to the store with the Play install referrer; a landing page with store badges and honest per-country prices filled at the edge; Open Graph images; technical SEO (hreflang, canonical, sitemap, robots.txt, JSON-LD); Search Console, Bing Webmaster and IndexNow; AI crawler policy and llms.txt; and a Cloudflare Worker deploy with a production approval gate. Includes a site checker and an IndexNow ping script.

関連スキル