brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
subscription-offersGenerates StoreKit 2 code for all subscription offer types — introductory, promotional, offer codes, and win-back. Includes eligibility checks, offer presentation, and the preferredSubscriptionOffer modifier. Use when adding subscription offers, free trials, or promotional pricing.
Independent GitHub snapshot · Automated classification · Original documentation governs
Generate complete StoreKit 2 implementation for all four subscription offer types with eligibility verification, offer presentation, and transaction handling.
Use this skill when the user:
import StoreKit)SubscriptionStoreView offers, iOS 15+ for manual)paywall-generator was already usedGlob: **/*Offer*.swift, **/*Eligibility*.swift
Grep: "introductoryOffer" or "promotionalOffers" or "winBackOffers"
If existing offer code found, ask:
product.subscription?.introductoryOfferproduct.subscription?.promotionalOffersofferType (1 = introductory, 2 = promotional, 3 = offer code) + offerIdentifiertry await AppStore.presentOfferCodeRedeemSheet()product.subscription?.winBackOffers| Typical trial | Categories |
|---|---|
| ~1 month | Entertainment, social, music, books |
| 1 week | Health & fitness, productivity, education, weather |
| 3 days | Photo/video, games, utilities, business |
isEligibleForIntroOffer and render only offers the user can actually redeem.| Playbook | Trigger | Move |
|---|---|---|
| Win-back | Subscription expired | Offer on relaunch / re-engagement |
| Retention | Auto-renew flipped off — you get the server notification the moment it flips | Save offer before expiry |
| Upgrade | Downgrade notification received | Nudge back to the higher tier |
| Customer-service appeasement | Support flags a bad experience | Offer on next launch |
| Loyalty | Long tenure (e.g., a free month at the 11th consecutive renewal) | Surprise reward |
| Save | User heads to Manage Subscriptions | Intercept with an offer first |
Ask user via AskUserQuestion:
Which offer types? (multi-select)
Introductory offer details (if selected)
Deployment target
Server-side signature (if promotional offers selected)
Read templates.md for all offer implementation code.
SubscriptionOfferManager.swift — Central offer management
OfferEligibility.swift — Eligibility verification
isEligibleForIntroOffer)OfferConfiguration.swift — Offer type definitions and configuration
OfferBannerView.swift — Contextual offer banners
OfferCodeRedemptionView.swift — Offer code entry UI (if offer codes selected)
- If Sources/Store/ exists → Sources/Store/Offers/
- If Store/ exists → Store/Offers/
- If Subscriptions/ exists → Subscriptions/Offers/
- Otherwise → Offers/
Store/Offers/
├── SubscriptionOfferManager.swift # Central offer management
├── OfferEligibility.swift # Eligibility verification
├── OfferConfiguration.swift # Offer type definitions
├── OfferBannerView.swift # Contextual offer UI
├── OfferCodeRedemptionView.swift # Code entry (optional)
├── OfferSignatureProvider.swift # Server signatures (optional)
└── OfferAnalytics.swift # Offer tracking (optional)
Check Introductory Offer Eligibility:
let manager = SubscriptionOfferManager()
let isEligible = await manager.isEligibleForIntroOffer(
productID: "com.app.subscription.monthly"
)
Present Best Available Offer:
// Automatically selects the best offer for the user's state
let offer = await manager.bestAvailableOffer(
for: "com.app.subscription.monthly"
)
// Use with SubscriptionStoreView (iOS 16.4+)
SubscriptionStoreView(groupID: groupID)
.preferredSubscriptionOffer(offer)
Present Offer Code Sheet:
// iOS 16+
try await AppStore.presentOfferCodeRedeemSheet()
Win-Back Offer (iOS 18+):
let winBackOffers = await manager.availableWinBackOffers(
for: "com.app.subscription.monthly"
)
if let bestOffer = winBackOffers.first {
// Present win-back UI
}
generators/win-back-offers — Dedicated win-back flow skillgenerators/paywall-generator — Full paywall with offer integrationapp-store/marketing-strategy — Strategic offer planning