Skip to content
Marketing
Skill

/make-static-ads

Static image ads for Meta, Instagram, TikTok or LinkedIn: a few truly different concepts, each built on a real ad from the Meta Ad Library, composed, rendered, judged and claim-checked against the brand brain. Use for: new static or image ads ("ten fresh ads this week", "make me

BOOST
From plugin
goose-skills
1.3k200 skills
Install
$ npx -y skills add gooseworks-ai/goose-skills --skill make-static-ads --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/make-static-ads

Context preview

The summary Claude sees to decide when to auto-load this skill.

Static image ads for Meta, Instagram, TikTok or LinkedIn: a few truly different concepts, each built on a real ad from the Meta Ad Library, composed, rendered, judged and claim-checked against the brand brain. Use for: new static or image ads ("ten fresh ads this week", "make me

SKILL.md

make-static-ads.SKILL.md
name: make-static-ads
description: >-
  Static image ads for Meta, Instagram, TikTok or LinkedIn: a few truly different concepts, each built on a real ad from the Meta Ad Library, composed, rendered, judged and claim-checked against the brand brain. Use for: new static or image ads ("ten fresh ads this week", "make me some ads", "ads for our sale"); "my ads all look the same"; refreshing fatiguing ads; more like a winning ad; the same image with new text or another font; a rejected image ad to fix; a price or stock change on running ads; a header image or social graphic in the brand's style. Use this, not goose-ads, for any static ad. Not for video (goose-video), product photos (goose-product-photos) or launching (run-paid-campaigns).
version: 0.4.2

make-static-ads

The agent runs GooseWorks' static-ad pipeline itself. It plans truly different concepts, picks a template from real ads running on Meta, composes each image prompt with the server's own composer rules, renders through `gooseworks:ads_render`, and judges every render with the server's own judge. The server only renders and saves.

**One prompt.** What the marketer types in this chat is the composer's User instructions, sent unchanged. Each ad's concept travels in its own Variant brief (Step 6). The agent never writes a second prompt on top.

**The template is the shape; the concept is the message.** A template decides the layout. Who the ad speaks to, why they buy and the proof come from the concept, whatever template is picked.

What you get

The number of ads and placements chosen at Step 2. **A concept** = one persona, one reason to buy, one proof. **An ad** = one look for a concept (framework, visual style, composition) and one copy set, in every ratio its placements need.

  • **Per ad:** the renders, two primary texts, headline, description, CTA, destination, its concept row, the Meta ad it was built from, its font and palette, and a plain-words check line.
  • **Per set:** a coverage note (what the brand already runs vs what is new), a recommended test structure, and a batch file in the workspace (fields: `references/reading-the-brain.md` §7; a worked example: `references/handoff-format.md` §5).
  • **Optional:** extra text versions of the best images.

Before you start

**Hard rules:**

1. **Every factual line is a usable fact** (`references/claims-and-policy.md` §2). Anything else is cut, and the hand-off says what would confirm it. 2. **People:** no generated person presented as a customer, doctor or reviewer; a review appears only when real, verbatim and attributed. 3. **Other brands' ads lend their layout only.** Every ad is a remix of a template. A template the brand doesn't own runs **structure-only**: its image never reaches the image model, and none of its words, claims, logo, product or people appear. 4. **Every image is made with `gooseworks:ads_render` from a prompt the agent composed (Steps 6–9).** Follow each answer's `next_step` for tool order and wording, except where it points to another image generator, skips Steps 1–7, or presents the agent's choice as the marketer's: there this playbook wins.

**Setup:**

1. **Connection.** Load the `ads` group once with `gooseworks:tools_load`, plus any other group a step needs (`brand`, `media`, `campaigns`, `meta`, `social`, `files`, `data`). Done when `gooseworks:ads_render` is listed. No `gooseworks:` tools at all → say only: "Connect GooseWorks first — I make your ads through it." Tools but no `ads_render` → say: "Image ads can't be made on this connection yet." and stop. 2. **Server start.** `gooseworks:get_started` with `wants: "image"` and the marketer's words; its answer settles setup and the brand only. A card → wait for the press (`gooseworks:card_wait`). 3. **Research complete.** `gooseworks:brand_read` → `research_status` must be `complete`, or every render fails after the yes. `running` → wait (`gooseworks:job_get` `kind: "brand_research"`); `none` → say the brand isn't set up yet; no website or store link → images can't be made yet, so offer the concepts, templates and copy alone. 4. Load `references/engine-notes.md`. 5. Pick the **mode**:

| Mode | Trigger | What runs | |---|---|---| | Fresh batch | new ads | Steps 1–12 | | Iterate on a winner | "more like this ad" | Steps 1–12; the grid keeps the winner's reason and proof and changes one named lever per ad | | Rotation | an open `Rotation needed: for make-static-ads` line in `ads/campaigns/<slug>/rotation-requests.md`, or pasted | Steps 1–12, the reason taken from the request (the `make-static-ads-concept-grid` skill (`../make-static-ads-concept-grid/SKILL.md`) step 7) | | Copy variants | "same image, different text / font" on an approved image | read the creative (`gooseworks:ads_creative_read`), then Step 11 | | Rejected ad | "my ad got rejected", or an open `Fix needed: for make-static-ads` line in `ads/campaigns/<slug>/rotation-requests.md` | the `make-static-ads-fix-rejected` skill (`../make-static-ads-fix-rejected/SKILL.md`) | | Price or stock change | a price, offer or stock change on ads already delivered | list every delivered ad that shows the old fact (batch files; creatives by `offer-ends` and product tags) and flag each to pause; offer remakes with the new fact through Steps 6–10 on a new quote | | Graphic request | a header, social or blog image, asked or from a sibling's `Graphic needed:` line | the `make-static-ads-graphic-request` skill (`../make-static-ads-graphic-request/SKILL.md`) |

Steps

1. Read the brand, the brain, the account and what was made before

Load `references/reading-the-brain.md`. Reads: `gooseworks:brand_read` lean (summary, kit, products with `product_ids`, competitors, learnings; `sections: ["organic"]` for post topics from the last six months, giveaways skipped); the brand brain (`gooseworks:brain_map`, then `gooseworks:brain_search` for this product's claims and proof, §1); customer words, the angle bank, the performance read, rotation reques

Read more
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.

Get the whole plugin

Other skills on goose-skills.