research
MAmattpocock/skills288k10,178 new stars in the last 7 days
Use when the user wants to reverse-engineer an existing image ad into a reusable prompt template. Validates via Arcads — picks gpt-image-2 or Nano Banana at Phase 1. Triggers on "clone this ad as a template", "reverse engineer this ad", "turn this ad into a prompt", "extract a template", "make this ad reusable", "add to my prompt library", "study this ad and make a template". Input is an EXISTING ad image; does NOT trigger for fresh generation (use chatgpt-image-ad or nano-banana-image-ad).
Take an existing image ad and turn it into a reusable, parameterizable prompt template that gets appended to the shared 37-template image-ad library. The template is validated by round-tripping through one of the Arcads image-ad generators — ChatGPT Image 2 (typography / UI-mimicry templates) or Nano Banana (photoreal / lifestyle / multi-reference templates).
This skill replaces the older Uni1-locked image-ad-clone (which only worked with Luma uni-1). It's backend-agnostic: at Phase 1 the agent asks you (or auto-detects from the reference) whether to validate against gpt-image-2 or Nano Banana, then routes through the matching generator script in this repo.
Inherits all 6 hard rules from the shared guide (strip platform chrome, validate by generating, test the generalized version, no brand-specific text in the final template, never silently overwrite, document model notes for both backends). Plus per-repo:
Pick by what the reference ad is showing — most templates fall into one clear bucket.
Use chatgpt-image-ad (gpt-image-2) when the reference is:
Use nano-banana-image-ad (Nano Banana family) when the reference is:
If the reference straddles both (e.g. a UGC-style photo with rendered text overlays), the safer default is to clone twice — once per backend — and ship the template with Model notes saying which renders cleaner. The agent will offer this in Phase 8.
If the user explicitly says "clone this with gpt-image-2" or "with Nano Banana", honor that.
This skill uses the matching generator script in the SAME repo:
skills/chatgpt-image-ad/scripts/generate_image.py (locked to model: gpt-image-2)skills/nano-banana-image-ad/scripts/generate_image.py (nano-banana-2 default; --model nano-banana-pro or nano-banana-edit opt-in)Fail Phase 1 with a fix-it message if neither generator is installed in this repo.
Also required:
.env with ARCADS_BASIC_AUTH or ARCADS_API_KEYPRODUCT_ID in .env — if not set, the generator auto-fetches the first Arcads productWhen the shared guide Phase 1 tells you to locate the companion generator, look here in order based on the model choice:
For gpt-image-2:
~/.claude/skills/chatgpt-image-ad/scripts/generate_image.py<repo>/skills/chatgpt-image-ad/scripts/generate_image.pychatgpt-image-ad first.For Nano Banana:
~/.claude/skills/nano-banana-image-ad/scripts/generate_image.py<repo>/skills/nano-banana-image-ad/scripts/generate_image.pynano-banana-image-ad first.The Arcads image endpoint (/v2/images/generate) accepts only 1:1, 16:9, 9:16 — regardless of which model (gpt-image-2 or nano-banana) you're hitting. When measuring the original ad's aspect (Phase 2):
4:5, 2:3, 5:4 ads → render at 1:1 and post-crop in your downstream ad-builder skill1.91:1 ads → render at 16:9 and post-crop9:16 ads → native, no changeDocument the ratio fallback in the template's Aspect ratio: field so future users know they're rendering at a mapped ratio, not the original.
(The KIE per-API repo's image-ad-clone skill supports a broader native ratio set — 4:5, 2:3, 3:2, etc. — because KIE's /jobs/createTask Nano Banana endpoint accepts them. If aspect-ratio fidelity matters more than Arcads-specific control, consider the KIE repo for that template.)
.env has Arcads creds; both generators detected. Ask the user which model to validate against (or auto-detect from the reference's typography-vs-photo balance).--image-ref <reference_path> and the matched aspect ratio.{brand.name}, {brand.color_primary}, etc.).Model notes block.template-format.md. Required fields: tag, when-to-use, aspect ratio, reference image guidance, variable schema, template prompt (full validated), example fill, Model notes for both backends, validated example path.shared/skills/image-ad-prompting/prompting/prompt-library.md. Print path. Move PNGs to permanent iteration dir.<cwd>/iterations/clone-2026-05-26/
T40-lifestyle-hero/
prompt.txt
v1.png, v2.png, … # against the source ref (chosen backend)
test-fill-v1.png, … # Phase 7 generalization test against a different brand
cross-{other-backend}/v1.png # Phase 8 cross-model validation (optional)
notes.md
Model notes patterns to write in Phase 9**Model notes:**
- **gpt-image-2:** {observed behavior — e.g. "clean — strong on UI mimicry and table text", "tends to add a 4th Slack message — keep prompt explicit about exactly N", "small chart axis labels blur — bump font size feel"}
- **nano-banana:** {observed behavior — e.g. "strong — preferred backend for handheld board photos", "character identity drifts across variants on -2; use -pro to lock", "weak on dense table text — keep rows to 4 max"}
If you only validated against one model in Phase 8, say so explicitly:
**Model notes:**
- **gpt-image-2:** validated clean (see iteration path)
- **nano-banana:** untested — validate before using on nano-banana-image-ad backend
The diff between a uni-1-era library and this one is this Model notes block. Don't skip it — it's the difference between a portable template and one nobody knows how to use.
MAmattpocock/skills288k10,178 new stars in the last 7 days
AFaffaan-m/ECC278k4,046 new stars in the last 7 days
GAgarrytan/gstack136k883 new stars in the last 7 days
NEnextlevelbuilder/ui-ux-pro-max-skill135k1,864 new stars in the last 7 days
NEnextlevelbuilder/ui-ux-pro-max-skill135k1,864 new stars in the last 7 days
NEnexu-io/open-design101k1,126 new stars in the last 7 days