audit-monetization-iap
Skill9 starsChanged 42 days agoMITView on GitHub
Read-only audit of mobile IAP and subscriptions (StoreKit 2, Play Billing, RevenueCat): receipt validation, restore, lifecycle sync, grace periods, entitlements. Use when "audit our IAP" or "restore purchases broken". Web → audit-payment-system.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- kensaurus/skillsword for word, first seen Oct 1, 2026
Other versions1 project uses a version of this.
Word for word · 1
- kensaurus/skills★ 9100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository165 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .cursor/rules/approved-plan-execution.mdcCursor rule
- .cursor/rules/skill-workflows.mdcCursor rule
- .cursor/rules/verification-before-completion.mdcCursor rule
- llms.txtllms.txt
- audit-accessibilitySkill
- audit-agent-speedSkill
- audit-analyticsSkill
- audit-auth-flowsSkill
- audit-backend-architectureSkill
- audit-bundle-sizeSkill
- audit-cicdSkill
- audit-codemod-safetySkill
- audit-code-qualitySkill
- audit-code-reviewSkill
- audit-db-schemaSkill
- audit-doctrineSkill
- audit-env-paritySkill
- audit-fe-apiSkill
- audit-gate-logicSkill
- audit-i18nSkill
- audit-infra-costSkill
- audit-langfuse-llmSkill
- audit-llm-securitySkill
- audit-payment-systemSkill
- audit-performanceSkill
- audit-realworldSkill
- audit-registry-listingSkill
- audit-resilienceSkill
- audit-responsiveSkill
- audit-securitySkill
- audit-skill-conflictsSkill
- audit-ui-statesSkill
- audit-uiux-design-systemSkill
- audit-ux-journeysSkill
- audit-uxSkill
- backend-db-performanceSkill
- backend-error-handlingSkill
- backend-observabilitySkill
- backend-patternsSkill
- backend-realtimeSkill
- burndown-fullSkill
- complete-everythingSkill
- data-pipelineSkill
- data-visualizationSkill
- debug-errorSkill
- debug-fe-be-integrationSkill
- debug-sentry-monitorSkill
- deploy-npmSkill
- deploy-verifySkill
- design-apiSkill
- design-canvasSkill
- design-emailSkill
- design-frontendSkill
- design-generative-artSkill
- design-mobile-firstSkill
- design-motionSkill
- design-prdSkill
- design-systemSkill
- design-themeSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 17
Read-only. Entitlements must match what users paid for: no unlock-without-pay, no paid-but-locked, no double-charge, no lost purchase on …
- Very specific: line 36
Do not fire for "Stripe webhook / double charge on the website" → audit-payment-system.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
audit-monetization-iap — Store billing & entitlements
Degree of freedom: MIXED — Phases 0–1 [HIGH freedom]; Phase 2 sandbox
[LOW freedom — run exactly], sandbox only: a real purchase charges a real card and cannot be undone from here.
Read-only. Entitlements must match what users paid for: no unlock-without-pay, no paid-but-locked, no double-charge, no lost purchase on reinstall.
The two revenue killers are client-trusted entitlements (piracy) and broken restore (refunds + 1-star reviews).
Present findings. Do not patch store/server code until approved. Never test against real billing.
This skill vs neighbors
| Skill | Owns |
| audit-monetization-iap (this) | App Store / Play IAP, restore, store notifications |
audit-payment-system | Web money-movement, Stripe, ledgers, PCI |
plan-mobile-readiness | Submission paperwork (IAP via official billing is a checkbox) |
plan-aso | Store listing conversion, not receipt validation |
plan-privacy-compliance | Purchase-data in privacy labels |
Do not fire for "Stripe webhook / double charge on the website" →
audit-payment-system.
How to reason
- Observe — quote where "is Pro?" is decided and whether a receipt/token is verified server-side
- Interpret — can a client lie, or can a paid user lose access?
- Classify — client-trust / missing restore / lifecycle hole / correct
- Severity — client-trusted entitlement or broken restore = Critical
Worked example
Observe:
isProreadsRevenueCat.getCustomerInfo()on-device only; no App Store Server Notification handler. Interpret: a patched client can unlock Pro; refunds never revoke. Classify: client-trust + missing lifecycle sync. Severity: Critical. Finding: entitlements | client-only | Critical |lib/pro.ts:18| verify on server + ASN V2 / RTDN
Phase 0 — Detect the billing setup [HIGH freedom]
- Layer: raw StoreKit 2 / Play Billing, or RevenueCat / Adapty / Glassfy
- Entitlement check: client-only vs server-verified
- Backend store of subscription state vs trust-the-SDK-at-runtime
- Products: consumable, non-consumable, auto-renewing sub, trial / intro
Phase 1 — Correctness [HIGH freedom]
Receipt / token validation — Server-side (App Store Server API / Play Developer API). Client-trusted "purchase succeeded" is Critical. StoreKit 2 signed transactions still need verification, not just decode.
Source of truth — One place answers "does this user have Pro?" Backend must hear App Store Server Notifications V2 / Play RTDN for cancel, refund, billing failure — not only check at purchase time.
Restore — Discoverable Restore (Apple requires it). Recovers after reinstall / new device / re-login.
Lifecycle — trial, active, grace (billing retry), on hold, paused (Android), expired, refunded, up/downgrade. Missing grace locks paying users out. Missing revoke leaves refunded users in.
Trials — One trial per user/family; no farm. UI must not promise a trial the store will refuse.
Cross-platform — iOS + Android (+ web): one purchase unlocks via backend, or the user is charged twice.
Prices — From the store (localized), never hardcoded.
Edges — Interrupted purchase resumes; sandbox vs prod receipt mix-up; clock-gamed trials.
Phase 2 — Sandbox only [LOW freedom — never real billing]
Exercise: fresh purchase, restore on clean install, cancel → access ends at period end, sandbox refund → revoke, trial → convert, interrupted purchase. Confirm backend entitlement flips.
Definition of Done
- Layer + products inventoried
- Every entitlement traced to server verify, or client-trust flagged Critical
- Store notifications wired or gap logged
- Restore present and sandbox-verified
- Lifecycle grid complete
- Cross-platform double-charge checked
- Prices from store
- Nothing patched
Self-critique before reporting [LOW freedom — do not skip]
- Evidenced — file:line for the entitlement SoT, not "RevenueCat probably verifies"
- No real charges — sandbox only
- Severity justified — Critical = unlock-without-pay or paid-but-locked
- Right owner — web Stripe →
audit-payment-system - Restore probed — "button exists" is not restore-verified
Output format
- Setup — layer, products, entitlement SoT
- Findings — issue | severity |
file:line| fix shape - Lifecycle grid — state × handled?
- Sandbox log — scenario | expected | actual
- Fix plan — server verify + restore first
Related
audit-payment-system— web / Stripe / ledgerplan-mobile-readiness— store review gatesplan-aso— listing, not billing correctnessplan-privacy-compliance— purchase data disclosure
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

