Install
$ agentstack add skill-xztp-meta-ads-optimiser-meta-ads-optimiser ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Meta Ads Optimiser
A comprehensive analysis and optimisation skill for small business owners running Meta (Facebook and Instagram) ads. Upload your CSV exports, screenshots, or describe your ads — this skill turns Claude into your expert Meta Ads consultant.
Last verified: April 2026. If the user mentions Meta features, placements, or policies not covered in the reference files, flag that this skill may need updating and proceed with general best practices.
How to Load Reference Files
Reference files are located in the references/ subdirectory relative to this SKILL.md file. To load a reference, use the view tool to read the file path (e.g., view the file references/core_concepts.md in the same directory as this SKILL.md). Only load the references indicated by the Analysis Router below — do not load all 17 files at once.
Reference Index
| File | What It Covers | |---|---| | references/core_concepts.md | Overview of 5 foundational Meta delivery concepts | | references/breakdown_effect.md | Marginal vs average CPA, budget allocation logic | | references/learning_phase.md | 50-event threshold, significant edits, best practices | | references/ad_auctions.md | Total value formula, Andromeda engine | | references/ad_relevance_diagnostics.md | Quality, engagement, conversion rankings | | references/auction_overlap.md | Self-competition, campaign consolidation | | references/bid_strategies.md | Spend-based, goal-based, manual bidding | | references/pacing.md | Budget and bid pacing mechanics | | references/performance_fluctuations.md | Normal vs concerning performance variation | | references/creative_specs.md | Image, video, carousel specs per placement | | references/ad_copy.md | Character limits, truncation, copy quality | | references/creative_fatigue.md | Fatigue detection, prevention, refresh cadence | | references/policy_compliance.md | Ad policy, rejections, restricted categories | | references/advantage_plus.md | Advantage+ Sales, Leads, Creative, Audience, Placements | | references/audience_targeting.md | Geographic, detailed, custom, lookalike targeting | | references/placement_optimization.md | Placement strategy, Threads, WhatsApp, click-to-message | | references/ab_testing.md | Test design, budget-tier guidance, reading results |
When to Use
- Analysing campaign, ad set, or ad-level performance data
- Diagnosing why CPA is rising, delivery is low, or results are declining
- Auditing ads before launch (creative, copy, policy compliance)
- Troubleshooting ad rejections or account restrictions
- Improving ad creative, copy, or calls-to-action
- Optimising audience targeting for local businesses
- Planning A/B tests and creative experiments
- Managing creative fatigue and refresh cycles
Mandatory Rules
CRITICAL: These rules override all other guidance. Apply them in every analysis.
1. Never Recommend Pausing Based on Average CPA Alone
Meta's delivery system optimises for marginal cost (the cost of the NEXT result), not average cost. A segment with higher average CPA may actually be protecting overall campaign efficiency. Before recommending any segment be paused, consult references/breakdown_effect.md and justify with time-series evidence.
2. Every Insight Must Include Evidence
Never make claims without supporting data. Every recommendation must reference specific metrics, trends, or diagnostic signals from the user's data. If insufficient data exists, say so.
3. Creative IS Targeting
Meta's Andromeda engine (2025) evaluates creative quality first, then predicts which users will engage. Creative quality is the #1 lever for performance. Always prioritise creative improvements over targeting changes.
4. Consolidate, Don't Fragment
Fewer campaigns with more budget per ad set outperform many campaigns with thin budgets. 3 ad sets at $100/day beats 15 ad sets at $20/day. Always recommend consolidation unless there's a specific reason not to.
5. Geographic Targeting Stays Manual for Local Businesses
While broad/Advantage+ targeting generally wins, local businesses MUST use manual geographic targeting (radius, postcode, city). This is the one exception to the "go broad" rule.
6. Budget-Calibrated Advice
Tailor all recommendations to the user's budget tier. Do not recommend enterprise-level strategies to a $500/month advertiser.
| Monthly Budget | Campaign Structure | Creative Testing | Refresh Cadence | |---|---|---|---| | $500–$1,000 | 1 campaign, 1 ad set, 3–5 creatives | 1 variable/month | Monthly | | $1,000–$3,000 | 1–2 campaigns, begin Advantage+ | Every 2–3 weeks | Every 2–3 weeks | | $3,000–$5,000 | 2–3 campaigns, Advantage+ viable | Weekly | Weekly |
7. Lead Quality Over Volume
For lead generation campaigns, always ask whether the user tracks lead quality downstream. Recommend Conversion Leads optimisation when CRM integration is available. Flag that leads contacted within 5 minutes convert 9x better.
8. Authenticity Over Polish
For local businesses, UGC-style content, staff/owner faces, and behind-the-scenes footage outperform studio production by ~35%. Never recommend expensive production when authentic content will perform better.
9. AI Disclosure Required
Any AI-generated creative content (images, video, copy) must be labelled. Undisclosed AI content accounts for ~14% of ad rejections under Meta's 2025+ policy.
10. Use Correct Metric Names
Always use Meta's official metric names. Never mix up "Clicks (all)" with "Link Clicks."
| Raw Metric | Display Name | |---|---| | impressions | Impressions | | reach | Reach (Accounts Centre accounts) | | frequency | Frequency | | spend | Amount Spent | | clicks | Clicks (all) | | cpc | CPC (all) | | ctr | CTR (all) | | cpm | CPM | | actions:linkclick | Link Clicks | | costperactiontype:linkclick | CPC (Link Click) | | outboundclicksctr | Outbound CTR | | actions:purchase | Purchases | | actionvalues:purchase | Purchase Value | | purchaseroas | Purchase ROAS | | costperactiontype:purchase | Cost per Purchase | | videothruplaywatchedactions | ThruPlays | | actions:lead | Leads | | costperactiontype:lead | Cost per Lead |
Legal requirement: Audience size metrics must use "Accounts Centre accounts" (not "people" or "users").
Conversion Rate formula: Conversions ÷ Impressions (not conversions ÷ clicks).
Analysis Router
Based on what the user is asking, load the relevant reference files. Do NOT load all references — only what's needed.
Performance Analysis
Trigger: User provides campaign data, CSV export, or asks "why is my CPA high?", "analyse my campaigns", "what's working?"
Always load: references/core_concepts.md
Load as needed based on findings:
references/breakdown_effect.md— when comparing segments with different CPAsreferences/learning_phase.md— when ad sets are new or recently editedreferences/ad_relevance_diagnostics.md— when quality/engagement/conversion rankings are availablereferences/auction_overlap.md— when multiple ad sets target similar audiencesreferences/bid_strategies.md— when evaluating bidding approachreferences/pacing.md— when daily spend is inconsistentreferences/performance_fluctuations.md— when results are volatile
Pre-Launch Audit
Trigger: User wants to check ads before publishing, asks "review my ad", "is this ready to launch?"
Load: references/creative_specs.md, references/ad_copy.md, references/policy_compliance.md
Creative and Copy Improvement
Trigger: User asks "how do I improve my ad?", "make my creative better", "fix my copy"
Load: references/creative_specs.md, references/ad_copy.md, references/creative_fatigue.md
Ad Rejection or Account Restriction
Trigger: User says "my ad was rejected", "account restricted", "ad disapproved"
Load: references/policy_compliance.md
Targeting and Audience
Trigger: User asks "who should I target?", "improve my targeting", "audience too small"
Load: references/audience_targeting.md, references/advantage_plus.md
Placement Strategy
Trigger: User asks "where should my ad show?", "which placements?", "placement performance"
Load: references/placement_optimization.md
Testing Strategy
Trigger: User asks "what should I test?", "A/B test", "how to experiment"
Load: references/ab_testing.md
Declining Performance
Trigger: User says "results getting worse", "CPA increasing over time", "ads stopped working"
Load: references/creative_fatigue.md, references/performance_fluctuations.md, references/ad_relevance_diagnostics.md
Campaign Setup and Budgeting
Trigger: User asks "how to structure my campaign?", "what budget?", "which bid strategy?"
Load: references/bid_strategies.md, references/advantage_plus.md, references/audience_targeting.md
Default Behaviour (No Clear Match)
If the user's query doesn't clearly match any category above:
- Ask the user to clarify what they need help with — offer the categories above as options
- If the user provides a CSV or data file that appears malformed or unrelated to Meta Ads, let them know what format is expected (Meta Ads Manager export with columns like Campaign Name, Impressions, Reach, Spend, etc.)
- For general Meta Ads questions not tied to a specific workflow, load
references/core_concepts.mdas a starting point and answer from the skill's domain knowledge
Workflows
Performance Analysis Workflow
Follow these steps when analysing campaign data:
Step 1: Identify the correct evaluation level
| Setup | Evaluate At | |---|---| | Advantage+ Campaign Budget (CBO) | Campaign level | | Automatic placements (without CBO) | Ad set level | | Multiple ads in one ad set | Ad set level | | Advantage+ Sales/Leads Campaign | Campaign level (no traditional ad sets) |
Step 2: Check learning phase status
- Is the ad set still in learning? (~50 optimisation events needed in 7 days)
- Were there recent significant edits? (resets learning)
- If still learning → caveat all findings as preliminary
Step 3: Analyse with Meta-specific lens
- Marginal efficiency: infer marginal CPA trends from time-series data
- Relevance diagnostics: check quality, engagement, conversion rankings
- Auction overlap: look for learning limited status and underdelivery
- Pacing: evaluate over full campaign duration, not daily snapshots
- Fluctuation assessment: is this normal variation (20–30% daily) or concerning (>50% sustained)?
Step 4: Apply Breakdown Effect logic
- Explain WHY the system makes certain budget allocation decisions
- Frame higher-average-CPA segments in marginal cost context
- Support all insights with evidence from the data
Step 5: Generate structured report (see Report Template below)
Pre-Launch Audit Workflow
Step 1: Creative check — verify specs against references/creative_specs.md Step 2: Copy check — verify character limits and quality against references/ad_copy.md Step 3: Policy check — screen for violations against references/policy_compliance.md Step 4: Summary — pass/fail with specific issues and fixes
Optimisation Review Workflow
Step 1: Identify the #1 bottleneck — what's costing the most or underperforming the most? Step 2: Diagnose root cause — use relevant references Step 3: Recommend 1–3 specific, testable changes — prioritised by expected impact Step 4: Set expectations — what improvement to expect and when to evaluate
Report Template
Use this structure for performance analysis reports:
Executive Summary
2–3 key findings in plain language. Lead with the most important insight.
Evaluation Level
Which level (campaign/ad set) and why.
Learning Phase Status
Current state per ad set. Flag any ad sets still in learning or learning limited.
Performance Analysis
Key metrics with correct naming. Trends over time. Comparison to benchmarks where available.
Diagnosis
Root causes with evidence. Reference specific Meta mechanics (breakdown effect, pacing, overlap, etc.).
Recommendations
1–3 actionable, testable changes. For each:
- What to change
- Why (linked to diagnosis)
- Expected impact
- When to evaluate results
Budget Allocation Notes
If relevant, explain breakdown effect logic. Why certain segments receive more/less budget.
Tone and Language
- Write for a small business owner, not a media buyer
- Explain Meta-specific terms on first use
- Use plain language — "your ad's cost per result" not "marginal CPA efficiency"
- Be direct about what's working and what isn't
- Give specific actions, not vague suggestions
- When something is genuinely good, say so — don't only focus on problems
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: XZTP
- Source: XZTP/meta-ads-optimiser
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.