Field Manual / A Claude Code Skill for Paywalls: The Config That Survived Two Rejections
A Claude Code Skill for Paywalls: The Config That Survived Two Rejections
Field manual · last reviewed 2026-07-27
A paywall skill for Claude Code is a SKILL.md workflow that builds or audits a subscription paywall against a fixed standard instead of re-deriving one per app: the four-placement set (onboarding, session-start, action-gated, win-back), honest pricing presentation, StoreKit 2 wiring, and the App Review compliance rules that decide whether the app ships at all. AgentSource's iOS Paywall Playbook is that skill, and the rules in it were paid for — two documented rejections of an app in the same portfolio, under Guideline 3.1.2(c) (the on-paywall free-trial toggle) and Guideline 5.6 (a post-cancel recovery sheet, rejected even when fully disclosed). Its captured field report is a real audit run: session-start placement missing entirely, a post-cancel sheet removed, and a savings badge computed in Decimal that rendered "SAVE 0%" at runtime because the mock screenshots hid it. One-time $9, or $29 in the App Store Kit with five more shipping skills. No paywall SDK required — the patterns are plain StoreKit 2. Compatible with Claude Code, claude.ai & Codex.
A paywall is the one screen in a subscription app that can fail in two directions at once. It can convert at nearly zero because a placement never fires, or it can keep the app out of the store entirely because a pattern the optimization blogs call canonical is a rejection trigger. Both failures are quiet. Neither one shows up in a crash log, and neither one is the kind of thing a general-purpose "build me a paywall" prompt knows to look for — because the rules that matter here aren't in the SwiftUI documentation, they're in App Review's guidelines and in whatever the last reviewer decided. A paywall skill for Claude Code is a fixed standard the agent applies instead of re-deriving one per app. This page is about the one AgentSource ships for the job — the iOS Paywall Playbook, $9 — and it carries a captured field report: real output from a documented audit, readable before you pay.
What the skill actually encodes
A skill is a plain-markdown SKILL.md package — a folder of instructions the agent loads and follows, nothing to compile, no SDK to install. This one holds four things that are tedious to remember and expensive to forget:
- The four-placement set. Onboarding, session-start, action-gated, and win-back, each with its trigger and its frequency cap. Most apps ship one of the four and wonder where the revenue went.
- Honest pricing presentation. The per-week math, a correctly computed savings badge, and the rule that the billed amount is the conspicuous element with the trial stated subordinately — which is also what keeps you clear of a misleading-pricing read under Guideline 3.1.2.
- StoreKit 2 patterns, copy-paste. Session-start placement, cancel detection, verified-transaction unlock. Plain StoreKit 2 and SwiftUI — no RevenueCat, no Superwall, no paywall vendor of any kind required.
- A compliance reference with two real rejections in it. Plus the full 12-item Guideline 3.1.2 disclosure checklist, including the subtle miss that bounces apps: legal links that technically exist but render too small and too gray for a reviewer to find.
The part that was paid for in rejections
Two patterns that paywall-optimization writing treats as standard practice got a real app in this portfolio rejected.
The first was the on-paywall free-trial toggle — Guideline 3.1.2(c). The second is the one worth reading twice: a post-cancel recovery sheet, auto-presented when the user dismissed the native purchase sheet. It was fully disclosed — price, auto-renewal terms, legal links, all present — and that is precisely why the team believed it was safe. A sibling app's rejection under Guideline 5.6 proved otherwise. The lesson written into the skill is a single sentence: the trigger is the violation, and disclosure does not cure it. The reviewer's own language is quoted in the compliance reference alongside the replacement that got the resubmission through.
That's the difference between a playbook and a listicle. A listicle tells you what tends to convert. This one also tells you which of those things will get you bounced, because somebody already ate the bounce.
The field report: four gaps and a badge that read "SAVE 0%"
The proof isn't the feature list — it's the captured run. The field report on the product page is the playbook's audit pass against a shipped contract-review app in the same factory, and it's the actual output, not a summary of it.
Placement coverage. Onboarding was present. Session-start was missing entirely — rg 'scenePhase|sessionPaywall' returned zero hits, which the skill flags as the most common gap of the four. Action-gated was partial: hard gates existed on export and compare, but there was no free first taste of the core feature, so it was changed to one free scan before the gate with the paywall copy updated to say so. Win-back offers weren't configured at all, flagged as an App Store Connect task rather than a code change.
Compliance. The post-cancel sheet described above was found and removed; cancel now returns to the same paywall with nothing popped. The trial toggle was already absent. Billed-amount conspicuousness passed.
Pricing presentation. The savings badge was computed in Decimal and rendered "SAVE 0%" at runtime. This is the finding worth dwelling on: the mock and screenshot modes hid it completely, and it only surfaced on a live simulator run of the real paywall. A reviewer of the code would have seen a correct-looking formula. The loss-aversion anchor — a bare struck-through price — was relabeled "at weekly rate" under the honest-label rule, and the CTA moved from "7-Days free" to "1-Week free" so it reads as one unit of the billing period rather than a countdown.
Four placement and compliance gaps plus two pricing-presentation bugs, found and fixed in one audit pass, on an app that already looked finished. Re-audited across subsequent builds: zero drift.
Where it sits in the shipping sequence
A paywall audit is not the last gate, and it isn't the first one either. Two skills bracket it:
- Deep QA Audit Loop ($9) runs before. It's a loop with hard exit conditions — it stops at zero critical bugs, not after a set number of rounds — and its own field report is a
>= dailyTargetcomparison that fired a 365-day "PERFECT" streak for a brand-new user across 13 call sites. Fix the app before you audit the thing selling it. - App Review Pre-Submit Checklist ($9) runs after, as the final gate before archive and upload. Every check in it exists because a real submission failed.
Buy the set: the App Store Kit
Individually those three are $9 each. The App Store Kit issues all three for $29, alongside the keyword engine, the screenshot playbook, and the review-response engine — six skills covering build-complete through live, converting, and reviewed. If you're heading into a submission, that's the set that covers the whole arc rather than one screen of it.
One honest limit, stated plainly: the playbook can fix a configuration, and it cannot make people want your product. The published benchmarks it carries are reference points to judge your numbers against, not a promise about them. What it does catch reliably is the mechanical zero — the placement that never fires, the badge rendering 0%, the pattern that kept the app out of the store in the first place. That's the failure worth $9 to rule out. Read the full field report first, then decide.
QUESTIONS
Do I need RevenueCat or Superwall for this to work?›
No. Every pattern in the playbook is plain StoreKit 2 and SwiftUI — session-start placement, cancel detection, verified-transaction unlock — so it drops into an app with no subscription SDK at all. The methodology draws on published paywall-optimization material and on the apps this factory has actually shipped, but nothing in it depends on a vendor. If you already run an SDK, the standard still applies; you're wiring the same four placements through a different API.
Are the two rejections real, or illustrative examples?›
Real, and both happened to an app in our own portfolio. The compliance reference quotes Apple's reviewer language directly and shows the compliant replacement that got the resubmission through. The uncomfortable one is Guideline 5.6: the app auto-presented a recovery sheet when a user cancelled the native purchase sheet, and it was fully disclosed — price, auto-renewal terms, legal links all present — which is exactly why we believed it was safe. It was not. The trigger is the violation; disclosure does not cure it.
Does it build a paywall from scratch or audit the one I have?›
Both, from the same standard. On an existing app the audit greps run over any Swift codebase and come back with file:line findings — the field report shows a run where `rg 'scenePhase|sessionPaywall'` returned zero hits, meaning the single most commonly missed placement wasn't there at all. On a new app it builds to the same config instead of inventing one. The value is that "done" means the same thing on every app you ship rather than whatever you remembered that week.
Will it tell me what conversion rate to expect?›
It gives you published benchmarks for trial-start, trial-to-paid, and install-to-paid to judge your own numbers against — and it does not promise you'll hit them. A playbook can fix a broken or non-compliant configuration; it cannot make people want the product. What it does reliably catch is the case where the numbers are near zero for a mechanical reason: a placement that never fires, a badge rendering 0%, or a compliance pattern that kept the app out of the store.
Does it work in Codex, or only Claude Code?›
Both. It's plain SKILL.md markdown with no runtime lock-in — compatible with Claude Code, claude.ai & Codex. Only the install location differs (Claude Code reads from a skills directory, claude.ai uploads into a Project, Codex references it from AGENTS.md), and the package ships a QUICKSTART with the exact steps for each.
THE GEAR
field-tested · see it work before you payiOS Paywall Playbook
The paywall standard we ship on every app. Two rejections paid for it — you don't have to.
v1.0.0 · updated 2026-07-17 · field report included
App Review Pre-Submit Checklist
The final gate before archive + upload. Every check here exists because a submission failed.
v1.0.0 · updated 2026-07-17 · field report included
Deep QA Audit Loop
QA that doesn't stop at N rounds. It stops at zero critical bugs — or it keeps going.
v1.0.0 · updated 2026-07-17 · field report included