Skip to content
Agentmart
Submit a tool

mufeng-ios-release-audit

iOS App Store 上线前完整发布审计。逐项核验权限文案、托管 EULA/条款 URL 及违禁内容条款、硬编码价格、.lproj 本地化完整性、App 图标、版本号与 build 号、数据层强制解包、零编译警告、多语言商店元数据,并产出微信/X/Reddit 上线文案。触发词:iOS…

Skill by ichangyou

IndexedMIT★ 2
Write a review

Chalk Labs

Need help deploying mufeng-ios-release-audit?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/ichangyou-mufeng-ios-release-audit

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

iOS App Store 上线前完整发布审计。逐项核验权限文案、托管 EULA/条款 URL 及违禁内容条款、硬编码价格、.lproj 本地化完整性、App 图标、版本号与 build 号、数据层强制解包、零编译警告、多语言商店元数据,并产出微信/X/Reddit 上线文案。触发词:iOS 要上线了、上线前检查、提交 App Store、会不会被拒、审核会过吗、iOS release 检查、发版前审查、iOS 发布审计、iOS release audit、生成上线文案。仅限 iOS/App Store 项目。

Use cases: security

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/mufeng-ios-release-audit

What's inside

Skill name
mufeng-ios-release-audit
Description
iOS App Store 上线前完整发布审计。逐项核验权限文案、托管 EULA/条款 URL 及违禁内容条款、硬编码价格、.lproj 本地化完整性、App 图标、版本号与 build 号、数据层强制解包、零编译警告、多语言商店元数据,并产出微信/X/Reddit 上线文案。触发词:iOS 要上线了、上线前检查、提交 App Store、会不会被拒、审核会过吗、iOS release 检查、发版前审查、iOS 发布审计、iOS release audit、生成上线文案。仅限 iOS/App Store 项目。
License
MIT
Compatibility
Codex and Claude Code. An iOS project; macOS and Xcode for build verification.
Instructions
321 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (2)

  • README.md
  • SKILL.md

SKILL.md (first lines)

# iOS App Store 完整发布审计

对着代码库逐项核验,输出 pass/fail 表格。**全程只读,不改代码**——发现问题先报告根因和修复方案,等用户批准再动手。

## 来源

清单的每一项都来自真实事故或真实审查,不是通用最佳实践的罗列:

| 会话 | 项目 | 产出的教训 |
|---|---|---|
| 2026-07-09 | SpeechNote | **Guideline 3.1.2 反复拒审**:Terms 只是 App 内本地文本页,没有网址,导致商店页描述里没有可点 EULA 链接 |
| 2026-07-12 上午 | ShotZen | 上线前审查:版本号 1.1.1 与素材 1.2.0 不符;CoreData `fatalError` 启动崩溃隐患 |
| 2026-07-12 晚 | ShotZen | 商店文案四语;简中名称必须锁定备案名 |
| 2026-07-12 深夜 | ShotZen | 定价:`.lproj` 里 3 条硬编码旧价死字符串;静态截图印死价格风险 |
| — | Creem | 支付通道审核拒因:Terms 必须明确禁止 NSFW 内容——URL 可达不等于内容达标 |

## 前置

确认在 iOS repo 根目录(有 `*.xcodeproj`)。所有文件枚举**一律用 `git ls-files`**——`find` 会命中 `build/`、`.build/DerivedData/` 里的构建产物副本,导致同一语言重复统计、结果失真(已踩过)。

---

## 1. 权限说明文案

两种存放位置,**都要查**,查空了不等于 FAIL:

```bash
# (a) GENERATE_INFOPLIST_FILE = YES 的项目,文案在 pbxproj 里(ShotZen 是这种)
grep -oE "INFOPLIST_KEY_NS[A-Za-z]*UsageDescription = [^;]*;" *.xcodeproj/project.pbxproj | sort -u

# (b) 有独立 Info.plist 的项目(SpeechNote 是这种,(a) 会返回空)
grep -A1 "UsageDescription" $(git ls-files "*Info.plist" | head -1)
```

(a) 返回空只说明项目用的是 (b),别误判成"没有权限文案"。

**判定**:代码里实际请求的每种权限都要有对应文案;文案说清**为什么要**和**数据去哪**,不能只写 "需要相册权限"。
参考达标写法(ShotZen):"ShotZen reads your screenshots to organize them with on-device AI. Photos never leave your device."

顺带查出口合规声明,缺了每次提交都要手填加密问卷:

```bash
grep -o "ITSAppUsesNonExemptEncryption[^;]*;" *.xcodeproj/project.pbxproj | sort -u
```

## 2. 托管的条款/EULA URL

**这是唯一一次真实 App Store 拒审的位置,优先级最高。**

3.1.2 要求:有自动续订/内购的 App,**商店页描述(Description)字段**里必须有可点击的 Terms of Use (EULA) 链接。注意三点,全是 SpeechNote 那次踩过的:

- 「元数据」指**商店页描述字段**,不是推广文本,不是审核备注,不是 App 内
- App 内购买页有「服务条款」按钮**不算数**——SpeechNote 内购页有按钮,照样被拒
- 必须是完整 `https://` 网址才会被 App Store 渲染成可点链接;写「服务条款」四个字或相对路径无效

先看代码里的法务 URL 到底存不存在:

```bash
grep -rhoE 'https://[A-Za-z0-9./_-]*(privacy|terms|eula|legal)[A-Za-z0-9./_-]*' --include="*.swift" . | sort -u
```

**关键判定**:Terms/EULA 是否只是个本地文本常量(如 `presentLegalPage(termsContent)`)而**根本没有网址**。这正是 SpeechNote 反复被拒的根因——不是"URL 填错了",是"URL 压根不存在"。若 grep 只出隐私政策、没出 terms,直接判 FAIL。

再验证每个 URL 真能访问(reviewer 会点):

```bash
for u in <上一步的 URL>; do
  echo "$(curl -s -o /dev/null -w '%{http_code}' -L --max-time 15 "$u")  $u"
done
```

非 200 判 FAIL。

**若确实缺 EULA 网址**,两个选择:
- 省事:用 Apple 标准 EULA `https://www.apple.com/legal/internet-services/itunes/dev/stdeula/`
- 一致(推荐):与隐私政策同域自托管一份 terms 页,同时把 App 内按钮也改成开这个网址

⚠️ 若 App 内用的是自定义条款文本、元数据却填 Apple 标准 EULA,二者内容不一致是隐患。

## 3. 条款内容覆盖违禁内容

**教训来源**:Creem 审核拒因——支付通道要求 Terms 明确禁止 NSFW 内容。第 2 项的 200 只证明页面存在,不证明内容达标。

对第 2 项拿到的 Terms/EULA URL 拉正文检查:

```bash
curl -sL --max-time 20 "$TERMS_URL" | sed 's/<[^>]*>//g' | \
  grep -inE 'prohibit|forbidden|not permitted|nsfw|adult content|porn|sexual|illegal|unlawful|禁止|不得|违法'
```

**判定**:
- 命中明确的禁止性条款(违禁内容 / 违法用途 / 年龄门槛,至少其一)→ `✅ PASS`,引用命中行作证据
- URL 可达但无命中 → `⚠️ 需人工确认`,并在报告里给出建议补写的条款要点:禁止色情/NSFW 内容、禁止违法用途、平台对违规内容的处置权、使用年龄门槛
- 页面 JS 渲染导致 curl 拿不到正文 → `⚠️ 需人工确认`,注明原因,让用户人工打开核对
- 若用 Apple 标准 EULA,本项自动 PASS(Apple 条款已覆盖),但要提醒:App 内自定义条款与之不一致仍是隐患(见第 2 项)

## 4. 付费墙无硬编码价格

**先摆正认知**:在用的 Paywall 代码通常本来就没问题——ShotZen 的价格、月均价、省钱角标全是运行时从 StoreKit `displayPrice` 取或实时算的。真正的坑在另外三处。

**(a) `.lproj` 里的死字符串**(ShotZen 实际中招,3 条硬编码 `$9.99`/`$14.99`):

```bash
grep -rnE '[¥$€£][0-9]+([.,][0-9]{2})?|[0-9]+\.99' $(git ls-files "*.lproj/Localizable.strings")
```

命中后**不要直接判 FAIL**——先 grep 该 key 是否还被 `L()` 引用。ShotZen 那 3 条无人引用、不显示,但属于地雷(有人接回去就显示错价),结论是删掉。

**(b) Swift 源码里的价格字面量**:

```bash
grep -rnE '"\s*[¥$€£][0-9]+' --include="*.swift" .
```

**(c) 静态营销截图印死价格 —— 风险最大的一项**
商店截图是静态图,不会跟着动态价格变。改价后截图里的价格必然对不上,既影响转化,reviewer 也可能挑。**这项无法自动检测**,必须让用户人工确认:截图里的 Paywall 画面有没有印具体价格。在表格里标为「需人工确认」。

**(d) 项目 CLAUDE.md 里关于价格的描述可能过时**
ShotZen 的 CLAUDE.md 曾写着「Save 69% chip 硬编码、调价要同步改文案」,核实下来角标是实时算的,这条已过时。**以代码为准,不要信文档**。

From ichangyou/mf-ai-skills, MIT.

More from ichangyou/mf-ai-skills

Signals

Stars
2
Forks
0
Open issues
0
Last commit (this folder)
Oct 5, 2026 (26 days ago)
Last release
Jun 12, 2026 (4 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from ichangyou

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get mufeng-ios-release-audit running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying mufeng-ios-release-audit?

CallGet help
Cite this page

mufeng-ios-release-audit skill. Agent Mart. https://agentmart.dev/skills/ichangyou-mufeng-ios-release-audit (last updated 2026-10-24)