Community编程与开发github.com

新应用信息包

构建苹果在 App Review 回复“我们需要更多信息以更好地理解该应用”时所要求的信息包。涵盖所有六项必需内容,并运行苹果的“预防常见问题”检查。

新应用信息包 是什么?

该技能(或智能体工具)旨在帮助开发者应对苹果 App Store 审核中常见的“需要额外信息”的请求。它会自动生成一个完整的回复文件(通常为 Markdown 格式),该文件包含苹果要求的六项内容:在真实设备上录制的最新 iOS 系统下的屏幕录像(以镜头列表形式提供给用户录制)、应用目的与目标受众、设置与主要功能(含登录凭据或示例文件)、使用的外部服务、地区差异以及受监管行业或受保护的第三方材料。此外,它还会执行苹果的“预防常见问题”清单检查。该技能并非直接将内容提交到 App Store Connect,而是指导用户将生成的回复粘贴到“App 审核信息”的“备注”字段中,其中录制视频需用户自行完成。它通过读取应用代码(如账户、用户生成内容、内购、SDK、本地化、屏幕录制拦截、数据删除等)来确保回答的准确性和基于实际构建版本。它还会读取已连接 iPhone 的 iOS 版本并检查是否为最新。此技能适用于大多数代理平台(如 Claude Code、Cursor、Codex),但需要用户提供来自苹果的审核消息或请求。

兼容平台~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 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

新应用信息包 是做什么的?

将苹果的“我们需要更多信息”请求转化为一个文件。用户在 App Store Connect 中回复该文件,并将其粘贴到 App 审核信息的“备注”字段中,以便未来的提交也能包含此信息。录制部分是唯一需要用户自行完成的部分。

苹果要求的六项内容

每个信息包都会按以下顺序回答全部六项(编号 1-6),即使苹果发来的消息中缺少某项或表述不同。如果苹果的消息中添加或更改了某项,请遵循苹果的版本,并注明差异。

#苹果要求的内容回答来源
1在运行最新操作系统的物理设备上捕获的屏幕录像。录像必须从启动应用开始,展示典型的用户流程,包括(如果应用包含):账户注册、登录和账户删除;用户生成内容及其举报和屏蔽功能;以及访问付费内容或功能。第 1 部分(镜头列表)+ 回复 §1
2应用的目的和目标受众:它解决的问题和提供的价值。回复 §2
3设置和访问主要功能的说明,包括任何必需的登录凭据或示例文件。回复 §3
4用于核心功能的外部服务、工具或平台(数据提供商、认证、支付处理器、AI 服务)。回复 §4
5功能或内容上的任何地区差异,或确认应用在所有地区功能一致。回复 §5
6针对高度受监管行业或受保护第三方材料:显示授权的文档或凭据。回复 §6

硬性规则

  1. 录制必须在物理设备上进行,使用最新操作系统,一次完成无编辑的正常速度拍摄,从点击应用图标开始。 切勿提供模拟器录制或加速编辑版本作为提交材料。你无法操控用户的手机,因此录制工作由用户自行完成;你的工作是提供镜头列表。
  2. 仅陈述构建中实际包含的内容。 每个功能、服务和语言都必须来自代码,而非计划或笔记。
  3. 不适用也是答案。 用一句话给出,并说明原因(例如“应用无账户注册或登录功能”)。
  4. 账户: 如果用户可以创建账户,则必须提供账户删除功能,且必须在录像中展示;如果缺失,请将其报告为阻塞项。如果存在登录功能,则第 3 项需要提供演示凭据(每种账户类型一套):告知用户在 App Store Connect 中输入这些凭据。切勿在文件中写入真实密码。
  5. 切勿在 App Store Connect 中发送、提交或编辑任何内容。 用户粘贴回复并附加视频。
  6. 尽可能从仓库或设备中填写每个占位符。 列出剩余的占位符及其需要填写的内容。

第 1 步:阅读苹果的消息

如果用户粘贴了苹果的消息,请检查其编号项与上表的对应关系,并注意哪些录制条件(账户、用户生成内容、付费内容)适用于此应用。

第 2 步:基于代码进行分析

读取已提交构建版本的代码,而非工作副本(先锁定该版本,如第 6 步 → 审核构建,第 0 步所述)。工作副本通常是一个包含未发布功能的分支,向苹果描述这些功能相当于声称某个他们尚未看到的构建中包含这些功能。使用 git grep <模式> <提交> -- <路径> 和 git show <提交>:<路径>。

在每次搜索中排除 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:目的和受众App Store 描述文本、品牌或语音文档、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 隐私权限的回答,请标记出来。

第 3 步:设备和操作系统(第 1 项)

  1. xcrun devicectl list devices 显示已配对的设备。选择用户可用且正在使用的 iPhone。
  2. xcrun devicectl device info details --device <id> | grep -i osVersion 显示其 iOS 版本。
  3. 在网上搜索最新的 iOS 版本。如果手机系统版本落后,请告知用户:用户在录制前需前往“设置” → “通用” → “软件更新”进行更新,然后你再次读取版本。更新手机系统是用户的责任。
  4. 如果没有手机配对,请保留 [iOS 版本] 占位符,并告知用户在哪里可以找到此信息(“设置” → “通用” → “关于本机”)。

第 4 步:预防常见问题

检查苹果列出的每个常见问题,并将结果报告给用户。这些检查是给用户看的,不属于回复内容。

指南检查项目
2.1 Bug 和崩溃录像使用的是已提交版本的 TestFlight 构建,且在真实设备上运行。从 TARGETED_DEVICE_FAMILY 确认支持的平台:如果支持 iPad,告知用户也应在 iPad 上进行测试。
2.1 访问应用登录 → 演示凭据已在 App Store Connect 中输入(每种账户类型一套),并且仍正常工作。
2.3.3 屏幕截图列出商店截图(例如 app-store-assets/*screenshots*)。标记任何看起来仅包含标题图、启动画面或登录页面的截图。
3.1.1 内购代码中的每个产品 ID 都已配置在 App Store Connect 中,并关联到此提交。列出 ID 供用户检查。
3.2 其他商业模式如果应用是针对单一企业、组织或其员工,则标记该应用可能需要不同的分发选项(自定义应用或非公开分发)。

第 5 步:编写文件

如果 app-store-assets/ 文件夹存在,则将文件写入 app-store-assets/new-app-info.md,否则写入 ./new-app-info.md。保持以下格式(完整示例见 examples/seven-minute-math/new-app-info.md):

# App 审核信息 — <应用名称>

在 App Store Connect 中使用第 2 部分进行回复,并附上录像。然后将第 2 部分粘贴到
App 审核信息 → 备注中,以便未来的提交也能包含此信息。
<仍需填写的占位符(如有)。>

## 第 1 部分 — 屏幕录像(第 1 项;请自行录制)
原因:物理设备、最新操作系统、一次拍摄、正常速度、从点击图标开始。
设置(默认:从 Mac 安装的发布版本;参见“审核构建”):
创建一个沙盒测试员(App Store Connect → 用户和访问 → 沙盒 → 测试账户);
从手机上删除应用;你构建并安装审核构建版本;在控制中心打开屏幕录制(关闭麦克风);
开启勿扰模式;使用沙盒测试员账户登录苹果的购买面板(显示“沙盒”字样是正常的)。
按编号列出镜头:点击图标 → 引导流程 → 完整的典型用户流程 → 结果 →
所有适用的录制条件(注册、登录、删除账户;发帖、举报、屏蔽;
付费墙、沙盒购买、解锁的功能、恢复购买)→ 用户如何删除其数据 → 停止。
任何将显示为空白(因截图拦截)的屏幕及其原因。

## 第 2 部分 — 回复(粘贴此部分)
问候语,以及录制使用的设备和 iOS 版本。
**1. 屏幕录像** … **6. 受监管行业/第三方材料**:每个项目一个加粗标题。
结尾行包含支持邮箱。

编写时注意:

  • §1:说明录像展示的内容、哪些录制条件不适用及其原因,以及任何空白屏幕。
  • §2:说明目标用户、要解决的问题、应用如何解决该问题以及其价值。三到四句话。
  • §3:说明开始使用所需的内容(凭据放在 App Store Connect 中,切勿放入文件),然后以简短列表形式说明主要功能,区分免费与付费功能以及付费墙出现时机。
  • §4:每个服务一个项目符号,说明其功能。然后一行说明应用未使用的服务(如 AI、数据提供商、认证),前提是情况属实。
  • §5:说明语言和任何地区差异,或“在所有地区功能一致”。
  • §6:提供文档,或说明“不适用”并附上原因。
  • 语言应简洁、基于事实且礼貌。避免营销性语言。

第 6 步:完整流程视频(第 1 项)

审核构建

录制当前正在审核的精确版本的发布构建,该版本需从 Mac 直接安装到手机上。你负责构建和安装,用户负责录制。

  1. 锁定已提交的版本。 向用户询问 App Store Connect 中当前审核提交的版本号和构建号(例如 1.0.0 (1)),除非用户已提供。找到生成该版本的提交:发布标签、发布或主分支、包含“shipped to the App Store”等信息的提交消息,或设置该版本和构建号的 pubspec.yaml/Info.plist 所在提交。如果有两个提交可能匹配,请询问用户选择哪一个。切勿从工作副本构建: 它通常位于包含未提交更改的特性分支上,苹果尚未见过。应在隔离的工作树中构建(git worktree add --detach <scratch>/review-build <commit>)。使用 cp 命令复制任何被 git 忽略的密钥文件(如 keys.json)到其中,不要读取文件内容。告知用户你正在构建哪个提交,以及哪些较新分支上的内容不会出现在视频中。
  2. 查找项目正常的设备构建方式(运行脚本、tool/*.sh、Makefile、Fastlane)。移除所有模拟购买的标记,例如 DUMMY_PURCHASES、MOCK、FAKE、USE_TEST_STORE、RevenueCat 的 test_ 密钥或 StoreKit 配置文件。模拟购买永远不会显示苹果的购买面板,如果审核员看到付费功能在未出现此面板的情况下解锁,可能会视为规避内购(3.1.1)。通过密钥前缀(例如 `grep -q '

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.

相关技能