Skip to content
Marketing
Skill

/meta-ad-manager

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

From plugin
goose-skills
1.3k181 skills

Claude Code

$ npx -y skills add gooseworks-ai/goose-skills --skill meta-ad-manager --agent claude-code

SKILL.md

meta-ad-manager.SKILL.md
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](contract/RULES.md). The file shapes are in [contract/templates/](contract/templates/), and [contract/validate.py](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 by | This skill's folder | |---|---| | GooseWorks (the in-app coworker) | `agent-config/skills/meta-ad-manager/` in the workspace | | The GooseWorks CLI (`--with meta-ad-manager`) | the agent's skills folder, for example `~/.claude/skills/meta-ad-manager/` in Claude Code |

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](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](references/direct-meta-adapter.md). 3. **Planning only** when neither is available. Read [references/planning-only.md](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

| Skill | Stage it runs | Notes | |---|---|---| | `ad-management-intake` | intake: business facts, familiarity, the campaign brief; creates the `ads/` files | every mode | | `ads-north-star-strategy` | strategy: goal, audience, budget split, creative count, test frame | every mode | | campaign planning + creative generation | create and review | GooseWorks generates; other modes write a creative brief | | `launch-meta-ad-campaign` | launch: readiness, paused build, readback, confirmation | GooseWorks or direct Meta | | a quick check (daily report) | quick check on live campaigns | where the adapter has one | | `meta-ads-analyzer` | deep check on complete days | when installed | | fix-and-adjust actions (pause, revert, budget change, replace creative) | acting on an approved recommendation | the adapter lists what it supports | | `answer-ads-questions` | factual questions about the ads | every 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 y

Read more
@gooseworks-ai
Ships withgoose-skills

Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.

1.3k181 skills
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.3k
Star history of gooseworks-ai/goose-skills on GitHub, a chart by star-history.com

Other skills on goose-skills.

goose-ads

goose-ads

Edit, resize, animate and study image ads with GooseWorks in this chat. New static or image ads go to the make-static-ads skill…

goose-video

goose-video

Make a video ad in this chat from a real reference ad, found or theirs; styles are the fallback. Follow every answer's next_step.

gooseworks

gooseworks

GooseWorks growth coworker and router for markets, competitors, audiences, creators, campaigns, ads, photos, graphics, video,…

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about meta-ad-manager.

Which coding agents can use meta-ad-manager?
meta-ad-manager installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.