meta-ads — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited meta-ads (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill loads the operational discipline from the Meta Ads API Field Guide so Claude doesn't hallucinate deprecated fields, blow past rate limits, or accidentally trigger learning-phase resets.
Trigger this skill for ANY Meta Ads API work:
Do NOT trigger for pure Ads Manager UI questions, CRO strategy, or non-API marketing advice.
status: "PAUSED". User activates manually after review. → Field Guide: Pre-Campaign Checklistget_*, list_*) is free.attribution_spec exactly from the donor. Never "upgrade" 1d_click → 7d_click. → Pitfall 1X-Business-Use-Case-Usage.estimated_time_to_regain_access and sleep. Do NOT retry immediately. → Rate Limitsinstagram_user_id (not instagram_actor_id), excluded_custom_audiences top-level (not exclusions.custom_audiences), ODAE objectives (OUTCOME_* not CONVERSIONS/LINK_CLICKS). → Deprecations 2026lessons.md after the fix is verified.Every new campaign follows four phases. Never skip.
Present to user:
Wait for explicit "yes" before Phase 3.
time.sleep(0.3) between batchesX-Business-Use-Case-Usage every 10 callseffective_status (not just status) — IN_PROCESS means not live yet| Code | Fix |
|---|---|
17 — User request limit | Sleep estimated_time_to_regain_access min, don't retry |
10, subcode 1341012 — No permission to profile | page_id or instagram_user_id not in token scope |
100, subcode 1815508 — Invalid Instagram position | Remove explicit placements, let Advantage+ pick |
100, subcode 1487225 — Budget change limit | 4/hour max — wait 60 min |
100, subcode 1487534 — Insights row limit | Narrow date range or remove breakdowns |
190 — Token expired | Regenerate system user token |
Full table: Error Codes
pipeboard-co/meta-ads-mcp (most mature) or mikusnuz/meta-ads-mcp (135 tools, v25-ready).docs/02-insights-api.md when user asks about insights).Load these as needed based on task:
| Task | Load |
|---|---|
| Any API write | 01-rate-limits.md, 07-pitfalls.md |
| Campaign creation | 05-deprecations-2026.md, checklists/pre-campaign-v24.md |
| Insights / reporting | 02-insights-api.md, 11-breakdown-effect.md |
| Scaling budgets | 03-budgets-and-learning-phase.md |
| Creative upload | 04-creatives-and-dco.md |
| Cross-account copy | 08-cross-account-operations.md, checklists/cross-account.md |
| Server-side tracking | 13-conversions-api.md |
| Error diagnosis | 06-error-codes.md |
| Tool selection | 09-ecosystem-and-tools.md, 12-related-resources.md |
| Any end-to-end workflow | 10-cookbook.md |
while cursor.has_next(): cursor.load_next_page() — SDK auto-pagination hits rate limits at ~25 pagesstatus: "ACTIVE" directly from scriptimage_hash / page_id / pixel_id without substitutionCONVERSIONS / LINK_CLICKS / LEAD_GENERATION objectives (deprecated — use OUTCOME_*)instagram_actor_id (use instagram_user_id)exclusions.custom_audiences (use top-level excluded_custom_audiences)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.