executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
writing-ad-copyWrites the words of an ad — the headline, primary text, description and call to action that go into the ad platform's own fields, shaped to the channel it runs on. Handles one channel or several, returning copy sized to each platform's limits. Nothing is generated here — text only. Use when the user wants ad copy, ad text, headlines, primary text, a descrip…
Independent GitHub snapshot · Automated classification · Original documentation governs
Write the words that ride beside the creative in the ad platform — the headline, the primary text, the description, the call to action. Text only — nothing is generated here. Not the text drawn on the image, and not a spoken voiceover.
Ad copy may run on one channel or several. The same product, written for each channel it runs on — because the fields and the limits differ, and the register does too. Write each channel's set, then hand them all back.
Ask only for what would change the copy and can't be defaulted.
Feature claims vs proof claims. What the product is and does — its features, how it works, the offer — the user can simply assert, and you write from that. A proof claim — a number, a rating, a testimonial, a "better than X" result — needs real backing; where there is none the claim doesn't get made, and you ask rather than invent one. Where the proof is only a paraphrase ("reviewers keep saying it's less bitter"), attribute it — reviewers say… — rather than stating it as fact; a supplied review's own words are stronger still.
What to default, and what to ask. Audience and awareness can be defaulted to the broad buyer where unstated. The channel and the grounding cannot: no channel named → ask which; no grounding at all → ask for it and don't write yet. A partial gap — a missing offer, a single thin claim — is different: write the angles the material supports and name the gap.
An ad tests a few different arguments, not one argument reworded. Pick a handful of distinct angles from what the product and the grounding actually support — these recur, as a starting range rather than a closed list:
Each angle becomes one variant. Vary the angle, not the words — a set of the same line with synonyms swapped tests nothing. A thin brief supports only a few real angles; don't manufacture more — two honest arguments written well beat eight that are one argument in disguise.
Read the guide for each channel the copy runs on. It owns that channel's fields, character limits, where the feed cuts the text off, the calls to action it offers, and the register that reads as native there.
| Channel | Guide |
|---|---|
| Meta — Facebook & Instagram ads | references/channel-copy-meta.md |
| Google — Search / Responsive Search Ads | references/channel-copy-google.md |
| LinkedIn — Sponsored Content | references/channel-copy-linkedin.md |
| TikTok — In-Feed ads | references/channel-copy-tiktok.md |
| X (Twitter) — Promoted ads | references/channel-copy-x.md |
| Reddit — Promoted posts | references/channel-copy-reddit.md |
Where the user names a channel with no guide here, write to the closest one and say which you used.
Write each field the channel calls for:
Say what the picture can't, in the buyer's own language. No filler to reach a limit; no hype the grounding doesn't earn.
One variant per angle from Step 2, each a genuinely different argument — a different reason to buy, not the same reason reworded. Drop any two that have collapsed into near-duplicates and replace one with a fresh angle. Hold the offer and the product identical across them; vary only the argument.
Where a channel assembles many assets from what you supply — taking a large set of headlines and combining them — give it distinct phrasings and lengths of the angles you have, since the machine, not a reader, sees the whole set. But don't pad to the channel's maximum: a thin brief yields fewer genuinely distinct assets, and a handful that avoid repeating the same word beat a full set that all lean on it. Fewer distinct assets beat near-duplicates. Everywhere else it stays one variant per argument.
Take each field beside its channel's limit and test it. A field over its limit is a rewrite, not a trim at the end — a headline cut mid-word reads worse than a shorter one written whole.
Grouped by channel, then by angle. For each field: the text and its character count. Where the channel takes a bulk set of fields, lay them out in that shape.
Text only — nothing here is posted, generated or spent.
generating-image-ads. This skill writes the platform's own copy fields, not the picture.writing-video-scripts. Any words heard over a video belong there.Channel guides — read the one for each channel the copy runs on:
references/channel-copy-meta.md — Facebook & Instagram: primary text, headline, description, the fold, CTA set.references/channel-copy-google.md — Search / RSA: the headline and description sets, headline independence, no-hype rules.references/channel-copy-linkedin.md — Sponsored Content: intro text, headline, description, the professional register.references/channel-copy-tiktok.md — In-Feed: the ad text, the native non-ad tone, UI-safe placement.references/channel-copy-x.md — Promoted ads: post text and headline, brevity.references/channel-copy-reddit.md — Promoted posts: title and body, the community-native, non-salesy register.