Perf Guard
Измерение реального перформанса с бюджетом и диффом регрессий.
⚠️ Главное правило скилла. MCP
chrome-devtoolsperformance-trace даёт ложно-оптимистичные цифры (быстрый локальный прогон без троттлинга/сети). Для вердикта используем ТОЛЬКО реальный Lighthouse (CLI) или Google PageSpeed Insights API против прод-URL. Никогда не выноси вердикт по chrome-devtools trace.
Что на входе ($ARGUMENTS)
- URL (один или несколько) — прогнать аудит.
--compare <runA.json> <runB.json>— таблица «было→стало» по сохранённым прогонам.--budget <path>— файл бюджета (по умолчанию./perf-budget.json; если нет — создать дефолтный).
Требования окружения
- Node 18+.
- Для CLI-режима — установленный Google Chrome +
lighthouse(используется черезnpx lighthouse). - Фолбэк — PSI API (ключ опционален, без ключа есть лимиты):
https://www.googleapis.com/pagespeedonline/v5/runPagespeed. - Скрипт движка:
scripts/perf.mjsрядом с этим SKILL.md — запускать по абсолютному пути.
Шаги
Прогнать реальный замер через движок (CLI Lighthouse, фолбэк PSI), mobile + desktop:
node <путь>/scripts/perf.mjs <url> --device both --out ./perf-guard-output/run.jsonJSON прогонов складывать в
./perf-guard-output/.Вытащить метрики: Performance score, LCP, CLS, TBT, FCP, TTI, Speed Index, общий вес (transfer size).
Сверить с бюджетом (
perf-budget.json). Если файла нет — создать дефолтный (разумные пороги mobile) и сообщить:{ "performance": 0.9, "lcp_ms": 2500, "cls": 0.1, "tbt_ms": 200, "fcp_ms": 1800, "weight_kb": 1500 }По каждой метрике — pass/fail относительно порога.
--compare— таблица «было→стало» с дельтами; пометить регрессии (стало хуже порога чувствительности).
Выход
./perf-guard-output/report.md— метрики mobile/desktop, статус по бюджету (✓/✗), дельты при сравнении, краткие рекомендации.- Сырые JSON прогонов в
./perf-guard-output/. - Явная пометка, каким движком измерено (Lighthouse CLI / PSI) — и напоминание, что chrome-devtools trace не использовался.