Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generates referral/invite infrastructure with unique codes, deep link sharing, reward tracking, and fraud prevention. Use when user wants referral codes, invite friends flow, or viral growth mechanics.
.claude/skills/rshankras-referral-system/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 76% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-23 | ✗→✓ | ▲ Improved | 277% | 0% |
Generate a production referral/invite system with unique code generation, deep link sharing, reward tracking, fraud prevention, and SwiftUI views for inviting friends and monitoring referral performance.
Use this skill when the user:
Search for existing referral/invite code:
Glob: **/*Referral*.swift, **/*Invite*.swift, **/*InviteCode*.swift
Grep: "referralCode" or "inviteCode" or "ReferralManager"If existing referral system found:
Search for existing deep link handling:
Glob: **/*DeepLink*.swift, **/*UniversalLink*.swift
Grep: "onOpenURL" or "userActivity" or "NSUserActivity"If deep link handling exists, integrate with it rather than generating a standalone handler.
Ask user via AskUserQuestion:
A7K2M9) -- recommendedMYAPP-A7K2M9)john-A7K2)Read templates.md for production Swift code.
Generate these files:
ReferralCode.swift -- Model with unique code generation, expiration, usage trackingReferralManager.swift -- @Observable manager for code lifecycle and redemptionReferralReward.swift -- Reward configuration, conditions, and fulfillment trackingInviteView.swift -- SwiftUI invite screen with code display and sharingReferralDashboardView.swift -- Stats view for referral performanceReferralDeepLinkHandler.swift -- Deep link parsing and redemption triggeringCheck project structure:
Sources/ exists -> Sources/Referral/App/ exists -> App/Referral/Referral/After generation, provide:
Referral/
├── ReferralCode.swift # Code model with generation and validation
├── ReferralManager.swift # @Observable manager for code lifecycle
├── ReferralReward.swift # Reward config and fulfillment tracking
├── InviteView.swift # Invite screen with share actions
├── ReferralDashboardView.swift # Referral stats dashboard
└── ReferralDeepLinkHandler.swift # Deep link parsing and redemptionAdd deep link handling in your App struct:
swift@main struct MyApp: App { @State private var referralManager = ReferralManager() private let deepLinkHandler = ReferralDeepLinkHandler() var body: some Scene { WindowGroup { ContentView() .environment(referralManager) .onOpenURL { url in if let code = deepLinkHandler.extractCode(from: url) { Task { await referralManager.redeemCode(code) } } } } } }
Present the invite screen:
swiftstruct ProfileView: View { @State private var showInvite = false var body: some View { Button("Invite Friends") { showInvite = true } .sheet(isPresented: $showInvite) { InviteView() } } }
Show referral dashboard:
swiftNavigationLink("My Referrals") { ReferralDashboardView() }
swift@Test func generatedCodeIsUnique() async throws { let manager = ReferralManager(store: InMemoryReferralStore()) let code1 = await manager.generateCode(for: "user-1") let code2 = await manager.generateCode(for: "user-2") #expect(code1.value != code2.value) } @Test func redemptionGrantsReward() async throws { let manager = ReferralManager(store: InMemoryReferralStore()) let code = await manager.generateCode(for: "referrer-1") let result = await manager.redeemCode(code.value, redeemedBy: "invitee-1") #expect(result == .success) #expect(manager.rewards(for: "referrer-1").count == 1) #expect(manager.rewards(for: "invitee-1").count == 1) } @Test func selfReferralIsRejected() async throws { let manager = ReferralManager(store: InMemoryReferralStore()) let code = await manager.generateCode(for: "user-1") let result = await manager.redeemCode(code.value, redeemedBy: "user-1") #expect(result == .fraudDetected(.selfReferral)) } @Test func expiredCodeIsRejected() async throws { let manager = ReferralManager(store: InMemoryReferralStore()) let code = ReferralCode( value: "EXPIRED1", ownerID: "user-1", expiresAt: Date.distantPast ) let result = await manager.redeemCode(code.value, redeemedBy: "user-2") #expect(result == .expired) }
swift// Generate code for current user let code = await referralManager.generateCode(for: currentUserID) // Share via system share sheet let shareURL = deepLinkHandler.buildShareURL(for: code) let message = "Join me on MyApp! Use my code \(code.value) for a bonus." let activityItems: [Any] = [message, shareURL]
swift// On app launch or deep link open let result = await referralManager.redeemCode(codeString, redeemedBy: currentUserID) switch result { case .success: showRewardAnimation() case .alreadyRedeemed: showAlert("You've already used a referral code.") case .expired: showAlert("This referral code has expired.") case .fraudDetected(let reason): logger.warning("Fraud detected: \(reason)") case .invalid: showAlert("Invalid referral code.") }
swift// Check pending rewards let pending = referralManager.pendingRewards(for: currentUserID) for reward in pending { await fulfillReward(reward) await referralManager.markFulfilled(reward) }
apple-app-site-association file on your server.generators/deep-linking -- Universal link and deep link infrastructuregenerators/share-card -- Visual share cards for social sharinggenerators/analytics-setup -- Track referral funnel eventsOther measured skills in the registry, with their headline benchmark lift.