agentsclimarketplace

Google ads

Skill chanktb/claude-google-ads/skills/google-ads

Router / orchestrator for the claude-google-ads suite. Use when the user wants to do anything with Google Ads but hasn't named a specific step — "help me with Google Ads", "launch Google Ads for my store", "run google ads", or just /google-ads. Reads account-context.yaml, runs setup if missing, figures out where the account is in the lifecycle, and dispatches to the right sub-skill (setup, measurement, audit, plan, builder-*, pusher, tracker, optimizer, assets, experiments). It orchestrates; it does not do the work.From its SKILL.md

Install
npx -y skills add chanktb/claude-google-ads --skill google-ads

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • reads credentialsReads from 1 credential source: `.env`.
  • 10 stars10 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 1 command, including `python ${CLAUDE_PLUGIN_ROOT}/skills/setup/scripts/validate_context.py ./account-context.yaml`.

SKILL.md

6.2 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

Google Ads — Router

The single entry point. Find out where the user is in the campaign lifecycle and hand off to the right sub-skill. Enforce the order so nothing runs on a broken foundation.

STEP 0 — Locate context

Look for account-context.yaml in the working directory (or a --context <path> the user gives).

  • Missing → run claude-google-ads:setup first. Nothing else runs without context.
  • Present → continue.

STEP 0b — Connection precheck (REQUIRED — don't run skills on a half-connected account)

Read the context connections block (or detect live). Before routing, confirm the prerequisites are set up; the suite's value depends on real data, and it must never run on a gap silently (see the no-fabricate gate):

ConnectionTierIf missing
Google Ads (read-only GAQL MCP)MANDATORYSTOP. Nothing runs. Send the user to setup to connect a Google Ads MCP.
Store (Shopify/Woo/BigCommerce)required for full valueGuide to connect (MCP or an Admin token in a .env). Without it: no real AOV / true-ROAS — those outputs render UNVERIFIED — connect store.
Merchant Center (ecom)required for feed healthGuide to connect. Without it: product performance only, feed health (OOS/disapproval, D14-B) = UNVERIFIED.
GA4recommendedGuide to connect. Without it: no Ads-vs-GA4 value cross-check.
GSCoptionalNote only.

If Google Ads is missing → stop and run setup. If a value-tier source (store/Merchant/GA4) is missing → surface a one-line "connect these for full value" banner with the how-to, then proceed at reduced scope — every output that needed the missing source is flagged UNVERIFIED, never fabricated. Don't quietly skip.

STEP 1 — Assess lifecycle stage

Run the context validator to read readiness, and scan the working dir for prior artifacts:

python ${CLAUDE_PLUGIN_ROOT}/skills/setup/scripts/validate_context.py ./account-context.yaml

Map state → the next sensible step:

ReadinessArtifacts presentLikely next step
not setup-completesetup (finish context)
setup-complete, no auditaudit and/or measurement
measurement = FAILmeasurement reportback to tracking fixes (block plan/build)
measurement OK, no planaudit + measurementplan
plan exists, no specGOOGLE-ADS-PLAN.mdbuilder-* for the chosen types
spec exists, not pushedcampaign-spec.jsonpusher
campaign livetracker (new) / optimizer (mature)

STEP 2 — Route by intent

If the user named a task, map it and dispatch:

  • "audit / score / what's wrong / wasted spend" → audit
  • "tracking / conversions / GA4 import / double count" → measurement
  • "plan / budget / what campaigns / media plan / forecast" → plan
  • "build pmax / performance max" → builder-pmax
  • "build search" → builder-search
  • "branded / brand campaign / conquesting" → builder-branded-search
  • "demand gen / youtube / discovery" → builder-demand-gen
  • "push / export / upload / go live" → pusher
  • "how's it doing / pacing / learning phase / anomaly" → tracker
  • "optimize / improve ROAS / negatives / raise tROAS / weekly review" → optimizer
  • "experiment / A/B / split test" → experiments
  • "ad copy / headlines / assets / creative" → assets If ambiguous, ask ONE clarifying question, then route.

STEP 3 — Full launch (when the user wants the whole thing)

For "set up Google Ads for my business", run the pipeline in order, pausing for input where needed:

setup → measurement [GATE] → audit → plan → builder-* → pusher [approval] → tracker → optimizer

Hard gates (never skip):

  • No plan/build before measurement passes (FAIL blocks; WARN carries a risk note).
  • build-ready wants brand_terms (for branded search + PMax exclusion).
  • pusher always: create PAUSED, human approval, spend cap.

STEP 4 — "Where am I?" summary

When the user just says /google-ads (no task), produce a short status: readiness, what artifacts exist, and the single recommended next action — then offer to run it. Don't dump everything; point to the next step.

Model dispatch (run cheap, decide expensive)

Spend compute by cognitive load, not by habit — see ${CLAUDE_PLUGIN_ROOT}/references/model-tier-dispatch.md. The router itself is Judge (J) work (lifecycle reasoning, routing, gates). But the heavy collection each sub-skill needs is Scout/Routine — so as orchestrator, push it down:

  • Scout (S, haiku) — the validate_context.py run in STEP 1, a single status pull, one URL check.
  • Routine (R, sonnet) — assembling the active-campaign set, full data-bundle pulls for audit/optimizer/tracker.
  • Judge (J, main session) — picking the next lifecycle step, all gates, the "where am I" call. Delegate S/R via Agent(subagent_type: "general-purpose", model: …) so the sub-agent keeps MCP + Bash; tell it to return raw, not conclude. Each sub-skill carries its own per-STEP tier table.

Notes

  • The router orchestrates; each sub-skill reads the same account-context.yaml and writes to the working directory. Business data never lives in the plugin — it stays in your local account-context.yaml.
  • One working folder per business; nothing scattered. All context + outputs live under a single <workdir> with dated subfolders, and secrets are recorded as POINTERS (not copied) — see ${CLAUDE_PLUGIN_ROOT}/references/workspace-layout.md. If there's no working folder yet, setup creates it.
  • Sub-skills are invoked by their namespaced names (claude-google-ads:setup, claude-google-ads:audit, …).

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 0 of the 12 instructions most marketing audience skills give in ~1.5k tokens

Counted across 690 of the 894 authors here whose files we hold, read 2026-08-07

  • Apply Poppins font to headingsin 41 of 690, across 6 files
  • Apply Lora font to body textin 41 of 690, across 6 files
  • Use Arial fallback for headingsin 39 of 690, across 4 files
  • Use Georgia fallback for body textin 39 of 690, across 4 files
  • Maintain text hierarchy and formattingin 39 of 690, across 4 files
  • Use accent colors for non-text shapesin 38 of 690, across 3 files
  • Use RGB values for precise color matchingin 38 of 690, across 3 files
  • Use brand colors for primary text and backgroundsin 36 of 690, across 1 file
  • Read product marketing context file before asking questions, starting, or auditingin 35 of 690, across 23 files
  • Use active voice instead of passive voicein 26 of 690, across 10 files
  • Implement or generate appropriate JSON-LD structured datain 24 of 690, across 17 files
  • Prioritize clarity over clevernessin 22 of 690, across 8 files

Said here and by no other author read

  • run setup if account context is missing
  • require account-context.yaml before proceeding
  • verify all mandatory connections before routing
  • surface a connection warning banner for missing value-tier sources
  • flag outputs as UNVERIFIED if data sources are missing
  • validate lifecycle readiness and scan for prior artifacts

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.