Adattributionkit
Apple AdAttributionKit on iOS: impressions, postback copies, conversion values, SKAN migration
Test report
- Verdict
- Tested · Works
- Score
- 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
-
/adattributionkitApple 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.