Intelligent loading performance analysis with automated workflows for TTFB investigation (DNS/connection/server breakdown), render-blocking detection, script performance deep dive (first vs third-party attribution), font optimization, and resource hints validation. Includes decision trees that automatically analyze TTFB sub-parts when slow, detect script loading anti-patterns (async/defer/preload conflicts), identify render-blocking resources, and validate resource hints usage. Features workflows for complete loading audit (6 phases), backend performance investigation, and priority optimization. Cross-skill integration with Core Web Vitals (LCP resource loading), Interaction (script execution blocking), and Media (lazy loading strategy). Use when the user asks about TTFB, FCP, render-blocking, slow loading, font performance, script optimization, or resource hints. Compatible with Chrome DevTools MCP.
4k tokens
context cost
SKILL.md, read when the skill is used
37
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
1 454
stars on the repo
on the repository, not the skill itself
Install
one command, takes just this skill from the repository
JavaScript snippets for measuring web performance in Chrome DevTools.
Running a script
Run the script with mcp__chrome-devtools__evaluate_script and read the object it returns. The scripts have no console output, so the returned object is the result: script, status and the metric data (value, rating, details, items, issues), as described in references/schema.md.
When status is "tracking", the script keeps observing the page. After the interactions, call the function named in getDataFn with another mcp__chrome-devtools__evaluate_script call, for example getINP(), and read the object it returns.
When status is "error" or "unsupported", read error: the page may not have loaded yet, or the browser lacks the API.
Without Chrome DevTools MCP, run the same snippet with the webperf-snippets CLI, which loads the page in headless Chromium and prints the same result objects: npx webperf-snippets <url> --snippet <Name> --json, where <Name> is the script name without .js. It needs Playwright and Chromium (npm install --save-dev webperf-snippets playwright, then npx playwright install chromium), and tracking snippets take --interact-script <file> to drive the interactions.
Scripts
scripts/Back-Forward-Cache.js — Back Forward Cache
scripts/CSS-Media-Queries-Analysis.js — CSS media queries analysis
If preloads on async/defer scripts → Run Validate-Preload-Async-Defer-Scripts.js
After Compression-Audit.js
If uncompressed CSS/JS found → Run Find-render-blocking-resources.js to see if they block rendering
If estimated savings > 100KB → Recommend enabling gzip or brotli on the server or CDN
If corsLimitedAnalysis is true → Report the result as a lower bound and suggest Timing-Allow-Origin on resources you control
After Third-Party-Impact-by-Domain.js
If a domain is render-blocking → Recommend async, defer, lazy loading or self-hosting; run Script-Loading.js for the loading strategy
If a domain's main-thread time > 250ms → Run Long-Animation-Frames-Script-Attribution.js (webperf-interaction) to find the functions responsible, and recommend delaying or removing the script
If many domains with few requests each → Recommend auditing tags and removing unused ones
If corsLimitedAnalysis is true → Report sizes as a lower bound; use First-And-Third-Party-Script-Timings.js for timings of the hidden resources
After Service-Worker-Analysis.js
If SW overhead > 100ms → Recommend Navigation Preload API
If SW caching many resources → Run TTFB-Resources.js to verify cache hits
If SW not detected but site is SPA/PWA → Recommend implementing SW
After Fonts-Preloaded-Loaded-and-used-above-the-fold.js
If fonts preloaded but not used above-the-fold → Recommend removing preloads
If fonts used but not preloaded → Recommend adding preload
If many font variants loaded → Suggest subsetting or reducing variants, and run Webfont-Usage-Analyzer.js to find the unused ones
After Webfont-Usage-Analyzer.js
If fonts loaded but not used → Recommend removing the @font-face declaration or the preload
If faces use font-display: auto or block → Recommend swap or optional, then check Find-render-blocking-resources.js
If font bytes are high → Suggest subsetting with unicode-range and WOFF2
If the LCP element is text → Run LCP.js with the webperf-core-web-vitals skill
If third-party scripts are slow → Recommend async/defer or removal
After SSR-Hydration-Data-Analysis.js
If hydration data > 100KB → Recommend optimization strategies
If multiple hydration scripts → Investigate framework configuration
If large inline hydration data → Consider streaming or chunking
After Priority-Hints-Audit.js
If LCP candidate lacks fetchpriority="high" → Recommend adding it
If conflicting priorities (preload + low) → Recommend resolving conflict
If fetchpriority on non-critical resources → Review priority strategy
After Prefetch-Resource-Validation.js
If >10 prefetch hints → Recommend reducing to critical resources
If individual prefetch > 500KB → Question necessity
If total prefetch > 2MB → Flag as mobile bandwidth concern
If few or no prefetch hints for likely next navigations → Run Speculation-Rules-Inspector.js to check for prefetch/prerender rules
After Speculation-Rules-Inspector.js
If no speculation rules found but the site has predictable navigations → Recommend adding prefetch or prerender rules
If invalid JSON or wasteful rules (eager prerender of many URLs) → Recommend fixing or lowering eagerness to moderate or conservative
If the page was prerendered (activationStart > 0) → Subtract activationStart when interpreting TTFB.js, FCP.js and LCP results
After Critical-CSS-Detection.js
If render-blocking CSS > 14KB → Recommend inlining critical CSS
If no inline CSS but has blocking stylesheets → Suggest critical CSS extraction
If CSS > 50KB total → Run CSS-Media-Queries-Analysis.js to find savings
After Back-Forward-Cache.js
If bfcache blocked → Provide specific remediation based on blocking reasons
If bfcache eligible → Confirm optimization is working
After Client-Side-Redirect-Detection.js
If client-side redirects detected → Recommend server-side redirects
If redirect chain found → Suggest eliminating intermediate hops
References
references/snippets.md — Descriptions and thresholds for each script
references/schema.md — Return value schema for interpreting script output
How to use it
Copy the folder
Take nucliweb/webperf-snippets-antigravity-webperf-loading from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
Check the name does not clash
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
Install what it needs
The instructions reference npm, npx.
Without those the skill loads but fails at the first command.