New to Claude Skills? Learn how to install them →

aaron-he-zhu on GitHub

Ad Account Auditor

Free

Audit paid ad accounts for contribution and spend integrity.

Get this skill

Free · Opens the source repo

What Ad Account Auditor does

The Ad Account Auditor is a specialized tool designed for auditing paid media accounts to assess their incremental contribution and operational quality. This skill is particularly useful for marketers and analysts who need to ensure that their advertising spend is effective and that their return on ad spend (ROAS) metrics are reliable. It operates under strict constraints, using a structured 20-item ROAS profile that evaluates various aspects of the ad account, including delivery, spend, and attribution accuracy.

When using the Ad Account Auditor, users can expect to analyze key performance indicators before making significant changes to their advertising strategies. This includes launching new campaigns, increasing budgets, or adjusting targeting parameters. The skill is designed to provide a thorough review of the account's performance, identifying potential issues such as wasted spend or inflated attribution claims. It does not, however, assist in campaign structure design or creative production, which are handled by other tools in the ecosystem.

The auditor requires specific evidence sets to function effectively, including campaign exports, deduplicated order IDs, and placement reports. It evaluates these inputs against predefined criteria to produce a verdict on the account's health. The output is a detailed report that highlights findings, confidence levels, and suggested actions based on the analysis. This structured approach ensures that users have a clear understanding of their ad account's performance and can make informed decisions moving forward.

Overall, the Ad Account Auditor is an essential tool for any marketing professional looking to optimize their ad spend and improve the integrity of their measurement practices. By leveraging this skill, users can gain insights that drive better advertising outcomes and ensure that their marketing investments are sound.

When to use it

Use this tool when preparing to launch or scale ad campaigns, or when you suspect issues with tracking and attribution.

When not to use it

This skill is not suitable for designing campaign structures or producing ad creatives; it focuses solely on auditing existing accounts.

What you can build with it

Pre-launch Audit

Before launching a new campaign, use the Ad Account Auditor to ensure your account's metrics are reliable and ready for increased spend.

Budget Increase Evaluation

When considering a significant budget increase, run an audit to identify any potential risks or issues with the current ad performance.

Attribution Concerns

If there are doubts about tracking accuracy or inflated attribution claims, utilize the auditor to clarify the account's performance metrics.

How to install Ad Account Auditor

View source

1. Install with the skills CLI

npx skills add aaron-he-zhu/aaron-marketing-skills/ad-account-auditor --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by aaron-he-zhu

Ad Account Auditor

Audit one paid-media account or portfolio for incremental contribution and operating quality under declared constraints. Platform-reported ROAS is one input, never the objective or truth set by itself.

When This Must Trigger

  • Before launching, materially increasing spend, or changing a risky bid/targeting strategy.
  • When tracking, attribution inflation, unsafe placements, claims, or wasted spend are in doubt.
  • When the user requests a ROAS/RQS account audit from their exports.

Quick Start

Audit this USD account for direct response using 7-day click, 3-day lag, and $120 CAC ceiling.
Run the incremental-profit profile against the holdout and order-ID exports.

Skill Contract

Reads: one normalized account/portfolio evidence set. Writes: only a permissioned v3 artifact. Done when: required context and all 20 states are explicit, vetoes use verified evidence, and scorer output is reported without executing spend changes.

This skill judges. conversion-signal-qa, attribution-reconciler, campaign-architect, ad-creative-builder, and budget-pacing-monitor build/fix the inputs. Never enable campaigns, change bids, upload audiences, or scale budgets without separate explicit approval.

For a pre-launch account-audit request, use the narrow route conversion-signal-qa immediately before this gate. Do not automatically insert placement-exclusion-manager or conversion-value-mapper between signal QA and the audit; missing placement or value evidence remains Unknown in this run, and those sibling builders become separate remediation only when the user requests them or the completed gate identifies the corresponding finding.

Data Sources

NeedPreferred evidence
Delivery/spendCampaign, query, placement, audience, and change-history exports
Outcome truthDeduplicated order/lead IDs from ecommerce, analytics, or CRM
EconomicsCurrency, margin/contribution, CAC/payback constraint
AttributionPlatform + own-data timestamps/IDs, normalized windows and lag
Safety/claimsPlacement report, rendered ad/landing, approved claim/disclosure state from offer-claims-registry (the paid claims SSOT)
IncrementalityHoldout/geo split/causal test, otherwise explicitly labeled proxy

Instructions

Runtime Reads

  • ../../../references/auditor-runbook.md
  • ../../../references/scoring-semantics.md
  • ../../../references/roas-benchmark.md
  • ../../../references/runtime-invocation.md
  • references/auditor-runtime.md

Runtime and Setup

Read ../../../references/auditor-runbook.md, scoring-semantics.md, roas-benchmark.md, and the ROAS catalog entry. Standalone installs use bundled immutable references/auditor-runtime.md; never fetch mutable main. Before deterministic calls, follow runtime-invocation.md, resolve AARON_SKILLS_ROOT="${CLAUDE_PLUGIN_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || true)}", and require the scorer, validator, and typed catalogs. If unavailable, return score_state: NOT_SCORED / score_confidence: not_scored with no gate verdict or persistent artifact.

Declare profile (direct-response|prospecting|incremental-profit), target, currency, attribution window, conversion lag, business constraint, goal, and observation date. If any required context is missing, return NEEDS_INPUT/UNDECIDED.

Evidence and Scoring

  1. Normalize currency, windows, IDs, lag, and portfolio scope before comparing metrics.
  2. Score all 20 R1..S5 criteria from the benchmark with source/date/type/confidence.
  3. Use Unknown for missing own-data truth, placement exports, or reconciliation. No data is not a veto and cannot be N/A merely because access is inconvenient.
  4. Verify vetoes:
    • ROAS-R1: instrumentation demonstrably fails the named own-data truth set.
    • ROAS-R2: material double-counting/inflation is demonstrated.
    • ROAS-O1: material claim/disclosure failure against the offer-claims-registry approved state.
    • ROAS-O2: applicable platform/restricted-category violation.
    • ROAS-A1: placement evidence demonstrates a material safety breach.
  5. Run the typed scorer. Report estimated/proxy incrementality as such; do not call platform attribution causal.

§2 ROAS Worked Examples

  • Complete direct-response profile, raw 78, no veto/fail: DONE/SHIP, final 78.
  • Complete profile, raw 78, one verified R1 failure: DONE_WITH_CONCERNS/FIX, final 59.
  • Complete profile, verified R1 and R2 failures: DONE/BLOCK, raw retained, no final score.
  • Missing placement report: A1 Unknown, NEEDS_INPUT/UNDECIDED, no overall score.

§3 ROAS Guardrails

  • High reported ROAS can reflect under-spend, branded-demand capture, or attribution inflation.
  • Learning-phase disruption is an S2 finding, not an automatic veto.
  • ATT/modeled data may reduce confidence; it does not automatically fail R1.
  • Frequency, creative fatigue, and audience saturation require separate evidence.
  • Never compare cross-platform returns before normalizing currency/window/lag and deduplicating outcomes.

§5 ROAS Translation

Lead with business impact and evidence. On trace request, qualify ROAS-R1/R2/O1/O2/A1; do not expose bare IDs that collide with RAMP/ECHO/TALE.

Report and Verdict

Begin with the auditor-runbook's exact typed conversation header. Never replace status, verdict, or score_state with prose; list each explicitly missing qualified item as ``ID: `unknown``` before findings.

Show verdict, profile/context, score or coverage/interval, confidence, R/O/A/S detail, reconciliation table, verified critical controls, Unknown evidence, and prioritized fix/owner/rerun condition. The scorer owns status/verdict and the 59 ceiling.

Validation Checkpoints

  • Scope/currency/window/lag/constraint/goal are explicit.
  • Own-data outcome truth is separated from platform self-report.
  • All 20 items have valid states and provenance; Unknown is not renormalized.
  • Veto failures are positively verified.
  • No spend/account mutation occurred without separate approval.

Persistence

Persist only after explicit authorization to memory/audits/ad/YYYY-MM-DD-<topic>.md. Assemble and validate the complete v3 draft with validate-audit-artifact.py against that intended --relative-path, persist only through one full-content Write, then revalidate the target as required by the auditor runbook. Edit/shell/MCP mutations of the reserved sink are unsupported. Do not autonomously write hot cache, claims, candidates, or account state.

Reference Materials

Next Best Skill

Frequently asked questions about Ad Account Auditor

Similar skills