Agent skill

Google Ads Apply

by TheMattBerman in TheMattBerman/google-ads-copilot

Execute approved draft actions in Google Ads accounts. An agent skill from TheMattBerman/google-ads-copilot.

MITAuto-check passedMarketing & SEO

Install Google Ads Apply

skills CLI
$ npx skills add TheMattBerman/google-ads-copilot --skill google-ads-apply -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install TheMattBerman/google-ads-copilot google-ads-apply --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/TheMattBerman/google-ads-copilot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/google-ads-apply .claude/skills/google-ads-apply && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
google-ads-apply
GitHub stars
238
Token cost
~2.7k tokens
SKILL.md length
1,132 words
Files
1
Skills in repo
16
Repo updated
First seen
Licence
MIT

At a glance

Execute approved draft actions in Google Ads accounts. An agent skill from TheMattBerman/google-ads-copilot.

  • Works in 11 steps: Read the draft file → Parse all proposed actions… → Validate each action (correct account,… → …
  • Tasks that involve Paid advertising
  • SKILL.md covers Status: LIVE — Write Access…, Commands, Scope Guardrails (v1 + v2… and Draft Parsing, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Google Ads Apply is an agent skill from TheMattBerman/google-ads-copilot. Execute approved draft actions in Google Ads accounts. Supports four safe mutation types plus bounded budget writes: add campaign-level negatives, add ad-group-level negatives, pause keywords, pause ad groups, and set campaign daily budgets through an Apply Manifest. Requires human confirmation via dry-run → approve → execute → verify → audit flow. All actions are logged in the audit trail and fully reversible.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Marketing & SEO, covering Paid advertising. It works with Google Ads. The repository describes itself as: Google Ads Copilot: operator kit for audits, MCP-connected reads, export-mode analysis, and draft/apply workflows. The licence is MIT.

When your agent uses it

  • Tasks that involve Paid advertising

Example prompts

  • “/google-ads-apply”

Workflow steps

11 steps, taken from the first numbered list in SKILL.md.

  1. Read the draft file
  2. Parse all proposed actions (manifest-first for budget drafts; legacy parsing for v1 negatives/pauses)
  3. Validate each action (correct account, valid targets, within live apply scope)
  4. Resolve human-readable names to Google Ads resource IDs via GAQL
  5. Display dry run with every mutation listed, action type summary, and risk assessment
  6. Wait for operator confirmation ("confirm" or "cancel")
  7. Execute each action via Google Ads REST API v20
  8. Verify changes via GAQL re-query
  9. Write audit trail (session log, master log, reversal registry)
  10. Update draft status to "applied"
  11. Show post-apply summary with undo instructions

What it can do on your machine

Read from SKILL.md and the folder at commit 2c253ee. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Google Ads Apply loads about 2.7k tokens when it runs. Until then it costs about 108 tokens; SKILL.md has 1,132 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~108
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from TheMattBerman/google-ads-copilot at commit 2c253ee, republished under its MIT licence (© TheMattBerman). 1,132 words, ~2,746 tokens.

Download SKILL.mdSave it as .claude/skills/google-ads-apply/SKILL.md (or your agent's skills folder).
name
google-ads-apply
description
Execute approved draft actions in Google Ads accounts. Supports four safe mutation types plus bounded budget writes: add campaign-level negatives, add ad-group-level negatives, pause keywords, pause ad groups, and set campaign daily budgets through an Apply Manifest. Requires human confirmation via dry-run → approve → execute → verify → audit flow. All actions are logged in the audit trail and fully reversible.
argument-hint
[draft-file] | review [draft-file|--all] | status | undo [action-id] | undo-draft [draft-file] | log

Google Ads Apply

Status: LIVE — Write Access Confirmed

API v20 confirmed working (2026-03-15). v18 is sunset (404), v19 unstable (500). Full write cycle proven: add campaign negative → GAQL verify → remove → verify removal. Keyword pauses and ad group pauses fully scaffolded and hardened. CLI scripts at scripts/apply-layer/. Smoke test: scripts/apply-layer/gads-smoke-test.sh <customer_id> See APPLY-LAYER.md for design details and scripts/apply-layer/README.md for the public CLI implementation guide. See OPERATOR-PLAYBOOK.md for the full operator workflow loop.

Read first:

  • OPERATOR-PLAYBOOK.md — full operator workflow (connect → select → review → apply → verify → undo)
  • APPLY-LAYER.md — design document, API specs, error handling
  • drafts/DRAFTS.md — draft system documentation

Read workspace:

  • workspace/ads/drafts/_index.md — current queue
  • workspace/ads/drafts/_summary.md — prioritized summary
  • workspace/ads/audit-trail/_log.md — previous apply sessions (if any)
  • workspace/ads/audit-trail/reversal-registry.json — active reversals

Commands

Apply a Draft
/google-ads apply [draft-file]

Flow:

  1. Read the draft file
  2. Parse all proposed actions (manifest-first for budget drafts; legacy parsing for v1 negatives/pauses)
  3. Validate each action (correct account, valid targets, within live apply scope)
  4. Resolve human-readable names to Google Ads resource IDs via GAQL
  5. Display dry run with every mutation listed, action type summary, and risk assessment
  6. Wait for operator confirmation ("confirm" or "cancel")
  7. Execute each action via Google Ads REST API v20
  8. Verify changes via GAQL re-query
  9. Write audit trail (session log, master log, reversal registry)
  10. Update draft status to "applied"
  11. Show post-apply summary with undo instructions
Review a Draft (No Apply)
/google-ads apply review [draft-file]
/google-ads apply review --all

Flow:

  1. Parse the draft into structured actions
  2. Show action breakdown with counts by type and risk levels
  3. Show confidence and dependencies
  4. Provide a proceed/defer recommendation
  5. Show next-step commands (dry-run or full apply)

No network calls, no API access needed. Pure local analysis.

Check Operator Status
/google-ads apply status

Shows at a glance:

  • Connection state (account, API version, credentials)
  • Pending drafts with status
  • Active reversals grouped by draft
  • Recent apply sessions
  • Suggested next step
Undo a Single Action
/google-ads undo [reversal-id]

Flow:

  1. Look up reversal record in workspace/ads/audit-trail/reversal-registry.json
  2. Display what will be reversed
  3. Warn if change has been live >7 days
  4. Wait for confirmation
  5. Execute reversal via Google Ads API
  6. Verify via GAQL
  7. Update reversal registry (status: "undone")
Undo an Entire Draft
/google-ads undo-draft [draft-file]

Reverses ALL active actions from a specific draft. Same confirmation flow.

View Apply Log
/google-ads apply log

Shows recent apply sessions from workspace/ads/audit-trail/_log.md.


Scope Guardrails (v1 + v2 budgets)

Allowed Actions
ActionTargetScopeRisk
Add negative keywordCampaign criterionCampaign-level negativeLow
Add negative keywordAd group criterionAd group-level negativeLow
Pause keywordAd group criterionSet status to PAUSEDLow
Pause ad groupAd groupSet status to PAUSEDMedium
Set campaign daily budgetCampaign budgetUpdate amount_microsMedium
Why These Are Safe
  • Negative keywords can only REDUCE traffic. They cannot increase spend, break ads, or corrupt tracking.
  • Pausing keywords stops traffic to one keyword. All history, quality scores, and configuration remain intact.
  • Pausing ad groups stops traffic to a set of keywords. Same preservation guarantees. Broader blast radius than keyword pause, hence Medium risk.
  • All are instantly reversible: remove the negative, or set status back to ENABLED.
Blocked Actions (Hard Reject)

If a draft contains actions outside the supported scope, the apply command will:

  1. List the out-of-scope actions
  2. Explain which are out of scope and why
  3. Offer to apply ONLY the in-scope actions
  4. Never execute out-of-scope actions regardless of confirmation
ActionVersionWhy Blocked
Bid strategy changesv2Can disrupt Smart Bidding learning
Campaign creationv3Large blast radius
RSA modificationsv4Learning period impact
Enable paused entitiesNever in v1Higher risk than pausing
Delete anythingNeverPause instead

Draft Parsing

The apply layer parses these sections from draft markdown files:

SectionAction TypeTemplate
Section A: Negatives to ADDADD_NEGATIVEnegative-draft.md
Section D: CRITICAL KEYWORD-LEVEL RECOMMENDATIONPAUSE_KEYWORDnegative-draft.md
Section A: Keywords to PAUSEPAUSE_KEYWORDpause-draft.md
Section B: Ad Groups to PAUSEPAUSE_ADGROUPpause-draft.md

Both negative-draft.md and pause-draft.md templates are supported. Mixed-type drafts (negatives + pauses in one file) are fully supported — the parser extracts from all applicable sections and deduplicates.

Budget drafts are different:

  • They MUST include ## Apply Manifest
  • The manifest is authoritative when present
  • Draft-level meta.budget_policy controls whether any net increase is allowed
Show full SKILL.md (452 more words)Show less
Draft Templates
  • drafts/templates/negative-draft.md — negative keyword additions + removals + narrows
  • drafts/templates/pause-draft.md — keyword pauses + ad group pauses + impact summary

Validation Checks (Before Dry Run)

Before showing the dry run, validate:

  1. Account match: Draft account ID matches connected account
  2. Campaign exists: Campaign referenced in draft is still present (GAQL lookup)
  3. Ad group exists: For ad-group-scoped actions (GAQL lookup)
  4. No duplicates: Negative keyword doesn't already exist at the same scope
  5. Match type valid: PHRASE, EXACT, or BROAD only
  6. Target exists: Keyword being paused still exists and is currently ENABLED
  7. Ad group status: For ad group pause, target is currently ENABLED
  8. Within scope: Supported actions are add negative, pause keyword, pause ad group, and manifest-backed campaign daily budget changes

If validation fails, report which actions failed and why. Don't block the entire apply — allow valid actions to proceed.


Dry Run Display

markdown
═══════════════════════════════════════════════════════
 DRY RUN: [draft-file]
═══════════════════════════════════════════════════════

Account: [Name] (CID: [ID])
Actions: [N] valid / [M] total

#    Action           Target                       Detail                      Risk
---  ---------------  ---------------------------  --------------------------  ------
1    ADD NEG          Campaign: [name]             "near me" [PHRASE]          Low
2    ADD NEG          Campaign: [name]             "debris chute" [PHRASE]     Low
...
13   PAUSE KW         AG: [name]                   "waste mgmt" [EXACT]        Low
14   PAUSE AG         Campaign: [name]             [ad group name]             Medium

Summary:
  • 12 negative keyword addition(s)
  • 1 keyword pause(s)
  • 1 ad group pause(s)
  • Reversibility: All actions reversible

⚠️  This will make REAL changes to account [CID].
Type 'confirm' to proceed, or 'cancel' to abort:

Post-Apply Verification

After execution, run verification queries:

ActionVerification QueryWhat's Confirmed
Add campaign negativecampaign_criterion WHERE negative=TRUEKeyword exists in campaign
Add ad group negativead_group_criterion WHERE negative=TRUEKeyword exists in ad group
Pause keywordkeyword_view + status checkStatus is PAUSED
Pause ad groupad_group + status checkStatus is PAUSED

Audit Trail

After every apply session, these files are updated:

  1. Master log: workspace/ads/audit-trail/_log.md — append-only session summary
  2. Session detail: workspace/ads/audit-trail/YYYY-MM-DD-apply-session.md — full action-by-action log
  3. Reversal registry: workspace/ads/audit-trail/reversal-registry.json — machine-readable undo records
  4. Draft file: Updated with applied date and reversal IDs
  5. Draft index: workspace/ads/drafts/_index.md — moved to Applied section
  6. Change log: workspace/ads/change-log.md — record of what changed

CLI Scripts

ScriptPurpose
gads-apply.shFull apply flow: parse → validate → dry-run → confirm → execute → verify → audit
gads-apply.sh --dry-runParse and show dry run only
gads-apply.sh --parse-onlyParse draft to JSON (debugging)
gads-review.shParse and show operator-facing review (no API calls)
gads-review.sh --allReview all pending drafts
gads-undo.sh <rev-id>Undo a single action
gads-undo.sh --draft <file>Undo all actions from a draft
gads-undo.sh --listList all active reversals
gads-status.shFull operator status overview
gads-status.sh --appliedShow only applied actions
gads-status.sh --pendingShow only pending drafts
gads-smoke-test.shEnd-to-end write cycle test

Safety Rules

  1. Never apply without dry run. The operator must see exactly what will change.
  2. Never auto-approve. The operator must explicitly type "confirm."
  3. Never apply out-of-scope actions. Hard reject, clear explanation.
  4. Never delete anything. Pause is the maximum severity in v1.
  5. Log everything. Every action, every error, every reversal.
  6. Fail gracefully. If one action fails, continue with the rest. Report the failure.
  7. Verify after apply. Re-query to confirm changes took effect.
  8. Make undo easy. Every action has a stored reversal instruction.
  9. Rate limit. Max 50 mutations per apply session. 500ms delay between mutations.
  10. No batch apply across accounts. One account per apply session.

© TheMattBerman, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/google-ads-apply of TheMattBerman/google-ads-copilot.

Open the folder on GitHubat commit 2c253ee

Compare with similar skills

Google Ads Apply next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Google Ads Apply compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Google Ads Apply this skillTheMattBerman/google-ads-copilot238—~2.7kAutomated safety check: PassMIT
Blog GoogleAgriciDaniel/claude-blog2.3k1 repos~3.3kAutomated safety check: NotesMIT
AdsCesarjoquin/Marketing-Skills2001 repos~3.5kAutomated safety check: PassMIT
Adscoreyhaines31/marketingskills54k1 repos~7.8kAutomated safety check: PassMIT
Paid Adsfreekmurze/dotfiles1k14 repos~2.4kAutomated safety check: PassNone
Google Adszapier/connectors1761 repos~3.7kAutomated safety check: PassElastic-2.0

Similar skills

  • Blog Google

    AgriciDaniel/claude-blog

    Google API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity…

    2.3k GitHub starsUsed in 1 repo~3.3k tokens
    Marketing & SEOAuto-check: notes
  • Ads

    Cesarjoquin/Marketing-Skills

    When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms.

    200 GitHub starsUsed in 1 repo~3.5k tokens
    Marketing & SEOAuto-check passed
  • Ads

    coreyhaines31/marketingskills

    When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms.

    54k GitHub starsUsed in 1 repo~7.8k tokens
    Marketing & SEOAuto-check passed
  • Paid Ads

    freekmurze/dotfiles

    When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X, or other ad platforms.

    1k GitHub starsUsed in 14 repos~2.4k tokens
    Marketing & SEOAuto-check passed
  • Google Ads

    zapier/connectors

    Official

    Agent-callable Google Ads tools — search campaigns, ad groups, and ads via GAQL, build performance reports, manage campaign status and budgets, and set up conversion tracking.

    176 GitHub starsUsed in 1 repo~3.7k tokens
    Marketing & SEOAuto-check passed
  • Money Ads

    iamzifei/show-me-the-money

    Paid advertising automation for Google Ads, Meta Ads, and other ad platforms.

    1k GitHub stars~2.4k tokensUpdated 1 mo ago
    Marketing & SEOAuto-check passed

More from TheMattBerman/google-ads-copilot

All 16 skills in this repo
  • Google Ads

    TheMattBerman/google-ads-copilot

    Google Ads operator system for search-term analysis, intent mapping, wasted spend control, account structure decisions, tracking diagnostics, RSA generation, budget review, account planning, and…

    238 GitHub stars~4.1k tokensUpdated 4 mo ago
    Auto-check passed
  • Google Ads Audit

    TheMattBerman/google-ads-copilot

    Full Google Ads review that synthesizes tracking, search terms, intent mapping, negatives, structure, RSAs, budget decisions, and PMax context into a single operator read.

    238 GitHub stars~2.7k tokensUpdated 4 mo ago
    Auto-check passed
  • Google Ads Budget

    TheMattBerman/google-ads-copilot

    Review Google Ads budget allocation and scaling decisions based on signal quality, intent clarity, tracking confidence, and structural health.

    238 GitHub stars~1.2k tokensUpdated 4 mo ago
    Auto-check passed
  • Google Ads Connect

    TheMattBerman/google-ads-copilot

    Connected-mode onboarding, health check, and customer selection for Google Ads Copilot.

    238 GitHub stars~2.2k tokensUpdated 4 mo ago
    Auto-check passed
  • Google Ads Daily

    TheMattBerman/google-ads-copilot

    Daily operator review for Google Ads. An agent skill from TheMattBerman/google-ads-copilot.

    238 GitHub stars~1.2k tokensUpdated 4 mo ago
    Auto-check passed
  • Google Ads Draft Summary

    TheMattBerman/google-ads-copilot

    Summarize all pending drafts across accounts. An agent skill from TheMattBerman/google-ads-copilot.

    238 GitHub stars~2.1k tokensUpdated 4 mo ago
    Auto-check passed

Works with

Categories

Questions about Google Ads Apply

What does Google Ads Apply do?

Execute approved draft actions in Google Ads accounts. An agent skill from TheMattBerman/google-ads-copilot. Google Ads Apply is an agent skill from TheMattBerman/google-ads-copilot. Execute approved draft actions in Google Ads accounts.

When should I use Google Ads Apply?

Google Ads Apply fits situations like: tasks that involve Paid advertising.

How do I install Google Ads Apply in Claude Code?

Run `npx skills add TheMattBerman/google-ads-copilot --skill google-ads-apply -a claude-code`. Or copy the skill folder (skills/google-ads-apply in TheMattBerman/google-ads-copilot) into .claude/skills/google-ads-apply in your project. Claude Code loads it when a task matches its description.

How do I install Google Ads Apply in Codex?

Run `npx skills add TheMattBerman/google-ads-copilot --skill google-ads-apply -a codex`. Or copy the skill folder (skills/google-ads-apply in TheMattBerman/google-ads-copilot) into .agents/skills/google-ads-apply in your project. Codex loads it when a task matches its description.

Can I use Google Ads Apply in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add TheMattBerman/google-ads-copilot --skill google-ads-apply -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/google-ads-apply, .gemini/skills/google-ads-apply, .github/skills/google-ads-apply and .opencode/skills/google-ads-apply in your project.

What does Google Ads Apply need to run?

SKILL.md names no scripts, command-line tools or credentials: Google Ads Apply is instructions for the agent only.

Does Google Ads Apply access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Google Ads Apply safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Google Ads Apply use?

Google Ads Apply is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Google Ads Apply use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Google Ads Apply?

Skills that share tags, products or a category with Google Ads Apply: Blog Google (AgriciDaniel/claude-blog, 2.3k stars), Ads (Cesarjoquin/Marketing-Skills, 200 stars), Ads (coreyhaines31/marketingskills, 54k stars) and Paid Ads (freekmurze/dotfiles, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Google Ads Apply?

TheMattBerman (a GitHub user) maintains it in TheMattBerman/google-ads-copilot, which has 238 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on June 10, 2026.

Source: TheMattBerman/google-ads-copilot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.