skills/seo/technical/core-web-vitals/SKILL.md
When the user wants to optimize Core Web Vitals, fix LCP, INP, or CLS issues. Also use when the user mentions "Core Web Vitals," "CWV," "LCP," "INP," "CLS," "FID," "page speed," "page performance," "Largest Contentful Paint," "Interaction to Next Paint," "Cumulative Layout Shift," or "Page Experience." For GSC CWV, use google-search-console.
npx skillsauth add kostja94/marketing-skills core-web-vitalsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Guides optimization of Core Web Vitals (CWV)—Google's user experience metrics that affect search ranking. CWV are confirmed ranking factors for mobile and desktop.
When invoking: On first use, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On subsequent use or when the user asks to skip, go directly to the main output.
| Metric | Target | Good | Needs Improvement | Poor | |--------|--------|------|-------------------|------| | LCP | ≤2.5s | ≤2.5s | 2.5–4.0s | >4.0s | | INP | ≤200ms | ≤200ms | 200–500ms | >500ms | | CLS | <0.1 | ≤0.1 | 0.1–0.25 | >0.25 |
Source: Google Page Experience
Check for project context first: If .claude/project-context.md or .cursor/project-context.md exists, read it for site URL.
Identify:
LCP measures the time until the largest content element (image, video, or text block) is visible.
| Cause | Fix |
|-------|-----|
| Slow server response | Reduce TTFB; use CDN; optimize server |
| Render-blocking resources | Defer non-critical CSS/JS; inline critical CSS |
| Large images | WebP/AVIF; compress; width/height to prevent CLS; see image-optimization |
| Client-side rendering | SSR/SSG for above-fold content; see rendering-strategies |
| Third-party scripts | Load async; defer non-critical |
LCP candidates: Hero image, large text block, video poster. Ensure above-fold images use loading="eager" (default); never lazy-load LCP.
INP measures responsiveness—time from user interaction to next paint. Replaced FID on March 12, 2024.
| Cause | Fix |
|-------|-----|
| Long-running JS | Break tasks >50ms; use requestIdleCallback; Web Workers |
| Heavy event handlers | Debounce/throttle; defer non-critical work |
| Main thread blocking | Reduce third-party scripts; defer non-critical JS |
| Layout thrashing | Batch DOM reads/writes; avoid forced reflows |
CLS measures unexpected layout shifts.
| Cause | Fix |
|-------|-----|
| Images without dimensions | Always set width and height attributes |
| Dynamic content | Reserve space for ads, embeds; use min-height |
| Web fonts | font-display: optional or swap; preload critical fonts |
| Animations | Use transform instead of top/left/width |
Reserve space: For images, ads, embeds—define dimensions before load. Avoid inserting content above existing content without reserved space.
| Tool | Use | |------|-----| | GSC | Core Web Vitals report; URL grouping; field data | | PageSpeed Insights | Lab + field data; mobile + desktop | | Chrome DevTools | Performance panel; LCP element; layout shift overlay |
testing
When the user wants to create, audit, or optimize sitemap.xml. Also use when the user mentions "sitemap," "sitemap.xml," "sitemap index," "lastmod," "changefreq," "priority," "URL discovery," "URL discovery for search engines," "single source of truth," "URL config," "unify sitemap IndexNow," or "reduce duplicate maintenance." For IndexNow, use indexnow.
development
When the user wants to configure, audit, or optimize robots.txt. Also use when the user mentions "robots.txt," "crawler rules," "block crawlers," "AI crawlers," "GPTBot," "allow/disallow," "disallow path," "crawl directives," "user-agent," "block Googlebot," "fix robots.txt," "robots.txt blocking," or "search engine crawling." For indexing, use indexing.
testing
When the user wants to create SEO pages at scale using templates and data—including AI-assisted, grounded copy for per-URL differentiation (vs rigid mail-merge templates). Also use when the user mentions "programmatic SEO," "programmatic SEO pages," "template pages," "scale content," "location pages," "city pages," "comparison pages at scale," "X vs Y pages," "integration pages," "pages from data," "automated landing pages," or "programmatic landing pages." Uses a playbook matrix aligned to skills under skills/pages. For user-facing template galleries or marketplaces (browse → use), use template-page-generator.
data-ai
When the user wants to add or optimize Twitter Card metadata for X (Twitter) link previews. Also use when the user mentions "Twitter Card," "twitter:card," "twitter:image," "twitter:title," "X preview," or "tweet preview." For Facebook/LinkedIn previews, use open-graph.