Privacy-preserving ad measurement with AdAttributionKit (SKAdNetwork's successor) — install and re-engagement attribution, conversion-value strategy under crowd anonymity, and end-to-end postback testing. Use when running paid acquisition beyond Apple Ads, measuring re-engagement campaigns, designing conversion values, or migrating from SKAdNetwork.
npx skills add https://github.com/rshankras/claude-code-apple-skills --skill ad-attribution
You can't optimize paid traffic you can't measure. AdAttributionKit is Apple's
privacy-preserving attribution framework — interoperable with SKAdNetwork, and the go-forward
path (it also works in alternative marketplaces). This skill covers the *advertised-app* side:
what an indie running paid campaigns must implement and how to design conversion signals that
survive privacy thresholds.
Note the seam: Apple Ads attribution uses the AdServices framework, not AdAttributionKit —
campaigns there are measured in the Apple Ads console (see app-store/apple-search-ads). This
skill is for every *other* paid channel (ad networks, social, publishers).
Ad network signs an ad (compact JWS impression) → publisher app shows it → user installs (or
re-engages) → after a privacy-delayed measurement window, a postback with your conversion
info goes to the ad network (and optionally to you). Attribution requires no user tracking;
the price is coarser data, governed by crowd anonymity.
downgrade fine → coarse and can trim the 4-digit campaign source-identifier to as few as
its first 2 digits — so encode what matters most (campaign family, geo tier) in the
first two digits, detail in the rest.
purchase), not vanity events. 64 slots go fast; reserve ranges (e.g. 0–15 activation,
16–47 monetization ladder, 48–63 reserved).
updateConversionValue(_:) / PostbackUpdate; set lockPostback when the valueis final to schedule transmission (still privacy-delayed, never instant).
conversionTypes (.install / .reengagement); the **first re-engagement update must land
within 48 hours**.
tag from the re-engagement URL's query items, store it, and pass it in PostbackUpdate —
without a tag, updates hit only the most recent conversion.
UIEventAttributionView over the tappable ad + appImpression.handleTap()within 15 minutes of creating the impression.
beginView()/endView() on the same instance; ≥2 seconds on screen tocount; one open view-through per network per advertised app.
SKOverlay / SKStoreProductViewController: attach the impression — they count view onpresent, click on tap.
(AdAttributionKitConfigurations → AttributionWindows); you can ignore "view" or "click"
(not both) per network.
install-cooldown-hours, reengagement-cooldown-hours) so are-engagement tap minutes after an install isn't double-attributed.
crowd-anonymity tier — a bonus signal when volume allows, never guaranteed.
EligibleForAdAttributionKitOverlappingConversions = YES in Info.plist.
randomization, shortens all conversion windows, sends postbacks on demand — full end-to-end
rehearsal in minutes instead of days.
with a different key (kid), the network ID is always development.adattributionkit, and
the advertised item ID may be 0 from Xcode.
a live campaign burns budget on unmeasurable installs.
lockPostback fired once value is final; re-engagement first update < 48hgrowth/analytics-interpretation (source-type funnel) —attribution tells you *which ad*, App Analytics tells you *what they did after*
app-store/apple-search-ads (Apple Ads uses AdServices, not this), growth/analytics-interpretation, growth/store-growth-audit (P7.3 halo tracking)A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Extracts and analyzes competitors' ads from ad libraries (Facebook, LinkedIn, etc.) to understand what messaging, problems, and creative approaches are working. Helps inspire and improve your own ad campaigns.
Identifies high-quality leads for your product or service by analyzing your business, searching for target companies, and providing actionable contact strategies. Perfect for sales, business development, and marketing professionals.
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Complete App Store Optimization (ASO) toolkit for researching, optimizing, and tracking mobile app performance on Apple App Store and Google Play Store
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Materials science toolkit. Crystal structures (CIF, POSCAR), phase diagrams, band structure, DOS, Materials Project integration, format conversion, for computational materials science.
Transforms vague UI ideas into polished, Stitch-optimized prompts. Enhances specificity, adds UI/UX keywords, injects design system context, and structures output for better generation results.
Take rshankras/ad-attribution 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.