rshankras/bundles-and-licensing
Revenue beyond the single-app price tag — own-app bundles, Family Sharing as a conversion lever, cross-developer bundles & suites, and institutional licensing via Group Purchases / Apple School & Business Manager. Use when a developer has multiple apps, a subscription worth sharing, complementary indie partners, or school/clinic/business buyers.
npx skills add https://github.com/rshankras/claude-code-apple-skills --skill bundles-and-licensing
Four ways one piece of software earns more than one price tag.
App bundles group up to 10 of your own paid apps — or apps sharing a subscription — at a bundle
price, with Complete My Bundle crediting what a user already paid.
discovery surface, not just a discount (pairs with the checkbox-storefront and portfolio
tactics in app-store/marketing-strategy).
and page presence, not margin per unit.
A checkbox per IAP/subscription in ASC, plus StoreKit handling for shared entitlements. One
purchase covers up to 5 additional family members — 6 entitlements, "6 for the price of 1".
"the whole family for one price" beats a 6× cheaper feel at maybe 1.5× usage cost, and it's a
paywall differentiator against non-sharing competitors.
isFamilyShareable rather than hardcoding "share with your family".ownershipType — PURCHASED vs FAMILY_PURCHASED — to tailor onboarding;the family member never saw your paywall or purchase flow.
purchaser gets a window to disable sharing first) — listen on Transaction.updates, and
check entitlement before merchandising (a family member may already be covered).
revocationDate + the REVOKE server notification by re-deriving entitlements fromthe full transaction history; test the revoked-from-family path.
what volume licensing (below) is for.
irreversible — turning it off only affects new purchases.
Combined subscriptions spanning apps from *different* developers — the "indie suite" model
(several complementary tools, one subscription).
cheaper than any paid channel.
manager + focus timer, not three writing tools). Draft revenue-share on *attribution of the
acquiring app*, not equal splits.
recent capability and terms/tooling are still settling; the fallback is coordinated own-app
pricing + mutual offer codes (generators/offer-codes-setup).
suite shares reputational blast radius (run app-store/originality-check thinking on partners).
Live for all auto-renewable subscriptions using StoreKit 2 (StoreKit 2 required). ON by default
for most new and existing StoreKit 2 subscriptions — but Family Sharing-enabled subscriptions
are opted OUT by default. Configure per subscription in ASC.
Two sale paths, same seat pool:
auto-assigned to seats.
institutional channel for schools, clinics, and businesses.
Mechanics:
price. The default is every seat at the current price — no discount exists until you configure
bands (e.g., $19.99 → $13.99 at 21–40 seats → $10.99 at 41+; a 50-seat purchase then averages
~20% off).
you already run member management — then use the App Store Server API group endpoints instead.
magnitude — one district buys more seats than a year of paywall A/B tests adds.
the built-in flow covers the first sale.
Purchases brings multi-seat to the mainstream store — different tools, same buyer.
| You have | Reach for |
|---|---|
| 2+ paid apps, shared audience | Own-app bundle |
| A shareable-job subscription | Family Sharing on |
| A complementary indie peer with real traffic | Cross-developer suite (or mutual offer codes today) |
| Institutions asking to buy seats | Group Purchases / volume price bands (live — configure in ASC) |
Portfolio: bundle-eligible apps? bundle live? Complete-My-Bundle pricing sane?
Family Sharing: enabled where the job is shareable? entitlement handling tested?
Partnerships: candidate named? terms sketched?
Institutional: demand evidence? seats model drafted? volume price bands configured?
Each gap routed to the numbered section above; StoreKit implementation to
generators/subscription-lifecycle, offer distribution to generators/offer-codes-setup.
monetization (pricing/tiers), generators/subscription-lifecycle, generators/offer-codes-setup, growth/store-growth-auditTake rshankras/bundles-and-licensing 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.