Run a performance audit on a WordPress site to measure Core Web Vitals and page composition, then provide actionable recommendations.
How to Run
Determine which site to audit. If the user hasn't specified, ask them or use the site from the current context.
Ensure the site is running (use site_start if needed).
Call need_for_speed with the site name and path (defaults to /).
Analyze the results using the interpretation guide below.
Present a clear summary with specific, actionable recommendations.
Interpreting Results
Core Web Vitals Thresholds
| Metric | Good | Needs Improvement | Poor |
|--------|------|-------------------|------|
| TTFB | < 800 ms | 800–1800 ms | > 1800 ms |
| FCP | < 1800 ms | 1800–3000 ms | > 3000 ms |
| LCP | < 2500 ms | 2500–4000 ms | > 4000 ms |
| CLS | < 0.1 | 0.1–0.25 | > 0.25 |
Page Composition Benchmarks
DOM elements: Concern if > 1500
Total page weight: Concern if > 3 MB
Total requests: Concern if > 80
Scripts: Concern if > 20 scripts or > 500 KB total
Stylesheets: Concern if > 10 stylesheets or > 200 KB total
Common WordPress Recommendations
Based on the metrics, suggest specific actions:
High TTFB: Enable page caching (e.g., wp_cli: plugin install wp-super-cache --activate), check for slow database queries, consider object caching.
High LCP / FCP: Check for render-blocking CSS/JS, add lazy loading for below-the-fold images, defer non-critical scripts.
Large JS payload: Identify heavy plugins from the scripts URL list, suggest deactivating unused plugins, check for jQuery dependency chains.
Large CSS payload: Look for unused theme stylesheets, check for multiple Google Fonts loads.
Many HTTP requests: Suggest reducing plugin count, enabling asset concatenation.
High CLS: Check for images without explicit width/height dimensions, ads or dynamic content injection, web fonts causing layout shifts.
Large DOM: Check theme template complexity, excessive nesting in block content, too many wrapper elements.
Important Notes
These are synthetic measurements on a local dev server. TTFB will be artificially low compared to production. Focus on relative comparisons (before/after changes) rather than absolute values.
CLS is measured during page load only, not during user interaction.
INP (Interaction to Next Paint) is not measured — it requires real user interaction patterns.
Page weight may undercount if some resources report 0 transfer size (e.g., service worker cached resources).
How to use it
Copy the folder
Take automattic/need-for-speed 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.