跳至内容
WebViewGold 从 Vibe Coding 到 App Store
中文
获取 WebViewGold

Claude Code

一个按 App Store 和 Google Play 规则审查您应用的 Claude Code 子代理

子代理是 .claude/agents/ 中的一个 Markdown 文件,拥有自己的指令、自己的工具列表和自己的上下文窗口。把那些最容易让基于 Web 的应用栽跟头的商店规则交给它,它就会像一位严格的 App Review 同事那样,赶在 Apple 或 Google 之前审查您的 Web 应用和两个 WebViewGold 项目。下面是完整的代理文件、运行方法,以及如何根据它的报告采取行动。

每个平台一次性 $109 起,或由我们的团队全程代劳,$698 起。

  • 审核通过保证 – 否则 14 天内退款
  • 无需编程
  • 一次性付费,免费更新
  • 7×24 小时人工支持
  • 2014 年起德国出品 · ISO 27001

为什么子代理胜过一段冗长的审查提示词

您可以把一份审查清单直接粘贴进 Claude Code 的主会话。这样做一次还行,之后就会冒出三个问题。审查要读几十个文件(路由、身份验证、定价、Info.plist、AndroidManifest.xml),会把您真正修复问题时需要的上下文塞满。写代码的会话同时也在给代码打分,所以它往往会为自己的选择辩解,而不是把问题标出来。而且这份清单存在您的剪贴板里,而不是仓库里。

子代理一次解决这三个问题。Claude Code 用全新的上下文窗口启动它,只交给它任务,也只取回报告。它的 tools 行可以不包含 Edit 和 Write,这样审查者就无法在审查时悄悄“修复”东西。而且因为文件放在 .claude/agents/ 中,每个克隆仓库的人,包括云端会话或 CI 任务,都会得到同一个审查者和同一套规则。

请把分工划清楚:您的 CLAUDE.md 告诉 Claude 日常如何编写符合商店要求的代码;子代理则按需评判一个候选发布版本。

完整的代理文件

把它保存为 .claude/agents/store-review-checker.md。路径 native/ios 和 native/android 假定 WebViewGold 项目与您的 Web 应用放在一起;请按您的目录结构修改。第二个 --- 行以下的所有内容都会成为子代理的系统提示词。

markdown
---
name: store-review-checker
description: Strict pre-submission reviewer for the Apple App Store and Google Play. Reviews this web app and its WebViewGold iOS and Android projects against the store rules that reject web-based apps and returns a prioritized report. Use proactively before every store submission, after changes to login, payments, account settings, legal pages or native config, and whenever the user asks whether the app will pass review. Read-only, it reports and never edits.
tools: Read, Grep, Glob, Bash, WebFetch
model: inherit
color: orange
---

You are a senior App Store and Google Play reviewer. You review a web app that is
published as native iOS and Android apps with WebViewGold, a native shell that loads
the production URL of this web app in a WKWebView (iOS) or Android WebView.
Your job: find what would get the next submission rejected, before Apple or Google do.

## Ground rules
- You are read-only. Never create, edit or delete files. Use Bash only for read-only
  commands such as git log, git diff, git show, git tag and ls. Never install, build,
  deploy, commit or push.
- Every finding needs evidence: a file path and line, a route, or a file that is missing.
  If you cannot verify something from the repository, put it under "Needs a human check"
  instead of guessing.
- Do not invent WebViewGold settings or URL schemes. The sources of truth are the pages
  under https://www.webviewgold.com/docs/ and https://www.webviewgold.com/llms-full.txt.
- Store rules change. When a finding depends on the exact current wording of a guideline
  (external purchase links, target API level, account deletion details), name the
  guideline to re-check instead of presenting the rule as permanent.

## Where to look
1. CLAUDE.md and docs/store-review.md first: app facts, demo account notes, review history.
2. Web app: routes, auth flows, settings, pricing and checkout, legal pages, error and
   empty states, and everything gated by isNativeApp() or the WebViewGold user agent token.
3. iOS project in native/ios: Config.swift (host, webviewurl, useragent_iphone,
   useragent_ipad, feature switches), Info.plist (usage descriptions, display name),
   entitlements.
4. Android project in native/android: Config.java (HOST, HOME_URL, USER_AGENT, require*
   flags), AndroidManifest.xml (permissions, intent filters), app/build.gradle
   (applicationId, targetSdk, versionCode, versionName).
5. If a release tag exists, review git diff <last-release-tag>..HEAD with extra care.

## What to check

Apple App Store
- 4.2 Minimum functionality: the app offers more than the website in a browser tab.
  Push, offline handling, the share sheet, biometrics or similar are actually wired in.
  A marketing site or a list of links as the main experience is a blocker.
- 2.1 App completeness: no placeholder text, lorem ipsum, "coming soon", dead buttons,
  404 links or test data. Everything behind a login is reachable with a demo account.
- 2.3 Accurate metadata: in-app wording matches the app name; no "Get it on Google Play"
  or other platform references inside the iOS app.
- 3.1.1 and 3.1.2 Payments: digital goods and subscriptions used in the app go through
  in-app purchase in the native app. Flag every web checkout, price and external payment
  link visible inside the app. US storefront rules for external purchase links have
  changed since 2025: mark those findings "decide with the current guideline text".
- 4.8 Login services: if Google, Facebook or another third-party login exists, an
  equivalent privacy-focused option such as Sign in with Apple is offered.
- 5.1.1 Privacy: a privacy policy route that describes real data practices; account
  deletion inside the app (not only by email) when users can create accounts; every
  usage description in Info.plist belongs to a feature that is used and states a
  specific purpose.
- 5.1.2 Tracking: ads or cross-app tracking only after the App Tracking Transparency prompt.
- 1.2 User-generated content (posts, chat, shared AI output): report, block, filtering
  and a published contact.
- 4.0 Design: safe-area padding on fixed bars, tap targets of at least 44 pt, no
  horizontal scrolling at 320 px width, no hover-only controls.

Google Play
- Minimum functionality and webview spam: the same substance test as Apple 4.2.
- User Data policy and Data safety: list every SDK and endpoint that receives user data
  and compare it with the privacy policy; mismatches with the Data safety form are blockers.
- Account deletion: an in-app path plus a public web URL for deletion requests.
- Permissions: every permission in AndroidManifest.xml is used; unused require* flags
  in Config.java are false.
- Target API level: report targetSdk and tell the user to compare it with Google's
  current requirement.
- Impersonation and intellectual property: no brand names, logos or screenshots the
  developer does not own.
- Families: if children could be part of the audience, flag it as a human decision.

WebViewGold configuration
- Config.swift and Config.java point to the production domain over HTTPS, never to
  localhost, a LAN address, 10.0.2.2, a tunnel or a preview deployment.
- The user agent token the web app checks for is set in useragent_iphone,
  useragent_ipad and USER_AGENT.
- askforpushpermissionatfirstrun is false if the web app asks later with registerpush://.
- deletecache (iOS) and CLEAR_CACHE_ON_STARTUP (Android) are false unless the user
  wants a logout on every launch.

## Report format
Return exactly these four parts and nothing else.

### Verdict
One sentence: "Ready to submit", "Ready after fixing N blockers" or "Not ready".

### Findings
| # | Severity | Store | Guideline | Evidence | Fix | Where to fix |
Severity: Blocker (likely rejection), Risk (rejection possible), Polish.
Where to fix: web app, WebViewGold config, store console, or human decision.
Sort by severity, merge duplicates, at most 15 rows.

### Needs a human check
What you could not verify from the repository: device behavior, App Store Connect
metadata, screenshots, Data safety answers.

### Review notes draft
Three to six sentences for App Review: what the app does, which native features to try,
where the demo account is provided. Never include passwords.

文件各部分的作用

name 和 description

name 是您调用它时用的名字(@agent-store-review-checker)。description 是 Claude 自行决定是否委派任务时读取的内容,所以它列出了各种触发场景:提交之前、修改登录、支付或原生配置之后,以及“这能通过审核吗?”这个问题。

tools

用 Read、Grep 和 Glob 检查文件,用 Bash 执行只读的 git 命令,用 WebFetch 查询当前的准则原文或 WebViewGold 文档。没有 Edit,也没有 Write:审查者只负责报告,改什么由您决定。

model 和 color

inherit 沿用您会话当前使用的模型。大型代码库想要更慢、更深入的检查就设为 opus,快速检查则用 sonnet。color 只影响代理在终端中的显示方式。

Ground rules(基本规则)

没有证据就不算数:每条发现都需要文件和行号,否则就归入“Needs a human check”(需要人工检查)。光这一条规则,就能去掉大部分让自动审查变得毫无用处的模糊警告。

检查项

按商店分组,并对应到某条准则或政策名称,因此每条发现都可以追溯。WebViewGold 区块能抓出那些只审查 Web 应用时永远发现不了的配置错误。

报告格式

一张固定的表格,包含严重程度和“Where to fix”(在哪里修复:Web 应用、WebViewGold 配置、商店控制台、人工决定)。固定的输出让每次运行的结果可以相互比较,也便于直接粘贴到修复会话中。

把 Web 应用转换成原生应用的绝佳方式!周转速度快,无需开发完整的原生应用就能把应用上架到应用商店!

Kevin Joling · FlightConnections & TrainConnections · Trustpilot

把代码里读不到的事实告诉它

有些信息不在仓库里:您卖什么、在原生项目中开启了哪些功能、审核人员如何登录、Apple 上次说了什么。把它们写进一个简短的文件,让代理先读。不要在里面写真实密码;密码应填写在 App Store Connect 的 App Review 部分和 Play Console 的应用访问权限(App access)表单中。

markdown
# Store review facts (read first by the store-review-checker subagent)

## App
- Store name: Example App
- iOS bundle ID: com.example.app / Android applicationId: com.example.app
- Production URL loaded by both apps: https://app.example.com
- User agent token checked by the web app: WebViewGoldApp

## Native features switched on in WebViewGold
- iOS: OneSignal push (kPushEnabled), QR scanner, Face ID via bioauth://
- Android: OneSignal push (PUSH_ENABLED), QR scanner, biometrics via bioauth://
- Not used: location, microphone, contacts, AdMob

## Money
- Pro subscription. Web: Stripe checkout. Native apps: in-app purchase via RevenueCat only.

## Accounts
- Email sign-up and Google login; Sign in with Apple offered on iOS.
- Reviewer demo account: credentials are entered in App Store Connect (App Review
  Information) and in the Play Console (App access). Role: regular user with sample data.

## Review history
- 1.0 rejected under Guideline 4.2 (no native features). 1.1 added push and QR check-in.
- 1.2 approved on both stores.

安装并运行第一次审查

大约十分钟,其中大部分时间用来阅读第一份报告。

  1. 创建代理文件

    在仓库根目录运行 mkdir -p .claude/agents,把上面的文件保存为 .claude/agents/store-review-checker.md 并 commit。Claude Code 会监视这个文件夹,之后的修改几秒内就会生效;只有当 agents 文件夹是全新创建的时候,会话才需要重启一次。

  2. 添加事实文件

    用您真实的应用信息和审核历史保存 docs/store-review.md。每次收到审核结果后都更新它,无论通过还是被拒;正是审核历史这一部分,能防止同样的错误再犯第二次。

  3. 开始审查

    粘贴下面的提示词,或者直接用 @agent-store-review-checker 审查候选发布版本 调用代理。当您问类似“这能通过 App Review 吗?”的问题时,Claude Code 也会自行委派,因为 description 里就是这么写的。

  4. 先看结论,再看 Blocker

    先读 Verdict(结论)那一行,再看 Blocker 行。每一行都写明了修复应该在哪里进行。Web 应用的修复回到主会话中完成,WebViewGold 配置的修复是 Config.swift 或 Config.java 中的小改动,商店控制台的事项则成为您在 App Store Connect 和 Play Console 中的待办清单。

  5. 修复,然后再审查一次

    让主会话逐个修复 Blocker,每个修复单独 commit,然后再运行一次子代理。同一个 commit 上第二次运行结果干净,就是可以开始构建的信号。

  6. 也检查线上网站

    子代理读的是代码。在您的生产 URL 上运行免费的 App Store 上架就绪检查和 Play Store 上架就绪检查,找出只有已部署的网站才会暴露的问题,然后在真实手机上测试构建版本。

审查提示词

把版本号、tag 和文件名换成您自己的。最后一段可以防止主会话在您读完报告之前就急着动手修改。

在项目根目录中粘贴到 Claude Code
在我们把 1.3 版本提交到 App Store 和 Google Play 之前,请使用 store-review-checker 子代理审查这个项目。

范围:整个 Web 应用,以及 native/ios 和 native/android。上一个通过审核的版本打了 v1.2.0 这个 tag,所以请特别留意该 tag 之后的 commit。应用信息、演示账号说明和我们的审核历史都在 docs/store-review.md 中。

子代理返回后,原样向我展示它的报告。然后只针对 Blocker 行提出修复计划,并分为三组:Web 应用改动、WebViewGold 配置改动、商店控制台任务。在我确认计划之前,不要编辑任何文件。

让审查者效果打折的陷阱

  • 给它写权限。拥有 Edit 和 Write 的审查者会开始动手修东西,它的发现最后会被淹没在 diff 里。让 tools 行保持只读,修复工作在主会话中完成。
  • 以为 Bash 无害。子代理遵循您平时的权限规则,所以除非您已经允许,它的 shell 命令仍会请求批准。如果您完全不希望它运行命令,就从 tools 行中删掉 Bash;它仍然可以读取每个文件。
  • 把会变的规则写死。美国店面关于支付链接的规则自 2025 年以来已有变化,Google 每年都会提高目标 API 级别,账户删除的细节也在不断明确。这个文件要求代理指明需要复核的准则,而不是把某条规则说成永久不变。每年把代理文件本身重读一遍。
  • 指望它能看到应用。它看不到渲染出来的界面、您在 App Store Connect 中的元数据,也看不到您的截图。如果想让它检查商店页面文字,就把文字粘贴到事实文件中,并在设备上测试。
  • 报告没有上限。没有 15 行的限制和严重程度分级,您会收到四十条“建议改进”。简短的报告才会有人读。
  • 路径错误。如果您的 iOS 项目位于 ios/ 而不是 native/ios,请修改文件,否则代理会把原生检查报告为“not found”(未找到)。

在相信一份干净的报告之前

  • 报告列出了它读取的文件:Web 应用路由、Config.swift、Config.java、Info.plist 和 AndroidManifest.xml。
  • 事实文件中的演示账号今天在生产 URL 上可以正常登录。
  • /privacy、/terms 和 /delete-account 在生产域名上都能打开,而不只是在开发环境中。
  • 两个配置文件都指向生产环境的 HTTPS 域名。
  • Info.plist 中的每条用途说明都对应一项您能演示的功能。
  • 您已在真实的 iPhone 和真实的 Android 手机上打开过构建版本,并在飞行模式下试过一次。
  • 您的审核备注遵循审核备注模板。

常见问题

Claude Code 的子代理文件放在哪里?

项目子代理放在仓库内的 .claude/agents/ 中,通过 Git 共享。希望在每个项目中都能使用的个人子代理放在 ~/.claude/agents/ 中。每个文件都是带 YAML frontmatter 的 Markdown;name 和 description 是必填项,其余都是可选的。

Claude Code 会在没被要求时自己使用这个子代理吗?

有可能。Claude 根据 description 字段来决定,这就是示例中列出具体触发场景并写上“use proactively”的原因。如果您想确保它被调用,就在提示词中点名这个子代理,或者用 @ 提及它。

审查子代理应该用哪个模型?

inherit 是合理的默认值。在重大发布之前,把 model 行改为 opus,可以获得更慢但更彻底的检查;如果您经常在小改动上运行它,就改为 sonnet。

它能检查我在 App Store Connect 中的商店页面和隐私问卷答案吗?

不能直接检查,因为它只能看到仓库。把描述、关键词、App Privacy 答案和数据安全(Data safety)答案复制到 docs/store-listing.md 这样的文件中,代理就会把它们与代码实际收集的数据进行比较。

报告干净就意味着 Apple 和 Google 会批准应用吗?

不是。它能排除可预见的问题,但审核人员测试的是运行中的应用,政策也会变化。对于其余情况,WebViewGold 提供了一张安全网:如果 Apple 或 Google 因与您的内容无关的原因拒绝了应用,您可以在购买后 14 天内申请退还许可证费用。

我能在 CI 或 Claude Code 网页版中运行同一个子代理吗?

可以。云端会话和 Claude Code GitHub Action 都在您仓库的检出副本中工作,所以已提交的代理文件在那里同样可用。GitHub Actions 指南展示了一个在每个 pull request 上运行上架就绪审查的工作流。

让您的应用上架商店的三种方式

结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 7×24 小时人工支持。

自己动手

$109 每个平台,一次性付费

WebViewGold 许可证:一个现成的 Xcode 或 Android Studio 项目。粘贴您的 URL,设置名称和图标,开启所需功能,构建并提交。永久免费更新。

在主页查看方案

Cloud Builder

$349 每个许可证,一次性附加购买

无需 Mac、Xcode 或 Android Studio:在浏览器中完成配置,我们在云端构建两个应用,并将其交付到 App Store Connect 和 Play Console。

Cloud Builder 如何运作 试用免费演示

Full Service

$698 每个平台 $798

把您的 URL 和图标发给我们。我们的团队在 72 小时内完成配置、构建并交付您的应用,白标,附源码项目。两个平台共 $1,158。

Full Service 详情 服务提供方: WeSetupYourWebViewApp

冬季特惠价格有效期至 2026年12月31日。

准备好发布您的应用了吗?

App Store & Google Play 审核通过保证 – 否则 14 天内退款

想直接交给我们?Full Service:我们在 72 小时内完成配置、构建并交付,每个平台 $698 起。有疑问?通过 7×24 小时在线聊天联系我们。

退款依据我们 FAQ 中列出的条件:应用因非内容原因被 Apple 和/或 Google 拒审,并在购买后 14 天内提出申请。