ads-creative
Skill0 starsChanged 2 months agoMITView on GitHub
Write and validate ad copy for OpenAI Ads — headline 3-50 characters, description up to 100, counted by visible characters rather than code points. Use this skill for ad copy, headline, description, creative, ad variants, or when copy is too long and needs shortening.
10 other projects use a version of this.
Adopted by
Most recently taken up by
- oivanfelipe/claude-skillstheir own version, first seen Nov 8, 2026
- Hainrixz/claude-adstheir own version, first seen Nov 1, 2026
- AgriciDaniel/claude-adstheir own version, first seen Oct 25, 2026
- hackjpn/claude-skillstheir own version, first seen Oct 11, 2026
- chriswestt/claude-skillstheir own version, first seen Oct 9, 2026
- Biznomad/claude-skillstheir own version, first seen Jul 14, 2026
Used with
Projects with it also use ads-test, ads-dna and 8 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
chriswesttSkillads-test
A/B test design and experiment planning for paid advertising. Structured hypothesis framework, statistical significance calculator, test duration estimator, sample size calculator, and platform-specific experiment setup guides (Meta Experiments, Google Experiments, LinkedIn A/B). Use when user says A/B test, split test, experiment design, test hypothesis, statistical significance, sample size, or test duration.
Also in 5 projects that use this
chriswesttSkillads-dna
Brand DNA extractor for paid advertising. Scans a website URL to extract visual identity, tone of voice, color palette, typography, and imagery style. Outputs brand-profile.json to the current directory. Run before /ads create or /ads generate for brand-consistent creative. Triggers on: brand DNA, brand profile, extract brand, brand identity, brand colors, what is the brand voice, analyze brand, brand style guide.
Also in 6 projects that use this
OpenAISkillgsap
GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo). Use when writing GSAP animations in HyperFrames compositions.
Also in 3 projects that use this
OpenAISkillhyperframes-cli
HyperFrames CLI tool — hyperframes init, lint, inspect, preview, render, transcribe, tts, doctor, browser, info, upgrade, compositions, docs, benchmark. Use when scaffolding a project, linting, validating, inspecting visual layout in compositions, previewing in the studio, rendering to video, transcribing audio, generating TTS, or troubleshooting the HyperFrames environment.
Also in 3 projects that use this
StrayDragonSkillui-ux-pro-max
UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient.
Also in 3 projects that use this
- +5 more from chriswestt
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 10
- AgriciDaniel/claude-ads★ 10ksame name
- Hainrixz/claude-ads★ 102same name
- coopersimson96/ai-content-system★ 17same name
- megastep/codex-skills★ 4same name
- Maxymize/maxym-ai-ads★ 2same name
- get-proofpilot/claude-skills-catalog★ 1same name
- Biznomad/claude-skills★ 0same name
- chriswestt/claude-skills★ 0same name
- hackjpn/claude-skills★ 0same name
- oivanfelipe/claude-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- ads-auditSkill
- ads-campaignSkill
- ads-geoSkill
- ads-hintsSkill
- adsSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 4 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 10 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 92
If that is not enough, the line is trying to do too much.
- Distinctive: line 127
Check a draft by downscaling it to 116 px and looking at it at that size.
- Distinctive: line 136
Before creating the ad:
- Distinctive: line 138
No redirect between click and destination — link the canonical URL
“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Ad copy
Limits
| Field | Limit |
title | 3–50 characters |
body | up to 100 characters |
The figures 35 and 67 that circulate are wrong. They come from a repository without a source and contradict the OpenAPI spec.
Check every draft:
uv run python scripts/validate_creative.py \
--title "..." --body "..." --brand "YourBrand"The validator counts visible characters, not code points. With composed
characters — German umlauts in NFD form, emoji, flags — len() miscounts and
rejects valid copy.
The reading situation
The ad appears mid-conversation as a small card. The reader is not searching; they are occupied with something else. The logo is displayed automatically.
Three consequences:
- The brand name does not belong in the headline. The logo already carries it. Spend those six to ten characters on substance.
- The first clause carries the ad. What follows a comma often goes unread.
- Concrete beats general. "In 4 weeks" works; "fast" does not.
What works
Contrast. Makes the difference visible in few characters. "Automation without an IT department" (35)
Proof. A number, a name, a deadline. "Prototype in 4 weeks" (20)
Imperative. Verb first, reads quickly. "Get a quote in 48 hours" (23)
Compressed promise. Subject, verb, outcome. No filler. "Invoices that file themselves" (29)
Question. Works when it names a pain the reader recognises. "Still writing quotes by hand?" (29)
What does not
- Adjective stacks ("innovative, holistic, scalable") — burn characters, say nothing
- Dashes — a comma or colon does the job and saves a character
- Rules of three ("faster, better, cheaper") — read as machine-generated; two beats land harder at 50 characters
- Empty verbs ("Discover", "Unlock", "Transform")
- Abstract nouns ("solutions", "experiences", "journeys")
- Brand name as headline — wasted space
Shortening
Compound nouns make a 50-character headline tighter in German than in English. Seven moves, each with the saving:
- Drop articles. "Die Prozesse automatisieren" → "Prozesse automatisieren" (4)
- Digits, not words. "vier Wochen" → "4 Wochen" (3)
- Collapse verb phrases. "hilft Ihnen zu sparen" → "spart" (15)
- Cut hedges. "oft in 4 Wochen" → "in 4 Wochen" (4)
- Drop the brand name. The logo carries it (6–10)
- Comma instead of "und". (2)
- Break up or replace compounds. "Geschäftsprozessautomatisierung" → "Abläufe automatisieren" (8)
If that is not enough, the line is trying to do too much. Keep one idea, cut the rest.
Variants
Two or three ads per ad group, each with a different angle — not the same claim reworded. Otherwise the comparison is worthless.
A reliable pairing: one ad built on proof, one on contrast. They address different motives, so a difference in outcome is interpretable.
Record what each variant is meant to test, otherwise the result cannot be read later.
The image
<!-- Verified: 2026-09-14 against a live account -->Two measurements change how a motif should be drawn.
The card crops to a centre strip. A created ad carries an image_crop,
and on a 16:9 upload it read width: 0.558, height: 1, x: 0.221 — the middle
56 % of the width at full height, which is square. Supplying 16:9 throws away
44 % of the image, 304 px on each side of a 1376 px file. Upload square.
It renders at about 116×116. Measured in a preview. That is roughly a thumbnail, so:
- One object, or one relation between two objects. Anything with three or more elements turns to texture.
- The signal colour needs area, not a line. A motif that carries it on a thin outline loses it entirely; one that fills a whole shape still reads.
- Fine hatching, thin rules and small repeated marks disappear. Contrast between large flat areas survives.
Check a draft by downscaling it to 116 px and looking at it at that size. If you cannot tell what it is, neither can the reader.
Landing page
The headline has to match what the reader finds after the click. The most common cause of a good click rate with no conversions is a break between promise and landing page.
Before creating the ad:
- The landing page is reachable, including for the review crawler
- No redirect between click and destination — link the canonical URL
- The wording of the ad appears on the page in substance
A review_status: rejected with a crawler_* reason points at the landing
page, not the copy.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

