Adattributionkit

Apple AdAttributionKit on iOS: impressions, postback copies, conversion values, SKAN migration

Tested · Works

Test report

Verdict
Tested · Works
Score
9.2/10
Tested
Jul 21, 2026
Environment
Claude Code 2.x (agent harness)
Upstream re-checked
Aug 10, 2026 · c665630

Installed into a throwaway HOME (mktemp -d) — frontmatter parsed with name+description, and all three files referenced from the body returned HTTP 200 (SKILL.md, references/adattributionkit-patterns.md, evals/evals.json); no curl|sh, no exfiltration, only benign openssl ES256 keygen and Apple's published public keys. Trigger phrasings judged: SHOULD fire — (1) "Our iOS app needs copies of the winning attribution postbacks, what Info.plist keys and server endpoint do I need?", (2) "We're migrating our ad SDK off SKAdNetwork — how do conversion values work in the replacement framework?", (3) "Put a UIEventAttributionView over our banner ad and record the tap so the install gets attributed"; SHOULD NOT fire — (4) "Set up Google Analytics 4 conversion tracking for our marketing site" (web analytics, no iOS framework), (5) "Show the App Tracking Transparency permission prompt before personalized ads" (ATT/IDFA consent, a different framework — the description only enumerates impressions/postbacks/conversion values); 5/5 correct. Output test: same advertised-app postback-copy task written twice — baseline (/tmp/adattributionkit-test/out/baseline.md) used the SKAdNetwork key NSAdvertisingAttributionReportEndpoint at top level, gave the path /.well-known/skadnetwork/report-attribution/ on the subdomain host, and hedged the re-engagement JSON spelling; the skill-followed artifact (out/skill.md) nested AttributionCopyEndpoint + OptInForReengagementPostbackCopies under an AdAttributionKit dict, gave https://acme-ads.co.uk/.well-known/appattribution/report-attribution/ with the registrable-domain (subdomain-stripped) rule, and the "conversion-type": "re-engagement" vs Swift .reengagement distinction — I then verified those exact claims against Apple's "Configuring an advertised app" doc, which confirms the key names, the appattribution well-known path, and the registrable-domain rule, so the baseline was factually wrong where the skill was right. Docs lose a point: SKILL.md tells you to "Load references/adattributionkit-patterns.md for the current window and delay matrix", but the reference has no such section — the normal 0-2/3-7/8-35 day durations only appear as a column inside the Developer Mode comparison table.

Scored on four weighted criteria — install, triggering, output vs. baseline, docs. How scoring works

  • Installs cleanly 5/5
  • Triggers reliably 5/5
  • Output vs. baseline 9/10
  • Docs & honesty 4/5

What Adattributionkit does

Reference skill for Apple's AdAttributionKit on iOS 17.4+, covering publisher and advertised app Info.plist configuration, AppImpression view/click registration, postback copy endpoints and JWS verification, conversion values, and re-engagement. Triggers when you are wiring ad impressions, receiving or verifying attribution postbacks, updating install vs re-engagement conversion values, or migrating an app from SKAdNetwork. Ships a 582-line reference file with server-side postback handling, Developer Mode testing, and attribution rules configuration.

How to install Adattributionkit

git clone --depth 1 https://github.com/dpearson2699/swift-ios-skills.git /tmp/adattributionkit-src
mkdir -p ~/.claude/skills
cp -R /tmp/adattributionkit-src/skills/adattributionkit ~/.claude/skills/adattributionkit
# Places SKILL.md + references/adattributionkit-patterns.md + evals/evals.json under ~/.claude/skills/adattributionkit/
# No runtime deps, no API keys, no scripts. Pure reference skill (markdown only).
# Alternatives from the repo README (not required):
#   npx skills add dpearson2699/swift-ios-skills --skill adattributionkit
#   /plugin marketplace add dpearson2699/swift-ios-skills   (Claude Code plugin marketplace)
# Actually applying the guidance to a real app needs Xcode + an iOS 17.4+ device/ad-network registration; the skill itself needs nothing.

Skills live in ~/.claude/skills/ (global) or .claude/skills/ (per-project). Restart Claude Code after installing.

Commands — how to trigger Adattributionkit

  • /adattributionkit Apple AdAttributionKit on iOS: impressions, postback copies, conversion values, SKAN migration

It also activates on plain-language prompts like these:

  • Replace SKAdNetwork with AdAttributionKit in my app
  • Handle attribution postbacks for ad impressions
  • Update conversion values for re-engagement campaigns

Frequently asked questions

Is the Adattributionkit skill free?
Yes. The skill itself is free from dpearson2699/swift-ios-skills. SkillProof publishes the install command and an independent test verdict at no cost.
Does Adattributionkit work with Claude Code?
We tested it with Claude Code 2.x (agent harness) on Jul 21, 2026. Verdict: Tested · Works. Installed into a throwaway HOME (mktemp -d) — frontmatter parsed with name+description, and all three files referenced from the body returned HTTP 200 (SKILL.md, references/adattributionkit-patterns.md, evals/evals.json); no curl|sh, no exfiltration, only benign openssl ES256 keygen and Apple's published public keys. Trigger phrasings judged: SHOULD fire — (1) "Our iOS app needs copies of the winning attribution postbacks, what Info.plist keys and server endpoint do I need?", (2) "We're migrating our ad SDK off SKAdNetwork — how do conversion values work in the replacement framework?", (3) "Put a UIEventAttributionView over our banner ad and record the tap so the install gets attributed"; SHOULD NOT fire — (4) "Set up Google Analytics 4 conversion tracking for our marketing site" (web analytics, no iOS framework), (5) "Show the App Tracking Transparency permission prompt before personalized ads" (ATT/IDFA consent, a different framework — the description only enumerates impressions/postbacks/conversion values); 5/5 correct. Output test: same advertised-app postback-copy task written twice — baseline (/tmp/adattributionkit-test/out/baseline.md) used the SKAdNetwork key NSAdvertisingAttributionReportEndpoint at top level, gave the path /.well-known/skadnetwork/report-attribution/ on the subdomain host, and hedged the re-engagement JSON spelling; the skill-followed artifact (out/skill.md) nested AttributionCopyEndpoint + OptInForReengagementPostbackCopies under an AdAttributionKit dict, gave https://acme-ads.co.uk/.well-known/appattribution/report-attribution/ with the registrable-domain (subdomain-stripped) rule, and the "conversion-type": "re-engagement" vs Swift .reengagement distinction — I then verified those exact claims against Apple's "Configuring an advertised app" doc, which confirms the key names, the appattribution well-known path, and the registrable-domain rule, so the baseline was factually wrong where the skill was right. Docs lose a point: SKILL.md tells you to "Load references/adattributionkit-patterns.md for the current window and delay matrix", but the reference has no such section — the normal 0-2/3-7/8-35 day durations only appear as a column inside the Developer Mode comparison table.
What is the Adattributionkit SkillProof Score?
9.2/10 — installs cleanly 5/5, triggers reliably 5/5, output vs. baseline 9/10, docs & honesty 4/5.
How do I install Adattributionkit?
Copy the install command from this page, run it in your terminal, and restart Claude Code. Skills live in ~/.claude/skills/ (global) or .claude/skills/ inside a project.
Can I use Adattributionkit with Cursor, Copilot, Gemini CLI, Codex or other AI tools?
The SKILL.md format is native to Claude (Claude Code, Desktop, claude.ai). The instructions inside adapt to other assistants: Cursor rules, GitHub Copilot instructions, Windsurf rules, Custom GPTs, AGENTS.md for OpenAI Codex, and GEMINI.md for Google Gemini CLI — our conversion guides cover each, and the free converter on the tools page does the wrapping for you.