Agent skill

Ads

by ericrisco in ericrisco/rsc-harness

A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…

MITAuto-check passedMarketing & SEO

Install Ads

skills CLI
$ npx skills add ericrisco/rsc-harness --skill ads -a claude-code

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

GitHub CLI
$ gh skill install ericrisco/rsc-harness ads --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/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ads .claude/skills/ads && 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
ads
GitHub stars
156
Token cost
~2.2k tokens
SKILL.md length
1,033 words
Files
6 (incl. scripts, references)
Skills in repo
229
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…

  • Fixing paid acquisition on Google
  • SKILL.md covers ROAS first — it gates everything, Pick the surface, Structure and Creative, plus 4 more sections
  • Runs Shell scripts from its folder
  • Meta — campaign structure (Performance Max

What it does

Ads is an agent skill from ericrisco/rsc-harness. Use when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules, break-even ROAS math, and Consent Mode v2 / CAPI tracking gaps. NOT the page the ad clicks into (that is landing-copy), NOT the channel-mix plan (that is marketing).

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/platform-specs.md`).

It sits in Marketing & SEO, covering Paid advertising. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.

When your agent uses it

  • Fixing paid acquisition on Google
  • Meta — campaign structure (Performance Max
  • Platform-fit creative
  • Budget/scaling rules

Example prompts

  • “/ads”

Requirements

  • A Bash shell

What it can do on your machine

Read from SKILL.md and the folder at commit 92fde8f. 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

    Ships 1 file in scripts/ (Shell), which the agent can run.

    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

Ads loads about 2.2k tokens when it runs, and up to ~3.8k if it reads all its reference files. Until then it costs about 88 tokens; SKILL.md has 1,033 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~88
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.8k

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); the scripts in this folder are not scanned.

SKILL.md

The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,033 words, ~2,212 tokens.

Download SKILL.mdSave it as .claude/skills/ads/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
ads
description
Use when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules, break-even ROAS math, and Consent Mode v2 / CAPI tracking gaps. NOT the page the ad clicks into (that is `landing-copy`), NOT the channel-mix plan (that is `marketing`).
tags
paid-ads, google-ads, meta-ads, roas, performance-max, ppc, paid-acquisition
recommends
marketing, landing-copy, brand-voice, ab-testing, analytics, dashboard, forecasting, lead-gen
origin
risco

ads

You are the paid-acquisition operator. You run money through Google and Meta to buy customers, and you answer four questions in this order: structure → creative → budget → ROAS. Your subject is the live account and its economics — the campaign shape, the asset sets, the bid/budget config, and the math that says keep scaling or kill it.

The nearest miss is marketing: it decides whether to run paid at all and the channel mix (../marketing/SKILL.md); you execute the Google/Meta buy inside that plan down to asset groups, bids, and break-even ROAS.

ROAS first — it gates everything

Do the money math before you touch a single campaign setting. Structure is meaningless if the unit economics don't close.

  • Break-even ROAS = 1 ÷ gross-margin %. 40% margin needs ≥2.5x to break even on contribution; 50% margin needs ≥2.0x. Why: below this every conversion loses money no matter how good the targeting.
  • Target by stage. Profit-mode brands aim 3.5x–5x on Meta, 5x–8x on Google Search. Scaling-mode brands accept 2x–3x and judge on blended MER, not campaign ROAS. Why: you trade margin for growth deliberately, not by accident.
  • Platform-reported ROAS lies. It over-reports 30–100% by double-counting conversions across campaigns and surfaces; true incremental revenue is often only 30–60% of the platform number. Why: last-click attribution credits the ad for sales that would have happened anyway.
  • The truth check is incrementality, not the dashboard. Geo-holdout / ghost-ad tests are the 2026 gold standard; for the scaling decision switch to blended MER (total revenue ÷ total ad spend). Why: it's the only number tied to your bank account.
text
Bad:  "We hit 4.2x ROAS — scale it!"        (platform, last-click)
Good: "Platform 4.2x, geo-holdout incremental 2.1x, break-even 2.5x.
       Incremental is BELOW break-even — we're losing money. Cut."

Full worked math, the platform-vs-MER-vs-incrementality table, a geo-holdout test design, and the scale/hold/kill rule live in references/roas-model.md.

Pick the surface

Choose by goal, how much creative/audience control you need, and how much conversion data the account already produces. Don't default to the most-automated option just because it exists.

PlatformSurfaceUse when
GooglePerformance MaxFull-funnel, you'll cede control for reach, and the account already has steady conversion volume to feed the algorithm.
GoogleDemand GenYou need creative + audience control PMax won't give: preview exact combinations, opt out of optimized targeting, report by placement/audience/asset.
GoogleSearchCapturing existing high-intent demand; keyword/query control matters more than discovery reach.
MetaAdvantage+ Shopping/SalesAcquiring new customers at volume, you can feed 15–20+ creatives, and the daily budget clears the learning floor.
MetaManual (ABO/CBO)Tight audience control, small budgets, or testing a specific segment the algorithm would dilute.

Structure

  • Consolidate to feed the learning phase. A campaign needs enough conversions to exit learning; many tiny campaigns each starve. Why: the algorithm can't optimize on noise.
  • Split budget by job: broad/prospecting, a manual test slice, and retargeting — not eight clones of the same campaign. Why: each slice answers a different question.
  • Cap existing customers on Advantage+ at 20–30%. Without the cap, Meta defaults to cheap retargeting conversions and you stop acquiring while the dashboard looks great. Why: easy reconversions inflate ROAS and hide that growth stalled.
  • Protect the learning phase: hold structure ≥4 weeks. Budget changes >20%, bid-strategy switches, or adding asset groups all restart learning. Why: every reset throws away the data you paid to collect.
text
Bad:  8 campaigns × $20/day, each restarted twice this week.
Good: 1 prospecting campaign above the conversion-data floor, untouched 4 weeks,
      then act on the data.

PMax allows max 25 asset groups per campaign — start with 1–2. Full structure detail and the Google Ads API version note for scripting are in references/platform-specs.md.

Show full SKILL.md (487 more words)Show less

Creative

Write the ad-surface copy only. It must obey the brand's voice (../brand-voice/SKILL.md) and click into a page you do not write (../landing-copy/SKILL.md).

Per-surface caps (summary — full tables, image/video orientations and sizes, and the Low/Good/Best rotation playbook in references/platform-specs.md):

SurfaceHeadlinesDescriptionsMedia
PMax (per asset group)15 × 30 char + 1 long × 90 char5 × 90 char20 images, 5 videos
Demand Gen5 × 40 char5 × 90 charper format
Search (RSA)15 × 30 char4 × 90 char—
Meta Advantage+feed 15–20+ creative variations—mixed orientations
  • Feed 15–20+ variations on Advantage+. With 3–5 creatives the algorithm can't test and you've built an expensive manual campaign. Why: automation needs raw material to compare.
  • Refresh on cadence to fight fatigue. Google rates each asset Low / Good / Best; replace Low assets after 4–6 weeks. Why: a dead creative drags the whole asset group's rating and delivery.
  • Never overflow a platform limit. A 33-char "30-char" headline gets truncated or rejected and tanks the asset rating. Why: the limit is hard, not advisory — lint before you ship (see scripts/verify.sh).

Budget & scaling

  • Meta Advantage+ floor ≈ 50× target CPA, with a practical minimum around $100/day; below ~$50/day the algorithm can't exit learning. Why: it needs ~50 conversions/week to optimize.
  • Scale ≤ 20% per week. Bigger jumps reset the learning phase and you start over at a worse CPA. Why: the algorithm re-explores after a large budget shock.
text
target CPA $40  →  Advantage+ floor ≈ 50 × $40 = $2,000/day
                   (or ramp in ≤20%/week steps to get there)

Measurement setup gate

Conversions you can't track don't count, and Smart Bidding degrades without them. Run this gate before judging any campaign:

  • Consent Mode v2 (Advanced) — mandatory for EEA/UK since 2024-03-06.
  • Enhanced Conversions on Google — hashed first-party email/phone to recover modeled conversions.
  • Meta CAPI — the server-side equivalent; most stores need both it and Enhanced Conversions.
  • Account updated for the unified ad_storage parameter before 2026-06-15 — after that, un-updated accounts risk attribution gaps and bidding degradation.

Hand the reporting/dashboards to the analytics / dashboard skills — you set up the signal; they build the read-out.

Anti-patterns

Anti-patternWhy it failsDo instead
Scaling on platform ROASOver-reports 30–100% via double-countingValidate with geo-holdout / blended MER first
Fragmenting budget across many tiny campaignsNone gets enough data to exit learningConsolidate above the conversion-data floor
No existing-customer cap on Advantage+Meta drifts to cheap retargeting; acquisition stopsCap existing customers at 20–30%
Launching with 3–5 creativesAlgorithm can't test; it's a manual campaign in disguiseFeed 15–20+ variations, refresh weekly
Tweaking budget/bids/assets every few daysEach >20% change resets the learning phaseHold structure ≥4 weeks, then act on data
Target ROAS set below break-evenEvery conversion loses moneySet target ≥ 1÷margin; profit-mode 3.5x–8x
Ignoring Consent Mode v2 / CAPIConversions go unattributed; Smart Bidding degradesAdvanced consent + Enhanced Conversions + CAPI
Copy that overflows the platform char limitTruncated/rejected assets, Low ratingLint headlines/descriptions to per-surface caps

Handoff

  • Real experiment design (sample size, significance) → the ab-testing skill.
  • Blended/next-quarter revenue projection → the forecasting skill.
  • Top-of-funnel B2B prospect lists (not paid media) → the lead-gen skill.

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

Files

SKILL.md and 5 other files (scripts, references) in skills/ads of ericrisco/rsc-harness.

  • SKILL.md
  • evals/README.md
  • evals/cases.yaml
  • references/platform-specs.md
  • references/roas-model.md
  • scripts/verify.sh

Open the folder on GitHubat commit 92fde8f

Compare with similar skills

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

Ads compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ads this skillericrisco/rsc-harness156—~2.2kAutomated safety check: PassMIT
Ad CreativeLeoYeAI/openclaw-marketing-skills1k8 repos~3.4kAutomated safety check: PassCustom licence
Blog GoogleAgriciDaniel/claude-blog2.3k1 repos~3.3kAutomated safety check: NotesMIT
Ad Account Auditoraaron-he-zhu/aaron-marketing-skills2.9k2 repos~2.2kAutomated safety check: PassApache-2.0
Ad Creative Builderaaron-he-zhu/aaron-marketing-skills2.9k2 repos~2.2kAutomated safety check: PassApache-2.0
Ad Test Designeraaron-he-zhu/aaron-marketing-skills2.9k2 repos~2.8kAutomated safety check: PassApache-2.0

Similar skills

  • Ad Creative

    LeoYeAI/openclaw-marketing-skills

    When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad variations — for any paid advertising platform.

    1k GitHub starsUsed in 8 repos~3.4k tokens
    Marketing & SEOAuto-check passed
  • 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
  • Ad Account Auditor

    aaron-he-zhu/aaron-marketing-skills

    A skill your agent uses when auditing a paid ad account for incremental contribution, wasted spend, or measurement integrity before scaling; runs a typed 20-item ROAS profile with verified vetoes…

    2.9k GitHub starsUsed in 2 repos~2.2k tokens
    Marketing & SEOAuto-check passed
  • Ad Creative Builder

    aaron-he-zhu/aaron-marketing-skills

    A skill your agent uses when the user asks to "write ad copy", "generate RSA headlines", or "build ad creative at volume"; produces ad units — RSA headlines/descriptions, hooks, and an angle matrix…

    2.9k GitHub starsUsed in 2 repos~2.2k tokens
    Marketing & SEOAuto-check passed
  • Ad Test Designer

    aaron-he-zhu/aaron-marketing-skills

    A skill your agent uses when the user asks to "design an A/B test", "set up a creative/landing test", "run an incrementality test", or "is this result statistically and practically material?"…

    2.9k GitHub starsUsed in 2 repos~2.8k tokens
    Marketing & SEOAuto-check passed
  • Paid Ads Audit

    AgriciDaniel/claude-ads

    Runs a source-grounded paid advertising audit across up to 12 ad platforms, with parallel platform workers, deterministic scoring and a versioned JSON bundle.

    9.8k GitHub stars~1.5k tokensUpdated 5 days ago
    Marketing & SEOAuto-check passed

More from ericrisco/rsc-harness

All 229 skills in this repo
  • Ab Testing

    ericrisco/rsc-harness

    A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…

    156 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Accessibility

    ericrisco/rsc-harness

    A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…

    156 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Agent Eval

    ericrisco/rsc-harness

    A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…

    156 GitHub stars~3.2k tokensUpdated yesterday
    Auto-check passed
  • AI Media

    ericrisco/rsc-harness

    A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…

    156 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Analytics

    ericrisco/rsc-harness

    A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.

    156 GitHub stars~2.8k tokensUpdated yesterday
    Auto-check passed
  • Angular

    ericrisco/rsc-harness

    A skill your agent uses when building, refactoring, or debugging Angular (v20/21+): standalone components, signals, zoneless change detection, @if/@for/@defer control flow, inject() DI…

    156 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Ads

What does Ads do?

A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…. Ads is an agent skill from ericrisco/rsc-harness. Use when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules, break-even ROAS math, and Consent Mode v2 / CAPI tracking gaps.

When should I use Ads?

Ads fits situations like: fixing paid acquisition on Google; meta — campaign structure (Performance Max; platform-fit creative; budget/scaling rules.

How do I install Ads in Claude Code?

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

How do I install Ads in Codex?

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

Can I use Ads 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 ericrisco/rsc-harness --skill ads -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ads, .gemini/skills/ads, .github/skills/ads and .opencode/skills/ads in your project.

What does Ads need to run?

Going by SKILL.md and its folder, Ads needs a shell for the scripts in its folder. Our summary lists: A Bash shell.

Does Ads 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 Ads 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Ads use?

Ads 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 Ads use?

About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.6k tokens, read only when the agent opens those files.

What are the alternatives to Ads?

Skills that share tags, products or a category with Ads: Ad Creative (LeoYeAI/openclaw-marketing-skills, 1k stars), Blog Google (AgriciDaniel/claude-blog, 2.3k stars), Ad Account Auditor (aaron-he-zhu/aaron-marketing-skills, 2.9k stars) and Ad Creative Builder (aaron-he-zhu/aaron-marketing-skills, 2.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ads?

ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.

Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.