property-setup
Skill0 starsChanged 21 days agoMITView on GitHub
Onboard a new client site into GSC Wizard and get it ready for the other skills; checks the account and plan with get_account_info, inventories list_sites, registers Search Console properties with add_site or creates folder-level ones with create_gsc_property, shows them on the dashboard, sets tags, branded keywords, sitemap URLs and crawl rate with update_site, manages filter presets, unregisters a property on request, and hands back a setup checklist and the first skills to run. Use when the user says "add my site", "onboard a new client", "set up this property", "register example.com", "create a property for /blog/", "set branded keywords", "save a filter preset" or "remove this property".
In this repository33 other files it gives its agents.
- ai-assistant-trafficSkill
- anomaly-checkSkill
- bing-crawl-healthSkill
- bing-performanceSkill
- branded-splitSkill
- cannibalizationSkill
- client-reportSkill
- content-decaySkill
- content-groupsSkill
- core-web-vitalsSkill
- country-deviceSkill
- ctr-optimizationSkill
- experiment-resultsSkill
- ga4-overviewSkill
- indexing-healthSkill
- indexing-trackerSkill
- indexnow-submitSkill
- long-tail-analysisSkill
- merchant-center-healthSkill
- onpage-auditSkill
- page-deep-diveSkill
- portfolio-overviewSkill
- query-deep-diveSkill
- quick-winsSkill
- ranking-changesSkill
- shopping-performanceSkill
- site-auditSkill
- sitemap-auditSkill
- site-migrationSkill
- traffic-dropSkill
- traffic-forecastSkill
- weekly-reportSkill
- yandex-performanceSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 0 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Check the account first: Call get_account_info (no arguments) and read:
- Very specific: line 17
Inventory what is registered: Call list_sites (no arguments) and show a compact table of siteUrl, tags, permissionLevel, readable, …
- Very specific: line 26
If the user's property is already listed, skip to step 5 or 6.
- Very specific: line 39
Read created, failed, registered and results[] (url, created, registered, error).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Property Setup
Take a property from "not in GSC Wizard" (or half configured) to ready for the analysis skills, and hand back a checklist of what was done and what still needs the user. The user's request may contain the property (a GSC site URL or a recognizable site name), a client name to use as a tag, brand terms, sitemap URLs, folder paths to create as separate properties, filter presets to save, or a request to remove a property; honor what is given and ask for the rest only when a step needs it.
Workflow
- Check the account first. Call
get_account_info(no arguments) and read:googleAccounts(email,scopes,isPrimary): an empty list withemptyBecausemeans no Google account is connected, so send the user to tool.gscwizard.com/account unless they only use properties shared with them.subscription(plan,status,currentPeriodEnd,cancelAtPeriodEnd) andaccess.level:paidmeans the property tools will run. Apayment_requiredrefusal on this first call means there is no running trial or active paid plan (the free tier serves only the GSC Wizard mobile app, so from an MCP client every tool refuses): tell the user to start or renew a plan at tool.gscwizard.com/settings/subscription, mark every step as blocked, and stop.unknown, or awarningsaying a read failed, means retry before acting on those fields.apiKey.scope:readmeans every write below needs write access, so report those steps as "needs write access" instead of attempting them.
Inventory what is registered. Call
list_sites(no arguments) and show a compact table ofsiteUrl,tags,permissionLevel,readable,activated,gscScopeand, on shared rows,sharedByandaccessLevel. Read the flags like this:Flag Meaning What to do readable: falseListed in Search Console but not verified ( permissionLevelissiteUnverifiedUser); Google refuses every data requestThe user verifies it at search.google.com/search-console; no tool here can fix it activated: falseRegistered but hidden from the dashboard and not synced; every other property-scoped tool refuses it Show it in step 5 gscScope: "readonly"The Google connection behind it has read-only Search Console access; Google refuses submit_sitemapandcreate_gsc_propertyThe user reconnects that Google account with full access in the app sharedBypresentSomeone else's property; accessLevelREAD_ONLYrefuses every write in this skill,FULLallowsupdate_siteand presetsOnly the owner can delete it or create properties under it If the user's property is already listed, skip to step 5 or 6. An empty list carries
emptyBecauseandnextStep; relay them.Register a property that already exists in Search Console. If the user's request or the conversation names a property, use it. Site URLs use GSC formats:
sc-domain:example.comorhttps://www.example.com/. If several plausible properties exist, ask the user which one before continuing. List the exact URL and tags, confirm, then calladd_sitewith:siteUrl: must already be in Search Console and verified for a connected Google account; the scheme and host match case-insensitively and a missing trailing slash is added, but nothing is provisioned.tags(optional, up to 20 strings), for example the client name.
Read
alreadyRegistered(trueis not an error; readmessageandaccountRepaired) andsite.activated, which says whether step 5 is still needed. A not-found error names the closest verified URLs in the user's Search Console (often the domain form of a URL-prefix property, or the reverse): retry with that exact URL rather than guessing. A "not verified" error carries the verification instructions; relay them and mark the property as blocked.Create folder-level properties that do not exist yet. For separate section properties (a blog, a docs folder, a language folder), list the exact URLs, say that this creates properties in Search Console itself, confirm, then call
create_gsc_propertywith:parentSiteUrl: a property the user owns, already registered, whose Google account owns the domain (gscScope: "full"is needed, and a shared parent is refused).propertyUrls: 1 to 50 absolute URL-prefix URLs, each on the parent's domain or a subdomain of it.register: defaults to true.
Read
created,failed,registeredandresults[](url,created,registered,error). Created properties are registered hidden and consume no plan slot until step 5 shows them.- Show the property on the dashboard. Say that showing a property consumes one dashboard slot of the plan, confirm, then call
set_dashboard_visibilitywithsiteUrls(1 to 100 registered URLs) andvisible: true. Readupdated,unchanged,notRegisteredandslots(used,limit,plan). A refusal that starts "Dashboard property limit reached" names the plan, the slots in use and the limit: report those numbers and offer to hide another property first (visible: falsedeletes nothing and can be undone at any time) or to upgrade. Properties synced to full storage are always shown and consume no slot. From here on the other tools accept the property. Set the property's metadata. List the exact field values, confirm, then call
update_sitewithsiteUrland only the fields to change:tags: up to 20.brandedKeywords: up to 500; a plain word matches anywhere in a query,/pattern/is a regular expression, and a keyword that cannot compile is refused with nothing saved. This is the one setting the other skills depend on: the branded reports and thebrandscope on summaries do nothing without it, so ask for every spelling of the brand, its abbreviations and product names.sitemapUrls: up to 50 absolute URLs that GSC Wizard stores for the property; this submits nothing to Google. Calllist_sitemapswithsiteUrlfirst and readsitemaps[](path,lastDownloaded,warnings,errors; ignorecontents[].indexed, which Google has deprecated), then pass the real paths. If Search Console lists no sitemap (emptyBecause), say thatsubmit_sitemap(up to 20 published sitemap URLs, needsgscScope: "full") registers one with Google and that the sitemap-audit skill covers it.crawlMaxConcurrency(1 to 10) andcrawlMinDelayMs(0 to 60000): how fast the on-page audit, link crawler and feed audit may fetch the site. Lower them if the site answers 429;nullreturns either to the app default.
The response
siteechoestags,brandedKeywords,sitemapUrlsandcrawlRateEffective.Saved filter presets. Call
list_saved_filterswithsiteUrl:filters[]rows carryid,name,filters(the rows),filterLogicandcreatedAt, newest first. To add one, list the exact preset, confirm, then callcreate_saved_filterwithsiteUrl,name(up to 200 characters),filtersandfilterLogic(and, the default, oror). Each filter row is:Field Allowed values dimensionquery,page,country,device,brandedoperatorcontains,equals,not_contains,not_equals,regexvaluenon-empty; MOBILE,DESKTOPorTABLETfor device; ISO-3166-1 alpha-3 codes such asNLD,BELfor country; exactlybrandedornon_brandedfor brandedUseful starter presets for a new client: a non-branded view (
brandedequalsnon_branded, which needs the branded keywords of step 6), the main market (countryequals its code) and the key section (pagecontains/blog/). Saving a preset applies nothing by itself; it appears in the property's presets for the user to pick.update_saved_filtertakesfilterIdplusnameand/orfilters; the rows are replaced wholesale, so read the current rows first and passfilterLogicwith them or the preset resets toand.delete_saved_filtertakesfilterId. Confirm each write first.- Remove a property (only when asked).
delete_sitetakessiteUrlandconfirm: true. Before calling it, restate that this unregisters the property from GSC Wizard only (Search Console is untouched) and irreversibly deletes its topic clusters, content groups, saved filters, inspections and annotations, that only the owner can do it, and ask for an explicit yes. If the user only wants it off the dashboard, useset_dashboard_visibilitywithvisible: falseinstead, which deletes nothing. - Readiness checks. Three quick reads close the setup:
get_site_summarywithsiteUrlanddays: 28: non-zerocurrent.clicksorcurrent.impressionsoverrange.startDatetorange.endDateproves the property reads. GSC data lags about 2 to 3 days, so the window ends at the latest settled date.get_indexing_trackerwithsiteUrl:tracker: nullmeans no tracker is configured; the indexing-tracker skill sets one up.get_indexnow_settingswithsiteUrl:indexnowApiKeySet: falsemeans no key yet;keyFileVerifiedfalsemeans the key file is missing or wrong (keyFileUrlnames the file to publish) andnullmeans the probe was inconclusive; the indexnow-submit skill configures and uses it.
Output
Present a setup checklist as a compact markdown table:
| Item | Status | Detail |
Status is one of done, already set, blocked or skipped, with one row each for: account and plan, Google connection and gscScope, property registered, verified in Search Console, shown on the dashboard (slots used of limit, from set_dashboard_visibility), tags, branded keywords (how many), sitemap URLs, crawl rate, filter presets (names), indexing tracker, IndexNow, and first data read (clicks and impressions from get_site_summary with its dates). Below it, list what remains for the user to do outside the tools (verify the property, reconnect Google with full access, upgrade the plan, publish the IndexNow key file, give the connection write access).
Then name the first skills to run on the new property, in order: site-audit for the baseline, then quick-wins, content-decay and cannibalization as the audit points to them, with indexing-health if the data read or the sitemap list looked thin. End with a short list of next steps, each naming the tool or skill that performs it. Do not fabricate rows the tools did not return; if a read came back empty, say so.
Error handling
If any tool call fails with an authentication or subscription error, tell the user to run /mcp to (re)authenticate, and that a GSC Wizard account with an active plan or trial plus a connected Google Search Console account is required. If the property is not found, re-run list_sites and offer the closest matches instead of guessing a URL format. If a single tool fails for another reason, report the gap in the relevant section and complete the rest of the workflow with the remaining data. If a write is refused because the connection is read-only, say that this step needs write access and continue with the read-only parts.
Grounding
Every number you report must name the tool it came from and the date range it covers, for example "clicks 12,340 (get_site_summary, 2026-09-21 to 2026-09-27)". For a table, state the tool and date range once on the line above it. If you derive a figure yourself (a delta, a sum, a share), say so and name the tool outputs it was computed from. Never report a number no tool returned.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

