What problem does it solve? Monetizing a Flutter app with ads and in-app purchases is easy to get wrong: rewarded ads that auto-play, earn loops without caps, interstitials firing mid-task, and paying users still getting the ad SDK initialized all lead to bad reviews and App Store rejections. This Skill encodes the policy layer that keeps an ad-funded app honest and reviewable. ## Core Features & Use Cases - Rewarded earn loop policy: Opt-in rewarded views grant exactly one benefit, only on a genuine reward outcome modeled as a sealed type (Rewarded/Dismissed/NoFill), with a per-day cap enforced against an injected Clock. - Interstitial and banner placement rules: Interstitials fire only at natural breaks under a count-and-elapsed cap owned by the service, and banners never appear on the primary work surface. - Entitlement gating and launch order: One derived isEntitled provider gates everything, restore runs before the ad SDK initializes, and purchases commit through a single write path before the UI reacts. - Use Case: When adding a "watch to earn" credit system to a Flutter app, use this Skill to wire the rewarded flow so the earn button only appears when an ad is loaded, the daily cap holds, and a paying user never triggers the ad SDK or consent prompt. ## Quick Start Use the ads-and-iap-monetization skill to review my rewarded ads and in-app purchase implementation for policy violations before release.