
ad-account-diagnostic
Diagnose the root cause of an underperforming paid ad account - why the ads stopped working, why CPA went up, why ROAS dropped - instead of defaulting to 'increase the budget'. Weighs tracking, account structure, targeting, creative, bidding and budget, offer, and external forces, and returns a prioritised verdict with evidence and confidence. Covers B2B and B2C on search, paid social, video, and native. Use whenever the user mentions an ad account audit, a campaign structure review, wasted ad spend, rising cost per lead, or says their ads used to work - even if they never say 'diagnostic'. Diagnosis only, and it stops at the click: post-click page problems are mbfinotti/advertising-skills@paid-landing-page-audit and creative decay is mbfinotti/advertising-skills@ad-creative-fatigue.
- Installs
- 21.3K
- Last 24h
- +728
- Trending rank
- #483
- Security
- Pass
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/mbfinotti/advertising-skills --skill ad-account-diagnostic- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads ad-account-diagnostic automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
Security audits
Independent scans of the skill's instructions and bundled files.
SKILL.md
The instructions your agent reads when the skill is triggered.
Account Diagnostic
Find the root cause of an underperforming ad account before anyone touches it. The whole discipline is refusing the reflex fix: an account that "stopped working" has at least seven candidate failure layers, and the most common responses - raise the budget, swap the creative, blame the algorithm - each treat one unproven hypothesis as a verdict. This skill works the layers in a fixed order, measurement first, because every downstream number is read off the conversion signal: as Adspirer puts it, the checklist is "ordered the way an experienced PPC manager actually works it: measurement first (because every other number is wrong if tracking is broken)".
It decomposes the metric chain to localise the failing link before naming a cause, compares the account against its own history rather than industry benchmarks, and refuses to issue any verdict the data cannot support. The output is a diagnosis with confidence, evidence, and a prioritised handoff plan - never an executed change.
This skill stops at the account boundary; everything past the click hands off elsewhere, and this skill never becomes a budget skill - it exists precisely because "increase the budget" is the wrong default.
- Past the click (message match, page friction, the page fix list):
mbfinotti/advertising-skills@paid-landing-page-audit. This skill only flags "the evidence points downstream of the click" and hands off. - Fragmentation verdict (merge plan):
mbfinotti/advertising-skills@ad-campaign-consolidation. - Creative-layer verdict (decay analysis):
mbfinotti/advertising-skills@ad-creative-fatigue, which hands back here when the cause is not creative - the two are reciprocal. - Tracking verdict (fix checklist):
mbfinotti/advertising-skills@ad-conversion-tracking. - Cross-platform discrepancy quantification:
mbfinotti/advertising-skills@ad-attribution-gap. - Search-term mining:
mbfinotti/advertising-skills@ad-negative-keywords. - Targeting design:
mbfinotti/advertising-skills@ad-audience-targeting. - Budget and bidding decisions:
mbfinotti/advertising-skills@ad-budget-pacing,mbfinotti/advertising-skills@ad-spend-allocation,mbfinotti/advertising-skills@paid-media-scaling, andmbfinotti/advertising-skills@ad-bidding-strategy.
Interview
Ask before opening any data. One question per message; offer multiple-choice answers where possible; skip anything already supplied or visible in the data.
- Which platform(s) does the account run on? (search / paid social / video / native / several)
- B2B or B2C/ecommerce?
- Monthly spend, and roughly how many conversions per month on the event the account optimises to? (Decides whether the Evidence Gate can clear at all.)
- What window is under suspicion - when did performance degrade, and against which prior period is it being judged?
- What changed, and exactly when? (Budget, bids, creative, targeting, optimization event, landing page, site release, consent banner, price, promo calendar - dates matter more than the list.)
- What can you export, and at what granularity? (Per-campaign per-day is the working minimum; per-ad-set and per-ad breakdowns unlock the localisation step.)
- What is the target CPA/ROAS - and is it derived from unit economics or inherited from a dashboard?
- Is CRM or backend revenue data reachable for reconciliation? (Yes, directly / yes, via someone / no.)
- Which attribution window and counting settings does reporting use, and did they change in the window?
- Who will implement the fixes, and what is their effort ceiling - hours available, whose hands (developer, marketing ops, creative studio, page owner), and how reversible a change is allowed to be? (The handoff plan is addressed to them; see Prioritisation for how a ceiling reshapes the queue.)
- By what date does the recovery have to show up in reporting? (A hard deadline promotes fast-acting fixes - tracking repair, unblocking a genuinely budget-capped campaign - and demotes offline-outcome wiring and creative programmes, whose payoff lands a window or two later.)
- One-off recovery, or a compounding asset? (A compounding mandate promotes the offline-outcome feedback loop and structural consolidation above the quick wins; see Prioritisation.)
Workflow
-
Run the Interview; collect every answer before touching data.
-
Reconcile before interpreting. Compare platform-reported conversions against CRM/backend truth over a lag-mature window, against OnlyDeb's practitioner reference points:
- Gap above roughly 40%: something is broken - stop, record a tracking FAIL, and hand off.
- Gap within roughly 10%: proceed to the other layers.
These are attributed starting points, not laws - the account's own historical ratio, and whether that ratio is stable week to week, is the real criterion. If backend data is unreachable, every later finding carries at most medium confidence, and the verdict must say so.
-
Decompose the failing metric with references/metric-decomposition.md. Chain the funnel - impressions → clicks → conversions → revenue - and express the outcome as CPM × CTR × CVR × AOV (Pigeon Digital) to find which single link actually moved. Name no cause before the failing link is localised.
-
Break down and compare. Pull the failing metric by campaign, then ad set, then ad, and compare each against the account's own history - never industry benchmarks. AdStellar's rule for CPM generalises: elevated evenly across everything points external; concentrated in one branch points to a targeted internal cause. This step is what separates internal from external causes.
-
Walk the layers in fixed order (below) using references/layer-evidence.md. For each layer record one of four states -
pass(evidence rules it out),FAIL(evidence confirms it),unknown(evidence missing),not applicable- with its own severity and confidence. Never collapse to a binary:unknownis notpass, and treating an unchecked layer as clean is the most common way audits go wrong. -
Apply the Evidence Gate (below). If it fails, the verdict is
insufficient evidence: state exactly what additional days, spend, or access would clear it, and stop. No verdict on underpowered data. -
Issue the Root-Cause Verdict (block below; worked versions in references/examples.md). A compound verdict - two unrelated confirmed causes - is legitimate; rank them.
-
Rank the findings by efficiency (Prioritisation section) and write the handoff: which sibling skill or owner takes each finding, in rung order.
-
Log the prediction. Every verdict must state which metric should move, in which direction, by roughly how much, once the recommended fix ships - this is the raw material for the Measuring section.
-
Set a re-check date one full comparison window (at equal attribution-lag maturity) after the fix ships.
-
If your harness has persistent memory, memorise the account's baselines, the per-layer screen, the verdict, fixes applied, predictions, and re-check dates, so the next run starts from history instead of re-deriving it. If it does not, emit a short state block the user can paste into the next session.
If your harness can read the exports or run the calculations, compute every step directly; otherwise emit the exact export steps and spreadsheet formulas (columns, ratio, delta (current - baseline) / baseline) for the user to run and report back.
The Layer Order
Fixed order, because each layer's evidence is only readable if the layers before it hold:
- Tracking corrupts every number.
- Structure corrupts the data pooling and learning that targeting and creative reads depend on.
- Bidding reads assume the auction inputs above it are sane.
- Offer & downstream sits past the click.
- External causes are a diagnosis of exclusion, claimed only when internal evidence rules the others out - the uniformity test in step 4 can fast-path there, but never skip the tracking check to get to it.
Baker's 8-layer framework states the why: auditing creative on an account whose pixel feeds 56% wrong data "produces conclusions that look right but are mathematically meaningless" - and across B2B SaaS accounts spending $3K-$250K/month he reports 80% of underperformance tracing to pixel health and creative diversity, not bidding or budget. This is a sequence, not a menu: the layers are not alternatives to pick between, so they carry no efficiency ranking - every one gets screened, in this order. The ranking lives one step later, over the fixes the screen produces (see Prioritisation).
- Measurement / tracking - is the conversion signal real, deduplicated, and consented?
- Structure - fragmentation, overlapping campaigns self-competing, budget traps, wrong optimization event.
- Targeting - audience overlap, saturation, too narrow/broad, wrong intent.
- Creative - resonance decay; the differential itself runs in
mbfinotti/advertising-skills@ad-creative-fatigue. - Bidding / budget - strategy-volume mismatch, learning state, impression share lost to budget vs rank.
- Offer & downstream - price, promo, page, checkout; flag and hand to
mbfinotti/advertising-skills@paid-landing-page-audit. - External - auction inflation, seasonality, competitor entry; confirmed by uniform elevation plus market evidence.
Per-layer confirming evidence, ruling-out evidence, and the check that settles each: references/layer-evidence.md.
Evidence Gate
Refuse a verdict the data cannot carry. All four checks must pass before any layer FAIL becomes a verdict:
- Conversion volume. Enough conversions in both windows that the observed delta exceeds noise (band ≈
p ± 2 × sqrt(p × (1-p) / n)on the relevant rate). Attributed reference points, not laws: Google recommends evaluating automated bidding over periods with at least 30 conversions for Target CPA and 50 for Target ROAS (Google Ads Help), and OnlyDeb notes campaigns under roughly 15-30 conversions/month lack signal for the algorithm at all - low-volume accounts (most B2B) gate on leading metrics instead and say so in the confidence line. - Learning-phase state. No verdict from data collected while delivery is recalibrating. Reference points: Meta ad sets typically exit learning after roughly 50 optimization events in 7 days (Meta Business Help Center, as relayed by AdStellar), and Google Smart Bidding can take up to three weeks or 1-2 conversion cycles (Google Ads Help). Niblin: ROAS swinging 20-50% day-to-day is normal during learning - judge only after exit or 7+ days.
- Window comparability. Baseline and comparison windows must have equal duration, equal attribution-lag maturity (recent days always under-report; a trailing window always "looks like" decline), matched day-of-week composition, and no known outages. Jyll Saskin Gales audits all active campaigns together over a 90-day window because campaigns "interact with each other" - never judge one campaign in isolation over a cherry-picked week.
- Attribution consistency. Never sum or compare conversions across differing attribution windows, counting methods, or models - a 7-day-click figure plus a 30-day-click figure is not a total, it is a category error. Report side by side until definitions reconcile; a settings change mid-window invalidates the comparison entirely.
When the gate fails: verdict insufficient evidence, plus the arithmetic of what clears it - the additional days or spend needed for n to shrink the noise band below the observed delta at current traffic, or the specific access (CRM export, ad-level breakdown) that is missing.
Root-Cause Verdict
Deliver one block per diagnosis:
ROOT-CAUSE VERDICT - <account>, <date>
platform(s) : <...> | model: B2B | B2C
window : <comparison window> vs baseline <baseline window> (lag maturity matched: yes/no)
volume : <spend>, <conversions> conversions in window | reconciliation gap: <x% vs backend | unverified>
decomposition : <which link moved: CPM / CTR / CVR / AOV - direction and size vs own history>
localisation : <uniform across account | concentrated in: campaign/ad set/ad>
layer screen
measurement/tracking : pass | FAIL | unknown | n/a - <evidence> [severity, confidence]
structure : pass | FAIL | unknown | n/a - <evidence> [severity, confidence]
targeting : pass | FAIL | unknown | n/a - <evidence> [severity, confidence]
creative : pass | FAIL | unknown | n/a - <evidence> [severity, confidence]
bidding/budget : pass | FAIL | unknown | n/a - <evidence> [severity, confidence]
offer & downstream : pass | FAIL | unknown | n/a - <evidence> [severity, confidence]
external : pass | FAIL | unknown | n/a - <evidence> [severity, confidence]
confidence : high | medium | low - <basis: gate math, reconciliation state, unknowns count>
verdict : <root cause layer(s), or insufficient evidence - with the one-sentence causal story>
evidence : <the two or three observations that carry the verdict>
findings : <ranked by efficiency - each with severity, confidence, outcome bought, effort, owner>
prediction : <metric expected to move, direction, rough size, by when>
handoff : <sibling skill or owner per finding, in sequence>
re-check : <date - one full window after fix, lag-mature>
Prioritisation
Rank findings before handing off - a flat list of twenty observations is a pitch deck, not a diagnosis. Rank by efficiency: the outcome each fix buys per unit of effort it costs. Never by cheapest, and never by the layer screen's own row order - the screen is a diagnostic sequence, the ranking is a work queue.
Default fix-class order, highest value/effort ratio first:
- Tracking repair - buys back the readability of every other number in the account and puts delivery on a real signal again; costs an hour to half a day of one developer, most of it end-to-end testing. Always ships first: every later fix is measured through it.
- Optimization-event / offline-outcome fix - buys a platform that chases qualified outcomes instead of cheap volume (Koda: the offline feedback loop "consistently improves lead quality more than any targeting adjustment"); costs a couple of days of marketing-ops and CRM wiring, most of it field mapping and testing, then keeps paying without further work.
- Structural consolidation - buys starved units the conversion volume they need to exit learning; costs a couple of days of rebuild plus one learning window of volatility, and un-merging later is expensive.
- Targeting redesign - buys reach on audiences that are not yet saturated; costs about a day, and reverses cleanly.
- Offer & downstream fixes - the outcome can beat everything above it, but the work sits outside the account: costs coordination with whoever owns the page, the price or the checkout, so their calendar sets the pace instead of the auditor's.
- Creative replacement - buys the click back where decay is confirmed; costs a production cycle and never ends - a standing job, not a fix.
- Budget and bid moves - buy nothing until every rung above passes, and each significant edit spends a learning window (see "Why 'Increase the Budget' Is the Wrong Default").
The axes disagree, which is exactly why the reflex fix keeps winning arguments:
- efficiency: tracking > event fix > consolidation > targeting > offer & downstream > creative > budget moves
- value: offer & downstream == tracking > event fix > consolidation > creative > targeting > budget moves
- effort: offer & downstream > creative > event fix == consolidation > targeting > tracking > budget moves
- compliance cost: event fix > tracking > every other rung (none) - pushing CRM outcomes into an ad platform triggers a data-processing and consent-basis review and cannot be un-sent; re-firing a conversion event touches the consent banner and the platform's data-use terms.
Budget moves sit last on effort and last on efficiency at once: near-zero effort buying near-zero outcome is not a cheap win, it is a rounding error with a learning reset attached.
What this order starves: offer & downstream. It ties tracking for the highest value on the page and carries the highest effort, so the ratio pushes it to rung 5 - and the default-rung rule then reaches it only after four other rungs pass or ship. An account can run this diagnostic for a year and never once touch the price, the offer or the page. Promote it to the top on either condition: the decomposition localises the failure past the click (CVR collapsed while CPM, CTR and impression share held), or the page, price and checkout owners sit on the user's own team - its effort was coordination cost, not work, and in-house ownership deletes that cost.
Default rung: start at the highest rung whose layer the screen marked FAIL, and never below rung 1 while tracking is FAIL or unknown. Move one rung down only once the rung above is pass or already shipped.
The ordering is a default, not a law - it shifts with the account and with who executes it. Re-rank it against what you already know here:
- An in-house developer makes rung 1 a same-day job.
- A creative studio already on retainer promotes rung 6 above its default place.
- A business that tolerates no learning-window volatility demotes rungs 3 and 7.
The Interview's deadline, one-off-versus-compounding and effort-ceiling answers move rungs the same way.
A constraint the user actually stated does something different from re-ranking: it removes the rung. Delete a ruled-out fix class from the ranked findings rather than parking it at the bottom, and name it as deleted in the handoff with the constraint that killed it and what would revive it - "offline-outcome loop: deleted, no CRM access anywhere in scope; revive when an export exists".
A fix left sitting last on a list nobody will reach is indistinguishable from one nobody has considered, and it comes back next quarter as a fresh idea. One exception: the fix the verdict names as the root cause is never deleted. It escalates to whoever can lift the constraint - a tracking FAIL under an effort ceiling with no developer time is an escalation, not a demotion and not a deletion.
Tag every finding with:
- Severity: what it costs if unfixed.
- Confidence: how sure the evidence is, kept separate from severity.
- Outcome bought: the fix's recoverable value (Conner Crowe's discipline of attaching one to each fix); mark "unquantified" when the data cannot say.
- Effort, as an order of magnitude: near-zero, an hour, a week, a quarter, a standing job.
- Owner: from the Interview's implementer answer.
Score with ICE (Impact, Confidence, Ease) by default. Reach for RICE (Reach × Impact × Confidence / Effort - Sean McBride at Intercom) only when the ranking must survive someone who did not run the diagnostic: efficiency: ICE > RICE, value: RICE > ICE only when the plan has to be defended, since ICE costs minutes and reproduces most of RICE's ordering while RICE costs an extra reach estimate and buys defensibility, not accuracy. Hand the plan off in rung order, each finding with its owner attached.
Why "Increase the Budget" Is the Wrong Default
The most common prescription, and the one this skill exists to refuse. Four mechanisms, each sourced:
- Learning resets. Budget increases beyond roughly 20% in one edit are widely treated as significant edits that restart the learning phase on Meta (practitioner interpretation relayed by Modern Marketing Institute and Grow With Sakib); Grow With Sakib estimates each reset costs 5-15% ROAS the following week, with CPAs running 20-50% higher during learning. More money into a broken account buys a worse version of the same problem.
- Budget vs rank. Lost impression share splits into lost-to-budget and lost-to-rank (Adalysis; Workshop Digital) - and "simply increasing your budget won't guarantee a 100% search impression share if your ad rank is insufficient" (Workshop Digital). Diagnose the split first; if the loss is to rank, budget does nothing.
- Diminishing returns. Trustworthy Digital observes diminishing returns above roughly 60-80% impression share, where the next increment costs more than the qualified revenue it returns. Near the top of impression share, more budget buys the worst impressions in the auction.
- Correlation is not incrementality. Platform-reported conversions are claimed, not caused: "Platform ROAS, Google Analytics, and last-click all report claimed revenue. None of them show that a single dollar was incremental" (Stella). Lifesight reports a grocery chain's geo holdout on non-brand paid search finding a 0% sales lift. Scaling a channel because its dashboard looks good scales the claim, not the revenue. Ben Heath says it plainly: "Big budgets don't guarantee results. Great creative and a strong offer are a much better place to focus."
A budget recommendation is only ever this skill's output as a handoff - to mbfinotti/advertising-skills@ad-spend-allocation or mbfinotti/advertising-skills@paid-media-scaling - after the diagnosis shows delivery is genuinely budget-capped and everything upstream passes.
B2B vs B2C
The method is identical in both: same layer order, same decomposition, same gate, same verdict shape. What diverges is the data regime and which numbers tell the truth.
| Dimension | B2B | B2C/ecommerce |
|---|---|---|
| Evaluation window | Conversion volume is low and the sales cycle long (GrowthSpree cites an 84+ day average, with SQL/pipeline outcomes landing 30-90 days after the tracked conversion); evaluation windows stretch to 4-6 weeks minimum before data is reliable (Koda), and the Evidence Gate leans on leading metrics. | Volume supports the full statistical gate and daily reads. |
| Dominant root cause | Optimising to the wrong conversion event: cheap form fills the platform can find in volume, while "leads look great in dashboard, sales say trash" (Happy Cog). | Platform ROAS is "systemically inflated post-iOS14" (Eightx). |
| Fix class | The offline feedback loop: feeding CRM outcomes (MQL/SQL/closed-won) back to the platform, which Koda reports "consistently improves lead quality more than any targeting adjustment". | Read blended measures instead of raw platform ROAS: MER (total revenue / total marketing spend; Superscale) judged against a margin-derived break-even (roughly 1 / contribution-margin %, per Meerkats). |
| Truth-telling KPI | Cost per SQL and cost per closed-won - "the only KPI that tells the truth in B2B" (Swydo) - never CPL. | Contribution margin by product, since blended ROAS "hides the products destroying your margins" (Jordan Glickman). |
| Source of truth | CRM. | The order table. |
In both models, the reconciliation step in the Workflow is the same act, only the source of truth differs.
Auditor Failure Modes and Biases
The account is not the only thing under diagnosis - so is the auditor. Screen the auditor's own read against this table before issuing a verdict.
| Trap | Why it burns | Fix |
|---|---|---|
| Anchoring on the previous owner's narrative | The first story heard becomes the hypothesis everything gets fitted to (inStreamly) | Ignore the inherited narrative until the data independently reproduces it |
| Recency bias | Overweighting the last few days; daily noise mimics collapse | Zoom out to weekly/monthly views before reading any intraday move (Go4Trades; Niblin) |
| Confirmation bias | Data gets interpreted to support the strategy already in place (inStreamly) | Write the disconfirming evidence for the leading hypothesis before concluding |
| Goodhart / metric fixation | Optimising the score, not the objective - Google's Optimization Score reaches 100% just by dismissing recommendations (Store Growers) | Treat platform scores as means, never as the health verdict (Goodhart, 1984) |
| Over-trusting platform-reported numbers | "Meta claimed one number, Google claimed another, and the actual backend revenue was a third number entirely" (HYROS); every self-attributing platform reports as if it were the only channel (Enalitica) | Reconcile against backend truth first; never sum platform claims |
| The pitch-audit incentive | A free audit sold before a proposal is structurally biased toward "everything is wrong" (Conner Crowe) | Findings need evidence and an outcome-per-effort estimate each, not a count of red flags |
| Fixing the layer where the symptom appears | The visible metric is downstream of the cause; a CVR drop is rarely a CVR problem | Trace backward through the chain; fix at the source layer |
| One hypothesis, tested by fixing it | Stacked unverified fixes destroy the baseline and the attribution of recovery | One falsifiable hypothesis at a time; predict the metric move before shipping the fix |
| Benchmark shopping | Industry averages have different mix, geography, and definitions | The account's own history is the baseline; benchmarks are directional context only |
| Best-practice cargo-culting | Checklists applied without account context - there are "many different ways to structure a successful account" (Foxwell) | Every finding must cite this account's evidence, not a generic rule |
Measuring Whether This Worked
This skill's KPI is diagnostic accuracy, tracked on a rolling log of every verdict and its step-9 prediction:
- Prediction hit rate: share of verdicts where the predicted metric moved in the predicted direction (at meaningful size, judged at the lag-mature re-check) after the recommended fix - and only that fix - shipped.
- Overturn rate: share of verdicts later overturned - a second diagnosis, an incrementality test, or the fix's failure showing the named root cause was wrong.
Starting floor - this skill's own working target, not a researched constant: iterate on the method until at least 70% of high-confidence verdicts hit their prediction and fewer than 15% of all verdicts are overturned, then tighten from the account's own log.
- A low hit rate with a clean gate usually means the layer evidence is being read too loosely.
- A high overturn rate concentrated in one layer means that layer's ruling-out checks are too weak.
Verdicts issued despite an unverified reconciliation line should be tracked separately - if they overturn more often, that is the argument for insisting on backend access next time.
Reference
- Read references/layer-evidence.md when walking the layer screen - per layer: confirming evidence, ruling-out evidence, and the check that settles it.
- Read references/metric-decomposition.md when localising the failing link - the CPM × CTR × CVR × AOV identity, the funnel chain, what each metric direction means, lost impression share, frequency, and learning-phase mechanics.
- Read references/examples.md when writing the verdict block - a B2C case where the cause is tracking, a B2B case where the cause is the wrong conversion event, and a convincing false positive the Evidence Gate catches, plus the wrong move alongside the right one.
FAQ
What does the ad-account-diagnostic skill do?
Diagnose the root cause of an underperforming paid ad account - why the ads stopped working, why CPA went up, why ROAS dropped - instead of defaulting to 'increase the budget'. Weighs tracking, account structure, targeting, creative, bidding and budget, offer, and external forces, and returns a prioritised verdict with evidence and confidence. Covers B2B and B2C on search, paid social, video, and native. Use whenever the user mentions an ad account audit, a campaign structure review, wasted ad spend, rising cost per lead, or says their ads used to work - even if they never say 'diagnostic'. Diagnosis only, and it stops at the click: post-click page problems are mbfinotti/advertising-skills@paid-landing-page-audit and creative decay is mbfinotti/advertising-skills@ad-creative-fatigue.
How do I install ad-account-diagnostic?
Run npx skills add https://github.com/mbfinotti/advertising-skills --skill ad-account-diagnostic in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/ad-account-diagnostic/ (personal) or .claude/skills/ad-account-diagnostic/ (project).
Which AI agents can use ad-account-diagnostic?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is ad-account-diagnostic safe to install?
Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk passed. As with any skill, read the SKILL.md and bundled scripts before installing.
Who maintains ad-account-diagnostic?
It is published by mbfinotti in mbfinotti/advertising-skills. It has 21,289 recorded installs.
More from mbfinotti/advertising-skills
ad-creative-brief
mbfinotti/advertising-skills
Turn a campaign goal and an audience insight into a structured creative brief a designer, video editor, or UGC creator can execute - messaging angle, hook directions, art direction, specs, testing intent, and the handoff and revision loop. Covers B2B and B2C, with variants for static image, short-form video/UGC, and search/responsive text ads. Use whenever the user needs to brief a designer or creator, asks what an ad should say, or mentions messaging pillars, creative direction, or a design handoff - even if they never say 'brief'. Writes direction, never the finished asset: the ad copy itself is mbfinotti/advertising-skills@ad-copy-variants and shot-by-shot creator scripts are mbfinotti/advertising-skills@ugc-ad-scripts.
ad-creative-test-plan
mbfinotti/advertising-skills
Design a pre-launch ad creative test plan - falsifiable hypothesis, isolation level, test cells with per-cell budgets, required sample, spend and duration, and kill/scale rules pre-registered before any money moves. Every cell carries an explicit read standard, so an underpowered screen is never dressed up as an A/B test. Use whenever the user wants to test ads, mentions an A/B or split test on creative, asks how much budget or how long a test needs, or mentions sample size, statistical significance, single-variable vs big-swing testing, or test cell structure - even if they never say 'test plan'. Covers B2B and B2C. Do NOT use to read results from a test already running - use mbfinotti/advertising-skills@ad-creative-fatigue instead.
ad-conversion-tracking
mbfinotti/advertising-skills
Verify that conversion events are correctly configured, firing once, and deduplicated before a paid campaign launches, then turn the evidence into a GO / NO-GO decision. Covers tag debugging, test conversion tracing, browser/server event deduplication (including Conversions API setups), value and currency checks, conversion action status, consent handling, and test-data exclusion. Use whenever the user asks if their tracking works, mentions a pixel or tag check, conversions not showing up, duplicate conversions, or a pre-launch checklist - even if they never say 'conversion tracking'. Covers B2B lead gen and B2C ecommerce on any ad platform. Do NOT use to reconcile platform vs CRM numbers after launch - use mbfinotti/advertising-skills@ad-attribution-gap instead.
ad-swipe-file
mbfinotti/advertising-skills
Build and maintain a competitor swipe file - competitors' currently-running ads collected into a categorised, queryable library classified by format, hook type, offer/angle, awareness stage, and funnel stage, then converted into ranked creative test hypotheses. Accepts pasted ad text, described ads, screenshots, export files, or public ad transparency libraries. Use whenever the user asks what ads competitors are running, wants a competitor ad teardown, creative inspiration, or to know what is working in their category - even if they never say 'swipe file'. Covers B2B and B2C on any paid channel. Stops at ranked hypotheses: briefing is mbfinotti/advertising-skills@ad-creative-brief and test design is mbfinotti/advertising-skills@ad-creative-test-plan.
ad-audience-targeting
mbfinotti/advertising-skills
Turn a business's ICP and buying signals into a layered ad audience targeting plan - cold/broad prospecting, interest and in-market behavioural segments, lookalike/similar, first-party lists, and retargeting pools - each sized against platform audience floors, budgeted to the learning threshold, and kept from overlapping by exclusion rules. Use whenever the user mentions ad targeting, who to target with ads, audience tiers or layers, broad vs. layered targeting, audience overlap between campaigns, or mapping an ICP onto ad audiences - even if they never say 'audience'. Covers B2B and B2C. Do NOT use to pick the seed customers behind a lookalike (mbfinotti/advertising-skills@lookalike-audience-seeds) or to sequence retargeting messages (mbfinotti/advertising-skills@retargeting-funnel).
ad-spend-allocation
mbfinotti/advertising-skills
Split a fixed total paid-media budget across campaigns, platforms, funnel stages, and audiences based on expected marginal return - the monthly or quarterly reallocation decision, for B2B and B2C. Use whenever the user asks how to split an ad budget, which channel or campaign should get more money, how to reallocate spend, how much to put behind prospecting vs retargeting, or mentions a portfolio split, marginal return, or diminishing returns - even if they never say 'allocation'. Do NOT use to raise the total budget on a proven campaign (mbfinotti/advertising-skills@paid-media-scaling), to track daily spend against a set budget (mbfinotti/advertising-skills@ad-budget-pacing), or to pick channels at setup (mbfinotti/advertising-skills@ad-platform-selection).
Popular marketing & seo skills
reddit-automation
flowkit-labs/skills
Find Reddit threads where people are genuinely asking for what you offer, then draft short, genuinely helpful replies — disclosing your affiliation honestly and naming your product only when it truly answers the question. Two moves: discovery — scan the right subreddits for real needs (recommendation asks, expressed pain, competitor mentions) and rank the few threads where you can actually help; drafting — write from real experience, respect each community's self-promo rules, and keep a human in the loop to review and post. This markets on Reddit the honest way: contribute value, disclose who you are, never astroturf. Distilled from the playbook behind doany.ai's Reddit agent. Triggers on "find reddit opportunities", "reddit marketing", "reddit automation", "reply on reddit for my product", "reddit community engagement", "reddit lead gen", or any ask to turn Reddit threads into genuine, disclosed marketing replies.
twitter-automation
101-skills/superpowers
Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet
twitter-automation
magentosh/superpowers
Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet
twitter-automation
qu-skills/superpowers
Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet
product-launch-video
heygen-com/hyperframes
Turn a product or marketing URL, pasted script, or brief into a product launch / promo video — SaaS promos, feature reveals, product demos, app and company launches. Use when the user wants to market, launch, promote, or reveal a product; the default for any commercial URL. Site tours / showcases of a website route here too — the brief carries the show-it-as-is intent. Unclear → /hyperframes.
twitter-automation
skills-shell/superpowers
Automate Twitter/X with posting, engagement, and user management via inference.sh CLI. Apps: x/post-tweet, x/post-create (with media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Capabilities: post tweets, schedule content, like posts, retweet, send DMs, follow users, get profiles. Use for: social media automation, content scheduling, engagement bots, audience growth, X API. Triggers: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x automation, tweet scheduler, twitter integration, post tweet, twitter post, x post, send tweet