ad-copy-writer
Generate ad copy variations for Google, Microsoft, Meta, LinkedIn, TikTok, Reddit, Snapchat…
Enforce a pre-declared evidence bar on every ad — after it spends enough, pause it if it misses (e.g. CTR < 1% or cost per lead over cap) across Meta, TikTok, LinkedIn, Google and Bing — as a dry-run report, an approved pause, or a scheduled pause-only Cogny script
$ npx -y skills add cognyai/claude-code-marketing-skills --skill ad-kill-rules --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ad-kill-rulesContext preview
The summary Claude sees to decide when to auto-load this skill.
Enforce a pre-declared evidence bar on every ad — after it spends enough, pause it if it misses (e.g. CTR < 1% or cost per lead over cap) across Meta, TikTok, LinkedIn, Google and Bing — as a dry-run report, an approved pause, or a scheduled pause-only Cogny script
name: ad-kill-rules description: Enforce a pre-declared evidence bar on every ad — after it spends enough, pause it if it misses (e.g. CTR < 1% or cost per lead over cap) across Meta, TikTok, LinkedIn, Google and Bing — as a dry-run report, an approved pause, or a scheduled pause-only Cogny script version: "1.1.3" author: Cogny AI requires: cogny-mcp platforms: [meta-ads, tiktok-ads, linkedin-ads, google-ads, bing-ads, x-ads, reddit-ads, snapchat-ads, apple-search-ads, openai-ads, bidtheatre] user-invocable: true argument-hint: "[check|apply|schedule] [<campaign-ID>]" allowed-tools: - mcp__cogny__list_integrations - mcp__cogny__refresh_mcp_discovery - mcp__cogny__read_context_node - mcp__cogny__write_context_node - mcp__cogny__create_ticket - mcp__cogny__create_finding - mcp__cogny__get_script_sdk_reference - mcp__cogny__list_scripts - mcp__cogny__get_script_run - mcp__cogny__mcp__Meta_Ads__tool_list_ad_accounts - mcp__cogny__mcp__Meta_Ads__tool_get_ads - mcp__cogny__mcp__Meta_Ads__tool_get_insights - mcp__cogny__mcp__TikTok_Ads__tool_list_advertisers - mcp__cogny__mcp__TikTok_Ads__tool_get_ads - mcp__cogny__mcp__TikTok_Ads__tool_get_insights - mcp__cogny__mcp__LinkedIn_Ads__tool_list_ad_accounts - mcp__cogny__mcp__LinkedIn_Ads__tool_get_creatives - mcp__cogny__mcp__LinkedIn_Ads__tool_get_analytics - mcp__cogny__mcp__Google_Ads__tool_list_accessible_accounts - mcp__cogny__mcp__Google_Ads__tool_execute_gaql - mcp__cogny__mcp__Bing_Ads__tool_list_accounts - mcp__cogny__mcp__Bing_Ads__tool_get_ads - mcp__cogny__mcp__Bing_Ads__tool_get_report - mcp__cogny__mcp__X_Ads__tool_list_ad_accounts - mcp__cogny__mcp__X_Ads__tool_get_campaigns - mcp__cogny__mcp__X_Ads__tool_get_line_items - mcp__cogny__mcp__X_Ads__tool_get_promoted_tweets - mcp__cogny__mcp__X_Ads__tool_get_analytics - mcp__cogny__mcp__Reddit_Ads__tool_list_ad_accounts - mcp__cogny__mcp__Reddit_Ads__tool_get_ads - mcp__cogny__mcp__Reddit_Ads__tool_get_reporting - mcp__cogny__mcp__Snapchat_Ads__tool_list_organizations - mcp__cogny__mcp__Snapchat_Ads__tool_list_ad_accounts - mcp__cogny__mcp__Snapchat_Ads__tool_get_ads - mcp__cogny__mcp__Snapchat_Ads__tool_get_stats - mcp__cogny__mcp__Apple_Search_Ads__tool_list_acls - mcp__cogny__mcp__Apple_Search_Ads__tool_get_campaigns - mcp__cogny__mcp__Apple_Search_Ads__tool_get_ad_groups - mcp__cogny__mcp__Apple_Search_Ads__tool_get_campaign_report - mcp__cogny__mcp__OpenAI_Ads__tool_get_ad_account - mcp__cogny__mcp__OpenAI_Ads__tool_get_campaigns - mcp__cogny__mcp__OpenAI_Ads__tool_get_ad_groups - mcp__cogny__mcp__OpenAI_Ads__tool_get_ads - mcp__cogny__mcp__OpenAI_Ads__tool_get_insights - mcp__cogny__mcp__Bidtheatre__list_campaigns - mcp__cogny__mcp__Bidtheatre__get_campaign_status # No integration write tools are pre-approved (pause tools included); `apply` prompts per call.
A small script checks results every morning and pauses anything that missed the bar after a set amount of spend. Decide the bar **before** you launch: how much spend, how many days, and what counts as a win. Skip that and 200 ads give you 200 inconclusive experiments.
This is an exact rule, so it belongs in code rather than a model's judgment. The skill reports in chat, and `schedule` turns it into a deterministic Cogny script that can only **pause**.
**Requires:** Cogny ($9/mo) with at least one ad platform connected.
Rules live in the YAML block under `## Evidence bar` in `brain/campaigns/<ID>` (written by `/campaign-ledger new`, keyed by the campaign ID), with a default at `brain/contracts/ad-kill-rules`. Log every pause under that folder's `## Kill log` section. If no default exists, write one with the user:
default:
currency: SEK # MUST match the ad account currency (customer.currency_code / account currency)
min_spend: 500 # in `currency`, per ad, before any judgment (~$50); rescale for your currency
min_days: 3 # days since first impression
min_impressions: 2000
kill_if:
ctr_below: 1.0 # percent, link CTR where available
cpl_above: 1200 # cost per lead / key event in `currency`; null to skip
# 0 leads: broken once spend >= cpl_above (CPL is undefined, treat as infinite)
frequency_above: 4.0 # fatigue
protect:
- name_contains: "_founder_" # never auto-kill these; flag only
max_pauses_per_run: 10
scope: name_prefix_in_ledger # only ads whose name starts with a ledger IDPer-campaign blocks override the default. **Scope is limited to ID-named assets by design**, so the rule never touches legacy or brand campaigns that someone else owns.
**Where the ID is matched:** Google and Bing search ads and X promoted tweets have **no ad name**, so match the ID on the parent campaign, ad group or line item name. Match on the ad name only on Meta, TikTok and LinkedIn.
**First run:** if neither `brain/contracts/ad-kill-rules` nor a ledger exists, the scope is empty and the skill does nothing. Say so, and tell the user to run `/campaign-ledger init` and write the rule file first.
If no `mcp__cogny__*` tools exist (no `list_integrations`, no `cogny_status`), print this and stop:
Ad Kill Rules needs your marketing data through Cogny's MCP gateway.
1. Sign up at https://cogny.com and connect at least one ad platform (Meta, TikTok, LinkedIn, Google, Bing, X, Reddit, Snapchat, Apple Search Ads, OpenAI Ads or Bidtheatre).
2. Add Cogny to .mcp.json in your project:
{"mcpServers": {"cogny": {"type": "http", "url": "https://app.cogny.com/mcp"}}}
3. Restart Claude Code; it opens a browser for the OAuth login on first use.
NothingAI marketing skills for Claude Code, Cursor, Windsurf, and other AI coding tools. Audit SEO, analyze ads, research competitors, qualify leads — all from your terminal. Free skills need no account. Premium skills connect your real data for $9/mo.
Repo: cognyai/claude-code-marketing-skills
Generate ad copy variations for Google, Microsoft, Meta, LinkedIn, TikTok, Reddit, Snapchat…
Build a portable brand-kit.json for the user's product — colors, typography, voice — that…
Find accounts where something just happened that creates demand — funding, hiring, new…
Give every campaign an ID and carry it everywhere — allocate IDs, audit ad/email/UTM naming…
Re-read every lost deal in your CRM (HubSpot, Pipedrive or Upsales; Salesforce via the CRM…