A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Claude Code skill workbench for generating Meta image ads with Luma's uni-1 model. Reverse-engineer any ad into a reusab
A Claude Code skill that generates Meta/Facebook image ads with Luma's uni-1 model and uploads them to your Meta ad account, end-to-end. The skill clones an existing ad's structure (page, ad set, link, CTA), generates a new uni-1 image (optionally grounded on your brand's product photo), writes fresh ad copy informed by your account's top-spending ads, and creates the ad paused for you to review and launch.
The whole project is built around uni-1 specifically. Substituting another image model would silently break the prompt library, reference-grounding behavior, and aspect-ratio support. The helper script enforces the model lock at the CLI layer.
Two complementary Claude Code skills:
./skills/uni1-image-ad/ — the template-using skill. Generates a uni-1 image and uploads it as a paused Meta ad creative. Clones an existing ad's structure (page, ad set, link, CTA), generates the new image (optionally grounded on your brand's product photo), writes fresh ad copy informed by your account's top spenders, and creates the ad. Includes 4 helper scripts and 3 reference docs (7-template prompt library, 15 ad-copy frameworks, Meta CLI flag reference)../skills/image-ad-clone/ — the template-creating skill. Take any existing image ad → reverse-engineer it into a parameterizable prompt template → append it to the prompt library so uni1-image-ad can reuse the format with any brand. Iterates against the original to validate, then tests the generalized version with a different brand before saving.Plus:
./docs/luma-agents-api/ — the canonical reference for the Luma uni-1 API. Read this when in doubt about behavior../iterations/ — the prompt-engineering work that built the seed library (T1–T7). Each prompt was iterated until uni-1 reproduced the original ad reference, then generalized into placeholders. You can re-run any of them with python3 iterations/run_round.py <jobs.json>../Ad References/ — the swipe-file of real ads the prompt library was patterned after. Used as input for image-ad-clone when extracting new templates.sips for image dimension probing; everything else is portable)uv — brew install uvIf you're using Claude Code, the simplest path is to just clone this repo, open Claude Code in the directory, and say "help me install this." Claude reads CLAUDE.md on session start and will walk you through everything below. You'll need to provide your own Luma API key and Meta system user token (Claude can't generate those for you), but it'll handle the rest.
If you're doing it manually:
# 1. Clone
git clone <this-repo> uni1-image-ad
cd uni1-image-ad
# 2. Run the install script (checks Python + uv, installs meta-ads CLI,
# symlinks the skill, scaffolds .env). Idempotent.
./install.sh
# 3. Edit .env with your credentials
$EDITOR .env
# LUMA_API_KEY=luma-api-... from platform.lumalabs.ai → API keys
# ACCESS_TOKEN=... Meta system user token; see "Meta token setup" below
# AD_ACCOUNT_ID=act_... after Meta auth: meta ads adaccount list
# 4. Verify everything is wired correctly
./verify.sh
# 5. Restart Claude Code (open a fresh session in this repo) so the skill loads
Then in Claude Code, say something like:
"Make a uni-1 image ad cloning ad
120246xxxxxxxxxxx. Use the FORBES editorial template. Brand product image is at~/Downloads/my-product.png."
Claude triggers uni1-image-ad, clones the existing ad, generates a new uni-1 image grounded on your product photo, writes new ad copy in the style of your account's top-spending ads, shows you the previews, and (after your confirmation) uploads the new ad to your account in PAUSED status.
Or, to add a new template to your prompt library from any existing ad image you've seen and liked:
"Reverse engineer this ad into a reusable template:
~/Downloads/some-ad-i-saved.png."
Claude triggers image-ad-clone, analyzes the reference, drafts a faithful prompt, validates it against the original via uni-1, generalizes it into a parameterizable template, tests it on a different brand, and appends it to your prompt library as T8 / T9 / etc. — ready for uni1-image-ad to use later.
The skill needs a Meta system user access token, not a personal access token.
business_management, ads_management, pages_show_list, pages_read_engagement, pages_manage_ads, catalog_management, read_insights.env as ACCESS_TOKEN (not META_ACCESS_TOKEN — the CLI is strict)System user tokens last 60 days by default. When yours expires, regenerate it the same way.
Trigger phrases like "uni-1 ad", "new image ad in <ad set>", or "upload uni-1 image as Meta ad" fire the skill. Then it walks through:
.env and Meta authmeta ads ad get <AD_ID> and meta ads creative get <CREATIVE_ID> to extract page, ad set, link URL, CTA, and the cloned ad's tone (for reference)references/prompt-library.md (T1–T7) or write fresh, fill placeholders for your brandscripts/generate_image.py submits to Luma in parallel (--n 1–5 variants), polls, downloads, validates dimensionsscripts/top_spending_ads.py pulls top-10 ads by spend in your account with their copy, surfaces patternsreferences/ad-copy-frameworks.md, matched to the patterns it just readmeta ads creative create + meta ads ad create. Always PAUSED../generated/runs.jsonl, deep-link you to Ads ManagerSee skills/uni1-image-ad/SKILL.md for the full workflow.
./skills/uni1-image-ad/references/prompt-library.md contains 7 validated parameterizable templates:
| Tag | Format | When to use |
|---|---|---|
| T1 | Apple Notes listicle aesthetic | Sentimental "Why I switched" voice |
| T2 | Editorial article hero | Publication-co-signed credibility (FORBES, WIRED, Vogue…) |
| T3 | Story tweet+UGC composite | Authority quote + UGC photo for Stories/Reels |
| T4 | Fake Google search mosaic | "Best X for Y" with publication logos |
| T5 | Comparison table (light) | Brand vs. category competitor with feature checklist |
| T6 | Comparison table (dark, hooky) | Stop-the-scroll dark-mode "this RUINS X" hook |
| T7 | Sticky-note + product flatlay | Tactile UGC-style, 30-day-test reviewer voice |
Each template has placeholder variables (e.g. {brand.name}, {tagline}, {checklist_items}) that Claude fills based on your brand's reference image and seed prompt.
These were generated by uni-1 from the templates above, using a single product reference photo. AG1 is used as a worked example here — no affiliation, no endorsement; just a well-known brand to validate the templates against. When you use the skill, swap your own brand asset in.
![]() T1 — Apple Notes listicle Sentimental "why I switched" voice |
![]() T2 — Editorial article hero Publication-co-signed credibility |
![]() T5 — Comparison table Brand vs. category competitor |
![]() T7 — Sticky-note + product flatlay Tactile UGC reviewer voice |
Every example is a standalone PNG ready to upload as a Meta ad creative — no iOS chrome, no Sponsored badge, no platform UI. The --allow-chrome flag is the explicit escape hatch if you want screenshot-style ads.
These are enforced at the script and skill level, not optional:
uni-1 — the script refuses any other modelPAUSED — never ACTIVE--allow-chrome is the explicit escape hatch../generated/runs.jsonl is append-onlyagents.lumalabs.ai — api.lumalabs.ai is the legacy Photon endpoint. Don't mix them.ACCESS_TOKEN, not META_ACCESS_TOKEN or FB_ACCESS_TOKEN.meta-ads (published by Meta). meta-ads-cli is a third-party typosquat — don't install it.meta-ads only ships wheels for cp312/cp313. Use uv tool install meta-ads --python 3.13 to get an isolated venv.1:1, 2:3, 9:16, 1:2, 1:3, 3:2, 16:9, 2:1, 3:1. Common Meta ratios 4:5 and 1.91:1 are NOT supported — use 2:3 and 16:9 respectively.MIT. Use it, fork it, ship better versions.
Built by Caleb Kruse (Mr. Paid Social) in collaboration with Claude. The Ad References/ swipe file is sourced from public ad libraries; AG1 used as a worked-example for the prompt library is just a well-known brand to test against — no affiliation.
A Claude Code skill by Hao (駱君昊) that learns your Facebook voice and auto-posts to FB / IG / Threads / X with a 14-day c
1000+ skills curated from Anthropic, Vercel, Stripe, and other engineering teams
Claude Code skill for YouTube creators — channel audits, video SEO, retention scripts, thumbnails, content strategy, Sho
AI image generation skill for Claude Code -- Creative Director powered by Gemini