mcpField
C
core-web-vitals-tuner

core-web-vitals-tuner

github.com/patricio0312revDevelopment63310 installsUpdated 41w ago
Repository

About core-web-vitals-tuner

A practical skill for developers who want to improve Core Web Vitals, with prioritized techniques for LCP, INP, and CLS plus verification guidance.

Key features

  1. 01LCP optimization techniques
  2. 02INP interaction improvements
  3. 03CLS layout stability fixes
  4. 04Lighthouse CI verification
  5. 05Production vitals monitoring

Use cases

  1. 01Improve page loading performance
  2. 02Reduce delays in user interactions
  3. 03Prevent unexpected layout shifts

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/patricio0312rev/skills --skill core-web-vitals-tuner

After installing, type/core-web-vitals-tunerin Claude Code to confirm it loaded.

Details

From the project README

Core Web Vitals Tuner

Improve LCP, INP, and CLS systematically.

LCP Optimization (<2.5s)

Prioritized Fixes:

  1. Optimize images (Biggest impact)

    <!-- Before -->
    <img src="hero.jpg" />
    
    <!-- After -->
    <img
      src="hero.jpg"
      srcset="hero-400.webp 400w, hero-800.webp 800w, hero-1200.webp 1200w"
      sizes="(max-width: 600px) 400px, (max-width: 1200px) 800px, 1200px"
      loading="eager"
      fetchpriority="high"
    />
    
  2. Preload LCP resource

    <link rel="preload" as="image" href="/hero.webp" fetchpriority="high" />
    
  3. Inline critical CSS

    <style>
      /* Above-the-fold styles */
      .hero {
        display: flex;
        height: 100vh;
      }
    </style>
    
  4. Use CDN

    • Serve images from CloudFront/Cloudflare
    • Enable HTTP/2 or HTTP/3

INP Optimization (<200ms)

Fixes:

  1. Debounce expensive interactions

    import { debounce } from "lodash";
    
    const handleSearch = debounce((query) => {
      fetchResults(query);
    }, 300);
    
  2. Use Web Workers for heavy tasks

    const worker = new Worker("processor.js");
    worker.postMessage(largeData);
    worker.onmessage = (e) => console.log(e.data);
    
  3. Code splitting

    const HeavyComponent = lazy(() => import("./HeavyComponent"));
    

CLS Optimization (<0.1)

Fixes:

  1. Reserve space for images/ads

    <img src="banner.jpg" width="1200" height="600" />
    
  2. Use CSS aspect-ratio

    .video-container {
      aspect-ratio: 16 / 9;
    }
    
  3. Avoid injecting content above existing

    .notification {
      position: fixed;
      top: 0;
    }
    

Verification

# Lighthouse CI
npm run lighthouse -- --url=https://example.com

# Web Vitals in production
import { getCLS, getFID, getLCP } from 'web-vitals';

getCLS(console.log);
getFID(console.log);
getLCP(console.log);

Output Checklist

  • LCP optimized (<2.5s)
  • INP optimized (<200ms)
  • CLS optimized (<0.1)
  • Monitoring in place
  • Performance regression tests ENDFILE

Comments

Markdown supported