Writing ads that fit platform specs is tedious. Google RSA headlines need to be under 30 characters. Meta primary text shows 125 characters before the fold. LinkedIn gives you 70 for a headline. This skill handles all of that — it generates ad copy that respects every platform’s character limits, grouped by creative angle, and can iterate on existing ads using performance data.
What Makes This a Claude Code Skill
Claude Code reads your product and brand context files, then writes ad creative sets as structured output files — not chat responses you have to copy somewhere. It enforces hard character limits per platform, groups variants by creative angle, and can export as CSV for bulk upload into ad platforms. When you feed it performance data, it generates new variants weighted toward what’s working.
Based on the ad-creative skill from coreyhaines31/marketingskills.
Two Modes
Generate from Scratch — Give it your product, audience, and goal. It produces ad sets across platforms.
Iterate from Performance Data — Feed it CTR, CPC, or conversion data from existing ads. It identifies which angles and copy patterns perform, then generates new variants that lean into what works.
Platform Specs Enforced
| Platform | Component | Character Limit |
|---|---|---|
| Google RSA | Headline | 30 characters |
| Google RSA | Description | 90 characters |
| Meta | Primary text (visible) | 125 characters |
| Meta | Headline | 40 characters |
| Intro text | 150 characters | |
| Headline | 70 characters | |
| TikTok | Ad text | 80 characters |
| Twitter/X | Full post | 280 characters |
Creative Angles
Output is grouped by angle so you can test different approaches:
- Pain point — lead with the problem
- Outcome — lead with the result
- Social proof — lead with numbers or testimonials
- Curiosity — tease without revealing
- Comparison — position against alternatives
- Urgency — time or scarcity pressure
- Identity — speak to who they want to be
- Contrarian — challenge a common belief
Setup
Create .claude/commands/ad-creative.md:
mkdir -p .claude/commands
Then add this content to .claude/commands/ad-creative.md:
Generate platform-specific ad creative based on $ARGUMENTS.
## Step 1: Determine Mode
If $ARGUMENTS includes performance data or references existing ads:
→ **Iterate Mode**: Analyze what's working, generate improved variants
Otherwise:
→ **Generate Mode**: Create ad sets from scratch
## Step 2: Gather Context
Read from project files:
- `.claude/brand-voice.md` for tone and banned words
- `.claude/` directory for product details, audience, USPs
- `src/content/` for existing positioning and messaging
Ask the user if not clear:
- Target platforms (Google, Meta, LinkedIn, TikTok, Twitter/X)
- Campaign goal (awareness, traffic, conversions, app installs)
- Target audience description
- Key offer or product to promote
## Step 3: Generate Creative
For each target platform, produce 3-5 variants per creative angle.
Enforce these character limits strictly — truncate nothing, rewrite to fit:
- Google RSA: 30-char headlines, 90-char descriptions
- Meta: 125-char primary text (visible), 40-char headline
- LinkedIn: 150-char intro text, 70-char headline
- TikTok: 80-char ad text
- Twitter/X: 280-char full post
Group output by angle: pain point, outcome, social proof, curiosity, comparison, urgency, identity, contrarian.
## Step 4: Output
Write to `./ad-creative/[platform]-[campaign-goal].md`
Also write `./ad-creative/bulk-upload.csv` with columns: platform, angle, headline, description, primary_text, cta
Print angle summary and total variant count to terminal.
Usage
/project:ad-creative Google and Meta ads for our free trial, targeting marketing managers
Claude generates ad sets with every variant fitting the exact character limits, grouped by creative angle, and writes both human-readable files and a CSV ready for bulk upload.
Tips
- Start with 2-3 angles, test them, then come back with performance data for Iterate Mode
- The CSV export saves hours of manual entry into Google Ads Editor or Meta Business Suite
- Run the Brand Voice Linter on the output if you have strict tone guidelines