# Make Static Ads Compose

Step of make-static-ads: writes each ad's render prompt and ordered image list from its...

- Repository: https://github.com/gooseworks-ai/goose-skills (1276 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-10-27
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add gooseworks-ai/goose-skills --skill make-static-ads-compose -g -a claude-code -y`
Codex: `npx skills add gooseworks-ai/goose-skills --skill make-static-ads-compose -g -a codex -y`
Cursor: `npx skills add gooseworks-ai/goose-skills --skill make-static-ads-compose -g -a cursor -y`
Gemini CLI: `npx skills add gooseworks-ai/goose-skills --skill make-static-ads-compose -g -a gemini-cli -y`

## Description

Step of make-static-ads: writes each ad's render prompt and ordered image list from its concept-board row, one per ad and ratio, ready for a quoted render. Run make-static-ads instead; not for direct use.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# compose

**Read first:** `../make-static-ads/references/prompts.md`.
**Reads:** the `board.md` row with its final copy, level and template; `profile.md` (the brand's real look); `../make-static-ads/references/levels.md`; the product record and photos, the logo, the brand kit's colours and fonts, every `must` and `dont` rule.
**Writes:** per ad and ratio, the exact prompt and `image_urls` into the batch file, the template it is based on as `template_id` (its id from `ads_template_read`) or, with no id, as `reference_image_url` (the template's public image URL), never both, so the app shows "Based on" (this only records it; the image still goes in `image_urls` when `levels.md` says so), a `title` ("<brand>, <headline> (<level>)"), plus a `render-<ad>-<ratio>.json` holding the `gooseworks:ads_render` arguments on a host with files.

The rest: https://github.com/gooseworks-ai/goose-skills/blob/HEAD/skills/marketing/make-static-ads-compose/SKILL.md
