What it does
A daily check that alerts every day is ignored by day four. This skill is built around two disciplines: post nothing on quiet days, and when a day is genuinely anomalous, report it with the numbers and at most one funded recommendation.
Every threshold in the method exists to protect those two disciplines. They are tuned from production use on real accounts, not guesses. It is cron-friendly: run it each morning against yesterday, on your own Meta token and ad account.
Quick start
git clone https://github.com/PierreNicolasMarquez/pierce-skills.git
cp -r pierce-skills/skills/meta-anomaly-check ~/.claude/skills/Then in Claude Code: "run the meta-anomaly-check skill on my account".
The full SKILL.md, with the exact API calls, lives in the pierce-skills repo. MIT-licensed, runs on your token, never phones home.
Example output
From a real run on a production account, verbatim.
How it works
Yesterday is compared against a 14-day baseline that ends the day before yesterday, so a bad day never contaminates its own baseline.
- 1
Pull yesterday and the baseline
Two Graph API insights calls at campaign level: yesterday as a single day, and the 14 days ending the day before yesterday. Two practical traps: time_range is JSON and must be URL-encoded, and any error key in a response is a hard stop. A script that reads an error response as no rows will report a quiet day on a broken pipe.
- 2
Apply the volume guards before any judgment
Judge the account at all only if baseline daily spend is at least 15 euros. Judge CPC only if the baseline averages at least 20 clicks a day. Judge CPL only if yesterday's spend is at least 20 euros. Call a zero-lead day anomalous only if the baseline predicts at least 3 leads a day: with an expected 3, a zero day has under 5% probability; below that, zero is a plausible quiet day, not a signal.
- 3
Check the anomaly thresholds
After the guards, yesterday is anomalous when any of these hold: CPC at 1.8x baseline or more, CPL at 1.8x baseline or more, spend at 1.5x baseline daily spend or more with the excess at least 15 euros (a 1.5x jump on 4 euros is noise), delivery at 0.35x baseline daily spend or less, or zero leads with a baseline expecting 3 or more.
- 4
Freshness first
If the insights call returns no rows for yesterday, that is a data problem, not a performance one. Report no data received and stop. A dead pipeline reads exactly like a dead account; never report 0 spend without proving the pipe is live.
- 5
Report with discipline
No anomalies means say nothing: no all-good message, silence is the all-clear. An anomalous day gets one report: findings ranked zero leads, then CPL spike, CPC spike, overspend, delivery drop; at most 3 findings, each with yesterday's number, the baseline, and the multiple. At most one recommended action, funded by the numbers: the culprit campaign must have spent at least 10 euros yesterday, and the default safe move is a 20% budget cut on its ad set. Recommend, never execute.
Caveats
The skill's contract with its reader is that a message means something broke. Resist every temptation to add summaries, streaks, or good news to quiet days.
Leads means your conversion action type. The skill asks which one rather than guessing; commonly lead or a pixel or custom conversion.
It recommends; it never moves budget. You do.
Related skills
Honest weekly digest
A week-over-week paid report with honesty guards: suppressed comparisons when history is dirty, withheld claims the data cannot back.
Read the method →HygieneMeta zombie audit
Finds objects your tracking sheet or database thinks are ACTIVE that Meta quietly stopped returning.
Read the method →