# Claude skills for LinkedIn Ads and Google Ads, compared

A pick for each paid ads job across 3 free skill sets, with the install command, a sample prompt and report, and what each skill can change in your account.

*By Stan Rymkiewicz, maintainer of adwarp. Updated November 7, 2026.*

A Claude skill is a folder with a `SKILL.md` file that teaches Claude 1 job, and you add marketing skills with 1 command, `npx skills add <repo>`, in Claude Code, Codex or Cursor. For paid ads, the free sets include Corey Haines' [marketingskills](https://github.com/coreyhaines31/marketingskills) (1 generalist ads skill), [claude-ads](https://github.com/AgriciDaniel/claude-ads) (audits across 12 platforms that don't change the account) and [paid-ads-skills](https://github.com/adwarp-dev/paid-ads-skills) (17 skills for LinkedIn Ads and Google Ads, which we maintain), and the table below says which to install for which job.

We also maintain Adwarp, the open-source Model Context Protocol (MCP) server and command-line tool (CLI) that our skills call when you want live data instead of an export. Every count below was checked on the repos on November 7, 2026, and each of our skills has its own page in the [skills docs](https://adwarp.dev/docs/skills). We installed every third-party skill the skills CLI could fetch into an empty test project and read the source of the rest, and every sample output under our own skills comes from the made-up accounts in the repo's [examples folder](https://github.com/adwarp-dev/paid-ads-skills/tree/main/examples), so you can run the same prompt on the same files and compare.

## Which skill for which paid ads job

Find your job in the first column. The reads or writes column says whether the skill can touch the account, which is worth knowing before you point it at a live one.

| Job | Skill | Repo | Platforms | Reads or writes | Install | License |
| --- | --- | --- | --- | --- | --- | --- |
| Audit a LinkedIn Ads account | `linkedin-ads-audit` | paid-ads-skills (ours) | LinkedIn Ads | Reads | `npx skills add adwarp-dev/paid-ads-skills --skill linkedin-ads-audit` | MIT |
| Review LinkedIn performance | `linkedin-ads-performance-review` | paid-ads-skills (ours) | LinkedIn Ads | Reads | `npx skills add adwarp-dev/paid-ads-skills --skill linkedin-ads-performance-review` | MIT |
| Pause losing LinkedIn ads | `linkedin-ads-pause-rules` | paid-ads-skills (ours) | LinkedIn Ads | Writes: pauses single ads after your yes | `npx skills add adwarp-dev/paid-ads-skills --skill linkedin-ads-pause-rules` | MIT |
| Size a LinkedIn audience | `linkedin-audience-sizing` | paid-ads-skills (ours) | LinkedIn Ads | Reads | `npx skills add adwarp-dev/paid-ads-skills --skill linkedin-audience-sizing` | MIT |
| Launch a LinkedIn campaign | `linkedin-campaign-launch` | paid-ads-skills (ours) | LinkedIn Ads | Writes: drafts after your yes | `npx skills add adwarp-dev/paid-ads-skills --skill linkedin-campaign-launch` | MIT |
| Build 1:1 account-based ads | `linkedin-abm-builder` | paid-ads-skills (ours) | LinkedIn Ads | Writes: drafts after your yes | `npx skills add adwarp-dev/paid-ads-skills --skill linkedin-abm-builder` | MIT |
| Audit a Google Ads account | `google-ads-account-audit` | paid-ads-skills (ours) | Google Ads | Reads | `npx skills add adwarp-dev/paid-ads-skills --skill google-ads-account-audit` | MIT |
| Find negative keywords | `google-ads-search-terms` | paid-ads-skills (ours) | Google Ads | Reads, writes an Editor file to your disk | `npx skills add adwarp-dev/paid-ads-skills --skill google-ads-search-terms` | MIT |
| Build a Search campaign | `google-ads-search-campaign-builder` | paid-ads-skills (ours) | Google Ads | Writes: 1 paused campaign after your yes | `npx skills add adwarp-dev/paid-ads-skills --skill google-ads-search-campaign-builder` | MIT |
| Weekly report | `paid-media-weekly-report` | paid-ads-skills (ours) | Both | Reads | `npx skills add adwarp-dev/paid-ads-skills --skill paid-media-weekly-report` | MIT |
| Daily alarm | `paid-media-health-check` | paid-ads-skills (ours) | Both | Reads | `npx skills add adwarp-dev/paid-ads-skills --skill paid-media-health-check` | MIT |
| Monthly pacing | `ad-budget-pacing` | paid-ads-skills (ours) | Both | Reads | `npx skills add adwarp-dev/paid-ads-skills --skill ad-budget-pacing` | MIT |
| Did a change work | `ad-experiment-lift` | paid-ads-skills (ours) | Both | Writes to the change log only | `npx skills add adwarp-dev/paid-ads-skills --skill ad-experiment-lift` | MIT |
| Audit 12 platforms from exports | `/ads audit` | claude-ads | 12, including LinkedIn Ads and Google Ads | Reads | `/plugin marketplace add agricidaniel/claude-ads`, then `/plugin install claude-ads@ai-marketing-hub-claude-ads` | MIT |
| Plan paid campaigns on any platform | `ads` | marketingskills | Google, Meta, LinkedIn, X | Reads what you give it | `npx skills add coreyhaines31/marketingskills --skill ads` | MIT |
| Marketing performance report | `performance-report` | Anthropic's marketing plugin | Any channel | Reads | `claude plugin marketplace add anthropics/knowledge-work-plugins`, then `claude plugin install marketing@knowledge-work-plugins` | Apache-2.0 |

*Fig. 01: The 3 free sets by platforms covered and skill count, from each repo on November 7, 2026: claude-ads spreads 34 skills over 12 platforms, while paid-ads-skills puts 17 into LinkedIn Ads and Google Ads.*

Everything in the table is free and works without an account with whoever wrote it. InsightfulPipe's Google audit, further down, is the 1 pick in this post that only runs through its maker's connector.

## What a Claude skill is

A skill is a folder. The `SKILL.md` file inside starts with a short block of YAML frontmatter holding a `name` and a `description`, and the instructions follow. The folder can carry more files, such as reference tables or scripts, which Claude opens only when the instructions point to them.

`linkedin-ads-pause-rules/`:
```text
SKILL.md       name, description, then the method Claude follows
README.md      what the skill does, written for people
references/    weekly-run.md, opened only for a scheduled run
```

Claude loads skills in stages. Anthropic's [Agent Skills overview](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview) puts the name and description at about 100 tokens per skill, loaded at startup, the body at under 5,000 tokens once a request matches, and bundled files at nothing until Claude reads them. Installing all 17 of ours adds about 1,700 tokens of descriptions to a session, and nothing more until 1 of them fires.

*Fig. 02: The name and description cost about 100 tokens and are always loaded, while the rest of a skill waits on disk until a request matches it (token figures from Anthropic's Agent Skills overview, checked November 7, 2026).*

The description does the matching, so it has to say what the skill does and when to use it. Ours end with the phrases people type, such as "which LinkedIn ads should I pause" and "turn off low CTR ads". In Claude Code you can skip the matching and call a skill by name with `/linkedin-ads-pause-rules`.

*Fig. 03: A SKILL.md page for linkedin-ads-pause-rules, where the end of the description holds the phrases people type, so a prompt like "which LinkedIn ads should I pause" lands on it.*

The format is an open standard. [agentskills.io](https://agentskills.io) says Anthropic developed it and released it openly, and the skills CLI's README lists 79 agents that read it, Claude Code, Codex, Cursor and OpenCode among them.

The line between a skill and an MCP server is easiest to see in 1 skill. `linkedin-ads-pause-rules` holds the method: which ads should stop, in what order, and which are protected. Adwarp, an MCP server, holds the tools, and its `update_ad` is the call that actually pauses an ad. Without Adwarp, the same skill reads a Campaign Manager export and hands you the list to switch off yourself. [The ads MCP servers compared](https://adwarp.dev/blog/ads-mcp-servers) covers the tool side.

Anthropic's overview also warns that a skill can direct Claude to run code, and says to use skills only from sources you trust and to read every bundled file first. That matters more for paid ads than for copywriting: ivangfalco/ads-skills, listed below, ships 39 Python scripts that call the ad platforms' APIs.

## How to install them

There are 3 ways in. The skills CLI is the 1 we'd start with, since the same command works for Claude Code, Codex and Cursor. Here they are for our repo:

`Install paid-ads-skills`:
```bash
# 1. The skills CLI: Claude Code, Codex, Cursor and 76 more agents
npx skills add adwarp-dev/paid-ads-skills

# 2. A Claude Code plugin (type these inside Claude Code)
/plugin marketplace add adwarp-dev/paid-ads-skills
/plugin install paid-ads-skills@adwarp

# 3. By hand: copy any skill folder
git clone https://github.com/adwarp-dev/paid-ads-skills
cp -r paid-ads-skills/skills/linkedin-ads-audit ~/.claude/skills/
```

*Fig. 04: Of the 3 routes, only the skills CLI reaches all 79 agents its README lists, since the plugin installs into Claude Code alone and a hand copy goes to the 1 folder you pick.*

### Claude Code

`npx skills add adwarp-dev/paid-ads-skills` asks which skills you want and which agents to install them for. It installs into the current project's `.claude/skills/` unless you add `-g`, which puts them in `~/.claude/skills/` for every project, and `--skill linkedin-ads-audit` picks 1. The CLI needs Node.js 22.20 or later.

When we ran it from inside a Claude Code session, the CLI noticed it was running under an agent and skipped its questions. Add `-a claude-code` in that case so the files land where Claude Code reads them.

The plugin route is 2 commands typed in Claude Code: `/plugin marketplace add adwarp-dev/paid-ads-skills`, then `/plugin install paid-ads-skills@adwarp`. Plugin skills are namespaced, so you call them as `/paid-ads-skills:linkedin-ads-audit`. You don't need a restart. The [Claude Code skills docs](https://code.claude.com/docs/en/skills) say a session picks up skills added under `~/.claude/skills/` as they arrive, and you only run `/reload-skills` if that folder didn't exist when the session started.

### Codex, Cursor and other agents

The same `npx skills add` command detects which agents you have installed. The CLI's agent table puts Codex skills in `.agents/skills/` (or `~/.agents/skills/` with `-g`) and Cursor skills in `.agents/skills/` (or `~/.cursor/skills/`). Name the agent with `-a codex` or `-a cursor` to skip the question.

Codex also has a plugin command of its own, `codex plugin marketplace add owner/repo`, for repos that publish a Codex marketplace file at `.agents/plugins/marketplace.json` ([OpenAI's Codex plugin docs](https://developers.openai.com/codex/plugins/build)). marketingskills ships that file. Ours doesn't, so in Codex use the skills CLI.

### claude.ai and Claude Desktop

In claude.ai you upload a skill as a zip. Zip the skill folder so the folder sits at the root of the archive, open Customize, then Skills, click "+", choose "Create skill" and then "Upload a skill". Anthropic's help center ([Using Skills in Claude](https://support.claude.com/en/articles/12512180-using-skills-in-claude), checked November 7, 2026) lists Free, Pro, Max, Ultra, Team and Enterprise plans, and code execution has to be on. It describes this 1 upload flow and gives no separate steps for the Claude Desktop app.

The help center's guide to [creating custom skills](https://support.claude.com/en/articles/12512198-creating-custom-skills) caps the description at 200 characters, against 1,024 in the Agent Skills format. Ours run 470 to 850, so cut the `description:` line to 200 before you zip, and keep the phrases you actually type. Corey Haines' repo publishes `-claude-web.zip` files with shortened descriptions for the same reason.

*Fig. 05: Our 17 descriptions run 470 to 850 characters, so a claude.ai upload, capped at 200, needs a shorter line than the 1,024 the Agent Skills format allows (limits from Anthropic's docs and help center, checked November 7, 2026).*

Skills don't sync between surfaces. A skill you upload to claude.ai isn't in Claude Code or the API, and Claude Code's skills live on your disk. For live data in the Claude Desktop app, Adwarp runs as a local server ([Claude Desktop setup](https://adwarp.dev/docs/clients/claude-desktop)).

## LinkedIn Ads skills

LinkedIn is where the published lists of marketing skills run thin. They cover it with 1 skill that also does Google, Meta and X, and the ones we read name no LinkedIn audit, audience sizing or account-based skill. 10 of our 17 skills are LinkedIn-only, and [LinkedIn Ads in Claude Code](https://adwarp.dev/linkedin-ads/claude) covers the live setup.

*Fig. 06: Our 10 LinkedIn skills sorted by when you'd reach for them in an account's life: 2 to plan, 2 to launch, 4 for the weekly running and 2 for upkeep.*

### paid-ads-skills (ours)

| Skill | Ask it | Output | Reads or writes |
| --- | --- | --- | --- |
| [`linkedin-ads-audit`](https://adwarp.dev/docs/skills/linkedin-ads-audit) | "Audit my LinkedIn ads account" | 28 scored checks and fixes ranked by spend at risk | Reads |
| [`linkedin-ads-performance-review`](https://adwarp.dev/docs/skills/linkedin-ads-performance-review) | "How are my LinkedIn ads doing?" | Scale, pause, refresh and watch lists against like-for-like peers | Reads |
| [`linkedin-ads-spend-analysis`](https://adwarp.dev/docs/skills/linkedin-ads-spend-analysis) | "Where is my LinkedIn budget going?" | Where the money goes, what returned nothing, the moves worth making | Reads, applies a move after your yes |
| [`linkedin-ads-lead-drivers`](https://adwarp.dev/docs/skills/linkedin-ads-lead-drivers) | "Which LinkedIn ads drive leads?" | Drivers, a pause list with the money each ad burned, the angles that win | Reads, pauses after your yes |
| [`linkedin-ads-pause-rules`](https://adwarp.dev/docs/skills/linkedin-ads-pause-rules) | "Which LinkedIn ads should I pause?" | Rules you approve once, then a dry run every week | Pauses after your yes |
| [`linkedin-audience-sizing`](https://adwarp.dev/docs/skills/linkedin-audience-sizing) | "How big should this audience be?" | A narrowing ladder that lands the audience in range | Reads |
| [`linkedin-audience-ops`](https://adwarp.dev/docs/skills/linkedin-audience-ops) | "Audit my matched audiences" | Audience health, clean list uploads, Salesforce and HubSpot refreshes | Uploads after a dry run and your yes |
| [`linkedin-abm-builder`](https://adwarp.dev/docs/skills/linkedin-abm-builder) | "Build 1:1 ads for these accounts" | An ad set per account: audience, 3 ads, a fixed flight | Creates drafts after your yes |
| [`linkedin-campaign-launch`](https://adwarp.dev/docs/skills/linkedin-campaign-launch) | "Launch a LinkedIn campaign for this" | A confirmed brief, sized before spend | Creates drafts after your yes |
| [`linkedin-ad-library-teardown`](https://adwarp.dev/docs/skills/linkedin-ad-library-teardown) | "What LinkedIn ads is this company running?" | Themes, offers, formats, run length and gaps | Reads public ads only |

Every card below is MIT licensed, covers LinkedIn Ads, and installs with `npx skills add adwarp-dev/paid-ads-skills --skill <name>`. The sessions show the prompt and a trimmed version of the report the skill writes from the made-up Northwind Analytics files.

#### linkedin-ads-audit

28 checks in 7 groups: tracking, structure and naming, targeting, delivery settings, bidding and budget, creative, and landing pages with their UTM tags. Each check has a pass, warn or fail rule, a LinkedIn source or a labeled default, and the exact fix. The score is weighted by spend. Adwarp can't read Audience Expansion, bids or URL parameters, so in live mode those still come from a settings sheet you fill in. Reads only. [Docs](https://adwarp.dev/docs/skills/linkedin-ads-audit).

*Fig. 07: The audit's scorecard for the made-up Northwind Analytics files: a score of 80, weighted by spend, across 28 checks in 7 groups, with the 11 fails in orange.*

```text
> Audit my LinkedIn ads account. The exports are in this folder.
LinkedIn Ads audit: Northwind Analytics (made-up data)
2026-09-19 to 2026-10-18: $11,745.40 across 7 active ad sets
28 checks: 2 pass, 14 warn, 11 fail, 1 not scored. Score 80, weighted by spend
D1 fail  Audience Expansion on with a matched company list
D2 fail  Audience Network took $793.28 (28%) of Finance Leaders, 0 conversions
A1 fail  ABM Tier 2 forecast at 240, under the 300 LinkedIn needs
Fixes ranked by spend at risk. Nothing was changed.
```

#### linkedin-ads-performance-review

Key numbers by campaign, ad set and ad, each judged against peers with the same objective and audience type, plus week over week direction and creative fatigue. It ends in scale, pause, refresh and watch lists ranked by money at stake. A floor of about 1,000 impressions or 3 results keeps a small number from driving a call. Live, it starts from Adwarp's `performance_summary`. Reads only. [Docs](https://adwarp.dev/docs/skills/linkedin-ads-performance-review).

```text
> How are my LinkedIn ads doing?
28 days: $11,174.86 spent (-1%), 63 website conversions against 50
Cost per conversion $128.92, down 22%
Top: Ops Leaders, $157.92 per conversion, 0.78x its peers
Bottom: Finance Leaders, $336.74 per conversion, 1.67x its peers
Pause: 772003 ROI calculator, $862.06 for 0 conversions
Refresh: 771004, click-through rate down 3 weeks running
Leads 3 against 4 this week: under the floor, no call
```

#### linkedin-ads-spend-analysis

Spend by campaign, ad set and ad, how concentrated it is against results, and 1 summed figure for the spend that returned nothing, with the rule printed next to it. It also checks each ad set's pacing against its own budget. Every move comes with the exact budget or status change, and nothing moves until you confirm it, through `update_campaign` with a dry run first. [Docs](https://adwarp.dev/docs/skills/linkedin-ads-spend-analysis).

```text
> Where is my LinkedIn budget going?
30 days: $21,080 for 59 website conversions and 46 leads
Top ad set 20.9% of spend; 6 of 10 ad sets make 80%
Spend with nothing back: $3,360 (15.9%)
Competitor Users | US: $2,640, 0 conversions, 8.6x the yardstick
Its 231 landing page clicks predict 10.9 conversions: check tracking first
Then pause it and move $30 a day to Ops Leaders
Each move shows the old and new value and waits for your yes.
```

#### linkedin-ads-lead-drivers

Ranks ads by what they produced against a yardstick for their peer group and lists the ones that spent with nothing back. For Lead Gen Form ads it compares form opens and completion rates, which tells an ad problem from a form problem. Then it scores hooks, offers and formats head to head inside the same ad set. Pauses run only on the list you confirm. [Docs](https://adwarp.dev/docs/skills/linkedin-ads-lead-drivers).

```text
> Which LinkedIn ads drive leads?
46 leads at $77.39, 59 conversions at $266.78
2 drivers made 80% of leads on 63% of lead spend
Pause list: 2 ads, $1,420 spent, $1,110 burned
Forms complete at 13.3% to 14.3% on every ad, so the ad sets the cost
Proof hooks won in 4 ad sets and lost in 0
Reply "pause these 2" to apply. Nothing is paused until you do.
```

#### linkedin-ads-pause-rules

You approve the rules once and they're saved to `pause-rules.md`. The defaults are a click-through rate floor per format once an ad has 1,500 impressions in 30 days: single image 0.29%, carousel 0.22%, video 0.17% and thought leader 1.88%, each 70% of [ZenABM's median for that format](https://zenabm.com/blog/linkedin-ads-ctr-benchmarks) (161,256 ads, updated February 16, 2026). Other formats get no floor until you set one. A run pauses at most 5 ads, highest spend first, and the top 5 ads by conversions and any ad at or under your target cost per conversion are protected. The last active ad in an ad set is never paused, since that would stop the whole ad set. Approving the rules once doesn't approve any run, so each week's list needs its own yes. [Docs](https://adwarp.dev/docs/skills/linkedin-ads-pause-rules).

*Fig. 08: In this dry run on the made-up Northwind export, all 9 ads sit under their format's click-through rate floor, but only 5 reach the pause list, because rules protect 3 and the cap of 5 holds 1 back for the next run.*

```text
> Run my pause rules.
DRY RUN, nothing has changed
Floors after 1,500 impressions: single image 0.29%, carousel 0.22%, video 0.17%
21 ads read: 5 to pause, 1 to replace first, 1 for next run
Pause list: 5 ads, $1,365 spent, 1 conversion
Reply "pause these 5" to apply.
> pause these 5
adwarp.update_ad 5 ads, dryRun: true  5 previews
adwarp.update_ad 5 ads, status: PAUSED  PAUSED
adwarp.log_ad_change tags: pause-rules  5 entries
Paused 5 of 5. Next run: recheck 100000303, replace 100000501 first.
```

#### linkedin-audience-sizing

Walks a narrowing ladder: job function, then seniority, then industry, company size and region, and job titles only when needed. It records the estimate after each step and lands the audience in a range for its goal, 400 to 1,000 members for a 1:1 account-based ad set by default. When a step drops under the 300 members LinkedIn needs to serve, it widens. Live, every step is an `estimate_audience` call. Reads only. [Docs](https://adwarp.dev/docs/skills/linkedin-audience-sizing).

```text
> Size a 1:1 audience for Halvorsen Logistics.
adwarp.estimate_audience Norway or US, company  6,800
adwarp.estimate_audience + 4 job functions  2,450
adwarp.estimate_audience + VP or CXO  260
260 is under the 300 LinkedIn needs to serve. Widening seniority.
adwarp.estimate_audience + Director  610
610 members, inside the 400 to 1,000 range
$600 a month buys 11.6 impressions per member: expect fast fatigue
```

#### linkedin-audience-ops

Lists every matched audience and flags the ones stuck building, under 300, expired, stale or unused, checking exclusion lists first because a stale customer list shows prospecting ads to customers. It cleans uploads down to LinkedIn's template columns with emails hashed. Nothing uploads until you've seen the dry run and said yes to the file, row count, audience name and ad account. Salesforce and HubSpot refreshes work the same way. [Docs](https://adwarp.dev/docs/skills/linkedin-audience-ops).

```text
> Audit my matched audiences, then clean contacts-raw.csv for upload.
10 audiences, 3 exclusion lists, 6 in live ad sets
Customers - all contacts: exclusion 112 days old, on 3 active ad sets
Webinar registrants Sept: Building for 120 hours, past LinkedIn's 48
Dry run: 653 rows in, 608 kept, 45 dropped
Upload 608 rows as a contact list named "Finance contacts Oct 2026"
to ad account 500000123? Reply yes to upload.
```

#### linkedin-abm-builder

Turns a target account list into 1:1 ad sets: company targeting plus the buying group's job functions and seniorities, 3 ads with different angles, a fixed flight, a budget and a landing page. Accounts too small to serve are grouped into a cluster or marked outbound only, and sales gets a coverage CSV. After you confirm the plan, Adwarp creates the campaign, ad sets and ads as LinkedIn drafts. [Docs](https://adwarp.dev/docs/skills/linkedin-abm-builder).

*Fig. 09: 1 account from the made-up Ledgerloom sample as the builder plans it, with its own ad set on a fixed November 2 to 15 flight and 3 draft ads whose intro text each takes a different angle.*

```text
> Build 1:1 ads for the accounts in accounts.csv.
13 accounts: 10 1:1 ad sets, 1 cluster of 2, 1 outbound only
Flight Nov 2 to Nov 15: 2,142 USD against a 2,500 USD cap
33 ads, 3 angles each. Audience Expansion and Audience Network off
Create 1 campaign, 11 ad sets and 33 ads as LinkedIn drafts? Reply yes.
> yes
adwarp.create_campaign_group ABM Q4 2026  DRAFT
adwarp.create_campaign 11 ad sets  DRAFT
adwarp.create_image_ad 33 ads  DRAFT
Coverage CSV for sales: 13 accounts
```

#### linkedin-campaign-launch

Starts from a plain request, like the guide launch below, and fills in a complete brief. It estimates the audience before anything exists and applies safe settings: Audience Expansion and the LinkedIn Audience Network off, your standing exclusions, a conversion attached, and the ad format set at creation because LinkedIn can't change it later. You confirm the plan and it creates drafts. Without Adwarp it writes a build sheet for Campaign Manager. [Docs](https://adwarp.dev/docs/skills/linkedin-campaign-launch).

*Fig. 10: The settings the launch skill applies before it creates a draft: website visits picked, Audience Expansion and the Audience Network off, a conversion attached, and the single image format locked, since LinkedIn can't change it later.*

```text
> Launch a LinkedIn campaign for the 5-day close guide.
Website visits, single image, Nov 3 to Nov 30
Audience 137,500 after 2 of 3 exclusions
107 USD a day, 2,996 USD for the flight (cap 3,000)
Audience Expansion off, Audience Network off, Guide download attached
Competitor employees is Expired: re-upload it before creating
Creation waits for that list, then 1 campaign, 1 ad set and 4 ads as drafts.
```

#### linkedin-ad-library-teardown

Reads a company's ads in LinkedIn's public Ad Library, collected by hand or through Adwarp's use of LinkedIn's official Ad Library API, and works out themes, offers, formats, launch cadence, run length and the gaps you can use. It compares up to 3 companies side by side. No scraping, and no ad account access. [Docs](https://adwarp.dev/docs/skills/linkedin-ad-library-teardown).

*Fig. 11: The format mix the teardown found in the made-up Quillmark Payables sample of 24 ads, collected October 15, 2026: single image 58%, video and document 17% each, carousel 8%.*

```text
> What LinkedIn ads is Quillmark Payables running?
24 ads collected 2026-10-15, United States and Germany
Themes: faster close 29%, duplicate payments 25%, AI agent 21%
Offers: middle of the funnel 54%, demo 38%, no pricing or trial
Formats: single image 58%, video 17%, document 17%, carousel 8%
Gap: nobody talks to IT and ERP owners since their 2 ERP ads ended
```

### Other LinkedIn Ads skills

We installed each of these with the skills CLI into the same empty project. 3 of them are named `linkedin-ads`, and each install replaced the folder the one before had written, so put them in separate projects if you want to compare them.

| Skill | Repo | Coverage | Reads or writes | License |
| --- | --- | --- | --- | --- |
| `ads-linkedin` | [claude-ads](https://github.com/AgriciDaniel/claude-ads) | An audit of measurement, the Insight Tag, audiences, Lead Gen Forms, account-based campaigns, creative, bidding and pacing, from exports | Reads. Account changes are switched off for LinkedIn Ads in its capability manifest | MIT |
| `ads` | [marketingskills](https://github.com/coreyhaines31/marketingskills) | Strategy, targeting, bidding and optimization for Google, Meta, LinkedIn and X in 1 file. It ends every recommendation with facts, hypotheses and missing data | Reads what you give it | MIT |
| `linkedin-ads` | [kostja94/marketing-skills](https://github.com/kostja94/marketing-skills) | Setup, targeting and optimization guidance with links to LinkedIn's help pages, 1 of 172 skills in the repo | Reads what you give it | MIT |
| `linkedin-ads` | [Cold-IQ/ColdIQ-s-GTM-Skills](https://github.com/Cold-IQ/ColdIQ-s-GTM-Skills) | A strategist that routes to 9 sub-skills, from audiences to bidding, and points you to ColdIQ's own MCP server to build lists | Reads what you give it | No license file |
| `linkedin-ads` | [ivangfalco/ads-skills](https://github.com/ivangfalco/ads-skills) | Strategy files plus Python scripts that call the LinkedIn, Meta and Google Ads APIs, including campaign creation and updates | Writes through its scripts. Its CLAUDE.md says to start campaigns paused | MIT with the Commons Clause, which bars selling it |

`Install the other LinkedIn Ads skills`:
```bash
npx skills add AgriciDaniel/claude-ads --skill ads-linkedin -a claude-code
npx skills add coreyhaines31/marketingskills --skill ads -a claude-code
npx skills add kostja94/marketing-skills --skill linkedin-ads -a claude-code
npx skills add Cold-IQ/ColdIQ-s-GTM-Skills --skill linkedin-ads -a claude-code
npx skills add ivangfalco/ads-skills --skill linkedin-ads -a claude-code
```

claude-ads recommends its plugin over the CLI, because its skills lean on a Python core for scoring. ivangfalco's README says to clone the whole repo and open Claude Code in it, since the shared strategy files and the `.env` for API keys sit at the repo root.

## Google Ads skills

Google Ads has more skills to choose from than LinkedIn Ads, and most of them are audits. They differ mostly in where the data comes from and whether the skill can write.

*Fig. 12: Our 3 Google skills end in 3 different things: a report from 50 checks, an Editor file of negatives you import yourself, and 1 campaign that Adwarp creates paused.*

### paid-ads-skills (ours)

All 3 are MIT licensed, cover Google Ads, and install with `npx skills add adwarp-dev/paid-ads-skills --skill <name>`. The sample data is a made-up crew scheduling company, Fernhill.

#### google-ads-account-audit

50 read-only checks across conversion tracking, auto-tagging, campaign settings, structure, keywords, search terms, negatives, responsive search ads, assets, Performance Max, AI Max, auto-applied recommendations and change history. Each check has a Google Ads Query Language (GAQL) query, a pass, warn or fail rule and a source. Tracking runs first: when it fails, every check that compares cost per conversion is marked unreliable. The report ends in fixes ranked by spend at risk. The full sample is in the last section. [Docs](https://adwarp.dev/docs/skills/google-ads-account-audit).

```text
> Audit my Google Ads account. Target CPA $150.
Score 50: 6 pass, 18 warn, 6 fail, 19 not checked, 1 n/a
Spend at risk: $5,366.19 of $19,280.00 (27.8%)
Measurement first: 135 conversions reported, 88 are demo requests
1. Fix conversion counting (C4, C3, C5)
2. Pause or rebuild Search - Competitors: $1,790.00, 0 conversions
3. Turn off search partners and add the negatives from search terms
```

#### google-ads-search-campaign-builder

Takes a product, landing page, location, language and daily budget, and returns a Search campaign brief: keyword research, tight ad groups, a match type plan, starter negatives, responsive search ads checked against Google's character limits, and settings (Search network only, presence targeting, manual bids until about 30 conversions in 30 days). Live, `gads_launch_search_campaign` runs with `validateOnly: true` first, so Google checks the whole request and stores nothing. The campaign is created paused, only after your yes. [Docs](https://adwarp.dev/docs/skills/google-ads-search-campaign-builder).

*Fig. 13: The builder sends the same campaign twice: with validateOnly, Google checks the whole request and stores nothing, and only after your yes does the second send create the campaign and its search ad, paused.*

```text
> Build a search campaign for our crew scheduling software, $120 a day.
41 ideas from Keyword Planner: 22 in the brief, 8 parked, 11 dropped
3 ad groups at about 5 clicks a day each, Google Search only
adwarp.gads_launch_search_campaign validateOnly: true  valid
Create this campaign, paused, in account 123-456-7890?
> yes
adwarp.gads_launch_search_campaign validateOnly: false  PAUSED
Created paused. Enabling it is your step in Google Ads.
```

#### google-ads-search-terms

Finds search terms that spend without converting, irrelevant intent and single words that waste money across many terms. It proposes negatives with a match type and a level, drops any negative that would block 1 of your keywords, and lists converting terms worth adding. Adwarp has no tool to add negatives to an existing campaign, so the skill writes a Google Ads Editor file and a paste list, and you review and post them. [Docs](https://adwarp.dev/docs/skills/google-ads-search-terms).

```text
> Where is my search budget leaking?
$17,844.10 across 51 search terms, 108 conversions
Waste: $2,895.20 (16.2%) on terms with 0 conversions
jobs: 6 terms, $1,331.60, 0 conversions, broad negative
Dropped technician: it would block technician scheduling software
Wrote the Editor CSV and a paste list for Universal negatives
Adwarp can't add negatives to existing campaigns. Import them in Editor.
```

### Other Google Ads skills

- **claude-ads, `/ads audit google`.** The `ads-google` skill covers measurement, Search, Shopping, Performance Max, Demand Gen, keywords and search terms, negatives, assets, bidding, budgets and policy, from exports. It calls itself read-only, and account changes are switched off for Google Ads in its manifest. MIT.
- **Ryze's Google Ads skills.** [irinabuht12-oss/marketing-skills](https://github.com/irinabuht12-oss/marketing-skills), "built by Ryze AI", holds 49 skills, most for Google Ads or Meta Ads, including `google-ads-audit`, `search-term-mining` and `quality-score-breakdown`. They run on pasted exports or through Ryze's hosted connector, which its README says has approval-gated writes. Install with `claude plugin marketplace add irinabuht12-oss/marketing-skills`, then `claude plugin install marketing-skills@ryze`. The skills CLI found only 1 skill in this repo when we tried it, so use the plugin. No license file.
- **InsightfulPipe's Google Ads Account Audit.** A download from [its skill page](https://insightfulpipe.com/marketing-claude-skills/google-ads/google-ads-account-audit) that reads a live account through InsightfulPipe's MCP server, grades it out of 100 across 8 areas and ranks the top 5 fixes by monthly dollar impact. It can add negative keywords, sitelinks and callouts after you approve the exact change, and never touches budgets or bids. No license or price stated. We didn't install it, because it needs their connector.
- **Anthropic's `performance-report`.** Part of the marketing plugin in [anthropics/knowledge-work-plugins](https://github.com/anthropics/knowledge-work-plugins). It writes a channel report, paid search and social included, from a connected analytics tool such as Supermetrics or from data you paste. It doesn't connect to Google Ads itself. Apache-2.0.

## Skills for both platforms

These 4 read LinkedIn Ads and Google Ads together, and work with just 1 if that's all you run. 3 of them are built to run on a schedule, and the 2 daily ones print a single line on a normal day.

*Fig. 14: A normal week for the cross-platform skills, with the 2 daily checks in the top rows and the report on Monday; lift has no fixed day and reads the days around a logged change.*

Each is MIT licensed and installs with `npx skills add adwarp-dev/paid-ads-skills --skill <name>`.

#### paid-media-weekly-report

A fixed format: the last 7 days against the 7 before, per platform and combined, then movers, launches and endings, flags and exactly 3 actions. A mover has to clear 1,000 impressions and 100 USD of spend in both weeks, and 5 conversions a week before cost per conversion counts. The actions are proposals, and a scheduled run never acts on them. Reads only. [Docs](https://adwarp.dev/docs/skills/paid-media-weekly-report).

*Fig. 15: The weekly report's fixed order, filled in from the made-up sample week of October 12 to 18, 2026: spend per platform against the week before, movers, flags and exactly 3 proposed actions.*

```text
> Write the weekly paid report.
Oct 12 to Oct 18, 2026, against Oct 5 to Oct 11
LinkedIn Ads: $6,919 (+18.0%), 35 conversions (-2.8%)
Google Ads: $5,025 (+10.0%), 59 conversions (+22.9%)
Better: Search - Scheduling Software, $87.50 to $62.43 per conversion
Worse: Retargeting - Site Visitors, click-through rate 0.95% to 0.42%
Action 1: pause Search - Competitor Terms, $1,050 and 0 conversions
```

#### paid-media-health-check

9 checks on yesterday against recent baselines: tracking breaks, active campaigns with no delivery, spend spikes, cost per conversion jumps, spend with nothing back, click-through rate collapses, stuck or too-small LinkedIn audiences, disapproved Google ads, and campaigns limited by budget while on target. Volume floors keep chance swings from firing. When all is clear it prints 1 line. Reads only. [Docs](https://adwarp.dev/docs/skills/paid-media-health-check).

```text
> Anything on fire in our ads?
Data through Oct 14: 8 alerts, about $1,354 a day at stake
1. LinkedIn, RevOps Leaders - Demo: SPEND SPIKE, $650, 2.4x normal
2. Google, Search - Generic Analytics: TRACKING BREAK, 0 conversions in 2 days
3. LinkedIn, Data Leaders - Demo: cost per conversion 3.6x its baseline
5 more below, each with its fix. A normal morning is 1 line.
```

#### ad-experiment-lift

Logs the hypothesis before the change: what changes, why, the metric, the expected effect and the read window. Then it reads before and after on equal windows with data floors, a placebo check on an earlier window, a control and the confounds written out, and returns worked, didn't work or inconclusive. It writes only to the change log, after you see the entry. [Docs](https://adwarp.dev/docs/skills/ad-experiment-lift).

```text
> Read the tests in ad-change-log.csv.
3 tests: 1 worked, 1 didn't work, 1 inconclusive
Test 1, outcome-led ads: 14 days before, 14 days after
Cost per conversion $168.52 to $131.76 (-21.8%)
Placebo -0.4%, control +4.6%, net lift -25.2%
WORKED: beat the 15% expected. Conversion rate held (z = -0.2)
```

#### ad-budget-pacing

Spend to date plus the last 7 days' daily average times the days left, against a monthly cap per platform and combined. It alerts above 105% or below 85% of a cap by default, with the daily budget change that would land on it. Before it suggests a raise, it checks whether budget is what's holding spend back. Reads only. [Docs](https://adwarp.dev/docs/skills/ad-budget-pacing).

```text
> Are we on pace this month?
LinkedIn Ads: OVER. $22,304 projected against $21,000 (106.2%)
Landing on the cap takes $693 a day, $93 less than now
Google Ads: UNDER. $8,598 projected against $10,500 (81.9%)
Budgets aren't the limit: campaigns spent 66% of them
Combined: on track, $30,902 of $31,500 (98.1%)
Nothing has changed. Reply with the budgets you approve.
```

claude-ads puts most of this into 1 skill, `/ads monitor`, which checks pacing, delivery, tracking, fatigue, policy and data quality across its 12 platforms. It wants 2 or more saved snapshots of the account, returns observations with a confidence level and likely causes, and doesn't change anything. Ours split that ground into 4 skills, so each can run on its own schedule.

## General marketing skill libraries

If you came here for marketing skills in general, these are the big libraries. Each has 1 or 2 skills that touch paid ads.

*Fig. 16: Orange marks the skills this post names for paid ads in each library: 2 of the 53 in marketingskills, 2 of the 8 in Anthropic's marketing plugin and all 17 in paid-ads-skills (counts from each repo, November 7, 2026).*

- **[marketingskills](https://github.com/coreyhaines31/marketingskills)** by Corey Haines: 53 skills, MIT, 59,050 GitHub stars on November 7, 2026. For paid ads it has `ads` for campaign strategy and `ad-creative` for headlines and ad variations at volume. `npx skills add coreyhaines31/marketingskills` installs the set.
- **Anthropic's marketing plugin** in [anthropics/knowledge-work-plugins](https://github.com/anthropics/knowledge-work-plugins): 8 skills under Apache-2.0, from `brand-review` to `seo-audit`. `performance-report` and `campaign-plan` are the 2 that touch paid media, and the plugin comes with connector settings for tools such as HubSpot, Ahrefs and Supermetrics.
- **[marketing-skills.com](https://marketing-skills.com/skills)**: Corey Haines' directory of the same 53 skills, sorted into 8 disciplines with 6 under Ads. Each page gives the `npx skills add coreyhaines31/marketingskills --skill <name>` line for that skill.

## Which skills can change your ad account

Most of these skills only read. When one writes, a tool does the writing, so the tool's rules decide what a change looks like when it lands.

| Skill | Reads or writes | Changes | Lands as | The confirm step |
| --- | --- | --- | --- | --- |
| `linkedin-ads-pause-rules` | Writes | The status of single ads, only to paused | LinkedIn, through Adwarp's `update_ad`, logged in the change journal | You confirm that run's exact list. Rules or a schedule never count |
| `linkedin-ads-lead-drivers` | Writes | Pauses the ads on the confirmed list. Replacement ads only as drafts | LinkedIn, through Adwarp | The exact pause list, in the same session |
| `linkedin-ads-spend-analysis` | Writes | Ad set budgets and status, single ad pauses | LinkedIn, through `update_campaign` or `update_ad` with a dry run first | Each move, by entity, field, old value and new value |
| `linkedin-audience-ops` | Writes | Uploads a contact or company list | LinkedIn matched audiences | File, row count, audience name and ad account, after a dry run |
| `linkedin-campaign-launch`, `linkedin-abm-builder` | Writes | 1 campaign, its ad sets and its ads | LinkedIn, as drafts | The exact plan. Any change to it means showing it again |
| `google-ads-search-campaign-builder` | Writes | 1 Search campaign with budget, ad groups, keywords and ads | Google Ads, paused, after a `validateOnly` dry run | "Create this campaign, paused, in account <id>?" |
| `ad-experiment-lift` | Writes to the log | A hypothesis entry | The change journal or a CSV, never the ad account | You see the entry before it's written |
| `google-ads-search-terms` | Writes a file | Nothing in the account | A Google Ads Editor CSV on your disk | You review and post it in Editor |
| Our other 8 | Reads | Nothing on their own | Proposals in the report | Anything you ask for is shown first, with a dry run |
| claude-ads | Reads | Nothing. Account changes are switched off for LinkedIn Ads and Google Ads | Draft proposals in the report | A 6-step approval gate, not yet enabled |
| Ryze's skills | Reads | Nothing by themselves | Ryze's hosted connector, if you connect it | Ryze's approval step |
| InsightfulPipe's audit | Writes | Negative keywords, sitelinks, callouts | Google Ads, through InsightfulPipe's MCP server | You approve the exact change |
| ivangfalco's `linkedin-ads` | Writes | Campaigns, budgets, bids and statuses | LinkedIn Ads, Meta and Google Ads APIs, through Python scripts | Its CLAUDE.md: start campaigns paused, never enable spend without confirmation |
| marketingskills `ads`, kostja94 and ColdIQ `linkedin-ads`, Anthropic's `performance-report` | Reads | Nothing | Advice or a report | None needed |

*Fig. 17: 10 of our 17 skills never change an ad account, and the 7 that can all stop at your yes, after which LinkedIn work lands as a draft or a paused ad and Google work lands paused.*

Our skills change an account only through Adwarp, and only after you confirm the exact change in the same session. LinkedIn campaigns and ads are created as drafts and go live only when you ask for ACTIVE or switch them on in Campaign Manager, and every ad set Adwarp creates has Audience Expansion and the Audience Network off. A single ad pauses or resumes only when it's named. Google campaigns are created paused after a `validateOnly` dry run, and Adwarp has no tool that enables a Google campaign. Every change goes to the change journal, and [Safety](https://adwarp.dev/docs/safety) has the full rules.

## Run a skill on an export or on live data

Every skill in our set runs both ways, and `google-ads-account-audit` shows the difference best, because some of its checks can only be made on a live account.

*Fig. 18: The same skill takes either input: a folder of exports with nothing connected, or live queries through Adwarp or Google's own MCP server, and it writes the same report.*

From exports, download the reports the skill names (campaigns, campaigns by network, keywords, search terms, ads, the conversions summary, change history and a Google Ads Editor export), put the CSVs in a folder and start Claude Code there. Nothing connects to the account. Auto-tagging, enhanced conversions, Consent Mode, auto-apply and AI Max never appear in a report, so those checks come back "not checked" unless you add screenshots of the settings pages.

```text
$ ls
ads.csv  campaigns.csv  campaigns-by-network.csv  change-history.csv  conversions.csv
editor-ads.csv  editor-campaigns.csv  keywords.csv  search-terms.csv
$ claude
> Audit my Google Ads account from these exports. Target CPA $150, brand term fernhill.
Export mode: 9 files, 2026-09-21 to 2026-10-20, 4 Search campaigns and 1 Performance Max
19 checks not checked: settings no export carries
Auto-tagging, enhanced conversions, Consent Mode, AI Max: add screenshots
9 fixes ranked by spend at risk, 3 to do first
```

Live, add Adwarp with `claude mcp add adwarp -- npx -y adwarp mcp` ([install](https://adwarp.dev/docs/install)) and finish the [Google Ads setup](https://adwarp.dev/docs/google-ads-setup), or follow [Google Ads in Claude Code](https://adwarp.dev/google-ads/claude). The skill runs about 30 GAQL queries from its reference file through `gads_search`, which only takes `SELECT` queries. Google's [Google Ads MCP server](https://github.com/googleads/google-ads-mcp) works for the same reads through its `search` tool. Its README also lists write tools for assets and labels, which you can switch off in `tools_config.yaml` for a read-only setup.

*Fig. 19: 5 settings never appear in an export, so from files the audit marks all 5 not checked, while live it queries 4 of them and Consent Mode still needs a screenshot because the API has no field for it.*

```text
$ claude mcp add adwarp -- npx -y adwarp mcp
$ claude
> Audit my Google Ads account for the last 30 days. Target CPA $150.
adwarp.gads_list_accounts   1 account
adwarp.gads_search Q01 FROM customer  1 row
adwarp.gads_search Q02 FROM conversion_action  5 rows
adwarp.gads_search Q04 FROM campaign  5 rows
adwarp.gads_search Q11 FROM search_term_view  30 days
The rest of the catalog runs the same way, read-only.
Auto-tagging and conversion tracking now come from the account
Consent Mode still needs a screenshot: the API has no field for it
```

Here is the full report the skill writes from the export files, so you can see the whole format before you run it.

The full sample report, made from the made-up Fernhill exports, is in the repo at [examples/google-ads-account-audit/sample-output.md](https://github.com/adwarp-dev/paid-ads-skills/blob/main/examples/google-ads-account-audit/sample-output.md).

### In practice: a weekly stack

4 of our skills cover the routine week. The 2 daily checks run on a schedule and post 1 line when nothing is wrong, and the pause rules run as a dry run that you confirm by hand.

| When | Skill | Output |
| --- | --- | --- |
| Every morning | `paid-media-health-check` | 1 line, or alerts ordered by money at stake |
| Every morning | `ad-budget-pacing` | 1 line, or the daily budget change that lands on the cap |
| Monday | `paid-media-weekly-report` | Last week against the week before, with 3 actions |
| Friday | `linkedin-ads-pause-rules` | A dry-run table and a pause list for you to confirm |

`Friday scheduled task`:
```text
Run the linkedin-ads-pause-rules skill with the rules in pause-rules.md. Dry run only: send me the table and the pause list, and pause nothing.
```

That prompt comes from the skill itself. When the table arrives, open a normal session and reply with the list you approve. A scheduled run never pauses on its own. The [skills docs](https://adwarp.dev/docs/skills) have the scheduling notes for each skill.

Put it to work: [Paid ads skills](https://adwarp.dev/docs/skills). All 17 skills in paid-ads-skills with their install commands, the exports each one reads, and the Adwarp tools it calls for live data.

## Questions

### Does Claude have a marketing skill?

Not built in. Claude's pre-built skills cover Word, Excel, PowerPoint and PDF files, so marketing skills are ones you add: Anthropic's marketing plugin has 8, Corey Haines' marketingskills has 53, and paid-ads-skills has 17 for LinkedIn Ads and Google Ads. Each set installs with 1 command.

### What are the best Claude Code skills for marketing?

For marketing in general, start with marketingskills by Corey Haines, 53 MIT-licensed skills from SEO to pricing. For paid ads, pick by the job: linkedin-ads-audit or google-ads-account-audit to audit, paid-media-weekly-report for the Monday report, and linkedin-ads-pause-rules to clean up losing ads every week.

### Is there a marketing skills library for Claude Code?

Yes. marketingskills on GitHub holds 53 skills and installs with npx skills add coreyhaines31/marketingskills, and marketing-skills.com lists the same set by discipline. Anthropic's marketing plugin in anthropics/knowledge-work-plugins adds 8 more under Apache-2.0.

### What are the top 10 skills for Claude, for a paid ads marketer?

Our picks, 9 of them from our own repo: linkedin-ads-audit, linkedin-ads-performance-review, linkedin-ads-pause-rules, linkedin-audience-sizing, linkedin-campaign-launch, google-ads-account-audit, google-ads-search-terms, paid-media-weekly-report and paid-media-health-check. The 10th is Corey Haines' ads skill, for strategy on Meta and X as well as LinkedIn Ads and Google Ads.

### Is there a Claude skill for Google Ads?

Several. paid-ads-skills has 3: google-ads-account-audit with 50 read-only checks, google-ads-search-terms for negative keywords, and google-ads-search-campaign-builder, which ends in a campaign created paused. claude-ads has ads-google, and Ryze publishes a set of Google Ads skills that run on exports or through its own connector.

### Is there a Claude skill for LinkedIn Ads?

paid-ads-skills has 10, from an audit with 28 checks to audience sizing, 1:1 account-based ad sets and weekly pause rules. claude-ads has ads-linkedin, an audit from exports, and kostja94, ColdIQ and ivangfalco each publish a skill named linkedin-ads.

### Can a Claude skill change my ad account?

Only through a tool that can write, such as an MCP server, and a skill file alone can't reach your account. In paid-ads-skills, 7 of the 17 skills can change an account through Adwarp after you confirm the exact change: LinkedIn work lands as drafts or single paused ads, and a Google campaign is created paused after a validateOnly dry run.

### What's the difference between a skill and an MCP server?

A skill is a written method: what to pull, how to judge it and what the report looks like. It reaches an ad account only through tools, and an MCP server such as Adwarp is what supplies them. Without a server, the same skill works from a CSV export.

### Do these skills work in Codex and Cursor?

Yes. They use the open Agent Skills format, and npx skills add installs them for Claude Code, Codex, Cursor and the other agents the skills CLI supports, 79 in its README on November 7, 2026. Add -a codex or -a cursor to name the agent.

### Are they free, and do I need to connect my ad account?

Every skill in this post is free to install, and paid-ads-skills, marketingskills and claude-ads are MIT licensed. You don't need to connect anything: each of our skills names the export it reads, and connecting Adwarp, also free, only adds live data and the option to apply a change you confirm.

## Related

- [Claude Code for marketers](https://adwarp.dev/blog/claude-code-for-marketers): Set up Claude Code for paid ads work, with a CLAUDE.md a team can copy and 6 workflows.
- [Ads MCP servers](https://adwarp.dev/blog/ads-mcp-servers): The MCP servers that give Claude access to LinkedIn Ads and Google Ads, and what each can write.
- [LinkedIn Ads in Claude Code](https://adwarp.dev/linkedin-ads/claude): Add Adwarp to Claude Code with 1 command so the LinkedIn skills read live data.

Canonical page: https://adwarp.dev/blog/claude-ads-skills
Last updated: 2026-11-07
