Skip to content
Marketing
Skill

/ad-kill-rules

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

BOOST
From plugin
claude-code-marketing-skills
10662 skills
Install
$ npx -y skills add cognyai/claude-code-marketing-skills --skill ad-kill-rules --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/ad-kill-rules

Context 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

SKILL.md

ad-kill-rules.SKILL.md
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.

Ad Kill Rules

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.

Usage

  • `/ad-kill-rules` or `check` — dry run: what would be paused, and why
  • `/ad-kill-rules apply BK014` — pause the flagged ads for one campaign (asks per batch)
  • `/ad-kill-rules schedule` — create a daily pause-only script

The rule file

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 ID

Per-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.

Step 0: Cogny check

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.

Nothing
Read more
Ships withclaude-code-marketing-skills

AI 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.

Get the whole plugin
Stats
106
Stars
13
Forks
Active
Maintenance
HTML
Language
13h ago
Last commit
6mo ago
Created

Repo: cognyai/claude-code-marketing-skills