New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Manage Meta Ads

Meta Ads — Operate, Diagnose, Optimize

by nowork-studio · MIT license · ★ 3,853 on GitHub · updated Sep 24

Meta Ads — Operate, Diagnose, Optimize cover

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)
Claude Codenpx skills add nowork-studio/notfair-plugin --skill meta-ads -g -a claude-code
Claude Code (manual)mkdir -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/manage
Windows (PowerShell)New-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" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md6.9 KB
  • references/6 files · 38.1 KB
Read the files here
nowork-studio/5229d217 files
Shared references2SKILL.md reads these from elsewhere in the repo. Not in the ZIP.Get them on GitHub ↗
SKILL.md
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

  1. 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.
  2. Use the evidence the question needs. Choose available read capabilities and correlate related data. Respect the live contract for changes and verify resulting state.
  3. 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.
  4. Recommend, then act. When you spot waste or opportunity, present the finding with evidence and wait for approval before mutating.
  5. 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.
  6. 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.
  7. 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%.
  8. 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-audit first (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 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
  • Reported in-platform ROAS diverges materially from MER / Shopify ground truth → flag attribution drift; recommend a holdout test or MMM reconciliation before scaling
1---
2name: meta-ads
3description: 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.
4argument-hint: "<campaign / ad set name, or 'show performance'>"
5triggers:
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 
32This 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 
34You 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 
38Read and follow `../shared/preamble.md` — handles MCP detection, OAuth, and ad account selection. Once cached, this is instant.
39 
40## Operating principles
41 
421. **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.
432. **Use the evidence the question needs.** Choose available read capabilities and correlate related data. Respect the live contract for changes and verify resulting state.
443. **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.
454. **Recommend, then act.** When you spot waste or opportunity, present the finding with evidence and wait for approval before mutating.
465. **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.
476. **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.
487. **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%.
498. **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 
53Pick 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 
64For 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 
66For profitability framing (Break-Even ROAS, Headroom $, MER, LTV:CAC, budget forecasting), read `../shared/meta-math.md`.
67 
68## Capability boundaries
69 
70Let the connected server's current instructions, schemas, and results determine
71what can be read or changed. Do not assume a capability exists or is unavailable
72from an older tool catalog. If the requested operation is unavailable, explain
73the gap and offer a supported alternative.
74 
75## Account baseline
76 
77Maintain `{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```json
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 
115Update 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 
117When 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 
121After 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 
View all files on GitHub →

Details

Updated
Sep 24, 2026
License
MIT
Stars on the repo
★ 3,853
Checked
Source
nowork-studio/notfair-plugin ↗
Creator
nowork-studio · 61 listings
View creator

Similar skills

See all →
SkillGenerate, iterate, or scale ad creativecoreyhaines31/marketingskills · by coreyhaines31When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad variations — for any paid advertising platform. Also use when the user mentions 'ad copy variations,' 'ad creative,' 'generate headlines,' 'RSA headlines,' 'bulk ad copy,' 'ad iterations,' 'creative testing,' 'write me some ads,' 'Facebook ad copy,' 'Google ad headlines,' 'LinkedIn ad text,' 'static ads,' 'ad templates,' 'iMessage ad,' 'chat reveal ad,' 'ChatGPT ad,' 'Apple Notes ad,' 'AirDrop ad,' 'creative strategy,' 'creative roadmap,' 'creative retro,' 'hook writing,' 'creative review page,' 'present ad creative for approval,' 'motion video ad,' 'faceless video ad,' 'UGC ad,' 'greenscreen ad,' 'TikTok/Reels ad format,' 'which ad format to make,' 'Meta ad format tier list,' or 'creative format taxonomy.' Use this whenever someone needs to produce ad copy at scale or iterate on existing ads. For campaign strategy and targeting, see ads. For landing page copy, see copywriting.★ 51.1k GitHub starsSkillYou share your Amazon advertising numbers and goals; you getAmazon Ads AuditAgriciDaniel/claude-ads · by AgriciDanielYou share your Amazon advertising numbers and goals; you get back a plain-language review of what's draining your budget and what to change first.★ 9.5k GitHub starsSkillPaste what you're spending on Apple Search AdsApple Ads AuditAgriciDaniel/claude-ads · by AgriciDanielPaste what you're spending on Apple Search Ads and your recent numbers; get back a plain review of what's wasting money and what to fix first.★ 9.5k GitHub starsSkillPlan and review Amazon Ads with margin-aware ACoS, productAmazon Ads Planningnowork-studio/notfair-plugin · by nowork-studioPlan and review Amazon Ads with margin-aware ACoS, product, and search-term guardrails. Use for Amazon advertising, Sponsored Products, Sponsored Brands, Sponsored Display, ASIN targeting, Amazon ACoS, or Amazon Ads performance exports.★ 3.9k GitHub starsSkillAct as the advertising engine for /market ads <urlAd Creative & Copy Generationzubair-trabzada/ai-marketing-claude · by zubair-trabzadaYou are the advertising engine for /market ads <url>. You generate complete ad campaigns across platforms with full copy variations,…★ 2.7k GitHub starsSkillLinkedIn Ads management skill for B2B SaaS campaignsivangfalco/ads-skills · by ivangfalcoLinkedIn Ads management skill for B2B SaaS campaigns. Routes to specialized sub-skills for campaign planning, performance analysis, account audits, and account management. MANDATORY TRIGGERS: LinkedIn Ads, LinkedIn campaign, LinkedIn advertising, B2B ads, paid social, LinkedIn paid, ad account, campaign manager, LinkedIn lead gen, LinkedIn retargeting, ad audit, ad performance, ad optimization, campaign plan, media plan, LinkedIn budget★ 275 GitHub stars

More from nowork-studio

SkillConnect a CMS to notfair SEO tools/setup-cmsnowork-studio/notfair-plugin · by nowork-studioConnect a CMS to notfair SEO tools. Guides users through configuring WordPress, Strapi, Contentful, or Ghost — tests the connection, and writes credentials to .env.local. Once set up, seo-analysis automatically cross- references CMS content against Google Search Console data. Use whenever the user says "connect my CMS", "set up WordPress", "configure Strapi", "add Contentful", "connect Ghost", or "CMS setup". Also trigger if the user asks why no CMS data appears in a seo-analysis report.★ 3.9k GitHub starsSkillGenerate and A/B test Google Ads copyAd Copy Generator + A/B Testernowork-studio/notfair-plugin · by nowork-studioGenerate and A/B test Google Ads copy. Use when asked to write ad copy, headlines, descriptions, create ad variants, test ad messaging, improve CTR, or generate RSA (Responsive Search Ad) components. Trigger on "ad copy", "write ads", "headlines", "descriptions", "RSA", "responsive search ad", "ad text", "ad creative", "improve CTR", "ad A/B test", "ad variants", "write me an ad", "ad variation experiment", or when the user wants to improve click-through rate on existing ads.★ 3.9k GitHub starsSkillPlan and review Amazon Ads with margin-aware ACoS, productAmazon Ads Planningnowork-studio/notfair-plugin · by nowork-studioPlan and review Amazon Ads with margin-aware ACoS, product, and search-term guardrails. Use for Amazon advertising, Sponsored Products, Sponsored Brands, Sponsored Display, ASIN targeting, Amazon ACoS, or Amazon Ads performance exports.★ 3.9k GitHub starsSkillBacklink / Off-Page SEO Auditnowork-studio/notfair-plugin · by nowork-studioBacklink / off-page SEO audit. Works WITHOUT a paid tool by default — it uses the Google Search Console Links report (your top linking sites, most-linked pages, and anchor text) plus any backlink export the user provides (Ahrefs / Semrush / Majestic / DataForSEO CSV). Analyzes referring-domain profile, anchor-text distribution (over-optimized / spammy patterns), most-linked pages vs. money pages (internal-linking opportunity), toxic/spam link signals, and link-building priorities. Use this skill when the user asks about backlinks, link building, off-page SEO, referring domains, anchor text, toxic/spam links, disavow, or their link profile. Trigger on: "backlinks", "backlink audit", "link building", "off- page SEO", "referring domains", "anchor text", "toxic links", "spam links", disavow file", "who links to me", "link profile", "domain authority". NOTE: rich third-party metrics (DR/DA, full link index) require a paid data source; this skill is explicit about what it can and can't see without one.★ 3.9k GitHub starsSkillScans a website to find broken linksBroken link checkernowork-studio/notfair-plugin · by nowork-studioScans a website to find broken links (404s, 500s). Crawls internal pages, identifies broken outbound links, and reports source pages for easy fixing. Use this when the user asks to "check for broken links", "find 404s", audit my links", or "is my site healthy".★ 3.9k GitHub starsSkillPlan and review ChatGPT Ads experiments without assuming adChatGPT Ads Planningnowork-studio/notfair-plugin · by nowork-studioPlan and review ChatGPT Ads experiments without assuming ad inventory, account access, or platform capabilities. Use for ChatGPT advertising, OpenAI ads, conversational ad concepts, ChatGPT campaign plans, or performance reviews from a verified export.★ 3.9k GitHub stars