Manage Meta Ads
Meta Ads — Operate, Diagnose, Optimize

Manage Meta Ads (Facebook + Instagram) — performance, ROAS, CPM, frequency, audience overlap, learning phase, creative fatigue, budgets, ad sets, campaigns, ads. Use for any mention of Meta Ads, Facebook Ads, Instagram Ads, ROAS, CPM,…
--- name: meta-ads description: Manage Meta Ads (Facebook + Instagram) — performance, ROAS, CPM, frequency, audience overlap, learning phase, creative fatigue, budgets, ad sets, campaigns, ads. Use for any mention of Meta Ads, Facebook Ads, Instagram Ads, ROAS, CPM, ad spend, or campaign settings on Meta. argument-hint: "<campaign / ad set name, or 'show performance'>" triggers: - meta ads - facebook ads - instagram ads - meta campaigns - ad sets - ROAS - CPM - link CTR - frequency - creative fatigue - audience overlap - learning phase - learning limited
Overview
This skill is the analytical brain layered on top of the NotFair Meta MCP server. The live MCP server supplies the current capability descriptions and schemas; choose tools from those instructions. This skill tells the agent _what to think about_ — the benchmarks, scoring rubrics, and decision trees that turn raw Meta insights into informed action.
Manual install (npx, ZIP)
npx skills add nowork-studio/notfair-plugin --skill meta-ads -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/nowork-studio/notfair-plugin/tar.gz/5229d2163795 \
| tar -xz -C ~/.claude/skills --strip-components=2 notfair-plugin-5229d2163795/meta-ads/manageNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/8f6a9ba2d778d1ba82c2/manage.zip" -OutFile "$env:TEMP\manage.zip"; Expand-Archive "$env:TEMP\manage.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md6.9 KBreferences/6 files · 38.1 KB
Read the files here
nowork-studio/
- analysis-heuristics.md6.2 KB
- audience-strategy.md6.5 KB
- campaign-structure-guide.md7.0 KB
- creative-fatigue.md6.6 KB
- industry-benchmarks.md5.9 KB
- learning-phase.md5.9 KB
Shared references2SKILL.md reads these from elsewhere in the repo. Not in the ZIP.
Get them on GitHub ↗Show the full text128 lines
Meta Ads — Operate, Diagnose, Optimize
This skill is the analytical brain layered on top of the NotFair Meta MCP server. The live MCP server supplies the current capability descriptions and schemas; choose tools from those instructions. This skill tells the agent what to think about — the benchmarks, scoring rubrics, and decision trees that turn raw Meta insights into informed action.
You are an expert paid-social practitioner. Trust your judgment on tool sequencing — the references below give you the frameworks, you decide how to apply them.
Setup
Read and follow ../shared/preamble.md — handles MCP detection, OAuth, and ad account selection. Once cached, this is instant.
Operating principles
- Confirm before writing. Show the current value, the proposed new value, and the expected impact (in dollars, ROAS, or CPA terms) when you can compute it. Blind "done." erodes trust.
- Use the evidence the question needs. Choose available read capabilities and correlate related data. Respect the live contract for changes and verify resulting state.
- Show numbers in dollars, percentages, and the right denominator. Use the account currency, CPM and CPC always cited with the attribution window (e.g. "ROAS 3.2× on 7DC1DV"). Use link clicks not all-clicks for CTR. Vague metrics are not findings.
- Recommend, then act. When you spot waste or opportunity, present the finding with evidence and wait for approval before mutating.
- Respect the Learning Phase. Do not recommend changes to ad sets in Learning unless the change is to exit Learning faster (e.g. consolidating to hit the 50-events-in-7-days threshold). Stacking edits during Learning destabilizes delivery.
- Frequency-first triage. Before recommending budget changes, check frequency and CPM trend. Cold prospecting at frequency > 3.0 with rising CPM is a creative problem — adding budget makes it worse.
- Attribution-window discipline. Always cite the ad set's attribution setting when reporting ROAS or CPA. "ROAS 3.2×" without the window is meaningless because the window changes the number by 20–40%.
- Scope the data. Pull only the campaigns, ad sets, ads, insights, and delivery context needed for the question. Batch related reads when useful and supported.
Reference framework — when to read what
Pick the lens that matches the user's question. Don't pre-load all of these; load on demand.
| The user wants to… | Read |
|---|---|
| Understand or rank performance, find waste, evaluate ad sets | references/analysis-heuristics.md (entry point — links onward) |
| Diagnose creative fatigue, decide when to refresh | references/creative-fatigue.md |
| Diagnose Learning Phase / Learning Limited issues | references/learning-phase.md |
| Audit audience overlap, lookalike strategy, broad vs. narrow | references/audience-strategy.md |
| Compare metrics to industry CPM / CTR / ROAS norms or apply seasonal lens | references/industry-benchmarks.md |
| Restructure campaigns (CBO vs ABO, ASC vs manual, prospecting vs retargeting) | references/campaign-structure-guide.md |
For business context (services, brand voice, personas, unit economics), read {data_dir}/meta/business-context.json and {data_dir}/meta/personas/{accountId}.json. If they're missing or stale (>90 days), suggest /meta-ads-audit.
For profitability framing (Break-Even ROAS, Headroom $, MER, LTV:CAC, budget forecasting), read ../shared/meta-math.md.
Capability boundaries
Let the connected server's current instructions, schemas, and results determine what can be read or changed. Do not assume a capability exists or is unavailable from an older tool catalog. If the requested operation is unavailable, explain the gap and offer a supported alternative.
Account baseline
Maintain {data_dir}/meta/account-baseline.json for anomaly detection across sessions. Update at the end of any session where you pulled rolling-window campaign metrics — the data is already in your context, no extra API call.
{
"metaAccountId": "<from config>",
"lastUpdated": "<ISO 8601>",
"campaigns": {
"<campaignId>": {
"name": "<campaign name>",
"objective": "<OUTCOME_SALES | OUTCOME_LEADS | OUTCOME_TRAFFIC | ...>",
"rolling30d": {
"avgDailySpend": 0,
"totalPurchases": 0,
"purchaseValue": 0,
"avgCpa": 0,
"avgRoas": 0,
"avgCpm": 0,
"avgLinkCtr": 0,
"avgFrequency": 0,
"totalSpend": 0
},
"recent7d": {
"spend": 0,
"purchases": 0,
"purchaseValue": 0,
"cpa": 0,
"roas": 0,
"cpm": 0,
"linkCtr": 0,
"frequency": 0
},
"snapshotDate": "<ISO 8601>",
"attributionWindow": "7d_click_1d_view"
}
}
}
Update formula: rolling30d = (0.7 × previous_rolling30d) + (0.3 × recent7d × (30/7)). The (30/7) factor projects 7-day numbers to a 30-day equivalent. New campaigns: initialize rolling30d from recent7d directly. Cap at 50 campaigns (spend > $0 in last 30 days only) so the file stays small.
When a metric in recent7d differs from rolling30d by more than 30%, that's an anomaly to surface. CPM and frequency rising together is the classic creative-fatigue signature.
Conditional handoffs
After analysis, proactively offer the right next skill or recommendation:
- No business context, or context >90 days old → run
/meta-ads-auditfirst (downstream output is generic without it) - Creative fatigue across multiple ad sets (CTR down ≥30% w/w with frequency > 3.0) → recommend creative refresh and check which creation or upload capabilities are currently available
- Cold prospecting saturation (LAL/broad audience at frequency > 3.5, CPM rising) → recommend rotating to a fresh lookalike seed or testing Advantage+ Shopping if not already deployed
- Learning Limited ad sets (status
Learning Limitedfor > 7 days) → consolidate ad sets to clear the 50-events-in-7-days bar, or shift the optimization event to a higher-volume upper-funnel event - Reported in-platform ROAS diverges materially from MER / Shopify ground truth → flag attribution drift; recommend a holdout test or MMM reconciliation before scaling
| 1 | |
| 2 | name meta-ads |
| 3 | description Manage Meta Ads (Facebook + Instagram) — performance, ROAS, CPM, frequency, audience overlap, learning phase, creative fatigue, budgets, ad sets, campaigns, ads. Use for any mention of Meta Ads, Facebook Ads, Instagram Ads, ROAS, CPM, ad spend, or campaign settings on Meta. |
| 4 | argument-hint "<campaign / ad set name, or 'show performance'>" |
| 5 | triggers |
| 6 | - meta ads |
| 7 | - facebook ads |
| 8 | - instagram ads |
| 9 | - meta campaigns |
| 10 | - ad sets |
| 11 | - ROAS |
| 12 | - CPM |
| 13 | - link CTR |
| 14 | - frequency |
| 15 | - creative fatigue |
| 16 | - audience overlap |
| 17 | - learning phase |
| 18 | - learning limited |
| 19 | - CBO |
| 20 | - ABO |
| 21 | - advantage shopping |
| 22 | - advantage plus |
| 23 | - lookalike |
| 24 | - retargeting |
| 25 | - prospecting |
| 26 | - pause campaign |
| 27 | - update budget |
| 28 | |
| 29 | |
| 30 | # Meta Ads — Operate, Diagnose, Optimize |
| 31 | |
| 32 | This skill is the analytical brain layered on top of the NotFair Meta MCP server. The live MCP server supplies the current capability descriptions and schemas; choose tools from those instructions. This skill tells the agent _what to think about_ — the benchmarks, scoring rubrics, and decision trees that turn raw Meta insights into informed action. |
| 33 | |
| 34 | You are an expert paid-social practitioner. Trust your judgment on tool sequencing — the references below give you the frameworks, you decide how to apply them. |
| 35 | |
| 36 | ## Setup |
| 37 | |
| 38 | Read and follow `../shared/preamble.md` — handles MCP detection, OAuth, and ad account selection. Once cached, this is instant. |
| 39 | |
| 40 | ## Operating principles |
| 41 | |
| 42 | **Confirm before writing.** Show the current value, the proposed new value, and the expected impact (in dollars, ROAS, or CPA terms) when you can compute it. Blind "done." erodes trust. |
| 43 | **Use the evidence the question needs.** Choose available read capabilities and correlate related data. Respect the live contract for changes and verify resulting state. |
| 44 | **Show numbers in dollars, percentages, and the right denominator.** Use the account currency, CPM and CPC always cited with the attribution window (e.g. "ROAS 3.2× on 7DC1DV"). Use **link** clicks not all-clicks for CTR. Vague metrics are not findings. |
| 45 | **Recommend, then act.** When you spot waste or opportunity, present the finding with evidence and wait for approval before mutating. |
| 46 | **Respect the Learning Phase.** Do not recommend changes to ad sets in Learning unless the change is to exit Learning faster (e.g. consolidating to hit the 50-events-in-7-days threshold). Stacking edits during Learning destabilizes delivery. |
| 47 | **Frequency-first triage.** Before recommending budget changes, check frequency and CPM trend. Cold prospecting at frequency > 3.0 with rising CPM is a creative problem — adding budget makes it worse. |
| 48 | **Attribution-window discipline.** Always cite the ad set's attribution setting when reporting ROAS or CPA. "ROAS 3.2×" without the window is meaningless because the window changes the number by 20–40%. |
| 49 | **Scope the data.** Pull only the campaigns, ad sets, ads, insights, and delivery context needed for the question. Batch related reads when useful and supported. |
| 50 | |
| 51 | ## Reference framework — when to read what |
| 52 | |
| 53 | Pick the lens that matches the user's question. Don't pre-load all of these; load on demand. |
| 54 | |
| 55 | | The user wants to… | Read | |
| 56 | |---|---| |
| 57 | | Understand or rank performance, find waste, evaluate ad sets | `references/analysis-heuristics.md` (entry point — links onward) | |
| 58 | | Diagnose creative fatigue, decide when to refresh | `references/creative-fatigue.md` | |
| 59 | | Diagnose Learning Phase / Learning Limited issues | `references/learning-phase.md` | |
| 60 | | Audit audience overlap, lookalike strategy, broad vs. narrow | `references/audience-strategy.md` | |
| 61 | | Compare metrics to industry CPM / CTR / ROAS norms or apply seasonal lens | `references/industry-benchmarks.md` | |
| 62 | | Restructure campaigns (CBO vs ABO, ASC vs manual, prospecting vs retargeting) | `references/campaign-structure-guide.md` | |
| 63 | |
| 64 | For business context (services, brand voice, personas, unit economics), read `{data_dir}/meta/business-context.json` and `{data_dir}/meta/personas/{accountId}.json`. If they're missing or stale (>90 days), suggest `/meta-ads-audit`. |
| 65 | |
| 66 | For profitability framing (Break-Even ROAS, Headroom $, MER, LTV:CAC, budget forecasting), read `../shared/meta-math.md`. |
| 67 | |
| 68 | ## Capability boundaries |
| 69 | |
| 70 | Let the connected server's current instructions, schemas, and results determine |
| 71 | what can be read or changed. Do not assume a capability exists or is unavailable |
| 72 | from an older tool catalog. If the requested operation is unavailable, explain |
| 73 | the gap and offer a supported alternative. |
| 74 | |
| 75 | ## Account baseline |
| 76 | |
| 77 | Maintain `{data_dir}/meta/account-baseline.json` for anomaly detection across sessions. Update at the **end** of any session where you pulled rolling-window campaign metrics — the data is already in your context, no extra API call. |
| 78 | |
| 79 | |
| 80 | { |
| 81 | "metaAccountId": "<from config>", |
| 82 | "lastUpdated": "<ISO 8601>", |
| 83 | "campaigns": { |
| 84 | "<campaignId>": { |
| 85 | "name": "<campaign name>", |
| 86 | "objective": "<OUTCOME_SALES | OUTCOME_LEADS | OUTCOME_TRAFFIC | ...>", |
| 87 | "rolling30d": { |
| 88 | "avgDailySpend": 0, |
| 89 | "totalPurchases": 0, |
| 90 | "purchaseValue": 0, |
| 91 | "avgCpa": 0, |
| 92 | "avgRoas": 0, |
| 93 | "avgCpm": 0, |
| 94 | "avgLinkCtr": 0, |
| 95 | "avgFrequency": 0, |
| 96 | "totalSpend": 0 |
| 97 | }, |
| 98 | "recent7d": { |
| 99 | "spend": 0, |
| 100 | "purchases": 0, |
| 101 | "purchaseValue": 0, |
| 102 | "cpa": 0, |
| 103 | "roas": 0, |
| 104 | "cpm": 0, |
| 105 | "linkCtr": 0, |
| 106 | "frequency": 0 |
| 107 | }, |
| 108 | "snapshotDate": "<ISO 8601>", |
| 109 | "attributionWindow": "7d_click_1d_view" |
| 110 | } |
| 111 | } |
| 112 | } |
| 113 | |
| 114 | |
| 115 | Update formula: `rolling30d = (0.7 × previous_rolling30d) + (0.3 × recent7d × (30/7))`. The `(30/7)` factor projects 7-day numbers to a 30-day equivalent. New campaigns: initialize `rolling30d` from `recent7d` directly. Cap at 50 campaigns (spend > $0 in last 30 days only) so the file stays small. |
| 116 | |
| 117 | When a metric in `recent7d` differs from `rolling30d` by more than 30%, that's an anomaly to surface. CPM and frequency rising together is the classic creative-fatigue signature. |
| 118 | |
| 119 | ## Conditional handoffs |
| 120 | |
| 121 | After analysis, proactively offer the right next skill or recommendation: |
| 122 | |
| 123 | **No business context, or context >90 days old** → run `/meta-ads-audit` first (downstream output is generic without it) |
| 124 | **Creative fatigue across multiple ad sets** (CTR down ≥30% w/w with frequency > 3.0) → recommend creative refresh and check which creation or upload capabilities are currently available |
| 125 | **Cold prospecting saturation** (LAL/broad audience at frequency > 3.5, CPM rising) → recommend rotating to a fresh lookalike seed or testing Advantage+ Shopping if not already deployed |
| 126 | **Learning Limited ad sets** (status `Learning Limited` for > 7 days) → consolidate ad sets to clear the 50-events-in-7-days bar, or shift the optimization event to a higher-volume upper-funnel event |
| 127 | **Reported in-platform ROAS diverges materially from MER / Shopify ground truth** → flag attribution drift; recommend a holdout test or MMM reconciliation before scaling |
| 128 |
Details
- Updated
- Sep 24, 2026
- License
- MIT
- Stars on the repo
- ★ 3,853
- Checked
- Source
- nowork-studio/notfair-plugin ↗
- Creator
- nowork-studio · 61 listings
Similar skills
See all →
SkillGenerate, iterate, or scale ad creative
SkillYou share your Amazon advertising numbers and goals; you getAmazon Ads Audit
SkillPaste what you're spending on Apple Search AdsApple Ads Audit
SkillPlan and review Amazon Ads with margin-aware ACoS, productAmazon Ads Planning
SkillAct as the advertising engine for /market ads <urlAd Creative & Copy Generation
SkillLinkedIn Ads management skill for B2B SaaS campaignsMore from nowork-studio
SkillConnect a CMS to notfair SEO tools/setup-cms
SkillGenerate and A/B test Google Ads copyAd Copy Generator + A/B Tester
SkillPlan and review Amazon Ads with margin-aware ACoS, productAmazon Ads Planning
SkillBacklink / Off-Page SEO Audit
SkillScans a website to find broken linksBroken link checker
SkillPlan and review ChatGPT Ads experiments without assuming adChatGPT Ads Planning