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 every stage change baβ¦
Install / Use
npx skills add gooseworks-ai/goose-skills --skill meta-ad-managerInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
MarketingSupported Platforms
Tags
Our assessment of meta-ad-manager
meta-ad-manager scores 86/100 on our quality scale, 383rd of 560 Marketing skills we index.
Its SKILL.md is 21 KB long, well organised into 18 sections and no code examples: a thorough specification that gives an agent plenty to work with.
With 1,222 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 33 days ago, so meta-ad-manager is actively maintained.
- Our last check on 2026-10-11 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit β read the skill file before letting an agent act on it.
meta-ad-manager compared with similar skills
All 4 of these similar skills score higher than meta-ad-manager; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| meta-ad-manager (this skill)by gooseworks-ai | 86 | 1.2k | 33d ago | SKILL.md |
| algorithmic-artby anthropics | 100 | 177.9k | 33d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 33d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 137.2k | 11d ago | SKILL.md |
| ui-ux-pro-maxby nextlevelbuilder | 100 | 137.2k | 11d ago | SKILL.md |
Frequently asked questions
- How do I install meta-ad-manager?
- Run
npx skills add gooseworks-ai/goose-skills --skill meta-ad-manager. The install tabs above show the steps for each supported agent. - Which AI agents does meta-ad-manager work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is meta-ad-manager safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is meta-ad-manager still maintained?
- The repository was last updated 33 days ago, so meta-ad-manager is actively maintained.
Skill content
View source on GitHubname: 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 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:
- GooseWorks when the GooseWorks tools are callable (the in-app coworker, or any agent with the GooseWorks MCP). Read references/gooseworks-adapter.md.
- Direct Meta when there is no GooseWorks, but a Meta access token and ad account are available. Read references/direct-meta-adapter.md.
- 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
| 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.mdandcontract/templates/.
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-intakecreatesads/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 needsads/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, writeads/brand.md,ads/README.mdand 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, writelocalfor both). Never write a placeholder ornonefor 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
| Situation | Do |
|---|---|
| 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 ended | That one |
| Several, and the message names a product, offer or campaign that matches one slug or its last/next action | That one. Say which in the reply, in the user's words ("Picking up the gift bundles campaign.") |
| Several, and nothing in the message decides it | Ask one question listing the open campaigns in plain words, with each one's next action. Never guess |
| Scheduled run | Every 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 eachNone.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), Evidenceuser request, Decided<user> asked for it, Outcomeopened.
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.mdfrontmatter 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 intent | Runs | Fallback while it is missing |
|---|---|---|
| intake, or ads/brand.md missing | ad-management-intake | Ask 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 it | the connection repair flow | β |
| strategy | ads-north-star-strategy | Use launch-meta-ad-campaign's test-design stage and write the result into strategy.md |
| create, review | campaign 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 | β |
| launch | launch-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 run | meta-ads-analyzer as a deep check | β |
| An open recommendation in state.md is approved or declined | the fix-and-adjust action it names | Pause 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-questions | Answer 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 campaign | the pause action (their request is the approval); stage live β paused when the whole campaign stops | β |
| The user
Truncated for display β read the full file on GitHub.
Related Skills
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way β as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an emβ¦
design
137.2kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVGβ¦
ui-ux-pro-max
137.2kUI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit β see the Safety scan above for what the skill file itself contains.
