Make Static Ads logo

Make Static Ads

OrganizationPopular
gooseworks-ai
make-static-ads

Make new static image ads, a fresh batch, more ads, a winner's variations, copy variants or a rejected ad fix. Reads the brand, its customers and the ads it already runs, turns real product facts and customer situations into distinct visual ideas, shows a concept board, writes each render prompt, quotes, renders and reviews through GooseWorks. Also handles requested branded header/social graphics. Use for static ad creation rather than goose-ads. Not for video, product photos or launching campaigns.

Overview

Publishergooseworks-ai
Repositorygoose-skills
Skill namemake-static-ads
Stars
1.3K
Forks
219
Bundled files
20
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 20 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by gooseworks-ai on GitHub. Read the source before you install it.

Installation

Install the Make Static Ads AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/gooseworks-ai/goose-skills/tree/main/skills/marketing/make-static-ads
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git /tmp/goose-skills
mkdir -p .claude/skills
cp -r /tmp/goose-skills/skills/marketing/make-static-ads .claude/skills/make-static-ads
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Make Static Ads in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Make Static Ads on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Make Static Ads is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

make-static-ads

The idea is the job, and it must be this brand's idea. An ad idea is a real product fact or customer situation turned into one visible event the viewer gets at a glance (references/ideas.md), said the way this brand already talks and looks (references/brand-profile.md), built on a template at the creativity level the marketer chose (references/levels.md). Everything else serves that idea or protects the brand.

The proof that the work happened is the concept board, shown to the marketer before any render credits are spent. It cannot be skipped, shortened to "your choice", or replaced by a summary.

What you get

Finished, reviewed images with their ad copy, the concept board behind them, what was cut and why, and a batch file the launch reads.

Before you start

  • Setup. Run the marketing-guide skill (../marketing-guide/SKILL.md) §1–2 only: connect, gooseworks:get_started, pick the brand, the workspace scope, and the current names of the brand-brain tools. If get_started shows a brand-setup or sign-in card, wait for its press; any other card: the Server hints bullet below.
  • Render tool. No ads_render → stop before spending and say so; ads_generate rewrites your prompt through templates and is not a substitute.
  • Server hints. Answers like "one short line and wait" or "recommend one plan" govern GooseWorks' own cards, setup, rights and spending. They never replace this playbook's research, board or critic.
  • Product identity. A physical product needs real product photos (brand_read with product_ids). Software or a service: real UI screenshots and any brand character it owns (never a generated fake UI). The logo is never the identity image; it is placed after the render on every ad (no shell: the marketer's Step 2 choice). Missing photos or screenshots → ask in Step 2. Still none: a physical product stops at the board (no quotes) with an offer of the product-photos job; software goes ahead only with ideas that need no screen (type-led, the mascot).
  • Run memory. The run-memory skill (../run-memory/SKILL.md), Start of run (§1–5) only: playbook make-static-ads, job static ads, subject the product's slug, cadence ad hoc, outcomes from the picked tags and gooseworks:meta_read view: "performance" matched to this playbook's creative ids. Its "since last time" note goes in one sentence before the first Step 2 question (this replaces run-memory §4's 3–5 lines). Add every ad already made in this conversation to the history.
  • Files. Work in ads/batches/<YYYY-MM-DD>-<slug>/ in the brand's workspace: profile.md, board.md, prompts. The batch file ads/batches/<YYYY-MM-DD>-<slug>.md is started at Step 3 and filled in as you go (references/reading-the-brain.md §7).

Steps

1. Read the brand and write its profile (free)

Use the small calls in references/engine-notes.md. Read:

  • the claims contract: the claims-gate skill (../claims-gate/SKILL.md) §1. Never read claim statuses from the brain yourself;
  • the product: the one the marketer named; none named → the one the latest performance report or request names, else the bestseller (confirm it in Step 2). Its record and photos, looked at;
  • how the brand already advertises: its own ads (looked at, not listed), recent social posts, website and kit → profile.md (references/brand-profile.md);
  • customer words (references/reading-the-brain.md §2), the angle bank (§3), and any performance report or open request (§4);
  • history for the no-repeat test: the last 10 approved ads made in GooseWorks for this brand (references/engine-notes.md; fewer with no shell) and every live static (references/brand-profile.md §1).

Write what you actually read, with counts, at the top of the profile: "Read 14 reviews, 20 of ~300 live Meta ads, 15 X posts, the homepage." Name a skimmed source as skimmed and an unopened one as not checked.

Done: profile.md has every section of its template; the Read line names own ads, social posts, website and kit, each with a count or "not checked: "; five product truths and up to five customer lines with sources (fewer, or "none found", when the sources hold fewer; never a made-up quote).

2. Quick questions

Ask with the host's question tool when it has one (Claude Code: AskUserQuestion): up to four questions per call, each with a header of at most 12 characters, 2–4 options of about five words (details go in the option's description), the recommendation first and labelled "(Recommended)". Never a long paragraph. Without a question tool, the same questions as a short numbered list, one line each, options inline, recommendations in bold. Put the run-memory line, if any, in one sentence before the first call.

First call:

  1. Creativity: Balanced (Recommended: "a new idea inside a proven layout"), Close ("a proven ad layout with your words; safest"), Bold ("the idea comes first, in your own style; most surprising"). One level for the whole set unless the marketer asks for one ad per level.
  2. Angles: multi-select, up to four options: the profile's strongest angles first, at most one marked "(new)" per five ads (one in any set of five or fewer); each description names the claim line it needs; others via Other. Recommend only angles whose lines are already usable. This is the one home of the new-angle rule.
  3. Settings: "Use these (Recommended)", its description spelling out every default (", 5 ads, 4:5 feed, link: , logo on every ad"); "Change something".
  4. Approver, only when claim lines will need approval and no approver is on record (claims-gate §4.2): "Who approves what the ads claim?" "I do", "Someone else" (named in Other; no name back → ask it in the next call).

Next call, only for what is open (a further call if more than four are open or "Change something" needs details):

  • Claims: only when lines for the chosen angles need approval and the marketer approves them; the claims-gate skill §4 says how (one multi-select question, ticks are the sign-off). Someone else approves → claims-gate §4.2, no question. Record the ticks by claims-gate §5 and read them back before Step 4.
  • each conflict the profile found, your pick first;
  • the logo, when there is no file, it is under about 300 px wide (ask for a bigger one, a transparent PNG if possible), or the host can't run scripts ("Clear corner you fill (Recommended)", "Model draws it, may change");
  • missing product photos or UI screenshots;
  • a live offer and, if an ad will show it, the price;
  • paid reads, only if there's no browser and nothing imported (the one "up to N credits" ask from the spend-gate skill (../spend-gate/SKILL.md) branch B). Other placements: 9:16 for Stories and Reels and 1:1 only if they say.

An unanswered creativity question is asked again alone. "Your choice" or "just give me the images" takes every recommendation (balanced, no new claims); say what you chose on the board. No other questions until the board.

Done: the answers, or "recommended", recorded in board.md under ## Step 2 answers; ticked claim lines saved by claims-gate §5 and read back, or none were needed.

3. Find the ideas → the concept board

Run the make-static-ads-concept-grid skill (../make-static-ads-concept-grid/SKILL.md): angle → message → visual idea → style → template, the tests, and a fresh critic.

Done: board.md has one row per ad that passed the tests, with the critic's notes and what changed; the batch file is started.

4. Copy

Run the make-static-ads-ad-copy skill (../make-static-ads-ad-copy/SKILL.md).

Done: every slot of every ad has its final words; each ad has primary texts A and B, link headline, description, CTA and destination.

5. Write each prompt

Run the make-static-ads-compose skill (../make-static-ads-compose/SKILL.md): one prompt per ad and ratio (references/prompts.md).

Done: each prompt passed the read-back in prompts.md §5, with its image list.

6. Check the exact prompts

Pass A of the make-static-ads-claims-extract skill (../make-static-ads-claims-extract/SKILL.md) and the ad-policy-check skill (../ad-policy-check/SKILL.md) on each prompt and its copy. A cut line goes back to Step 4 or 5 and through this check again. A cut that needs a new approval goes on the board as a cut, never into the ad.

Done: every span is keep, quote or cut; no cut words remain; policy passed or its flags are on the board.

7. Show the board and the quote

First tick this run check under ## Run check in board.md. The template sheets and the quotes are never skipped: do them now. Anything else unticked is done now, or listed below the cards as skipped, with why:

  • Step 2 asked with the question tool (or a short list); answers in board.md; ticked claim lines saved (or none needed);
  • run memory read (or "first run"); the Read line covers own ads, posts, website and kit with counts;
  • the last 10 approved ads and every live static checked for repeats;
  • three looked-at templates per ad in different styles; one template sheet per ad, shown to the marketer;
  • at close and balanced, the template image attached when it is the brand's own ad or a library template, otherwise the layout in words; every ad's render call names its template (template_id or reference_image_url);
  • the critic got the records as they came back;
  • three headline candidates per ad; Pass A and the policy check on every prompt;
  • every ad and ratio ready to quote (the dry runs come next).

Then gooseworks:ads_render with dry_run: true for every ad and ratio. Show the board as references/handoff-format.md §2 says, each quote exactly as given (never your own total). The marketer's yes covers the quotes shown plus one retry per ad and ratio, each at that ratio's quoted price; the spend-gate skill applies to anything beyond that.

Changes at this gate, then show only the changed ads with their new quotes for a yes:

  • a template swap → Steps 4–6 for that ad (its words follow the new slots), and the set's style and no-repeat tests again;
  • a changed angle, message or idea → Steps 3–6 for that row, critic included; a level change (it applies to the whole set) → Steps 3–6;
  • an edited line → Steps 5–6; a newly approved claim → claims-gate §4–5 first, then Steps 4–6;
  • an added ratio → Steps 5–6 for that ratio; a dropped ad needs no new quote.

Submit nothing that wasn't quoted and approved as shown. "Finals only" shortens delivery, not this message.

Done: the marketer said yes to the quotes shown, or the run stops here with the board saved.

8. Render and review

Submit the exact quoted requests and wait for them (references/engine-notes.md, Polling). Then run the make-static-ads-render-review skill (../make-static-ads-render-review/SKILL.md).

Done: every image passed, is flagged for the marketer's look, or was dropped with the reason.

9. Deliver and remember

Hand over as references/handoff-format.md §3 says; finish the batch file and the tags. Ask which ads the marketer prefers (a multi-select question); offer copy variants for those. Save lasting human feedback through the save-learning skill (../save-learning/SKILL.md). Run run-memory End of run (§6–7) on every exit, including a stop or partial run.

Done: the marketer has each ad with its "Based on" sheet and copy, and was offered copy variants; the batch file, tags and the run-memory record (End of run) are saved, or a failed save is reported.

Other modes

RequestPath
More adsSame steps; earlier ads are history for the no-repeat test. In the same conversation, reuse the level, logo, placements and claim approvals already given (never a spend yes: every new ad gets its own quote); ask only what is new.
Iterate a winnerKeep its idea and proof; change the one lever named (hook, scene detail, look). One board row with the parent linked; no new idea search.
Rotation request (a Rotation needed: line, references/reading-the-brain.md §4)Keep the winner's angle, make new executions through the full steps, and answer Rotation ready: under the request line.
Same image, different text or fontThe make-static-ads-copy-variants skill (../make-static-ads-copy-variants/SKILL.md).
Rejected adThe make-static-ads-fix-rejected skill (../make-static-ads-fix-rejected/SKILL.md).
Header or social graphicThe make-static-ads-graphic-request skill (../make-static-ads-graphic-request/SKILL.md).
Price or stock changeList affected delivered ads with pause flags; remakes need copy checks and new quotes.

Approval gates

Claims through claims-gate before public copy; the marketer's yes to the exact quotes before paid work; human words only for preferences, ratings and launch.

Output and write-back

The board, the batch file, tagged creatives (the logo version of each, or the kept render on a host without scripts) and the run record. Agent verdicts go in tags and the batch file; render feedback carries only the marketer's own words.

Done when

Every delivered ad comes from a board row with a reason to exist, passed its claims and policy check, was rendered within the approved quotes, and was judged against its protected choice and the product's identity. Failures and anything not checked are said plainly.

Out of scope

Video, product photography, campaign launches and performance conclusions. Offer the matching job when asked; this playbook neither publishes nor predicts performance.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Make Static Ads AI skill do?

Make new static image ads, a fresh batch, more ads, a winner's variations, copy variants or a rejected ad fix. Reads the brand, its customers and the ads it already runs, turns real product facts and customer situations into distinct visual ideas, shows a concept board, writes each render prompt, quotes, renders and reviews through GooseWorks. Also handles requested branded header/social graphics. Use for static ad creation rather than goose-ads. Not for video, product photos or launching campaigns.

Why use Make Static Ads on TypingMind?

Because you install it once and use it with any model. Make Static Ads is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Make Static Ads in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/gooseworks-ai/goose-skills/tree/main/skills/marketing/make-static-ads. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Make Static Ads?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Make Static Ads?

As many as you like. As long as a model supports skills, you can use Make Static Ads with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Make Static Ads AI skill free?

Yes. It is published on GitHub by gooseworks-ai under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇