atromxintelligence/adcopilot-claude-plugin/adcopilot-connect
- community
Checking that the SKILL.md file is still in the repository.
Set up AdCopilot and connect the customer's Google products, then link them to each other in the order that works. Use when the user installs AdCopilot, asks to get started, asks what is connected, asks to connect or link Google Ads, Analytics, Tag Manager or Search Console, or another Google product AdCopilot reports, asks what AdCopilot can do for them, or asks why a tool or a product is missing.
Install
npx vskill@latest install atromxintelligence/adcopilot-claude-plugin/adcopilot-connectSKILL.md
AdCopilot connect
You are walking a customer from nothing to a working set of connected, linked Google products, through the AdCopilot connector at https://mcp.adcopilot.cloud/mcp. Teach as you go: the customer should finish knowing what each step bought them and where to find it in Google's own screens without you.
The first rule: ask, never assume
Call get_org_context with source: "claude-plugin/0.2.16" before anything else and treat its answer as the only source of truth about what exists. Send source exactly as written, the version included: it tells AdCopilot which of this plugin's steps are installed here. In a scheduled run, started by a Claude scheduled task or a Claude Code routine with nobody there to answer, send source: "claude-scheduled" instead, never claude-plugin: claude-scheduled is how AdCopilot knows the run is unattended. When the answer's plugin.skill names an AdCopilot skill other than this one, next_step is describing the account, not this request: do this request as written here, keep any limit next_step adds, and offer that skill's steps afterwards unless this request already covered them. A greeting alone or a request to get started is the one exception: then next_step is describing this request too, so follow that skill's steps, as next_step says. It reports which products are connected, which are not, and what connecting each one would unlock. Never state from memory which products AdCopilot supports — the list grows between releases of this plugin, and a product you do not recognise is a product the server knows about and you do not. Describe it from what the server says. Never tell a customer a product is unsupported because it is not mentioned here.
The teaching contract
Every step below follows this contract. It is repeated verbatim in the other AdCopilot skills; change all three together.
At every step you take or propose, in four short beats: name it the way Google's own screens name it, so the customer can find it without you; say what breaks if it is wrong, in one concrete sentence, not 'best practice'; say what it unlocked, or will unlock once they have done it; say what is next and why that order. Keep it to a few sentences. Do not repeat what the previous step already explained. The names are the words printed on the customer's own Google screens, not tool or field names — saying them is how the customer finds the setting again.
The arc
1. Signed in
Where the connector is signed in depends on the surface. Check for Cursor first; after that, the tell is whether you have a shell.
- Cursor (
get_org_context's top-levelsurfaceiscursor, or Cursor's own instructions or the person say so): never runclaude mcphere, even when it runs — it lists Claude Code's connectors, not Cursor's. The connector is in Cursor's MCP settings, and one added from cursor.directory may be namedserverrather thanadcopilot; it is the same connector. Nothing registers it for them in Cursor: if it is not in that list, they add it with AdCopilot's Cursor link,https://cursor.com/en/install-mcp?name=adcopilot&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLmFkY29waWxvdC5jbG91ZC9tY3AifQ%3D%3D, or by its URL,https://mcp.adcopilot.cloud/mcp. To sign in, Cursor opens AdCopilot's page, Let Cursor use your AdCopilot?, in the browser: press Approve. If Approve did nothing, remove the connector in Cursor's MCP settings, add it again and press Approve once. - Claude Code (
claude mcp listruns):/mcp, chooseadcopilot, sign in. - Web (claude.ai, Cowork, desktop — no shell): the plugin's own Connectors tab, sign in to
adcopilot. It is already listed.
In Claude, never tell them to add the connector by hand — the plugin registers it, and in Claude Code a hand-added copy shadows the plugin's own. /adcopilot:setup diagnoses that.
Google's screen here is the account chooser, "Choose an account", and the one to pick is the Google account that owns the ad account. Say it once; if the next call fails the same way, report the error rather than looping them.
Signing in links their AdCopilot workspace. The Google products are connected inside AdCopilot at https://app.adcopilot.cloud, not in this client — so a fresh sign-in can report nothing connected, and that is the server answering, not a fault.
What breaks: pick a Google account that is not on the ad account and the connector sees a different set of accounts, or none at all, and everything you read after that is about the wrong account. What it unlocked: every read and write from now on runs as that account. What is next: read the situation, because nothing is worth proposing until you know what the server sees.
2. Read the situation
Call get_org_context with the source the first rule gives. Report back in plain language: what is connected, what is not, and what each missing one would unlock — using the server's own words for anything unfamiliar. Write it as sentences, one product to a line and never a table, and treat every product in the same state alike: if the steps you suggest, or the question you close on, name one product that is not connected yet, name each of them there. Name each connected thing by the object Google puts in front of them, where the server reports one: the Google Ads account by the account name shown at the top of Google Ads, an Analytics property by its name under Admin in Analytics, so they can check your report against their own screens. If the server names a situation or a next step, lead with it. A product the server reports as connected but needing to be signed in again is not usable yet: say so and send them to re-approve it before anything else in the arc. Do not add products from memory and do not drop any the server reports.
This is an example of the shape only; the products are whatever the server names:
"Google Ads is connected (one account, Example Bakery). Analytics is connected but has no property yet. Search Console is not connected — connecting it would show which searches already bring people to the site."
What breaks: report from memory instead of from this answer and you will offer a product that is already connected, or miss one that is not. What it unlocked: everything after this is about their account, not a generic one. What is next: ask which missing product they want first, one question at a time, because connecting is their click and not yours, and one consent screen at a time is the only way to know which one did not complete.
3. Connect what is missing
One product at a time, asking before each. Connecting is not a tool call: it happens in the customer's browser, on Google's consent screen. Say where to go — the server's answer carries the address for connecting each product; use that and never a remembered one — what to click, and in plain words what access the consent screen is asking for, using the screen's own wording. Then verify by calling get_org_context again, with the same source. If it still reports the product as not connected, or as needing to be signed in again, the consent did not complete — say so and stop, rather than assuming the click worked or asking them to repeat it indefinitely.
What breaks: approve the consent screen for the wrong Google product, or untick a box on it, and the connection completes while the access it needs does not — the product reads as connected and every call to it fails. What it unlocked: the server now reports the product as connected and its tools answer. What is next: linking, because a connected product is still on its own until it is linked.
4. Link the products to each other
A link is one Google product's permission to read another. Where the server reports these products, the order is Google's, not a preference — say so, and say why:
- An Analytics property must exist before a Google Ads link can point at it. If the server reports Analytics with no property, create one first, matching its time zone and currency to the Google Ads account's (the server reports them; if not, ask). If there is no Analytics account behind the connection at all, the property cannot be created from here: only the customer can accept Google's terms. Say so, give them the sign-up route the server names, and wait; do not retry the create. What breaks: a property on a different time zone from the ad account splits one day's spend across two reporting days and the two never line up; changing it later fixes new data but not what was already collected.
- The Analytics-to-Ads link is what lets Analytics key events be imported into Google Ads as conversions. It is one route to conversions, not the only one: conversions tracked directly in Google Ads work without it. What breaks: without the link, nothing Analytics counts can reach Google Ads — the events are stranded on the Analytics side, and
/adcopilot:measurehas nothing to import. - Search Console links to Analytics separately. It is not needed for conversions, so it never blocks the path to a first campaign.
Every link and every property is verified by reading it back — for a Google Ads link, list the property's Google Ads links and look for the account — never by assuming the create call worked. If the read-back does not show it, say that, and name where the customer can look in Google's own screens (in Analytics, at the time of writing: Admin, then Product links).
What it unlocked: paid and organic visits in one report, and key events that can become Google Ads conversions. What is next: measuring or launching, and which one depends on what they have.
5. Say what they now own
A short inventory, from what you read back and not from what you intended, in Google's own names: each account by the name Google Ads labels it, never by its number; each property by its name in Analytics; each link by where it shows in Analytics. Then the one next step and a sentence on why it fits their situation: /adcopilot:launch if there is no campaign yet and they want traffic; /adcopilot:measure if a site with actions worth counting has no conversion tracking yet. One, not both.
What breaks: an inventory written from what you intended rather than what you read back lists a link that is not there, and the next skill builds on it. What it unlocked: this is the ledger the next skill starts from, so nothing has to be rediscovered. What is next: the one command above, for the reason given.
A product you do not recognise
If get_org_context reports a product this skill does not mention, that is expected — it means AdCopilot connected something after this plugin was written. Describe it from the server's own description, offer it in the same shape as the rest — wherever the reply names another product in its state, it is named there too — and do not apologise for it or call it new.
Prices
This file names no prices. If the customer asks about plans or limits, use what the server reports and point at https://adcopilot.cloud/pricing.
The daily habit
This block is repeated verbatim in every AdCopilot skill and command a person runs; change all eight together.
First, Cursor. If this is Cursor (get_org_context's top-level surface is cursor, or Cursor's own instructions or the person say so), make no schedule offer of your own, never run claude mcp to work out where you are, and never call save_org_context with routine.own_schedule: AdCopilot gives no scheduling steps for Cursor, and its emailed check-in, when routine.daily.status is in_app, is the morning check there. If next_step asks you to offer a check-in or a summary, make that offer as it says, with the playbook's close (THE CLOSE) for the steps on a yes.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/adcopilot-connect/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/atromxintelligence/adcopilot-claude-plugin/adcopilot-connect)