answer-ads-questions
Answer questions about a brand's Meta ads (spend, results, which ad is winning, is it paused, why did Goose do that) only from reads made in the same turn,…
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
$ npx -y skills add gooseworks-ai/goose-skills --skill meta-ad-manager --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/meta-ad-managerContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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.
**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.
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 goose-skills installer | the 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.
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.
| 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.
changes only Step 0 and whether you may ask questions.
<!-- 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. -->
The harness needs a conversation to ask questions and get approvals.
surface; never send its user elsewhere to continue.
behind it): tell the user in one sentence to continue in chat or connect a messaging channel, and stop. Write nothing.
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.
Read `ads/README.md`. Always first, always the whole file.
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
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.
Repo: gooseworks-ai/goose-skills
Answer questions about a brand's Meta ads (spend, results, which ad is winning, is it paused, why did Goose do that) only from reads made in the same turn,…
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. image_urls…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's…
Generate an instrumental music bed via ElevenLabs Music, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Trims any sparse intro, loudnorm, fades…
Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The…
Generate a voiceover (VO) clip via ElevenLabs text-to-speech, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Voice id + script text come from…