core-web-vitals
Skill0 starsChanged 21 days agoMITView on GitHub
Review page experience for a Search Console property from Chrome UX Report field data with the GSC Wizard MCP tools: Core Web Vitals (LCP, INP, CLS) plus FCP and TTFB with ratings, good-share trends and week-over-week regressions via get_core_web_vitals, split by device and by page, tied to the pages that carry the clicks with query_top_pages and to GA4 engagement with get_blended_landing_pages when linked, ending with a vitals table, the pages or templates to fix first, and metric-specific recommendations. Use when the user asks "how are my Core Web Vitals", "is my site slow", "page speed", "LCP", "INP", "CLS", "page experience", or whether a speed fix worked.
33 other projects use a version of this.
Adopted by
Most recently taken up by
- 6t9xstar/one-step-seotheir own version, first seen Nov 8, 2026
- theopenco/llmgatewaytheir own version, first seen Nov 6, 2026
- advisorppc-org/advisorseo-claude-plugintheir own version, first seen Nov 1, 2026
- xuweizhengo/skills-hubtheir own version, first seen Nov 1, 2026
- joaoguirunas/team-ostheir own version, first seen Nov 1, 2026
- carlosuhart/seo-audit-skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use javascript-seo, web-quality-audit and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
MYehia565Skilljavascript-seo
Diagnoses JS rendering, lazy-loading, and indexing gaps for client-rendered pages. Use when content appears in the browser but not in fetched HTML or Search.
Also in 4 projects that use this
RodrigoTomeESSkillweb-quality-audit
Comprehensive web quality audit covering performance, accessibility, SEO, and best practices. Use when asked to "audit my site", "review web quality", "run lighthouse audit", "check page quality", or "optimize my website".
Also in 12 projects that use this
MYehia565Skillecommerce-seo
Applies Google ecommerce SEO guidance: IA/URLs, product data, and shopping-related structured data. Use when building or fixing product/category/store search presence.
Also in 3 projects that use this
huiferSkillstructured-data
生成和验证 JSON-LD 结构化数据,支持 Article、BlogPosting、Organization、WebPage、Product、LocalBusiness 等 Schema.org 类型。自动检测页面类型,验证语法,检查必需字段,提供 Google Rich Results 测试工具链接和 Next.js 组件代码示例。
Also in 3 projects that use this
kpbraySkillbest-practices
Applies Power BI best practices, BPA rules, and enterprise standards. Use for quality validation, naming conventions, and performance optimization.
Also in 7 projects that use this
ElasticSkillaccessibility
Accessibility guidance for Kibana. Use this skill when working with or reviewing EUI components, resolving a11y-related (@elastic/eui) ESLint issues, and ensuring proper use of ARIA attributes, focus management, keyboard interactions, and accessible naming conventions.
Also in 18 projects that use this
Other versions33 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 33
- midudev/preguntas-entrevista-react★ 7.8ksame name
- theopenco/llmgateway★ 1.7ksame name
- vmDeshpande/ai-agent-automation★ 177same name
- PracticalSwan/agent-skills★ 22same name
- Quality-Max/free-qa-skills★ 13same name
- RodrigoTomeES/getmcp★ 13same name
- 4gentic/obelus★ 8same name
- carlosuhart/seo-audit-skills★ 6same name
- joaoguirunas/team-os★ 6same name
- 6t9xstar/one-step-seo★ 5same name
23 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
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
- 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
- property-setupSkill
- 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
8 rules. 0 are common, 1 is distinctive, and 7 are very specific to this project.
0
Common
Most of the 15 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Resolve the property: If the user's request or the conversation names a property, use it.
- Very specific: line 14
Origin-level vitals: Call get_core_web_vitals with siteUrl and formFactor: "ALL" (the default.
- Very specific: line 19
Use latestRating as the verdict.
- Very specific: line 24
Device split: Call get_core_web_vitals twice more with formFactor: "PHONE" and formFactor: "DESKTOP".
- Very specific: line 29
Tie vitals to traffic: Call query_top_pages with siteUrl and limit: 25, omitting startDate and endDate for the last 28 settled days.
- Very specific: line 33
Call get_core_web_vitals with url set to each of the top 3 to 5 pages by clicks, one call per page, keeping formFactor: "ALL".
- Very specific: line 36
Tie vitals to engagement (optional, needs GA4): Call get_blended_landing_pages with siteUrl and limit: 25, omitting the dates for the last …
- Distinctive: line 59
Ad and soft-navigation metrics: only when present, one short table each, marked experimental.
“Common” is measured: kept by at least 6 in 10 of the 15 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Core Web Vitals Review
Report the real-user page experience of one property from Chrome UX Report (CrUX) field data, find the regressions, and rank the pages or templates to fix by the clicks at stake. The user's request may contain a property, a single page URL, a device hint ("mobile", "desktop"), or a metric to focus on (LCP, INP, CLS); honor it by narrowing the calls, but still report all three Core Web Vitals.
Steps
- Resolve the property. 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/. Otherwise calllist_sitesand pick the obvious match. If several plausible properties exist, ask the user which one before continuing. - Origin-level vitals. Call
get_core_web_vitalswithsiteUrlandformFactor: "ALL"(the default; the other values arePHONE,DESKTOP,TABLET). Omiturlso the whole origin is measured. Three answers are possible:notConfigured: truewith ahint: the Chrome UX Report connection is not set up in the GSC Wizard app. Tell the user so, relay the hint (the Core Web Vitals report in the app is where that connection is set up), and stop the vitals part of this workflow; still run steps 4 and 5 so the user gets the traffic picture.noData: truewithmessage,emptyBecauseandnextStep: CrUX holds no record for that target and device class because it had too little real-world Chrome traffic. Do whatnextStepsays (the whole origin instead of a page,formFactor: "ALL"instead of one device); if the origin itself has no data, say the site is below the CrUX traffic threshold and that lab data is the only option.- A result:
periods(oldest first, each a 28-day collection window ending in that week; never read a series newest-first),periodLabelsandlatestPeriod. metrics[]withkey,label,coreWebVital(true for LCP, INP, CLS; false for FCP and TTFB, which are diagnostics),unit,latestP75,latestP75Formatted,latestRating(good, needs-improvement or poor),latestGoodDensity(a 0-1 fraction of page loads rated good; multiply by 100 only when you present it as a percent and say so),p75SeriesandgoodDensitySeriesaligned withperiods.- Use
latestRatingas the verdict; do not re-rate the numbers yourself. CLS is unitless, the other metrics are milliseconds. regressions[]: each withmetricKey,fromRating,toRating,fromValueFormatted,toValueFormatted,fromPeriod,toPeriod. It lists only a Core Web Vital whose rating band got worse between its two latest weeks with data; when it is empty the response carriesmethodLimits, so readp75Seriesfor drift inside a band or over a longer span and report that as a trend, not as a regression.adMetrics[](only when Chrome detected ads): experimental ad count, density, CPU and network weight as p75 trends with no rating and no thresholds; mention them when a site carries ads and INP or LCP is poor.softNavMetrics[](experimental): LCP, INP and CLS counting single-page-app route changes, rated on the stable thresholds, withpageLoadsOnlyLatestP75beside each for the same week; entries are null before October 2026 and never appear inregressions.
- Device split. Call
get_core_web_vitalstwice more withformFactor: "PHONE"andformFactor: "DESKTOP".- A metric that is poor on PHONE and good on DESKTOP points at mobile-only causes (image weight, main-thread work on slow devices).
- A
noDataanswer for one device means too little traffic there, not a clean bill. Skip TABLET unless the user asks, as it rarely has data. - Report a device only where its rating differs from ALL; a device with the same ratings adds nothing to the table.
- Tie vitals to traffic. Call
query_top_pageswithsiteUrlandlimit: 25, omittingstartDateandendDatefor the last 28 settled days.- GSC data lags about 2 to 3 days: never treat the most recent 2 days as complete, and name the
rangethe tool reports. - Rows are sorted by clicks, highest first;
ctris a 0-100 percentage, never multiply it by 100;positionis lower-is-better. - Quote the property total from
coverage.siteTotals, not from a sum of rows, and compute (and say you computed) each page's share of clicks. - Call
get_core_web_vitalswithurlset to each of the top 3 to 5 pages by clicks, one call per page, keepingformFactor: "ALL". Group pages by template when the URL pattern makes it obvious (one product page stands for the product template). - Page-level
noDatais common: fall back to the origin reading for that page and say so. Keep page-level calls to a handful, since CrUX has its own daily API quota and a rate-limited error ends the step.
- GSC data lags about 2 to 3 days: never treat the most recent 2 days as complete, and name the
- Tie vitals to engagement (optional, needs GA4). Call
get_blended_landing_pageswithsiteUrlandlimit: 25, omitting the dates for the last 28 settled days and leavingorganicOnlyat its default of true so the GA4 side describes the same google / organic traffic.notConfigured: truewithreason: "no_scope"means Google Analytics is not connected to this GSC Wizard account; withreauthRequired: trueit is connected but Google rejects the connection, so the fix is a reconnect.reason: "no_property"means no GA4 property is linked to this site. Relay thehintand continue without engagement data.- Otherwise read per landing page the GSC clicks and
ctr(0-100) beside the GA4 sessions,bounceRate(a 0-1 fraction, unlikectr), key events and revenue. - A page with a poor vital and a high bounce rate or low key-event rate is the strongest candidate; a page with poor vitals but healthy engagement still carries ranking risk, with less urgency.
- Interpret. Apply two rules, then name the fix class per metric with the table below.
- Judge by clicks at stake, not by the size of a regression alone: a poor INP on the page that carries a third of the clicks outranks a needs-improvement CLS on a page with ten.
- CrUX aggregates a rolling 28-day window per weekly period, so a fix deployed today shows up gradually over about four periods; say so when the user asks whether a fix worked, and compare
p75Seriesacross the periods before and after the deploy date.
| Metric | Usual cause | Fix class |
| LCP | Slow server response (read TTFB), render-blocking CSS and scripts, a heavy or late hero image | Server and cache tuning, defer non-critical assets, compress and preload the hero image |
| INP | Long JavaScript tasks, heavy event handlers, third-party scripts | Split long tasks, trim handlers, load third parties late |
| CLS | Images and embeds without reserved dimensions, late-injected banners or ads, web-font swaps | Reserve space, keep injected content below the fold, tune font loading |
| FCP, TTFB | Diagnostics, not Core Web Vitals (coreWebVital: false) | Use them to explain LCP; never list them as targets of their own |
Output
Present the review in this order, with compact markdown tables (top rows only, typically 5 to 10) and prose only for interpretation:
- Vitals table (
get_core_web_vitals, origin,formFactor: "ALL",latestPeriodnamed): Metric, p75 (formatted), Rating, Good share, Trend (p75 four periods ago versus latest, derived fromp75Series; say it is derived). Add a line per device from step 3 where the rating differs from ALL. - Regressions: one row per entry in
regressions, with the metric, the rating change, the two values and the two periods; if none, say so and give the within-band drift fromp75Seriesinstead. - Pages to fix first (
query_top_pagesand the page-levelget_core_web_vitalscalls, with the GSC range): Page or template, clicks, share of property clicks (derived), the page-level or origin-level rating per Core Web Vital, and, when step 5 ran, the GA4 bounce rate. Order by clicks at stake among pages with a poor or needs-improvement rating. - Ad and soft-navigation metrics: only when present, one short table each, marked experimental.
End with a short prioritized list of 3 to 7 concrete recommendations, each naming the metric (LCP, INP or CLS), the page or template, the fix class from step 6, and what to re-check in about four weeks.
If the CrUX key is not configured, make configuring it the first recommendation and keep the rest to the traffic picture. Do not fabricate rows the tools did not return; if every rating is good and regressions is empty, say so and keep the recommendations to monitoring.
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.
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.

