US web checkout via the StoreKit External Purchase Link entitlement — currently 0% Apple commission (litigation ongoing), how to ship it safely, and how to architect for a commission flip so a future ruling is a config change, not a rewrite. Use when adding external purchase links, weighing web checkout vs IAP, or planning US-storefront pricing strategy.
npx skills add https://github.com/rshankras/claude-code-apple-skills --skill external-purchases
On the US storefront, apps may link out to a web checkout for digital goods using the
StoreKit External Purchase Link entitlement — and as of mid-2026, court orders have Apple's
commission on those purchases at 0%, with the fee case still moving through district court.
This is the largest indie revenue unlock of the era, and it is *reversible by a ruling* — so the
engineering rule is: ship it now, architect it so a commission can be flipped on later.
> Verify current state before relying on this: the entitlement terms, the commission rate, and
> the litigation status have each changed more than once. Treat every number here as
> "true as of 2026-07, re-check."
entitlements/terms; don't extrapolate from the US).
com.apple.developer.storekit.external-purchase-link + matchingInfo.plist declaration — a bare Link("Buy", …) without it is still a rejection (see
app-store/rejection-handler §3.1.1).
ExternalPurchaseLink /disclosure sheet where required). Don't dark-pattern the IAP option away if you keep both.
taxes; Apple's merchant-of-record role no longer applies.
Design so that a future "Apple takes N% of external purchases initiated in-app" ruling changes a
config value, not your codebase:
session (source=app, timestamp, storefront) — web-organic checkouts stay unstamped. If a
commission returns, it applies to a knowable, logged subset.
CommissionPolicy (remote-configurable): rate, applies_to,effective_date. Report/accrue against it from day one — at 0% it's just a counter.
conversion drop through a web checkout (Apple's sheet, Safari hop, payment form) is real;
whether 0% beats IAP's frictionless 85–70% is an *empirical* per-app question.
openURL("https://…/buy") calls through features — un-auditable, un-flippable.some US users convert better in-sheet).
| Situation | Lean |
|---|---|
| Subscriptions, US-heavy, ARPU high enough to absorb processor fees + your own support | Web checkout for new subs; keep IAP for the rest of world |
| Impulse-priced consumables/unlocks | IAP — checkout friction eats more than 15–30% commission |
| Existing subscriber base on IAP | Don't force-migrate; offer web at renewal decision points |
| B2B/prosumer, invoicing needs | Web checkout regardless of commission math |
Status: entitlement present? · storefront scope correct (US-only gating)? ·
link-out service centralized? · CommissionPolicy flippable? · funnel analytics live?
Verdict + the one next step.
app-store/rejection-handler (the non-entitled rejection pattern), generators/subscription-lifecycle, monetization (pricing), growth/store-growth-auditCreate SEO-optimized marketing content with consistent brand voice. Includes brand voice analyzer, SEO optimizer, content frameworks, and social media templates. Use when writing blog posts, creating social media content, analyzing brand voice, optimizing SEO, planning content calendars, or when user mentions content creation, brand voice, SEO optimization, social media marketing, or content strategy.
Creates comprehensive content outlines and topic clusters for SEO. Plans content calendars and identifies topic gaps. Use PROACTIVELY for content strategy and planning.
Handle mental health crisis situations in AI coaching safely. Use when implementing crisis detection, safety protocols, emergency escalation, or suicide prevention features. Activates for crisis keywords, safety planning, hotline integration, and risk assessment.
When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms. Also use when the user mentions 'LinkedIn post,' 'Twitter thread,' 'social media,' 'content calendar,' 'social scheduling,' 'engagement,' or 'viral content.' This skill covers content creation, repurposing, and platform-specific strategies.
Build and scale partner ecosystems that drive revenue and platform adoption. Use when building partner programs from scratch, tiering partnerships, managing co-marketing, making build-vs-partner decisions, or structuring crawl-walk-run partner deployment.
Brainstorm 3-5 monetization strategies with audience fit, risks, and validation experiments. Use when exploring revenue models, evaluating pricing strategies, or deciding how to monetize a product.
Brainstorm product positioning ideas differentiated from competitors. Identifies top competitors and generates positioning statements with rationale. Use when developing product positioning, differentiating from competitors, or crafting brand positioning strategy.
Generate a full campaign brief with objectives, audience, messaging, channel strategy, content calendar, and success metrics. Use when planning a product launch, lead-gen push, or awareness campaign, when you need a week-by-week content calendar with dependencies, or when translating a marketing goal into a structured, executable plan.
Take rshankras/external-purchases from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.