agentsclimarketplace

Seo performance

Skill mvstepanek/nextjs-ecommerce-seo-skills/global-skills/seo-performance

SEO skills for AI coding assistants (Claude Code + GitHub Copilot) targeting Next.js e-commerce sites

Install
npx -y skills add mvstepanek/nextjs-ecommerce-seo-skills --skill seo-performance

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Core Web Vitals and performance SEO rules for Next.js. Use when optimizing page load, working with third-party scripts, fonts, bundle size, or addressing LCP/CLS/INP issues.

SKILL.md

3.1 KB, as published. Nobody here has run it

Performance & Core Web Vitals SEO Guidelines

Core Web Vitals are a Google ranking factor. Follow these rules for optimal performance.

Targets

MetricTargetMeasures
LCP< 2.5sMain content load speed
CLS< 0.1Visual stability during load
INP< 200msInteraction responsiveness

Server-Side Rendering by Default

  • Render critical content server-side — App Router: use Server Components; Pages Router: use getServerSideProps/getStaticProps
  • Only use client-side rendering ("use client" / useEffect) when truly needed for interactivity
  • Server-rendered content: faster LCP, zero JS bundle cost for display-only content
  • Data-display components (product info, specs, lists) should be Server Components
// GOOD — Server Component (default)
export default async function Page({ params }: Props) {
  const data = await getData(params.id);
  return <h1>{data.title}</h1>;
}

// Client component ONLY for interactive parts
"use client";
export function InteractiveWidget() { /* state, effects, handlers */ }

LCP Optimization

  1. Preload hero images with priority prop on next/image
  2. Fetch above-fold data server-side (never behind useEffect)
  3. Use ISR for frequently accessed pages: export const revalidate = 300;

CLS Prevention

  1. Always size images (width/height or fill with container)
  2. Use next/font with display: 'swap' — prevents font-related layout shift
  3. Reserve space for dynamic content loading
import { Inter } from 'next/font/google';
const inter = Inter({ subsets: ['latin'], display: 'swap', weight: ['400', '700'] });

Third-Party Scripts

import Script from 'next/script';

// Analytics, tag managers — after page is interactive
<Script id="analytics" strategy="afterInteractive" src="..." />

// Non-critical (chat, surveys) — lazy load
<Script id="chat" strategy="lazyOnload" src="..." />

// NEVER use beforeInteractive for analytics — blocks rendering

Bundle Size

  1. Dynamic imports for below-fold components
  2. Import specific functions, not entire libraries
  3. Use @next/bundle-analyzer to monitor
import dynamic from 'next/dynamic';
const HeavyComponent = dynamic(() => import('./HeavyComponent'));

Streaming with Suspense

import { Suspense } from 'react';

export default function Page() {
  return (
    <>
      <FastContent />
      <Suspense fallback={<Skeleton />}>
        <SlowContent />
      </Suspense>
    </>
  );
}

Common Mistakes

  1. Client-side rendering of data-display components — keep them server-rendered
  2. beforeInteractive for analytics — blocks page render
  3. Loading fonts via <link> — use next/font
  4. Fetching data in useEffect for above-fold content — fetch on server
  5. Not using Suspense — entire page waits for slowest query

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.