Agent skill

Meta Ad Manager

by gooseworks-ai in gooseworks-ai/goose-skills

Front door and loop owner of a Meta (Facebook/Instagram) ad harness.

MITAuto-check passed

Install Meta Ad Manager

skills CLI
$ npx skills add gooseworks-ai/goose-skills --skill meta-ad-manager -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install gooseworks-ai/goose-skills meta-ad-manager --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ads/playbooks/meta-ad-manager .claude/skills/meta-ad-manager && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
meta-ad-manager
GitHub stars
1.2k
Token cost
~5.4k tokens
SKILL.md length
3,133 words
Files
27 (incl. references)
Skills in repo
273
Repo updated
First seen
Licence
MIT

At a glance

Front door and loop owner of a Meta (Facebook/Instagram) ad harness.

  • Works in 7 steps: Surface gate → Read the index → Pick the campaign → …
  • Someone wants to run ads on Meta
  • SKILL.md covers Where this skill's files are, Choose one mode, Stage skills and Inputs, plus 6 more sections
  • Calls python3

What it does

Meta Ad Manager is an agent skill from gooseworks-ai/goose-skills. Front door and loop owner of a Meta (Facebook/Instagram) ad harness. Reads the brand's ads/ docs, works out which campaign the user means and which stage it is at, hands off to the stage skill that runs it (intake, strategy, creative, launch, checks, fixes, answers), and writes every stage change back to the docs. Use it when someone wants to run ads on Meta, comes back to ads they started earlier, a stage skill hands back, or a scheduled check fires.

Its SKILL.md is about 5.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 34 other files, including reference files (for example `agents/openai.yaml`, `contract/README.md` and `contract/RULES.md`).

It works with Instagram. The repository describes itself as: Library of Growth & GTM skills + data APIs for Claude Code, Codex, Cursor to run ads, social, content, lead gen, seo and data scraping. The licence is MIT.

When your agent uses it

  • Someone wants to run ads on Meta
  • Comes back to ads they started earlier
  • A stage skill hands back
  • A scheduled check fires

Example prompts

  • “/meta-ad-manager”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Surface gate
  2. Read the index
  3. Pick the campaign
  4. Read only what this campaign needs
  5. Route
  6. Hand-back and write-back
  7. Scheduled runs

What it can do on your machine

Read from SKILL.md and the folder at commit c650c6d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Meta Ad Manager loads about 5.4k tokens when it runs, and up to ~8.1k if it reads all its reference files. Until then it costs about 118 tokens; SKILL.md has 3,133 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~118
When it runs · the whole SKILL.md, loaded when a task matches
~5.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from gooseworks-ai/goose-skills at commit c650c6d, republished under its MIT licence (© gooseworks-ai). 3,133 words, ~5,422 tokens.

Download SKILL.mdSave it as .claude/skills/meta-ad-manager/SKILL.md (or your agent's skills folder). This skill also uses 26 other files; get the full folder from GitHub.
name
meta-ad-manager
description
Front door and loop owner of a Meta (Facebook/Instagram) ad harness. Reads the brand's ads/ docs, works out which campaign the user means and which stage it is at, hands off to the stage skill that runs it (intake, strategy, creative, launch, checks, fixes, answers), and writes every stage change back to the docs. Use it when someone wants to run ads on Meta, comes back to ads they started earlier, a stage skill hands back, or a scheduled check fires.

Meta Ad Manager

What this is for. Someone says "I want to run ads on Meta", or comes back a week later and says "where are we?", or a scheduled check wakes up. This skill works out where things stand from the brand's ad docs, picks the next step, hands it to the skill that does that step, and writes down what happened and why. It never makes the user repeat themselves.

It does not do the stage work itself. Intake, strategy, making creatives, launching, checking and fixing each belong to their own skill. This skill decides which one runs, sets the tone, and keeps the docs true.

The docs contract is law. How to read and write the files and the rules for numbers are in contract/RULES.md. The file shapes are in contract/templates/, and contract/validate.py checks a folder. Read RULES.md before your first write.

Where this skill's files are

Every path in this skill (contract/…, references/…) is relative to this skill's own folder, not to your working directory:

Installed byThis skill's folder
GooseWorks (the in-app coworker)agent-config/skills/meta-ad-manager/ in the workspace
The goose-skills installerthe folder the installer printed; in Claude Code, wherever you placed it (for example .claude/skills/meta-ad-manager/)

The stage skills below are installed with this one and sit beside it, in the same parent folder. ads/ itself is never inside a skill folder.

Choose one mode

Use the first mode that is available, and read its adapter before Step 1:

  1. GooseWorks when the GooseWorks tools are callable (the in-app coworker, or any agent with the GooseWorks MCP). Read references/gooseworks-adapter.md.
  2. Direct Meta when there is no GooseWorks, but a Meta access token and ad account are available. Read references/direct-meta-adapter.md.
  3. Planning only when neither is available. Read references/planning-only.md. Intake, strategy and the creative brief still work; nothing is read from or written to Meta.

"The adapter" in the workflow below means the file for the mode you chose. A campaign stays in the mode it started in; say so if the user's access changes mid-campaign.

Stage skills

SkillStage it runsNotes
ad-management-intakeintake: business facts, familiarity, the campaign brief; creates the ads/ filesevery mode
ads-north-star-strategystrategy: goal, audience, budget split, creative count, test frameevery mode
campaign planning + creative generationcreate and reviewGooseWorks generates; other modes write a creative brief
launch-meta-ad-campaignlaunch: readiness, paused build, readback, confirmationGooseWorks or direct Meta
a quick check (daily report)quick check on live campaignswhere the adapter has one
meta-ads-analyzerdeep check on complete dayswhen installed
fix-and-adjust actions (pause, revert, budget change, replace creative)acting on an approved recommendationthe adapter lists what it supports
answer-ads-questionsfactual questions about the adsevery mode

The first four and the answers skill are installed with this one. When a listed skill is not installed, the workflow's Fallback column says what to do. Outside GooseWorks, "campaign planning + creative generation" means the adapter's written creative brief, and the check and fix rows are what the adapter lists.

Inputs

  • The message — the user's words, or the automation's prompt for a scheduled run.
  • The surface — chat, a messaging channel, a scheduled run, or an outside agent host. It changes only Step 0 and whether you may ask questions.
  • The brand's ads/ folder — the adapter says where it is. It may not exist yet.
  • The docs contract — contract/RULES.md and contract/templates/.
<!-- shared:meta-ad-manager start -->
<!-- This block is maintained in ONE place and copied byte-for-byte into both the
     maintainers' source copy and the published goose-skills copy. Edit one, copy
     it to the other, and run the parity script before shipping either. -->

Workflow

Step 0 — Surface gate

The harness needs a conversation to ask questions and get approvals.

  • Web chat, a messaging channel, or an outside agent host: go on. Web chat is a full surface; never send its user elsewhere to continue.
  • A surface with no conversation (a button or form that started the request, with no chat behind it): tell the user in one sentence to continue in chat or connect a messaging channel, and stop. Write nothing.
  • Scheduled run: go on, but you may not ask questions (see Step 6).

Follow-ups after launch arrive in the report. If the user asks how they will hear about results and has no messaging channel, say how the report reaches them and offer to connect a channel. Do not block on it.

Step 1 — Read the index

Read ads/README.md. Always first, always the whole file.

  • It does not exist → this brand has never started the harness. Route to intake (Step 4) and write nothing yourself: ad-management-intake creates ads/brand.md, the index and the campaign folder, after it has stated its assumptions to the user (its Step 5 comes before its Step 6). Only on the fallback path (intake not installed) do you write them yourself, as below. The folder must always be valid under the contract, and that needs ads/brand.md, which needs the business type and the user's familiarity. Once you have those two (research usually gives the business type; familiarity is one question) and you have stated your assumptions, write ads/brand.md, ads/README.md and the new campaign folder (Step 2) together, in one turn. Both files need the brand's id and its coworker agent id in the frontmatter; the adapter says where they come from (outside GooseWorks, write local for both). Never write a placeholder or none for either.
  • It exists → read the Campaigns table. Each row is a campaign slug, its stage, the last and next action. Do not open any campaign folder yet.
Step 2 — Pick the campaign
SituationDo
No campaigns, or the user clearly wants something new ("now ads for our new serum")Start a new campaign (below)
One campaign that is not endedThat one
Several, and the message names a product, offer or campaign that matches one slug or its last/next actionThat one. Say which in the reply, in the user's words ("Picking up the gift bundles campaign.")
Several, and nothing in the message decides itAsk one question listing the open campaigns in plain words, with each one's next action. Never guess
Scheduled runEvery campaign at live or paused, one at a time (Step 6)

Starting a new campaign. Pick a short kebab-case slug from the product or offer (holiday-gift-bundles) and route to intake. When ad-management-intake is installed it creates the folder and the index row with that slug; do not write them twice. On the fallback path, create ads/campaigns/<slug>/ with all three files, following the templates:

  • state.md — campaign: <slug>, stage: intake, goose_campaign_id: none, meta_push_ids: [], meta_campaign_id: none, updated_at: <today>, updated_by: meta-ad-manager; Open recommendations, Pre-approved rules and Last check each None.
  • strategy.md — campaign: <slug>, product_ids (catalog ids if known, else []), version: 1, updated_at: <today>, based_on: intake <today>, and every section heading with "Not decided yet — the strategy stage sets this." under it (the same stub intake writes).
  • decisions.md — one entry ### <today> — Campaign opened: Recommended gives the reason (the user's request, quoted briefly), Evidence user request, Decided <user> asked for it, Outcome opened.

Add the row to the index in the same turn. For a brand with no ads/ yet, this happens together with ads/brand.md (Step 1).

Step 3 — Read only what this campaign needs

Read ads/campaigns/<slug>/state.md. Then only what the next step needs:

  • ads/brand.md frontmatter only (familiarity, business_type) on any turn that talks to the user, for tone (RULES.md §3 allows this). The body only when the next step needs a business fact: intake, strategy, a deep check, or a question the docs might already answer.
  • strategy.md — for create, review, launch and deep check.
  • decisions.md — when an open recommendation is being decided, for a quick or deep check (to follow up the last recommendation), and when the user asks "why did we…".

Never read other campaigns "for context".

Step 4 — Route

Find the row for the campaign's stage and the user's intent. Hand off to the skill in Runs. If that skill is not installed, do what the Fallback column says.

Stage, or intentRunsFallback while it is missing
intake, or ads/brand.md missingad-management-intakeAsk the goal-first questions from launch-meta-ad-campaign Stage 1 that the docs do not already answer, plus the familiarity question ("How much have you used Meta Ads before: never, a little, or a lot?"). At most four questions per turn, familiarity and the goal first; the rest wait for later turns unless the user asks to answer everything at once. State what you are assuming instead of asking. Write business facts to ads/brand.md and campaign facts (goal, audience, budget, destination) to the campaign brief (the adapter says where it lives). Never create a brief file under ads/
Meta is not connected and the next step needs itthe connection repair flow—
strategyads-north-star-strategyUse launch-meta-ad-campaign's test-design stage and write the result into strategy.md
create, reviewcampaign planning and creative generation, as ads-north-star-strategy hands it off: about three times the creatives the plan needs, so the user can choose. Nothing that spends credits runs without the user's yes (a cost quote, or the approval step the generation flow provides); an approved plan is not approval to spend credits—
launchlaunch-meta-ad-campaign—
live or paused + a daily scheduled run, or "send me the report"quick check (the daily report)—
live or paused + "dig in", "what's working", or a weekly scheduled runmeta-ads-analyzer as a deep check—
An open recommendation in state.md is approved or declinedthe fix-and-adjust action it namesPause or revert, or propose the budget change or creative swap. A proposal changes nothing in Meta until the user approves it on the page the tool returns: say so and give them that link
Any stage + a question in chat ("how are the ads doing?", "how much have we spent?")answer-ads-questionsAnswer from the read tools only, with each number's data window and sync time (RULES.md §5). Never from the docs
live or paused + an open recommendation still awaiting + "what's next?"Put that recommendation to the user as the one next step, with its evidence; act only on a yes—
The user asks to pause ads or a campaignthe pause action (their request is the approval); stage live → paused when the whole campaign stops—
The user asks to turn paused ads back onSay it will start spending again, and how much per day, and get an explicit yes. Then the launch skill's confirmation flow; stage paused → live after Meta confirms—
The user asks to stop a campaign for goodConfirm once, pause everything still running, then stage → ended—
endedNothing. Say it ended and when, and offer a new campaign—

Stage skills never get a new question the docs already answer. Pass them what you read.

Planning without Meta is allowed. A missing Meta connection blocks launch, checks and fixes, not intake, strategy or creative.

Show full SKILL.md (1,421 more words)Show less
Step 5 — Hand-back and write-back

When a stage skill returns, decide whether the campaign moves stage.

Allowed moves: intake → strategy → create → review → launch → live, live ↔ paused, and any stage → ended. Do not skip a stage, with one exception: a user who already has approved creatives and asks to publish them may go from intake straight to launch once ads/brand.md exists; the launch skill's test design is then written to strategy.md, and the decisions entry says why the stages were skipped. review → launch needs the user's approval of the creatives. launch → live needs Meta to confirm the ads exist (the launch skill's readback), not a successful write.

On every stage change, in the same turn, write all three:

  1. state.md — set stage, updated_at (today), updated_by: meta-ad-manager. Keep ids the stage skill wrote.

  2. ads/README.md — that campaign's row: Stage (must equal state.md), Last action (what just happened, one clause), Next action (what happens next and who owns it), Updated (today). Update updated_at in the frontmatter.

  3. decisions.md — append one entry at the end:

    ### 2026-09-24 — Stage: strategy → create
    - Recommended: Move to creatives: the strategy is set (3 ads from 9, $30/day for 14 days) and the user agreed to it.
    - Evidence: user request
    - Decided: Maya approved the strategy
    - Outcome: moved to create

    The Recommended line is the reason. Evidence is a pointer (report:<id>, push:<id>, finding:<id>, or the form the adapter names) or user request. Never make up a pointer: use one only when a tool or report gave you that id.

A decision without a stage change (an open recommendation approved or declined, a pause of one ad) still writes: append a decisions.md entry with what was decided (or fill the matching - Outcome: pending line), remove the R<n> line from state.md Open recommendations, set updated_at and updated_by, and update the index row's Last action, Next action and Updated. If strategy.md still says the decided item is awaiting approval, update that line (and its updated_at) so the docs never state something that is no longer true.

Whole-file writes: read the file, change it, write it all back (RULES.md §4). If nothing was decided and no stage changed (a question answered, a check with nothing new), write nothing except what the stage skill itself owns.

Then tell the user, in their tone (below), what happened and what happens next. One next step, not a menu.

Step 6 — Scheduled runs

Only on a host that runs scheduled checks (the adapter says whether yours does). No one is there to answer, so:

  • Never ask a question. Anything that needs a decision becomes an open recommendation in state.md (- R<n> (<date>): <what> — evidence <pointer> — awaiting) and a line in the report.
  • Go through each live or paused campaign on its own: read its state.md and decisions.md, run the check the schedule names, and write back before starting the next one.
  • Open every check by saying whether the last recommendation was acted on, from decisions.md.
  • Any write to state.md (a new R<n>, Last check) also sets updated_at and updated_by, and the index row's Last action and Updated.
  • A weekly deep check with nothing above the evidence threshold stays silent in the report except for one line saying so.

How to talk to the user

Read familiarity from ads/brand.md. Until intake has recorded it, treat the user as a novice. Never guess "expert".

FamiliarityBefore each recommendationThen
noviceOne plain sentence explaining the idea, with no ad jargonThe recommendation, in business words
intermediateA short clause of explanation only for terms beyond the basicsThe recommendation and the key evidence
expertNothingThe recommendation and the evidence, with Meta's own terms allowed

The same recommendation, two ways:

  • Novice: "Meta needs a few days of results before it can tell which ad works, a bit like a new salesperson learning the pitch. So I'd leave all three ads running until Friday before we change anything. OK to wait?"
  • Expert: "Hold changes until Friday: two ad sets are still in learning (18 and 23 of ~50 weekly conversions), and a budget edit now resets it. Approve the hold?"

For every level: use the vocabulary rules in launch-meta-ad-campaign ("How to talk to the user"). Talk about the business, not Meta's objects. Surface a raw id only when the user asks.

Decision Rules

  • Never ask what the docs answer. Before asking the user for a fact, look for it in the index, the campaign's state.md and strategy.md, and the body of ads/brand.md (reading them for this is allowed at any stage). Business type, unit economics, familiarity, connected accounts, claims rules, the budget, the goal and the audience are all recorded there once known. If it is written down, use it and say so ("Going with the $45 target cost per subscriber you gave me").
  • One question at a time for routing. Stage skills may ask more; this skill asks at most one.
  • Numbers from tools are observations. Never write a Meta number into the docs as a fact or call it "current" (RULES.md §5).
  • Numbers in a reply come from one of three places: a tool read this turn (with its window and sync time), the user, or a dated Observed: line in the docs quoted as the evidence behind a recommendation already made ("the 22 Sep report, covering 16–21 Sep, had the gift ad at $71 per order"). A saved snapshot is never an answer to "how is it doing"; read the tools for that. Always say the snapshot's date. Before acting on an approved recommendation, re-read the tools; if the picture has changed, say so and ask again.
  • Evidence pointers stay in the docs. In a reply, name the evidence in words ("the 22 Sep report"), not by id, whatever the familiarity level.
  • The docs record decisions, not Meta's state. Spend, delivery and rejections are read from tools when needed.
  • Budget changes always need the user's approval, every time. Pause is the only action that can be pre-approved (in state.md Pre-approved rules).
  • Credits are spend too. Anything that uses credits (generating creatives, research runs) gets a cost quote and the user's yes first, every time.
  • At most four questions in a turn, across every stage. Ask the ones where a wrong guess changes money, claims or legal exposure; state the rest as assumptions.
  • Never activate spend from here. Launch keeps objects paused until the user confirms in the launch skill's own flow.
<!-- shared:meta-ad-manager end -->

Output

  • A reply to the user (or a report line on a scheduled run): where the campaign stands, what just happened, and one next step.
  • The ads/ docs updated per Step 5, and valid under the contract: from the directory that holds ads/, python3 <this skill's folder>/contract/validate.py ads.

Quality Checks

  • ads/README.md was read first, and only the campaign in play was opened.
  • Index Stage equals state.md stage for every row you touched.
  • Every stage change has its decisions.md entry, appended at the end; nothing earlier changed.
  • No question asked whose answer is in the docs.
  • The wording matches familiarity; novice when unknown.
  • No number read from a tool is in the docs without an Observed tag. Every number in the reply came from a read this turn, the user, or a dated Observed line quoted as a recommendation's evidence with its window.
  • A scheduled run asked nothing and left every open decision in state.md.

Failure Modes

SymptomCauseFix
The user is asked for their budget or business type againThe docs were not read before askingRead the index, state.md, strategy.md and brand.md first; quote what is there
Index says strategy, state.md says createOne of the two writes in a transition was skippedWrite both in the same turn; the validator flags the mismatch
A campaign "resumes" at the wrong productTwo campaigns, and the message was guessedIf the message does not name one, ask the one routing question
Files written but nothing appears on the next runWritten somewhere other than where the adapter keeps ads/Use the adapter's paths exactly
contract/RULES.md "does not exist"Opened relative to the working directoryPaths are relative to this skill's folder (see "Where this skill's files are")
The routed skill is not installedA stage skill is missing on this hostUse the Fallback column; do not improvise a new flow
The user is told "your ads are live" after a writeA write is not deliveryOnly move to live after the launch skill's readback
A scheduled run asks a question nobody seesThe scheduled rules were skippedTurn it into an open recommendation in state.md

© gooseworks-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 26 other files (references) in skills/ads/playbooks/meta-ad-manager of gooseworks-ai/goose-skills.

  • SKILL.md
  • agents/openai.yaml
  • contract/README.md
  • contract/RULES.md
  • contract/examples/sample-brand/ads/README.md
  • contract/examples/sample-brand/ads/brand.md
  • contract/examples/sample-brand/ads/campaigns/fall-subscription-launch/decisions.md
  • contract/examples/sample-brand/ads/campaigns/fall-subscription-launch/state.md
  • contract/examples/sample-brand/ads/campaigns/fall-subscription-launch/strategy.md
  • contract/examples/sample-brand/ads/campaigns/holiday-gift-bundles/decisions.md
  • contract/examples/sample-brand/ads/campaigns/holiday-gift-bundles/state.md
  • contract/examples/sample-brand/ads/campaigns/holiday-gift-bundles/strategy.md
  • contract/templates
  • … and 14 more

Open the folder on GitHubat commit c650c6d

Compare with similar skills

Meta Ad Manager next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Meta Ad Manager compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Meta Ad Manager this skillgooseworks-ai/goose-skills1.2k—~5.4kAutomated safety check: PassMIT
Socialcoreyhaines31/marketingskills54k4 repos~4.5kAutomated safety check: PassMIT
Banner Design Systemnextlevelbuilder/ui-ux-pro-max-skill135k1 repos~1.8kAutomated safety check: PassMIT
Social Contentfreekmurze/dotfiles1k23 repos~2.1kAutomated safety check: PassNone
Instagram Skillsupreme-gg-gg/instagram-cli2.2k—~1.4kAutomated safety check: PassMIT
Postizgitroomhq/postiz-agent5082 repos~7.9kAutomated safety check: PassAGPL-3.0

Similar skills

  • Social

    coreyhaines31/marketingskills

    When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, or Facebook, or wants to do social listening and engagement triage.

    54k GitHub starsUsed in 4 repos~4.5k tokens
    Writing & ContentAuto-check passed
  • Banner Design System

    nextlevelbuilder/ui-ux-pro-max-skill

    Walks through designing a banner for social media, ads, a website hero or print, from gathering requirements to building 2 or 3 art-direction options in HTML and CSS.

    135k GitHub starsUsed in 1 repo~1.8k tokens
    Frontend & DesignAuto-check passed
  • Social Content

    freekmurze/dotfiles

    When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms.

    1k GitHub starsUsed in 23 repos~2.1k tokens
    Writing & ContentAuto-check passed
  • Instagram Skill

    supreme-gg-gg/instagram-cli

    How to use Instagram CLI to interact with Instagram from the command line on behalf of a user.

    2.2k GitHub stars~1.4k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Postiz

    gitroomhq/postiz-agent

    Postiz is a tool to schedule social media and chat posts to 28+ channels X, LinkedIn, LinkedIn Page, Reddit, Instagram, Facebook Page, Threads, YouTube, Google My Business, TikTok, Pinterest…

    508 GitHub starsUsed in 2 repos~7.9k tokens
    Writing & ContentAuto-check passed
  • Design

    Ohh-889/skyroc

    Comprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations…

    795 GitHub starsUsed in 9 repos~3.1k tokens
    Frontend & DesignAuto-check passed

More from gooseworks-ai/goose-skills

All 273 skills in this repo
  • Reddit Post Finder

    gooseworks-ai/goose-skills

    Scrape and search Reddit posts using Apify. An agent skill from gooseworks-ai/goose-skills.

    1.2k GitHub starsUsed in 1 repo~1.2k tokens
    Auto-check passed
  • Create Image Fal

    gooseworks-ai/goose-skills

    Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent.

    1.2k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Render Hook Replacement

    gooseworks-ai/goose-skills

    Replace an existing video's opening with a supplied clip or free kinetic text hook while retaining and verifying every original body frame, audio, captions and ending.

    1.2k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Blog Feed Monitor

    gooseworks-ai/goose-skills

    Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.

    1.2k GitHub starsUsed in 1 repo~578 tokens
    Auto-check passed
  • Competitor Post Engagers

    gooseworks-ai/goose-skills

    Find leads by scraping engagers from a competitor's top LinkedIn posts.

    1.2k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check: notes
  • Render Chatgpt Chat

    gooseworks-ai/goose-skills

    Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…

    1.2k GitHub stars~2.3k tokensUpdated today
    Auto-check passed

Works with

Questions about Meta Ad Manager

What does Meta Ad Manager do?

Front door and loop owner of a Meta (Facebook/Instagram) ad harness. Meta Ad Manager is an agent skill from gooseworks-ai/goose-skills. Front door and loop owner of a Meta (Facebook/Instagram) ad harness.

When should I use Meta Ad Manager?

Meta Ad Manager fits situations like: someone wants to run ads on Meta; comes back to ads they started earlier; A stage skill hands back; A scheduled check fires.

How do I install Meta Ad Manager in Claude Code?

Run `npx skills add gooseworks-ai/goose-skills --skill meta-ad-manager -a claude-code`. Or copy the skill folder (skills/ads/playbooks/meta-ad-manager in gooseworks-ai/goose-skills) into .claude/skills/meta-ad-manager in your project. Claude Code loads it when a task matches its description.

How do I install Meta Ad Manager in Codex?

Run `npx skills add gooseworks-ai/goose-skills --skill meta-ad-manager -a codex`. Or copy the skill folder (skills/ads/playbooks/meta-ad-manager in gooseworks-ai/goose-skills) into .agents/skills/meta-ad-manager in your project. Codex loads it when a task matches its description.

Can I use Meta Ad Manager in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gooseworks-ai/goose-skills --skill meta-ad-manager -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/meta-ad-manager, .gemini/skills/meta-ad-manager, .github/skills/meta-ad-manager and .opencode/skills/meta-ad-manager in your project.

What does Meta Ad Manager need to run?

Going by SKILL.md and its folder, Meta Ad Manager needs the command-line tools its instructions call (python3).

Does Meta Ad Manager access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Meta Ad Manager safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Meta Ad Manager use?

Meta Ad Manager is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Meta Ad Manager use?

About 5.4k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.7k tokens, read only when the agent opens those files.

What are the alternatives to Meta Ad Manager?

Skills that share tags, products or a category with Meta Ad Manager: Social (coreyhaines31/marketingskills, 54k stars), Banner Design System (nextlevelbuilder/ui-ux-pro-max-skill, 135k stars), Social Content (freekmurze/dotfiles, 1k stars) and Instagram Skill (supreme-gg-gg/instagram-cli, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Meta Ad Manager?

gooseworks-ai (a GitHub organization) maintains it in gooseworks-ai/goose-skills, which has 1,240 GitHub stars. The repository holds 273 skills in this directory. The repository was last updated on October 8, 2026.

Source: gooseworks-ai/goose-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.