Drive Social Media · Workflow Guide

Creative Skill Package

Three skills that work as one package. Each skill hands a single file to the next, so the client's details are never typed twice. The package takes a client's website and ends with review-ready Meta ads.

Top 3 improvements in this version
  • Newest image model: ads render with GPT Image 2.5 (Sunburst), which greatly improves on-image text, spelling and type handling across the creative workflow.
  • Authentic-photo ads that still look designed: "less AI scenery" or "keep the real photos" now limits only the scene or subject it names — the headline stays custom graphic lettering, and a fallback font like Arial is never the finished treatment.
  • Creative QA, not just technical QA: Codex finishes and critiques one representative ad before repeating a new look across a batch, and readable text on a black background no longer counts as a finished ad.
Package v6.3 · 2026-09-30 · CHANGE LOG

Optional: click here if you want guidance on parking rejected ads for future refreshes.

⇩ Install the skills once, ~5 minutes

Two files, two chats, two pastes. Mac or Windows — nothing in the skills assumes a drive or folder. Already on v6.3? Skip to the runs below. New to this? Read the requirements right under this box first.

1 · Codex — two skills

⬇ codex-skills.zip

New Codex chat → attach the zip → paste:

Attached is codex-skills.zip. It contains updated versions of two skills I already use: brand-standards (v4.2) and meta-ad-creative-generator (v4.7.0). Please: 1. Back up my current versions of both skills, if I have them. 2. Install the attached versions into my Codex skills folder, keeping the folder structure exactly as it is inside the zip (brand-standards/ and meta-ad-creative-generator/, each with its SKILL.md and subfolders). 3. Confirm both skills are installed and show me the version number from each SKILL.md. 4. Check that Python 3.10+ with Pillow and PyYAML is available for the generator's scripts, and tell me if anything is missing (see its references/portability.md). Do not rewrite or summarize the skill files — install them as-is.

Then type $ in a new chat — both skills should be listed. First time only: ask Codex where to put your OpenAI API key for the ad generator.

2 · Claude Cowork — one skill

⬇ creative-strategy-SKILL.md

New Cowork chat → attach the file → paste:

Attached is the updated SKILL.md for a skill called creative-strategy (v5.6.0). Please update my creative-strategy skill with this file exactly as written — do not rewrite, shorten, or reformat it. If I don't have a creative-strategy skill yet, create it from this file. Show me the review card so I can save it.

A card appears in the chat — click Save. After that /creative-strategy works in any Cowork chat.

⚙ What it needs check once

The Claude side needs no connectors. Codex needs an image key and Python. Google Drive is optional. The black and orange buttons open the Codex or Claude desktop app with a setup prompt already typed in. Nothing runs until you press send.

OpenAI API keyRequired · Run 3

The Meta Ad Generator makes images through the OpenAI Images API, so Codex needs a key saved on your computer.

Show the prompt
I use the meta-ad-creative-generator skill, which calls the OpenAI Images API. Walk me through saving my OpenAI API key so that skill can use it on this computer (Mac or Windows). Keep the key out of any skill folder, client folder or chat log, and confirm the skill can see it without printing the key.
Python 3.10+ with Pillow and PyYAMLRequired · Run 3

The generator's checker and finishing scripts use Python. On a Mac that's python3, and on Windows it's py -3.

Show the prompt
Check whether this computer has Python 3.10 or newer with the Pillow (with WebP support), PyYAML and openai packages installed. Tell me what's missing and install anything missing in a sensible user-level or project environment. Do not change system Python settings without asking me first.
Google DriveOptional · Run 1

Only used if you answer "Yes" to the asset scan in Run 1. It pulls usable photos from the client's Creative Folder. If you skip it, drop the files into assets/ yourself.

Show the prompt
Help me connect Google Drive so Codex can search and download files from my Drive (read-only is fine). Walk me through connecting it (ChatGPT Settings → Apps / Connectors → Google Drive) and then confirm by listing five of my most recent Drive folders.
The client's Claude Project + folder accessBuilt into Claude · Run 2

No connector needed. Run Creative Strategy inside the client's Project so it can read your meeting notes, and approve the one-time folder popup so it can read your assets and save the package.

The golden rule for attachments: each run hands one file to the next. The file carries the client context, so nothing is typed twice.
RunAppYou typeYou attachYou get back
1Codex$brand-standards nothing<Client>-Brand-Standards.md
2Claude Cowork/creative-strategy the Brand-Standards .md<Client>-Creative-Package.md — strategy, concepts, and a counted production plan
3Codex$meta-ad-creative-generator the Creative-Package .md (only that one)review-ready ads + <Client>-Ad-Index.md

1 Research the brand Codex

  1. Open the Codex app. Start a new chat. Attach nothing.
  2. Type $ and pick brand-standards.
  3. It asks for what it can't find — answer in one message: the business name (exactly as you want it spelled on folders and files), the client's website, and any extra sources one per line (Facebook, Instagram, Google Business Profile, Yelp — or "none"). Don't tell it the industry; it works that out from the site.
  4. It asks where the client folder should live. Point it at the folder where you keep this client's work, or let it create one (Mac or Windows — any path works; there is no built-in default). Everything for this client lands there: the .md files, assets, work files, and finished ads. If the folder already had artwork in it, it asks before organizing anything.
  5. It asks: Scan your Google Drive for client assets? On Yes it looks for <Client Name> Creative Folder and downloads usable ad assets only — common image types, plus videos up to 100 MB each. Audio and project files never come down. Over 1 GB of qualifying files, it asks first. It tells you what actually arrived versus what it only saw listed.
  6. It researches and writes <Client>-Brand-Standards.md into brand/. Every rule is tagged by how much weight it carries — a client requirement, a verified fact, observed website styling, or a recommendation — so a weak website doesn't become the ceiling for the ads. It also grades each asset: usable as-is, needs enhancement, identity reference, or missing.
  7. Since v5: if you gave it meeting notes or call summaries, it writes an evidence ledger — what was said, where, when, and whether it was an approval, a proposal, or just discussion — and a dated client expectations section: promised services, locations, dates, formats, quantities. Run 2 builds the production plan from this. A Gemini summary is treated as a summary, never as a verbatim quote.
  8. Optional: a brand tile in brand/, marked reference until you approve it. A missing tile never stops production; the real logo file and written color values always outrank it.
Before Run 2 — put your assets in. Drop the client's photos, logo, and any files you have into the client folder's assets/ subfolders. If you have ads the client already loves or hated, drop them into brand/benchmarks/approved/ or rejected/ — Run 3 judges its renders against them. Run 2 builds the strategy around what's actually in there.

2 Build the strategy and the production plan Claude Cowork

  1. Open the client's Project first — not a blank chat. Inside the Project, the skill reads your meeting transcripts and call summaries, so the strategy reflects what the owner actually said they want, not just what the website says.
  2. Start a new chat in that Project. Attach <Client>-Brand-Standards.md and type /creative-strategy.
  3. If a permission box pops up on your desktop asking to access your client folder — approve it. That's how it reads your assets and saves the output back. It asks once.
  4. The slate gate — your one decision point. It shows you the service categories it found, a recommended production slate, and three quick questions, then waits. It looks like this in the chat:

    2 service categories identified — 5 ads each (10 total) · 30 images at 4:5, 1:1 and 9:16 · 27 ready · 3 on hold

    ✅ Building this round
    1 · Entry & Front Doors — Primary
    #ConceptArtWhy
    1.1Door as first impressionClient photo, heavy AI enhancePromised 9/02 call
    1.2The 2 a.m. deadbolt checkClient photo, heavy AI enhancePromised 9/02 call
    1.3Fall offer (on hold)Client photo + AI sceneOwner priority, 9/10
    1.4–1.5…two more……
    2 · Storm & Impact Windows — Secondary
    #ConceptArtWhy
    2.1Category-5 test labelAI sceneStorm season
    2.2–2.5…four more……
    ⏸ On hold
    • 1.3 Fall offer: waiting on the offer end date
    ➖ Not included
    • Commercial glass: owner paused it (8/20 call)
    • Financing explainer: terms not verified — optional
    Questions
    1. Make 5 ads per category or adjust? · Keep 5 (10 ads) · Decrease to 3 (6) · Increase to 8 (16) · Increase to 10 (20) · Tell me a custom mix per category
    2. Ad sizes? · Produce all 3 ad sizes for each ad? (4:5, 1:1, 9:16) · Produce 1:1 Only? · Produce 4:5 Only? · Produce 9:16 Only?
    3. Would you like any carousel ads in this run? a) No · b) Yes — you pick which service(s) · c) Yes — I'll pick the service buckets
    4. What is the fall offer's end date?
    Read it top to bottom. Images is the real count of finished artworks — one ad in all 3 sizes is three, a four-card carousel is four, a PNG and a JPG of the same image are still one. Art tells you what each ad is built from. On hold means it's in the plan but can't render yet, and says why. Everything left out is listed with the reason. Answer the three questions — or skip them: no answer means 5 ads per category, all 3 sizes, no carousels. Every total is worked out from the real number of categories. If you say yes to carousels you can let it pick the services or name them yourself; carousel cards are 1:1 by default and come on top of the per-category number. Then say what to change, or "build it".
    After those three questions it asks only what it couldn't settle — an offer's end date, an unresolved people policy, a source that contradicts itself. It won't re-ask what's already in the ledger.
  5. Every client photo is flagged for heavy AI enhancement by default — dramatic lighting, clutter cleanup, new backgrounds and settings, magazine-quality finish. People stay recognizably themselves: their face, features, body type and weight never change. The logo keeps its mark and wording, and real work (a roof, a tattoo, a dish) keeps its actual result. AI never fakes proof: no invented trucks, uniforms, staff, or testimonial imagery. Only if a category has almost nothing usable, it asks whether real photos are coming or whether to plan AI-generated imagery. Every photo the client gave us is usable, people in it or not.
  6. It writes the concepts on the approved slate. Claude works as Codex's lead researcher and copywriter here: each concept carries a visual idea (what stops the scroll), how the image proves the words, why it fits this client, suggested copy — a lead headline plus alternates, caption, Meta headline and description with character counts — CTA, destination, and a four-line asset plan: Keep real / Enhance / Generate / Must accomplish. Only facts, offer terms and legal lines are fixed. Visual ideas and layouts are suggestions; Codex, as creative director, decides the execution.
  7. It delivers <Client>-Creative-Package.md (also saved to brand/). Section 4 is the resolved production brief — the rules that govern this run, each tagged client-approved, strategist-approved, verified fact, recommendation, or unresolved, with the evidence ledger behind them. Section 9 is the production plan: every artwork as a row — concept, ratio, format and card, placements, why it's there, ready or held, copy state — with the totals. The same plan sits in the file header (production_plan: v1) where Codex's checker reads it. The brand standards ride along as Appendix A.

3 Make the ads Codex

  1. Open Codex. New chat. Attach <Client>-Creative-Package.md — just that one file. Type $ and pick meta-ad-creative-generator.
  2. It validates the production plan first (scripts/handoff_contract.py) — the counts add up, every carousel card is listed, nothing held or reserved can slip into the render queue. Then it re-scans the client folder and actually opens the source photos, logo, and any benchmarks — not just their filenames. It tells you what changed since Run 2.
  3. It asks the CTA button question once — how many ads get a button-style CTA drawn on the artwork: None / 25% / 50% / 100% / Other. When in doubt, say None. It never re-asks a settled answer.
  4. For each concept it writes a short execution brief — the visual idea, the hero subject, the composition, which assets stay real and which get enhanced or generated, and the specific failure to avoid — then renders. By default it heavily enhances client photos (new light, backdrop and setting, people kept recognizably themselves), sets the main headline as generated graphic lettering rather than plain type over a photo, and uses a transparent logo — rebuilding a clean one from the best available copy if the folder doesn't have one. Logos never sit on a white or colored box. When the ad has to be carried by real client work — a tattoo, a finished job — it keeps the original photo untouched, works only the surroundings it's allowed to, and still designs the headline; a "less AI" request limits the scene, not the lettering.
  5. First look — your decision point. For a new direction it builds a small calibration set — up to three concepts, usually two candidates each — and runs them through its own visual gate first: full size and phone size, checking idea, composition, typography, brand fidelity, and finish — plus whether the requested look actually shows (a black background alone isn't "dramatic"; readable text isn't a design). Before it repeats a new look across a batch, it finishes one representative ad and critiques it first. You only see what passed. Pick the direction, or say what's wrong — it gets two focused repair rounds per concept before it has to tell you the direction isn't working.
  6. After you approve the direction it builds the rest of the ready artworks in batches of five, pausing after each batch. Held artworks stay in the plan and are reported as remaining, not silently dropped. Codex may improve any wording that isn't locked as it builds — facts, prices, dates, offer terms, quotes and legal lines stay exact, and every rewrite is logged in the Ad Index.
  7. Ads land in the client folder with uniform file names: <AdID>_<Ratio>_<Category>.jpg — categories are lettered A, B, C in slate order, ads numbered within each (A1, A2, B1), ratio codes 11 / 45 / 916, so A1_45_LivingRoom.jpg is the first Living Room ad at 4:5. Carousel cards add _Card01, _Card02. Round and revision live in folders, never in the name. Alongside them, <Client>-Ad-Index.md — every artwork with its copy, computed character counts, CTA, destination, sources, settings, QA evidence, and status. At the end it reconciles what was delivered against the full plan and lists anything still held. Review-ready means it passed Codex's visual gate; approved means you or the client said so. Use the index when you upload to Ads Manager.

After Run 3

Default after the client review: go live with what they approved, then build a new set at the next creative refresh. If you'd rather keep some of this round's work, see parking rejected ads for a future refresh.

! Common mistakes

★ Cheat sheet

RUN 1 Codex $brand-standards attach NOTHING → answer: name, website, sources → confirm folder → Drive scan Y/N → get Brand-Standards.md (+ evidence ledger + client expectations if you gave it notes) → drop assets into assets/ (+ benchmarks/ if you have them) RUN 2 Cowork /creative-strategy attach BRAND-STANDARDS.md (in client Project!) → approve folder popup → APPROVE THE SLATE ← your big decision: categories, concepts, art, on hold, not covered → ads per category? (5 default · 3 / 8 / 10 / custom mix) → ad sizes? (all 3 default: 4:5, 1:1, 9:16 · or one size only) → carousels? (no / you pick / I pick — cards 1:1 by default) → answer only what it couldn't settle → get Creative-Package.md (concepts + Section 9 production plan; header carries production_plan: v1) RUN 3 Codex $meta-ad-creative-generator attach CREATIVE-PACKAGE.md only → it validates the plan (counts, cards, holds) before anything renders → CTA buttons? (None is fine) · heavy photo enhancement + graphic headlines are automatic → FIRST LOOK: up to 3 concepts × 2 candidates, already through Codex's visual gate → approve the direction → ready artworks in batches of 5 → Ad-Index.md + reconciliation → files named AdID_Ratio_Category.jpg (A1_45_LivingRoom.jpg · A2_11_LivingRoom_Card01.jpg) THEN Client Package review → approved ads go LIVE → new set at next refresh. Done.

Δ Change log what changed and why

SkillCurrent versionInstalled
$brand-standards (Codex)4.22026-09-15
/creative-strategy (Claude Cowork)5.6.02026-09-30
$meta-ad-creative-generator (Codex)4.7.02026-09-30
drive_social_handoffv1 out of Run 1 · v2 + production_plan: v1 out of Run 22026-09-15

v6.3 "Authentic photos, real design" 2026-09-30

Why. A request for less invented scenery, authentic client photos and a minimal, moody look came back as default Arial headlines on black canvases, cutouts and repeated fades — and passed QA because the text was readable and the photos were untouched. Three things went wrong: a scenery restriction was read as a reason to drop the designed headline, a fallback font from a brand document became the finished treatment, and "readable and preserved" was accepted as proof of good design. v6.3 fixes all three on both sides of the handoff, without new approval questions, blanket bans, or layout quotas. The handoff contract (drive_social_handoff: v2 + production_plan: v1) is unchanged — no new fields or values — so v5 and v6.x packages still validate.

/creative-strategy — v5.5.0 → v5.6.0 (Claude Cowork)

Changed
  • Restrictions apply only to what they're about. Each restriction is recorded against the element it governs — the real subject, the surrounding scene, the typography, the logo, or the factual copy — with its source. "Less AI scenery", "authentic photos" or "minimal" limit the scene or subject; they don't switch off generated headline lettering or justify a plainer layout. Only an explicit ban on generated lettering or on all AI changes the type route. Section 4 gains a "Restrictions by element" line.
  • Typography is classified. Every font mentioned is labeled observed styling, sourced requirement, proposed direction, or technical fallback. A fallback (Arial, a system or CSS fallback font) is never the headline treatment. Expressive editorial lettering counts without metallic or 3D effects. No font blacklist.
  • Asset-led concepts. When real client work carries the ad, Keep real names the subject and the details that must survive (a tattoo's linework, the real product), Enhance/Generate say what the surroundings may become, and Must accomplish describes the result. Mood is written as light, tonal depth, framing, scale and negative space — a black background alone isn't "dramatic."
  • Must accomplish is judgeable — the requested treatment, how the image carries the message, and what must survive about the protected subject, not "premium" or "scroll-stopping". Reference ads carry the specific quality or failure they show; none are invented, and a clean run can exclude past work.
  • Codex's new quality check is stated in the package: one representative ad is finished and passed before a new look is repeated across a batch — inside the existing budget, with no extra approval question for you.

$meta-ad-creative-generator — v4.6.0 → v4.7.0 (Codex)

  • Restrictions by element. Scenery, authenticity, minimalism or background-only requests no longer revoke the generated-headline default or excuse a simpler composition; explicit lettering or all-AI bans are honored exactly; no manufactured font conflicts.
  • Typography classes. Observed website styling, sourced requirement, proposed direction, technical fallback — a font's presence in a fallback list or a missing font file never makes system type the headline. Exact-font requirements need the real font files and still get designed type.
  • Asset-led production route. Keep the real photograph, enhance or generate only permitted surroundings, develop lettering separately, compose with the authentic logo; compare the protected region with the source; never redraw a protected tattoo or product to fix the design around it.
  • Representative-ad calibration. Before repeating a new visual system across subjects, ratios or a batch script, Codex completes one ad and passes its visual gate — batch authorization doesn't waive it, and it adds no routine approval. A failing composition is rethought, not polished.
  • Creative QA, not just technical QA. The visual gate now checks the requested treatment and integration (black fill alone isn't drama; empty space alone isn't elegance) and relevant benchmark craft. Readable text, a correct logo, preserved pixels and a clean export don't make an ad review-ready; the same standard applies to Python/HTML composition.
  • Updated SKILL.md and references/pipeline-intake.md; scripts unchanged from 4.6.0.

$brand-standards — 4.2 (Codex)

  • No change.

Validated: the v4.7.0 checker returns production_plan_valid on the v6.2 fixtures (planned 12 / render 9 and 4 / 4) and on an all-3-size (30 / 27) and a 1:1-carousel (22 / 19) test package; 46/46 fixture, negative and skill-text checks and the older 22/22 set pass; the generator's own suites pass (37 + 12 + 18 tests, portability OK). A written review covers the six target cases (minimal scenery with untouched tattoos, a fallback-only brand font, an exact-font or no-AI requirement, a full-batch authorization, a logo-only correct with preserved rows, and a technically valid but undramatic ad). Not tested: a live Codex render — these checks prove the rules are in place, not that the ads look better. Known: packages keep 1.1-style concept IDs; Codex maps them to A1 in the Ad Index.

v6.2 "Codex finishes the words" 2026-09-29

Why. v6 made Codex the creative director, but two loose ends were left. Codex still treated Run 2's on-image wording as locked, so a better line meant a proposal and a round trip instead of a better ad. And Run 2 still printed the old pixel sizes, so the package and the generator disagreed about what a finished file should be. v6.2 closes both: Codex may improve any unlocked copy while it builds (facts, prices, dates, offer terms, quotes and disclosures stay exact, and every change is logged in the Ad Index), and the whole package now uses the generator's dated 2026-09-27 image profiles with an sRGB export helper. The handoff contract (drive_social_handoff: v2 + production_plan: v1) is unchanged — no new fields, no new values — so v5, v6 and v6.1 packages still validate.

/creative-strategy — v5.4.1 → v5.5.0 (Claude Cowork)

Changed
  • What's fixed and what Codex may change, in one place. Run 2 fixes the audience, objective, service, proposition, factual offer, evidence, sourced restrictions and the counted plan. Within those, Codex may change the visual metaphor, composition, lettering, background, asset treatment and any unlocked copy on a build or revise without a replacement concept. Changing the audience, proposition, product or offer is a scope change (a replace).
  • Copy authority across rounds. copy_status: approved means the facts are verified and the copy is cleared — by actual approval or the strategist's delegated authority — never that the client approved the exact words. A wording-only hold resolves under that authority; only an unresolved fact or a required client sign-off holds an artwork. A separately requested wording change still routes as a copy-only correct with old wording, new wording and the authorization basis in the change note.
  • New image profiles. Section 8 now prints the v4.6.0 set: 1:1 1088×1088 → 1080×1080, 4:5 1472×1840 → 1440×1800, 9:16 1440×2560, labeled as dated internal profiles (not Meta minimums); 6% margins and the 14–65% vertical band kept; preserved artwork is never rerendered for a profile change. The package never promises Meta will show an ad unchanged.
  • Creative defaults protected in the package text. Generated graphic text is the default main headline (no basic font overlays, no font steering, website-observed fonts are observed styling); supporting text may be conventional; suggested treatments are optional; there is no minimum headline length and no requirement that the words repeat the picture.
  • Safeguards without new blanket rules. People stay recognizably themselves; logos are transparent with no backing box (a faithful transparent derivative may be prepared); a "real" asset can still be relit or given a new background; generic generated people follow people_policy; nothing invents staff, customers, reviews, credentials, offers or proof.
  • Renderer settings left to Codex. The package never asks for input_fidelity, streaming, maximum quality or extra candidates; a successful API call is not a quality check.

$meta-ad-creative-generator — v4.5 → v4.6.0 (Codex)

  • Copy authority. Codex may rewrite on-image headlines, supporting lines, captions, Meta headline/description and written CTAs when that makes a better ad, in any round. It preserves audience, proposition, brand voice and supported facts; never invents or strengthens claims, changes prices, dates or offer terms, alters attributed quotes or rewrites disclosures; honors sourced verbatim locks. Rewrites are logged before/after in the Ad Index and the delivered copy matches the artwork.
  • Image profiles updated 2026-09-27: generation 1088×1088 / 1472×1840 / 1440×2560, posting 1080×1080 / 1440×1800 / 1440×2560 — exact ratios, no upscaling. New scripts/export_meta_image.py writes sRGB posting files at exact size with an export receipt and no automatic crop, stretch or upscale.
  • Image controls documented: new references/api-controls.md and scripts/image_controls.py (size, quality, background, output format, source images, mask, candidates, streaming). input_fidelity is rejected for Sunburst; streaming is off by default and not live-verified; nothing is maximized automatically.
  • Updated handoff_contract.py, pipeline-intake.md, production-plan.md, portability.md, runner-notes.md; new test_image_controls.py.

$brand-standards — 4.2 (Codex)

  • No change.

Validated: two new fictional fixtures (a normal 3-size build with a 1:1 carousel and both a factual hold and a client-approval hold; a round-2 package with a copy-only correction, preserved siblings, a preserve-only carousel and a 3-size revise) return production_plan_valid from the v4.6.0 checker — 46/46 positive, dispatch, negative and prose checks pass; the generator's own suites pass (37 tests). Not tested: a live Codex render on a real client package. Known: the generator's docs mention A1-style concept IDs but its checker accepts only 1.1-style, so packages keep 1.1 IDs and Codex maps them to A1 in the Ad Index.

v6.1 "More control, cleaner files" 2026-09-26

Why. The 4:5-only default in v6 was too narrow — most accounts still want every size — and Run 2 set the ad count on its own with no simple way to change it. On the Codex side, finished files came out with long, inconsistent names that were hard to match to an ad. v6.1 puts ad count, sizes and carousels in front of you as three quick questions and gives every finished file a short, uniform name. The handoff contract (drive_social_handoff: v2 + production_plan: v1) is unchanged, so v5 and v6 packages still validate.

/creative-strategy — v5.2.0 → v5.4.1 (Claude Cowork)

Added
  • Ad volume control. Once the service categories are shown and confirmed: "N service categories identified — 5 ads each (total)", then "Make 5 ads per category or adjust?" — Keep 5, Decrease to 3, Increase to 8, Increase to 10, or a custom mix per category. Every total is computed from the real category count. Carousels are extra; a client promise above the chosen number is flagged, and near-duplicates are never added to hit a count.
  • Size question with all 3 as the default. "Produce all 3 ad sizes for each ad? (4:5, 1:1, 9:16)" · "Produce 1:1 Only?" · "Produce 4:5 Only?" · "Produce 9:16 Only?", plus your own instruction. No answer means all 3, with 4:5 as the primary.
Changed
  • The questions under the slate are now in order: #1 ads per category, #2 sizes, #3 carousels. The carousel question is still asked every run; carousel cards default to 1:1, separate from the single-image sizes.
  • The slate's totals line now reads categories × ads each, total ads, images, ready and on hold.
  • The package's filename_scheme now states Codex's universal naming and how Codex maps concept IDs (1.1, 2.1) to its A1/B1 ad IDs. Package IDs don't change.
Removed
  • The 4:5-only default and the "All ads will be 4:5 ratio…" question; the strategist setting the ad count with no volume prompt ("allocate by need").

$meta-ad-creative-generator — v4.4 → v4.5 (Codex)

  • Uniform, identifiable file names on every run: <AdID>_<RatioCode>_<Category>.jpg — e.g. A1_45_LivingRoom.jpg, B1_916_Bedroom.jpg. Ratio codes 11, 45, 916; carousel cards add _Card01, _Card02. PNG masters keep the same name. No client names, dates, "final", or candidate numbers in the name — round and revision live in folders.
  • Categories and stable ad IDs: "Categories" replaces buckets/services (older packages are still accepted). Categories are lettered A, B, C in strategy order and ads numbered A1, A2, B1; IDs are kept across revisions and never reused.
  • Ratio defaults match Run 2: new single-image ads default to 1:1, 4:5 and 9:16; carousels default to 1:1. Your instruction or the package's explicit sizes always win, and a targeted fix never adds missing sizes.
  • New reference: references/naming-and-ratios.md. Before delivery it reconciles every ad, size and card against the file names and the Ad Index.

$brand-standards — 4.2 (Codex)

  • No change.

Validated: all-3-size (30 images, 27 ready) and 1:1-carousel (22 planned, 19 ready) test packages return production_plan_valid from the v4.5 checker; the v5 fixtures pass 22/22; the generator's test suites pass. Still open: Codex keeps Run 2's on-image wording exact, so it proposes copy changes rather than making them.

v6 "Codex directs, Claude researches and writes" 2026-09-26

Why. Ads built from client photos were coming out badly — a phone photo with text laid over it isn't a Meta ad. Trafficking separate 9:16 and 1:1 versions through Meta's interface cost more than it returned. And the Run 2 slate printed as a wide fixed-width block that wrapped into an unreadable jumble in the chat. v6 makes Codex the creative director with heavy enhancement as the default, makes 4:5 the default for every ad, and rebuilds how Run 2 shows its plan. The handoff contract (drive_social_handoff: v2 + production_plan: v1) is unchanged, so v5 packages still validate.

/creative-strategy — v5.0.1 → v5.2.0 (Claude Cowork)

Added
  • 4:5 by default. Every single image and carousel card is 4:5. Every run asks, word for word, "All ads will be 4:5 ratio. Do you want any other ad ratios made in this run? (9:16, 1:1?)" and adds other versions only for the ads you name. A promised Stories or square version is pointed out, never added silently.
  • Carousels are opt-in. The recommended slate is single images only; every run asks whether you want carousels — no, yes and Claude picks the services, or yes and you pick the buckets.
  • A new review display for the slate and every other review: totals first, one four-column table per bucket (# · Concept · Art · Why), then On hold, Not included, and numbered questions. No code blocks.
  • Heavy enhancement flag on every client asset — what to transform (light, clutter, background, setting, color) and the only protected elements: people's face, features, body type and weight; the logo's mark and wording; the actual result of documented work.
Changed
  • Roles: Codex is the Director of Creative with the final say on copy and creative choices; /creative-strategy is its lead market researcher, copywriter and editor. Copy is suggested (a lead headline plus alternates); only verified facts, fixed strings (legal lines, offer terms), compliance and Drive Social copy rules (40/25, no "vibes", real CTAs) are binding. copy_status: approved now means facts verified and cleared for production.
  • Client copy changes after review still route as correct; Codex's own copy changes never need approval.
Removed
  • Pre-approved placement alternatives, "Step 3 never rewords approved copy", the 9:16 and 1:1 versions planned by default, the "logo must be the real file" rule (the mark and wording are protected; a faithful transparent rebuild is allowed).

$meta-ad-creative-generator — v4.3 → v4.4 (Codex)

  • Heavy AI enhancement of client assets is the standing default — rebuild lighting, color, sharpness, composition, surroundings, backdrop and setting; minor cleanup plus pasted text doesn't pass. An explicit limit from you or the package still wins.
  • People are the likeness guardrail: surroundings can change completely, but people keep their facial features, age, body proportions, skin tone and distinguishing characteristics; source and output are compared directly.
  • Generated graphic headlines by default — lettering art-directed as part of the image, not a stock font over a photo. Readable-but-basic typography fails the visual gate.
  • Transparent logos only — never on a white or colored box. If the folder has no transparent original, it rebuilds a faithful one from the best available copy and verifies it over light and dark backgrounds.
  • New guiding question: will this stop someone scrolling? Quality gate updated to match.

$brand-standards — 4.2 (Codex)

  • No change.

Known gap: generator v4.4 still keeps Run 2's on-image wording exact, so until the next generator update, Codex proposes copy changes rather than making them. Also note: the generator's runner reads a bare format of "carousel" as square; Codex writes each job's format from the package's ratio, which avoids it. Validated: a 4:5-only package with a 4-card 4:5 carousel returns production_plan_valid from the v4.4 checker; the v5 fixtures still pass 22/22; the generator's own test suites pass.

v5 "Count the work before you make it" 2026-09-17

Why. v4 fixed what a concept is (an idea, not a layout) but left three things loose. Run 2 asked "5 or 10 per bucket?" and treated every service as an equal quota, so a client who had been promised four door ads and a Stories version got the same shape of package as one who had been promised nothing. Nobody could say how many finished artworks a package meant — a concept at two ratios, a four-card carousel, and a PNG+JPG export all counted differently — and the Codex checker only validated concept routing, so a package that authorized only 4:5 for a concept still accepted a 9:16 job. Run 2 also carried rules that fought good design: a minimum headline length, a mandatory square-safe center on every broad-placement feed ad, "newest transcript wins," and a Gemini summary treated as a verbatim quote. A 2026-09-15 workflow review laid this out; v5 is the response across all three skills. The workflow's shape is unchanged — what changed is that Run 2 recommends the slate and shows the counts before writing anything, and every artwork in the package is a row Codex validates before it renders.

/creative-strategy — v4.5 → v5.0.1 (Claude Cowork)

Added
  • A recommended production slate replaces the "5 or 10?" question. Built from sourced client commitments (a promised quantity is a floor), priorities, the client's actual objective, assets, seasonality, and capacity. Unequal allocation is normal; shortfalls are surfaced with a remedy; nothing is padded.
  • Counts shown before the package is written: concepts, placement versions, carousel cards, held artworks, exports at delivery, and working allowance — each with a basis (required by commitment, recommended, optional). Optional and reserve ideas stay out of scope until promoted.
  • Production plan in the package — production_plan: v1 alongside drive_social_handoff: v2: one deliverables row per finished artwork (each carousel card its own row) with concept, action, ratio, format, placements, reason, ready / hold / preserved status, and copy state; concept_ratios, planned_total (ready + held), render_total (ready only), and a reserve list. Section 9 is the readable twin.
  • Evidence ledger from the brand skill: source, source type (transcript, AI summary, approved brief, direct instruction, public source), date, excerpt, status, scope, supersession. A Gemini summary is an AI summary, not a transcript.
  • Copy states and a repair route: on-image copy is approved or draft; mandatory strings identified; placement alternatives can be pre-approved. If production finds approved words fight the design it proposes an exact replacement; the approved copy-only change routes as correct. A changed message is a replace.
  • Per-placement corrections: fix the 9:16 only, with the 4:5 and 1:1 inventoried as preserved rows with their original files.
  • Asset permissions split into three sourced scopes — use of supplied assets, editing scope, fidelity — and descriptive header fields objective, placement_setup, platform_spec_check.
Removed
  • "Concepts per bucket — 5 or 10?" and "reserve — 2 or 3?" as every-run questions; concepts_per_bucket / reserve_per_bucket.
  • The minimum headline length and "a weak line ships unless rewritten by hand." Image and words are judged together, without the caption, with no length rule either way.
  • placement_mode, the square-safe center for every broad-placement 4:5, the "manual placements eliminate cropping" claim, the motion-only justification for 9:16, the 9:16 safe-zone table, and "Marketplace & carousels" as one placement.
  • "Newest transcript wins," "website always wins," the rule that a meeting-only offer must be on the website, and blanket asset permission labeled client-approved.
  • The "never ecommerce / SaaS" assumption; the rule that a package without concept_ratios means every ratio.
Changed
  • Placement targets, media type, ad format, and ratio are four separate decisions; vertical stills are legitimate; platform specs are verified per run against Meta's Ads Guide with a date, and the pixel profiles are labeled internal defaults.
  • render_total now means ready artworks (it meant "files the build list expands to").
  • Conflicts resolve by authority, explicit approval, scope, supersession, and freshness together; an approved private offer need not be on the website.
  • Every Account Context rule says whether it is Drive Social policy (with source) or a starting recommendation. Run 2 reuses the brand guide's ledger and asset shortlist instead of re-crawling.
  • v5.0.1 (2026-09-17): last machine-specific default path removed for team distribution; Codex references at v4.2 / v4.3.

Validated: two fictional fixture packages (selective ratios, a 3-card carousel, held work, a round-2 correction to one placement with preserved siblings and a copy-only correction) return production_plan_valid from the installed v4.3 checker; 22 positive/negative checks pass. The fixtures ship in the skills package under validation/.

$brand-standards — v4.0 → v4.2 (Codex)

  • v4.1: evidence ledger schema (references/evidence-and-context.md) — id, statement, source, source type, dates, excerpt, status, scope, supersedes, uncertainty; AI summaries labeled; reported approvals recorded as reported. Dated client expectations (promised services, markets, deliverables, timing, quantities) kept separate from durable identity. Asset shortlist with condition, use scope, editing scope, and evidence role. Standing enhancement/generation authorization carried without re-asking; people_policy governs generic AI people only. No mandatory board or extra approval round.
  • v4.2: no built-in default drive or folder — resolves the existing project, then an explicit destination, then the user's own workspace instructions; never assumes a drive letter, username, volume, or OS.

$meta-ad-creative-generator — v4.1 → v4.3 (Codex)

  • v4.2: production_plan: v1 — the shared Run 2 / Run 3 artwork contract (references/production-plan.md with a complete offline example). handoff_contract.py now validates the full plan, not just routing: disjoint action lists, concept_ratios equal to the active rows, every carousel card inventoried, the totals' arithmetic, held rows cannot dispatch, a master's ratio must match, preserved siblings cannot be regenerated, duplicate or unauthorized deliveries rejected, partial delivery reported. New test_production_plan.py. Plan-before-batch reconciliation; a calibration set of up to three concepts, not every ratio of three. Copy rules aligned with Run 2 (no minimum headline length; copy-only corrections as correct). Placement, media type, format, and ratio kept distinct; no square-safe mandate. The visual gate must retain mobile review views and QA notes tied to the file hash. Legacy packages adapted locally with --actions-only; missing concept_ratios never expands to every ratio.
  • v4.3: cross-platform paths — source_file and delivery paths accept absolute Windows or POSIX syntax on any OS (new path_support.py, test_portability.py), so a package written on a PC validates on a Mac. New references/portability.md: Python 3.10+ with Pillow, PyYAML, OpenAI SDK; python3 on Mac, py -3 / python on Windows; CODEX_HOME honored; foreign paths mapped in a local adaptation, never rewritten blindly. Codex builds preserved-files.json from the package's source_file rows and the Ad Index. No default client root.

v4 "Ideas, not templates" 2026-09-11

Why. The v3 skills produced visually different ads without producing better ads. Run 2 was assigning layouts — format families, color modes, rotation quotas, a mandatory no-photo card per bucket — and Run 3 was executing them, so weak design decisions were specified upstream and rendered faithfully downstream. A Codex self-audit and a Claude review reached the same diagnosis. v4 moves visual decisions to the step that can see the pixels, gives every concept a visual idea instead of a layout, and adds a real visual-review gate before anything is presented. The workflow also changes shape: the client approves or rejects rendered ads, approved ads go live, and rejected ones are remade as new options — per-ad editing is retired.

/creative-strategy — v3 → v4.3 (Claude Cowork)

Added
  • Concept count asked every run — "5 or 10? (or type a number)" plus a reserve count. A ceiling, not a quota.
  • Visual idea per concept: Visual idea, Message–image relationship, Why this client. A layout description no longer counts as a concept.
  • Per-concept asset plan — Keep real / Enhance / Generate / Must accomplish — replaces the bucket-level asset mode as the operative instruction.
  • Section 4: Resolved production brief. Every governing rule tagged client-approved requirement, strategist-approved direction, verified fact, proposed recommendation, or unresolved question. Overrides quote the Appendix A rule they supersede.
  • Reserve ideas per bucket, marked not authorized for production, held for replacements.
  • Replacement round (/creative-strategy replace): rejections classified as replace / revise / correct, proposed then confirmed; approved concepts marked preserve and verified unchanged by diff against an archived copy.
  • Visual benchmarks in brand/benchmarks/approved/ and rejected/; the first client review establishes them when none exist.
  • Rejection scope — execution, concept, campaign, or brand; only the last two become restrictions.
  • Explicit restrictions as a separate mandatory list with source, date, and scope, distinct from suggested treatments.
  • Standing bucket rules folded in: hero-product businesses, restaurants by occasion, shared-menu multi-location clients, both tonal registers by default, outside research as creative substance, no "vibes" in copy.
  • Handoff upgraded to drive_social_handoff: v2: round, counts, benchmarks, suggested_treatments, restricted_treatments, and the build / preserve / revise / correct lists (IDs always quoted).
Removed
  • "Resolve everything here" — layout is now Run 3's decision.
  • The variation matrix, rotation rules, family census, and required format family / color mode / headline device / photo treatment fields. The vocabulary survives only as an optional, provisional Suggested execution line.
  • The two-no-photo-concepts-per-bucket quota; the GEN- plate brief table; the treatment-rotation table; the fixed 10-per-bucket default.
Changed
  • brand_tile optional with an approved / reference status; people_policy asked, never assumed.
  • v3 permitted_families / permitted_color_modes read as suggested vocabulary only; real prohibitions move to restricted_treatments.
  • Appendix A stays verbatim for traceability but Section 4 governs.
  • Tone: both registers by default unless audience, subject, or an approved direction calls for one.
  • v4.1 (same day): quoted YAML IDs, rejection scope, contextual tone rule, and preserve defined as a status-line change only — Codex's four compatibility refinements.
  • v4.2 (same day): the replacement round is explicitly optional — the default after a client review is to go live with approved ads and build fresh next refresh. Rejected ads are described in plain words (filename, headline, "the testimonial ones"); the skill matches them to concepts and confirms in a table. Every prompt now states what it needs, why, and an example answer, for team members running the skill. Client-provided assets are always approved for use, people in them or not — people_policy governs AI-generated people only.
  • v4.3 (same day): all folder references made system-agnostic for Mac and Windows team members — the client folder is whatever the strategist points the skills at; no built-in default path.
  • v4.4–v4.5 (2026-09-13 to 09-15, not distributed): placement-led ratios, placement_mode, concept_ratios, a render manifest, safe-zone rules. Superseded by v5's production plan.

$brand-standards — v3 → v4.0 (Codex)

Added
  • Six-way evidence classification, including observed website styling as its own class — the website is a source, not a ceiling.
  • Asset inventory with condition: usable-as-is, enhancement candidate, identity reference, or missing, with Keep real / Enhance / Generate / Must accomplish principles for Run 2.
  • suggested_treatments and sourced, scoped restricted_treatments in the v1 handoff; optional brand/benchmarks/ folders.
  • references/asset-intake.md — Drive scan and download rules moved out of the main skill.
Removed
  • Industry-to-font templates, fixed color area percentages, "exactly one accent," family rotation, compulsory no-photo cards, blanket bans on effects.
  • permitted_families / permitted_color_modes for new guides; the mandatory brand tile and required brand-board prompts (both optional now).
Changed
  • A rejected render is a specific execution failure, not a universal ban.
  • The guide never selects production concepts, sets counts, or emits action lists — Run 2 owns those. Handoff stays at v1.

$meta-ad-creative-generator — v3 → v4.1 (Codex)

Added
  • Visual gate before presentation: every master opened at full size and ~360 px; five checks (idea, composition, typography, brand and fidelity, finish) recorded pass / revise / blocked with evidence. Technical validity, creative review, and client approval are separate statuses.
  • Execution brief per concept before rendering; suggestions from Run 2 are evaluated, not obeyed.
  • Handoff v2 routing — build / preserve / revise / correct honored as disjoint lists; reserves and preserved concepts fail before any API call. New scripts/handoff_contract.py; scripts/test_workflow.py with 33 offline regression tests.
  • Protected originals via preserved-files.json hash inventory, checked before and after execution.
  • Two production routes, both gated: a fully generated master, or AI imagery finished deterministically with the original logo, licensed fonts, and editable layout tools (prohibited in v3).
  • Reliable resume: sidecar receipts fingerprint prompt, ordered sources and contents, model, quality, size, and candidate count; resume requires a match plus decoded dimensions and SHA-256. Changed jobs need new filenames or revision directories.
  • v4.1 renderer: default gpt-image-2.5-sunburst at quality: high (xhigh / max for specific unmet needs). gpt-image-2 and Flare stay explicit overrides, never silent fallbacks.
  • Bounded exploration: up to three concepts × two candidates for a new direction, two repair rounds per concept, batches of at most five.
Removed
  • Stage A whole-campaign background approval before any ad is built.
  • The single-ad smoke test as the sole gate; the 45-ad default; 32% band / 42% panel geometry; five-family minimum; big-type quota; asset-reuse cap; universal effect bans; the ban on local compositing and finishing.
Changed
  • Similarity audit is advisory — a duplicate warning, never a taste score or redesign trigger.
  • Bucket asset_mode is a summary; the per-concept asset plan is operative.
  • Rejected benchmarks establish specific failures; approved benchmarks guide craft without copying claims.

v3 "Variety by layout" 2026-09-10 · superseded

  • /creative-strategy v3: format families, color modes, headline devices, photo treatments, a per-bucket variation matrix, rotation rules, and two no-photo concepts per bucket — the response to "ten ads look like one ad." Fixed the symptom, not the cause.
  • $brand-standards v3: brand tile, permitted_families, permitted_color_modes, people_policy added to the handoff.
  • $meta-ad-creative-generator v3: 4:5 masters at 1088×1360; per-job quality, candidates, photo_required; dry-run variety audit; new scripts/similarity_audit.py.

v2 2026-09-02 · the version this site previously described

  • Three-run pipeline with the single-file handoff, the bucket gate in Run 2, Stage A background approval and the one-ad smoke test in Run 3, 45 ads in batches of five.
MCP connections guide·Change log·Questions? Slack Jeremy