ad-policy-check
Checks paid ads against the ad platform's rules (Meta, TikTok, Google, LinkedIn and others) and the brand's category rules: the…
Step of the make-static-ads playbook: composes every ad exactly as GooseWorks' server composer does — the marketer's chat words as the User instructions, the ad's concept as its Variant brief — and records the final prompt and ordered image list per ad and ratio, ready for a
$ npx -y skills add gooseworks-ai/goose-skills --skill make-static-ads-compose --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/make-static-ads-composeContext preview
The summary Claude sees to decide when to auto-load this skill.
Step of the make-static-ads playbook: composes every ad exactly as GooseWorks' server composer does — the marketer's chat words as the User instructions, the ad's concept as its Variant brief — and records the final prompt and ordered image list per ad and ratio, ready for a
name: make-static-ads-compose description: >- Step of the make-static-ads playbook: composes every ad exactly as GooseWorks' server composer does — the marketer's chat words as the User instructions, the ad's concept as its Variant brief — and records the final prompt and ordered image list per ad and ratio, ready for a quoted render. Run make-static-ads instead; not for direct use. version: 0.4.2
The method is `../make-static-ads/references/composer.md`: the server's own rules, copied verbatim. This atom says how this playbook fills the composer's slots. **The composer input is `composer.md` §5–§6 filled from the sources below, plus the departures listed in "Playbook departures"; nothing more.**
**Reads:** per ad, its grid row (concept-grid) and the hook direction from its copy row (ad-copy); its template (find-references), read with `gooseworks:ads_template_read` `template_id`; the brand kit, learnings and featured product as `composer.md` §1 lists them (once per batch); the Step 2 answers (logo, colours, font); `../make-static-ads/references/structure-blueprint.md`, `../make-static-ads/references/font-specimen.md`, `../make-static-ads/references/fonts-and-color.md`. **Writes:** per ad: the Variant brief, the assembled composer input (a file on a shell host), the composer's six-field answer, and per ratio the final prompt and the ordered `image_urls`; the font specimen (or why none); structure-only yes/no. All of it goes into the batch file.
Run `composer.md` §0's table, rows 1–10, in order. Row 11 (the quoted `ads_render` call) is the playbook's Steps 8–9; row 12 (judge and one retry) is the `make-static-ads-render-review` skill (`../make-static-ads-render-review/SKILL.md`).
| Row | What this playbook puts in it | |---|---| | 1 Inputs (§1) | Read the kit and learnings once per batch, the product record per featured product. Images the marketer attached in this chat → `gooseworks:media_upload`, then they are user uploads (§4). | | 2 Flags and path (§2) | From the Step 2 answers: logo → `no_logo`; colours → `../make-static-ads/references/fonts-and-color.md` §4 (brand / template / fresh palette); font → §1 (brand / a pairing / no specific font). §2.1 still forces colours and font on for `competitor_scrape` and `curated` sources — say so if the marketer asked for the template's look on one of those. **Structure-only follows ownership, not `source_kind`:** any template of another brand is structure-only, including one registered as `upload` with `ads_template_create`. §2.2's table covers only templates the server imports itself. Structure-only → run `structure-blueprint.md` first, in a fresh subagent where the host has one. | | 3 Colour (§3) | Brand colours → §3 as written, once per batch, seed = the batch file name (`../make-static-ads/scripts/schemes.py`). Fresh palette → the agent's palette per ad (`fonts-and-color.md` §4) as the assigned scheme. Logo colours are never changed (`fonts-and-color.md` §5). | | 4 References (§4) | As written. A structure-only template's image is never in the list. | | 5 Blueprint | Structure-only ads only (`structure-blueprint.md`). A direct competitor's template ("layout only", `../make-static-ads/references/references-and-remix.md` §5) gets the reduced blueprint (departure 2). | | 6 Composer input (§5, §6) | **User instructions (§6.6):** the marketer's own chat words for this ask, trimmed, unchanged — never rewritten, summarised or added to. Words meant for one ad only ("make #3 darker") go to that ad only. **Variant brief (§6.7, the brief form):** below. Leave out §6.6's "Messaging angle for THIS ad" line; the Variant brief already carries the concept, so it is said once. **Proof points:** departure 1. **Typography (§6.3):** as written, except departures 3 and 4. | | 7 Answer as the composer (§7) | Answer the assembled input literally; the composer writes the on-image words under its own text-density, copy and claims rules. Run the placeholder check. | | 8 Final prompt (§8) | As written. | | 9 Font specimen (§9) | `font-specimen.md`, when eligible (`../make-static-ads/scripts/specimen.py`). | | 10 Cap and ratios (§10) | One base prompt per ratio the ad's placements need. |
Variant brief: «angle directive» Use this exact messaging direction for this variant: «message»
| Angle family (`angles-and-hooks.md` §3) | Entry | |---|---| | Problem → solution; problem / agitate | `problem` | | Mechanism; demo / feature callouts | `product-proof` | | Social proof, review card, press quote, stat card | `social-proof` | | Us vs them / old way vs new | `comparison` | | Identity / belonging; aspiration | `aspiration` | | Objection handling | `objection` | | Founder story; gift / occasion; one persona's moment | `use-case` | | Offer / urgency (live offer only) | `offer` | | Curiosity / news; educational / myth-buster | `educational` | | Listicle / reasons-why | `benefit` | | A question hook the concept was built on | `hook-question` |
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.
Checks paid ads against the ad platform's rules (Meta, TikTok, Google, LinkedIn and others) and the brand's category rules: the…
Step of the analyze-performance playbook: calls ended tests, scores last week's calls, writes this week's kill/scale/hold calls…
Step of the analyze-performance playbook: flags tracking breaks with fixes and explains each big metric move with evidence,…
Step of the analyze-performance playbook: gathers the week's numbers from tools, exports and pastes, cleans them, and writes the…
Step of the analyze-performance playbook: ranks creative by angle, hook and format with spend gates, writes short per-channel…
Step of the analyze-performance playbook: joins cleaned store or CRM numbers with ad spend to build the business-truth table,…