Communityコーディング&開発github.com

new-app-info

Appleの「追加情報が必要です」というApp Reviewの返信に対応するための情報パックを構築します。6つの必須項目すべてをカバーし、アプリのコードから回答を導き出します。

new-app-info とは?

このスキルは、AppleのApp Reviewから「アプリをよりよく理解するために追加情報が必要です」という返信があった際に、必要な情報パックを自動生成します。Appleが要求する6つの項目(実機での画面収録、アプリの目的と対象ユーザー、セットアップと主要機能、外部サービスの利用、地域ごとの違い、規制産業や保護された第三者の素材)すべてに対応し、アプリのコードベースから事実に基づいた回答を提供します。また、Appleの「よくある問題を防ぐ」チェックを実行し、接続されたiPhoneのiOSバージョンが最新かどうかを確認します。このスキルは、Claude Code、Cursor、CodexなどのAIエージェントで使用でき、ユーザーがApp Reviewのメッセージをペーストしたり、「/new-app-info」「リジェクトされた」「App Reviewに回答する」などのトリガーフレーズを入力したときに自動的に起動します。最終的に、app-store-assets/new-app-info.md(または./new-app-info.md)という1つのファイルにすべての情報をまとめ、ユーザーはそれをApp Store Connectに返信として貼り付け、App Review InformationのNotesフィールドにもコピーします。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jamesisbuilding/App-Building-Skills/tree/main/skills/new-app-info

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

ドキュメント

new-app-info は何をしますか?

Appleの「追加情報が必要です」というリクエストを1つのファイルに変換します。ユーザーはこれをApp Store Connectで返信し、さらにApp Review InformationのNotesフィールドにも貼り付けて、将来の提出時に情報が引き継がれるようにします。録画はユーザー自身が行う唯一の部分です。

Appleが要求する6つの項目

すべてのパックは、Appleからのメッセージが欠落していたり異なる表現であっても、以下の6つすべてに番号1〜6の順で回答します。Appleのメッセージが項目を追加または変更している場合は、Appleのバージョンに従い、差異をメモします。

#Appleの質問回答元
1最新OSを搭載した実機でキャプチャした画面収録。アプリの起動から始まり、典型的なユーザーフローを示すこと。アカウント登録、ログイン、アカウント削除(該当する場合)、ユーザー生成コンテンツとその報告・ブロック機能、有料コンテンツや機能へのアクセスを含むことパート1(ショットリスト)+ 返信§1
2アプリの目的とターゲットオーディエンス:解決する問題と提供する価値返信§2
3主要機能のセットアップとアクセス方法、必要なログイン認証情報やサンプルファイルを含む返信§3
4コア機能に使用される外部サービス、ツール、プラットフォーム(データプロバイダー、認証、決済処理、AIサービス)返信§4
5機能やコンテンツの地域差、またはすべての地域で同じ動作であることの確認返信§5
6高度に規制された産業または保護された第三者の素材:許可を示す文書または認証情報返信§6

厳格なルール

  1. 録画は実機で、最新OSで、1テイク、通常速度、アプリアイコンをタップするところから開始すること。 シミュレーター録画や早送り編集を提出として提供しないでください。ユーザーの電話を操作することはできないため、録画はユーザー自身が行うものです。あなたの仕事はショットリストを作成することです。
  2. ビルドに含まれているものだけを主張すること。 すべての機能、サービス、言語はコードから取得し、計画やメモからは取得しないでください。
  3. 該当しない場合も回答すること。 理由とともに1文で回答します(例:「アプリにはアカウント登録やログインはありません」)。
  4. アカウント: ユーザーがアカウントを作成できる場合、アカウント削除が必須であり、録画に含める必要があります。欠落している場合は、ブロッカーとして報告します。ログインがある場合、項目3にデモ認証情報(アカウントタイプごとに1セット)が必要です。ユーザーにApp Store Connectで入力するよう指示します。ファイルに実際のパスワードを書き込まないでください。
  5. App Store Connectで何も送信、提出、編集しないでください。 ユーザーが返信を貼り付け、ビデオを添付します。
  6. リポジトリまたはデバイスから入力できるすべてのプレースホルダーを埋めてください。残ったものとそれぞれを埋めるものをリストします。

ステップ1:Appleのメッセージを読む

ユーザーがメッセージをペーストした場合、その番号付き項目を上記の表と照合し、どの録画条件(アカウント、UGC、有料コンテンツ)がこのアプリに適用されるかをメモします。

ステップ2:コードに基づいて回答する

提出されたコミットのコードを読み、作業コピーは読まないでください(最初にピン留めします。ステップ6→レビュービルド、ステップ0を参照)。作業コピーは未出荷の機能を含むフィーチャーブランチであることが多く、それらをAppleに説明することは、彼らが持っていないビルドについての主張になります。git grep <pattern> <commit> -- <paths> および git show <commit>:<path> を使用します。

すべての検索で build、Pods、.dart_tool、node_modules、.git を除外します。

項目確認場所
1、3:起動からのメインフロールーターとスクリーン、オンボーディング、コアループ
1、3:アカウント、ログイン、削除firebase_auth、sign_in_with_apple、supabase、Auth、login、signUp、deleteAccount、delete.*data
1:ユーザー生成コンテンツ投稿、コメント、チャット、アップロード、report、block、flag
1、3:有料コンテンツpurchases_flutter、revenuecat、StoreKit、product_id、ペイウォール画面。ゲートされている機能、無料トライアル、ペイウォールが表示されるタイミング、購入の復元場所を特定
1:画面キャプチャ防止no_screenshot、isSecureTextEntry のトリック、UIScreen.capturedDidChange、FLAG_SECURE。ブロックされた画面は録画で空白になるため、理由を返信に記載
2:目的とオーディエンスストアリスティングのコピー、ブランドやボイスのドキュメント、README、ローンチチェックリスト、オンボーディングのコピー(.arb、.strings、strings.xml)
3:サンプルファイルファイルインポート、ドキュメントピッカー、QR/バーコードスキャン、アプリが必要とするハードウェア
4:外部サービス依存関係(pubspec.yaml、Podfile、package.json、Gradle)とビルド定義(--dart-define、キーファイル、リリーススクリプト)。各サービスの機能と取得するデータ。リリースビルドで実際に有効になっているSDKのみをリスト
5:地域出荷されているロケール、地域チェック(locale、countryCode、region)、地域固有の価格、機能、コンテンツ
6:規制または保護健康、医療、金融、ギャンブル、法律、子供向けコンテンツとクレーム、ライセンスコンテンツ、音楽、画像、フォントとそのライセンス
連絡先設定、プライバシードキュメント、ウェブサイトファイル内のサポートメール
プラットフォームIPHONEOS_DEPLOYMENT_TARGET、TARGETED_DEVICE_FAMILY(iPhoneのみか、iPadも含むか)

項目4の分析に関する文言がリポジトリ内のプライバシーポリシーと一致することを確認します。一致しない場合、またはApp Store ConnectのApp Privacyの回答を確認できない場合はフラグを立てます。

ステップ3:デバイスとOS(項目1)

  1. xcrun devicectl list devices でペアリングされたデバイスを表示します。利用可能なユーザー自身のiPhoneを使用します。
  2. xcrun devicectl device info details --device <id> | grep -i osVersion でiOSバージョンを表示します。
  3. 最新のiOSリリースをウェブで検索します。電話が遅れている場合は、その旨を伝えます。ユーザーは録画前に設定→一般→ソフトウェアアップデートで更新し、その後バージョンを再度読み取ります。電話のOSはユーザー自身が更新するものです。
  4. 電話がペアリングされていない場合は、[iOS version] を残し、ユーザーに確認場所(設定→一般→情報)を伝えます。

ステップ4:よくある問題を防ぐ

Appleのよくある問題をそれぞれチェックし、結果をユーザーへのレポートに記載します。これらはユーザー向けのチェックであり、返信の一部ではありません。

ガイドラインチェック内容
2.1 バグとクラッシュ録画は提出バージョンのTestFlightビルドを実機で使用。TARGETED_DEVICE_FAMILY からサポートされるプラットフォーム:iPadがサポートされている場合、ユーザーにiPadでもテストするよう指示
2.1 アプリへのアクセスログイン→デモ認証情報がアカウントタイプごとに1セット、App Store Connectに入力され、まだ機能していること
2.3.3 スクリーンショットストアのスクリーンショットをリスト(例:app-store-assets/*screenshots*)。タイトルアート、スプラッシュ、ログイン画面のように見えるものをフラグ
3.1.1 アプリ内課金コード内のすべてのプロダクトIDがApp Store Connectで設定され、この提出に添付されていること。ユーザーが確認するためのIDをリスト
3.2 その他のビジネスモデルアプリが1つのビジネス、組織、またはその従業員向けの場合、別の配布オプション(カスタムアプリまたは非公開配布)が必要であることをフラグ

ステップ5:ファイルを書く

app-store-assets フォルダが存在する場合は app-store-assets/new-app-info.md に、そうでない場合は ./new-app-info.md に書き込みます。以下の構造を維持します(完全な例は examples/seven-minute-math/new-app-info.md にあります):

# App Review information — <アプリ名>

パート2をApp Store Connectで返信し、録画を添付します。その後、パート2を
App Review Information → Notes に貼り付け、将来の提出時に情報が引き継がれるようにします。
<まだ埋めるべきプレースホルダーがあればここに。>

## パート1 — 画面収録(項目1;自分で録画してください)
理由:実機、最新OS、1テイク、通常速度、アイコンをタップするところから開始。
セットアップ(デフォルト:Macからインストールしたリリースビルド。下記「レビュービルド」を参照):
サンドボックステスターを作成(App Store Connect → ユーザとアクセス → サンドボックス → テストアカウント);
電話からアプリを削除;レビュービルドをビルドしてインストール;コントロールセンターで画面収録をオン(マイクオフ);
おやすみモードをオン;サンドボックステスターでAppleの購入シートにサインイン(「Sandbox」と表示されるシートは正常)。
番号付きショットリスト:アイコンをタップ → オンボーディング → エンドツーエンドの典型的なフロー → 結果 →
該当するすべての録画条件(サインアップ、ログイン、アカウント削除;投稿、報告、ブロック;
ペイウォール、サンドボックス購入、アンロックされた機能、購入の復元) → ユーザーがデータを削除する方法 → 停止。
空白になる画面(キャプチャ防止)とその理由。

## パート2 — 返信(これを貼り付け)
挨拶、および録画が行われたデバイスとiOSバージョン。
**1. 画面収録** … **6. 規制産業/第三者の素材**:それぞれ太字のセクション1つ。
サポートメールで締めくくる。

書き方:

  • §1:録画に含まれるもの、該当しない録画条件とその理由、空白の画面。
  • §2:誰のためのものか、問題点、アプリの解決方法、価値。3〜4文。
  • §3:開始に必要なもの(認証情報はApp Store Connectに入力、ファイルには絶対に書かない)、主要機能を短いリストで、無料と有料の区別、ペイウォールが表示されるタイミング。
  • §4:サービスごとに箇条書きで機能を説明。該当する場合、アプリが使用していないもの(AI、データプロバイダー、認証)について1行。
  • §5:言語と地域差、または「すべての地域で同じ動作」。
  • §6:文書、または「該当なし」と理由。
  • 平易で事実に基づき、丁寧に。マーケティング用語は避ける。

ステップ6:エンドツーエンドのビデオ(項目1)

レビュービルド

レビュー中の正確なバージョンのリリースビルドを、Macから直接電話にインストールして録画します。あなたがビルドしてインストールし、ユーザーが録画します。

  1. 提出バージョンをピン留めします。 ユーザーに、App Store Connectでレビュー中の提出に表示されているバージョンとビルド番号(例:1.0.0 (1))を尋ねます(まだ提供されていない場合)。それを生成したコミットを見つけます:リリースタグ、リリースまたはメインブランチ、コミットメッセージ(例:「App Storeに出荷」)、または pubspec.yaml/Info.plist がそのバージョンとビルドを設定したコミット。2つのコミットが一致する可能性がある場合は、どちらか尋ねます。作業コピーから決してビルドしないでください: 多くの場合、Appleがまだ見ていない未コミットの変更を含むフィーチャーブランチです。代わりに、分離されたワークツリーでビルドします(git worktree add --detach <scratch>/review-build <commit>)。git無視されたキーファイル(例:keys.json)を cp で読み取らずにコピーします。どのコミットをビルドしているか、新しいブランチに何がありビデオに含まれないかをユーザーに伝えます。
  2. プロジェクトの通常のデバイスビルドを見つけます(スクリプト、tool/*.sh、Makefile、Fastlane)。DUMMY_PURCHASES、MOCK、FAKE、USE_TEST_STORE、RevenueCatの test_ キー、StoreKit設定ファイルなど、購入を偽装するすべてのフラグを削除します。偽の購入はAppleのシートを表示せず、レビュアーがそれなしで有料機能がアンロックされるのを見ると、アプリ内課金(3.1.1)の回避と見なされる可能性があります。購入キーがライブストアキーであることをプレフィックスのみで確認します(例:grep -q '"REVENUECAT_IOS_KEY": "appl_');キー値を決して出力しないでください。
  3. リリースモードでビルドします。デバッグモードは避けてください:デバッグのFlutterやReact Nativeビルドはホーム画面のアイコンから開けず、Appleは録画をそこから開始することを求めています。Flutter:flutter build ios --release を、偽のフラグを除いたプロジェクトの通常の定義で実行します。
  4. ビルドされたアプリが提出と一致することを確認します: /usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" -c "Print CFBundleVersion" build/ios/iphoneos/Runner.app/Info.plist が提出されたバージョンとビルドを出力する必要があります。出力しない場合は、停止してユーザーに伝えます。
  5. ユーザーにまず電話からアプリを削除してもらいます(電話上のデータが消去されるため、ユーザーの判断です)、その後インストール:xcrun devicectl device install app --device <id> build/ios/iphoneos/Runner.app。
  6. MacからインストールされたビルドはAppleのサンドボックスを通じて購入するため、ユーザーは購入シートにサインインするためにサンドボックステスターが必要です。同じビルド番号のTestFlightインストールも機能し(購入は自分のApple IDで無料)、Appleが持っている正確なバイナリを保証します。ユーザーが希望する場合はそれを使用します。

録画とチェック

パックは、録画が存在しチェックされるまで完了しません。ユーザーが録画し、あなたがそれを促します。チャットで、パート1のセットアップ(サンドボックステスターを含む)と番号付きショットリストを伝えます。AirDropでファイルを app-store-assets/review-recording/ に送信し、到着したら知らせるよう依頼します。その後:

  1. ffprobe -v error -show_entries format=duration:stream=width,height,codec_name -of default=nw=1 <file>。解像度が実機のiPhone画面と一致し(シミュレーターウィンドウや切り抜き編集ではない)、再生時間がフロー全体をカバーしていることを確認します。
  2. 10秒ごとに1フレームのコンタクトシートを作成:ffmpeg -i <file> -vf "fps=1/10,scale=240:-1,tile=8x8" -frames:v 1 <dir>/contact.png。最初のフレームも単独で保存します。両方を読み取ります。
  3. 順番に確認:最初のフレームがホーム画面またはアプリアイコンのタップを示していること、すべてのショットリストのステップが含まれていること、録画条件がカバーされていること、空白の画面が必要な場合にのみ存在すること、録画が停止していること。

Individual skills in this repo

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

app-icon-design

Create, revise, and audit app icons using Apple's Human Interface Guidelines, with a clear visual identity and production-ready deliverables.

app-keyword-research

Validate an app idea against the App Store before building it. Turns the idea into search phrases, measures demand (App Store autocomplete) and competition (current top-10 apps) for each, ranks keywords by opportunity, and maps which apps own the market. Use when the user wants keyword research, ASO, "is there demand for…", "who are the competitors for…", "what should we call it / which keywords", or to validate or compare app ideas.

app-offer

Designs one opinionated "Grand Slam Offer" for any app idea, new or already shipped, by running Alex Hormozi's $100M Offers method adapted to app stores. It covers the market and niche, the commodity check, a value-equation audit, the problem inventory, delivery vehicles, the trimmed value stack, pricing and tiers, scarcity, urgency, bonuses, the guarantee, naming, the paywall per placement, the onboarding fast win, a test plan and a ship plan. It works within App Store and Google Play rules. For a shipped app it reads the code and notes first and produces a before/after. Use it when the user says "/app-offer", "run app-offer on <idea>", "make a grand slam offer for my app", "Hormozi my app", "price my app" or "design my paywall offer", or asks how to package, price, name, guarantee or paywall an app. It writes offer/grand-slam-offer.md (or ./<app-slug>-grand-slam-offer.md for a new idea).

brand-reference-pack

Build or refresh a shortform brand reference pack for any app from its real surfaces — website, App Store listing and reviews, socials, the live app (driven end to end on the simulator) and its code tokens — plus a status check of the upstream foundations (ICP, voice of customer, brand voice). Produces the context that content formats and design decisions are made from, as markdown, tokens.json and a PDF. Use for "build a brand pack for <app>", "refresh the brand pack", "capture the site/app/socials for shortform", "/brand-reference-pack".

deep-work

Timekeeper and scribe for the user's own timeboxed build session, default 90 min, also 1h / 1.5h / 2h (Orient, Build, Verify, Harden, Close, scaled to the block). Use when the user says "start a session", "deep work", "90 min block", "work block", or invokes /deep-work. Subcommands: status, park <note>, close, abort.

reel-motion-graphics

Turn a script or concept into an on-brand 9:16 explainer reel (luxury tech, warm sand on near-black, glassmorphism, CSS 3D, Bodoni + Instrument Sans) built in HyperFrames, with the animation above the fold and the presenter's talking head below. Use when the user gives a script, transcript, paper summary or concept and asks for a reel, motion graphics, an animated explainer or "the same style as the upcycling reel". Produces a HyperFrames project, a rendered MP4 and a live artifact player.

関連スキル