К основному содержанию
скилл CX Codex

performance-and-web-vitals — скилл для Claude Code: как установить

Скилл помогает находить и устранять проблемы с Core Web Vitals и аудитами Lighthouse. Он даёт правила для оптимизации LCP, CLS, INP, изображений, шрифтов и скриптов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add dembrandt/dembrandt-skills --skill performance-and-web-vitals -a claude-code
Открыть на GitHub

Что делает performance-and-web-vitals

Скилл содержит готовые инструкции для проверки сайта через Lighthouse и исправления метрик Core Web Vitals. Он ориентирует агента на конкретные пороговые значения: показатель LCP не должен превышать 2.5 секунды, CLS — 0.1, а отклик INP обязан укладываться в 200 миллисекунд. Для аудита используются запуск через npx lighthouse или утилита lhci в CI-пайплайнах.

Внутри собраны правила для разметки и скриптов. Для стабильности макета скилл требует всегда указывать width и height у тегов <img>, а динамическим блокам задавать фиксированную высоту через min-height. Анимации разрешено строить только на transform. Откладывать главный баннер через loading="lazy" нельзя, потому что это прямо разрушает показатель LCP.

Тяжёлый JavaScript скилл предлагает разбивать на небольшие задачи через requestIdleCallback и откладывать атрибутами defer или async. Для аудита страниц потребуется установленный Node.js, чтобы запускать CLI Lighthouse.

Какие задачи решает

  • устранить сдвиги макета CLS при загрузке баннеров и картинок
  • ускорить отрисовку главного контента LCP через предзагрузку
  • сократить задержку отклика INP за счёт разбивки задач JavaScript
  • запустить автоматический аудит производительности через Lighthouse CLI

Примеры запросов агенту

  • Проверь страницу через Lighthouse и покажи, как исправить низкий показатель LCP
  • Устрани сдвиги макета CLS в компоненте hero-баннера
  • Оптимизируй загрузку шрифтов и картинок для улучшения Web Vitals

Как установить performance-and-web-vitals

1Через Skills CLI (Vercel)

npx skills add dembrandt/dembrandt-skills --skill performance-and-web-vitals -a claude-code

2Вручную: положить файлы

~/.claude/skills/performance-and-web-vitals/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/performance-and-web-vitals/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о performance-and-web-vitals

Как установить performance-and-web-vitals в Claude Code?

Установите скилл командой npx skills add dembrandt/dembrandt-skills --skill performance-and-web-vitals -a claude-code в терминале.

Зачем нужен скилл performance-and-web-vitals?

Он помогает отслеживать и исправлять основные метрики страниц: LCP, CLS и INP. Скилл даёт правила оптимизации картинок, отложенной загрузки скриптов и предзагрузки шрифтов.

Что требуется для запуска аудитов производительности?

Для аудитов нужен установленный Node.js с доступом к CLI npx lighthouse или глобальному пакету @lhci/cli для автоматического тестирования в CI.

Исходный текст

SKILL.md · MIT
---
name: performance-and-web-vitals
description: Lighthouse audits and Core Web Vitals — LCP, CLS, INP. Use when optimising page load, layout shift, input delay, images, fonts or render-blocking resources.
metadata:
  priority: 8
  docs:
    - "https://web.dev/vitals/"
    - "https://developer.chrome.com/docs/lighthouse/overview/"
  pathPatterns:
    - "**/*.html"
    - "**/*.tsx"
    - "**/*.jsx"
    - "**/*.css"
    - "**/*.scss"
    - "next.config.*"
    - "vite.config.*"
    - "app/**"
    - "pages/**"
  promptSignals:
    phrases:
      - "lighthouse"
      - "performance"
      - "web vitals"
      - "lcp"
      - "cls"
      - "inp"
      - "layout shift"
      - "slow"
      - "page speed"
      - "core web vitals"
retrieval:
  aliases:
    - lighthouse
    - web vitals
    - performance
    - LCP
    - CLS
    - INP
    - page speed
    - core web vitals
  intents:
    - run a lighthouse audit
    - fix layout shift
    - improve lcp
    - optimise images
    - fix slow page
    - improve lighthouse score
  examples:
    - run lighthouse on this page
    - my LCP is too slow
    - fix the layout shift on this page
    - optimise images for performance
    - improve the lighthouse score
---

# Performance and Web Vitals

## Run a Lighthouse Audit

```bash
# CLI audit — outputs JSON and HTML report
npx lighthouse https://example.com --output html --output-path ./lighthouse-report.html

# Headless, useful in CI
npx lighthouse https://example.com --chrome-flags="--headless" --output json --output-path ./report.json

# Audit specific categories only
npx lighthouse https://example.com --only-categories=performance,accessibility,seo
```

Or open Chrome DevTools → Lighthouse tab → Analyse page load.

**Target scores:**
| Category | Target |
|---|---|
| Performance | ≥ 90 |
| Accessibility | 100 |
| Best Practices | ≥ 95 |
| SEO | ≥ 95 |

---

## Core Web Vitals

### LCP — Largest Contentful Paint
*How fast does the main content appear?*

**Target: ≤ 2.5s**

LCP measures when the largest visible element (hero image, heading, video poster) renders. It is the user's perception of "did the page load?"

**Common causes and fixes:**

| Cause | Fix |
|---|---|
| Unoptimised hero image | Use WebP/AVIF, correct size, `fetchpriority="high"` |
| Image not preloaded | `<link rel="preload" as="image" href="hero.webp">` |
| Render-blocking CSS/JS | Defer non-critical JS, inline critical CSS |
| Slow server response | CDN, caching headers, edge delivery |
| Web font blocking render | `font-display: swap` or `optional` |

```html
<!-- Preload LCP image -->
<link rel="preload" as="image" href="hero.webp" fetchpriority="high">

<!-- LCP image: no lazy loading -->
<img src="hero.webp" alt="..." fetchpriority="high" width="1200" height="600">
```

Never use `loading="lazy"` on the LCP image — it delays the most important render.

---

### CLS — Cumulative Layout Shift
*Does content jump around while loading?*

**Target: ≤ 0.1**

CLS measures unexpected layout shifts — content moving after it has rendered. Caused by images without dimensions, late-loading ads, fonts swapping, or dynamic content injected above existing content.

**Common causes and fixes:**

| Cause | Fix |
|---|---|
| Images without width/height | Always set `width` and `height` on `<img>` |
| Web font swap | Use `font-display: optional` or preload fonts |
| Dynamic content above fold | Reserve space with `min-height` on containers |
| Late-loading ads or embeds | Reserve fixed dimensions for ad slots |
| Animations that shift layout | Animate `transform` only, never `top/left/width/height` |

```html
<!-- Always include dimensions -->
<img src="product.jpg" width="400" height="300" alt="...">
```

```css
/* Reserve space for dynamic content */
.ad-slot { min-height: 250px; }

/* Animate transform, not layout properties */
.slide-in { transform: translateY(0); transition: transform 300ms; }
```

---

### INP — Interaction to Next Paint
*How quickly does the page respond to user input?*

**Target: ≤ 200ms**

INP measures the delay between a user interaction (click, tap, keyboard) and the next visual update. High INP makes the UI feel sluggish or frozen.

**Common causes and fixes:**

| Cause | Fix |
|---|---|
| Heavy JS on main thread | Break into smaller tasks, use `requestIdleCallback` |
| Large event handlers | Debounce/throttle scroll and resize handlers |
| Synchronous DOM updates | Batch DOM writes with `requestAnimationFrame` |
| Third-party scripts blocking | Load third-party scripts with `async` or `defer` |
| React re-renders | Memoize with `useMemo`, `useCallback`, `React.memo` |

---

## Images

Images are the single biggest performance lever on most pages.

```html
<!-- Modern formats with fallback -->
<picture>
  <source srcset="image.avif" type="image/avif">
  <source srcset="image.webp" type="image/webp">
  <img src="image.jpg" width="800" height="600" alt="..." loading="lazy">
</picture>

<!-- Responsive images -->
<img
  srcset="image-400.webp 400w, image-800.webp 800w, image-1200.webp 1200w"
  sizes="(max-width: 600px) 100vw, 50vw"
  src="image-800.webp"
  alt="..."
  width="800"
  height="600"
  loading="lazy"
>
```

**Rules:**
- Always set `width` and `height` — prevents CLS
- Use `loading="lazy"` below the fold, never on LCP image
- Serve WebP or AVIF — typically 30–50% smaller than JPEG
- Size images to their display size — do not serve 2000px image for a 400px slot
- Use a CDN with automatic format conversion where possible

---

## Fonts

Web fonts block rendering if not handled correctly.

```html
<!-- Preconnect to font origin -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

<!-- Preload critical font file -->
<link rel="preload" href="/fonts/brand.woff2" as="font" type="font/woff2" crossorigin>
```

```css
@font-face {
  font-family: 'Brand';
  src: url('/fonts/brand.woff2') format('woff2');
  font-display: swap;     /* show fallback immediately, swap when loaded */
  /* font-display: optional; — never swap, use fallback if not cached */
}
```

- `font-display: swap` — good for headings, acceptable CLS
- `font-display: optional` — zero CLS, font only used if cached (best for body text)
- Subset fonts to the characters actually used — reduces file size by 60–80%

---

## JavaScript

```html
<!-- Defer non-critical scripts -->
<script src="analytics.js" defer></script>
<script src="chat-widget.js" async></script>

<!-- Module scripts are deferred by default -->
<script type="module" src="app.js"></script>
```

- `defer`: executes after HTML parsed, in order — use for most scripts
- `async`: executes as soon as downloaded, out of order — use for independent scripts (analytics)
- Never block the main thread with synchronous `<script>` in `<head>`

---

## Lighthouse CI (automated audits)

Run Lighthouse in CI to catch regressions before deployment.

```bash
# Install
npm install -g @lhci/cli

# Run
lhci autorun --upload.target=temporary-public-storage
```

```yaml
# .lighthouserc.json
{
  "ci": {
    "assert": {
      "assertions": {
        "categories:performance": ["warn", { "minScore": 0.9 }],
        "categories:accessibility": ["error", { "minScore": 1.0 }],
        "categories:seo": ["warn", { "minScore": 0.95 }]
      }
    }
  }
}
```

---

## Review Checklist

- [ ] Lighthouse performance score ≥ 90
- [ ] Lighthouse accessibility score = 100
- [ ] LCP ≤ 2.5s — LCP image preloaded, no `loading="lazy"` on it
- [ ] CLS ≤ 0.1 — all images have `width` and `height`, no layout-shifting animations
- [ ] INP ≤ 200ms — no heavy synchronous JS on main thread
- [ ] Images served as WebP or AVIF with correct dimensions
- [ ] `loading="lazy"` on all below-fold images
- [ ] Web fonts use `font-display: swap` or `optional`
- [ ] Non-critical JS loaded with `defer` or `async`
- [ ] Lighthouse CI configured to catch regressions in deployment pipeline

© dembrandt · MIT · dembrandt/dembrandt-skills

Похожие скиллы

Всё по теме «Фронтенд и UI» →
core-web-vitals web-quality-skills Скилл для оптимизации Core Web Vitals: сначала измеряет, потом правит LCP, INP и CLS. Полезен, когда страница тормозит или прыгает вёрстка. CX Codex +1 32 000установок web-performance-audit secondsky Скилл для аудита скорости страниц: снимает метрики Core Web Vitals, ищет узкие места и подсказывает, что чинить. Пригодится, когда LCP или CLS вылезают за норму. CX Codex +1 526установок web-perf cloudflare Пошаговый аудит Core Web Vitals, диагностика медленной загрузки и поиск блокирующих скриптов прямо в терминале. CX Codex +1 110 200установок web-performance-optimization davila7 Скилл для Claude, который помогает разобрать, почему сайт грузится медленно, и по шагам убрать узкие места. 3 490установок debug-optimize-lcp ChromeDevTools Разбирает Largest Contentful Paint на четыре последовательных этапа и показывает, где именно тормозит загрузка главного контента страницы. CX Codex +1 3 600установок perf-lighthouse tech-leads-club Скилл запускает аудит Lighthouse через консоль или Node API, считывает метрики и настраивает бюджеты производительности. Помогает внедрить проверки скорости в CI и разобрать JSON-отчёты. CX Codex +1 320установок

Из того же набора34

nielsen-usability-heuristics Оценивает интерфейсы и текст ошибок по 10 эвристикам Нильсена. Скилл помогает выявить проблемы юзабилити прямо в коде компонентов до релиза. CX Codex +1 976установок color-mode-and-theme Помогает выбрать цветовую схему проекта, решить вопрос о поддержке тёмной темы и выстроить токены без сломанного контраста. CX Codex +1 926установок ui-density Помогает подобрать плотность интерфейса под мобильные экраны, планшеты и десктоп. Задаёт правила группировки данных для таблиц, дашбордов и режимов для профи. CX Codex +1 915установок form-design Скилл для проектирования форм: подсказки под полем, плейсхолдеры, валидация и состояние кнопки отправки. Пригодится, когда верстаешь или проверяешь ввод данных. CX Codex +1 916установок brand-visual-language Скилл помогает выбрать радиусы, шрифты и стиль иконок так, чтобы интерфейс читался как одна марка. Пригодится, когда начинаете дизайн-систему или ловите разнобой в визуале. CX Codex +1 907установок semantic-html-and-seo Скилл для ИИ-агента: подсказывает семантичную разметку HTML5, метатеги, alt-тексты и progressive enhancement. Пригодится при вёрстке интерфейса и разборе чужого markup. CX Codex +1 901установок motion-and-storytelling Скилл для проектирования переходов, скролл-анимаций и онбординга. Подсказывает тайминги, easing и стаггер, когда анимация нужна, а не «для красоты». CX Codex +1 894установок information-architecture Помогает разложить большой интерфейс по полочкам: как называть сущности, строить навигацию и подтверждать необратимые действия. CX Codex +1 889установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой