此登錄庫釘選版本所收錄的最新上游作者日期。

web-perf

已同步 v1.1.1 授權: Apache-2.0 來源: cloudflare/skills/skills/web-perf 提交: 626547c 收錄的最新變更:

Audit, diagnose, or optimize website loading and interaction performance, Core Web Vitals, and Lighthouse performance scores.

摘要

用途
提供以測量為依據的流程,檢視瀏覽器追蹤、網路行為與可取得的原始碼,並排列具體效能改善項目的優先順序。
使用時機
當網站需要以證據調查載入緩慢、互動延遲、版面位移,或傳遞與建置設定的改善機會時使用。
輸出結果
產出包含 Core Web Vitals 數值與評級、依預估影響排序的問題、可執行修正建議,以及在可存取原始碼時提供的程式碼庫發現的報告。
上游變更(7 筆,最新收錄 2026-09-05)
3af2c77 Keep latest Chrome DevTools MCP in setup guidance 將 Chrome DevTools MCP 設定範例從固定的 1.8.0 版改為使用最新套件版本。
edcab9d Fix skill frontmatter and optional web-perf setup 以工具探索與持續分析指引取代強制 MCP 檢查,並將明確指定版本的設定指引限定於使用者提出需求且變更在授權範圍內的情況。
7910124 Narrow skill descriptions to distinct task triggers 將技能描述精簡為聚焦於網站載入與互動效能、Core Web Vitals 和 Lighthouse 效能分數的稽核、診斷或最佳化。
22a32f5 Fix 18 factual errors: pricing, CPU limits, API names, sandbox docs, CLI syntax (#35) 修訂描述,將 LCP、INP 和 CLS 列為 Core Web Vitals,並將 FCP、TBT 和 Speed Index 列為補充指標。
d311303 add uniform retrieval-bias directives to all skills (#30) 新增優先檢索而非依賴預訓練知識的指引,以及涵蓋最新指標、工具 API 和 Lighthouse 評分的來源表。
3f72589 adopt Claude Code plugin structure (#10) 將技能檔案從 web-perf/SKILL.md 移至 skills/web-perf/SKILL.md,內容未變。
425ed1d add skills and update README (#3) 新增 web-perf 技能初版,定義以 Chrome DevTools 為基礎的工作流程,涵蓋 Core Web Vitals、網路效能、無障礙檢查與程式碼庫分析。
npx skills add "lettucebo/Skills#v2.2.0@web-perf" --full-depth

⚠ v2.2.0 發布後即可使用

Web Performance Audit

Your knowledge of web performance metrics, thresholds, and tooling APIs may be outdated. Prefer retrieval over pre-training when citing specific numbers or recommendations.

Retrieval Sources

Source How to retrieve Use for
web.dev https://web.dev/articles/vitals Core Web Vitals thresholds, definitions
Chrome DevTools docs https://developer.chrome.com/docs/devtools/performance Tooling APIs, trace analysis
Lighthouse scoring https://developer.chrome.com/docs/lighthouse/performance/performance-scoring Score weights, metric thresholds

FIRST: Verify MCP Tools Available

Discover available browser and performance tools before starting. Use the capabilities available for the requested audit. If trace tools are unavailable, continue any useful source or network analysis and state which measurements could not be collected.

If the user wants Chrome DevTools MCP setup, consult its installation guide and use the latest package version. Only change MCP configuration when setup is within the user's authorized scope; otherwise ask first. For clients using command and args, an example server entry is:

"chrome-devtools": {
  "command": "npx",
  "args": ["-y", "chrome-devtools-mcp@latest"]
}

Key Guidelines

  • Be assertive: Verify claims by checking network requests, DOM, or codebase—then state findings definitively.
  • Verify before recommending: Confirm something is unused before suggesting removal.
  • Quantify impact: Use estimated savings from insights. Don't prioritize changes with 0ms impact.
  • Skip non-issues: If render-blocking resources have 0ms estimated impact, note but don't recommend action.
  • Be specific: Say "compress hero.png (450KB) to WebP" not "optimize images".
  • Prioritize ruthlessly: A site with 200ms LCP and 0 CLS is already excellent—say so.

Quick Reference

Task Tool Call
Load page navigate_page(url: "...")
Start trace performance_start_trace(autoStop: true, reload: true)
Analyze insight performance_analyze_insight(insightSetId: "...", insightName: "...")
List requests list_network_requests(resourceTypes: ["Script", "Stylesheet", ...])
Request details get_network_request(reqid: <id>)
A11y snapshot take_snapshot(verbose: true)

Workflow

Copy this checklist to track progress:

Audit Progress:
- [ ] Phase 1: Performance trace (navigate + record)
- [ ] Phase 2: Core Web Vitals analysis (includes CLS culprits)
- [ ] Phase 3: Network analysis
- [ ] Phase 4: Accessibility snapshot
- [ ] Phase 5: Codebase analysis (skip if third-party site)

Phase 1: Performance Trace

  1. Navigate to the target URL:

    navigate_page(url: "<target-url>")
    
  2. Start a performance trace with reload to capture cold-load metrics:

    performance_start_trace(autoStop: true, reload: true)
    
  3. Wait for trace completion, then retrieve results.

Troubleshooting:

  • If trace returns empty or fails, verify the page loaded correctly with navigate_page first
  • If insight names don't match, inspect the trace response to list available insights

Phase 2: Core Web Vitals Analysis

Use performance_analyze_insight to extract key metrics.

Note: Insight names may vary across Chrome DevTools versions. If an insight name doesn't work, check the insightSetId from the trace response to discover available insights.

Common insight names:

Metric Insight Name What to Look For
LCP LCPBreakdown Time to largest contentful paint; breakdown of TTFB, resource load, render delay
CLS CLSCulprits Elements causing layout shifts (images without dimensions, injected content, font swaps)
Render Blocking RenderBlocking CSS/JS blocking first paint
Document Latency DocumentLatency Server response time issues
Network Dependencies NetworkRequestsDepGraph Request chains delaying critical resources

Example:

performance_analyze_insight(insightSetId: "<id-from-trace>", insightName: "LCPBreakdown")

Key thresholds (good/needs-improvement/poor):

  • TTFB: < 800ms / < 1.8s / > 1.8s
  • FCP: < 1.8s / < 3s / > 3s
  • LCP: < 2.5s / < 4s / > 4s
  • INP: < 200ms / < 500ms / > 500ms
  • TBT: < 200ms / < 600ms / > 600ms
  • CLS: < 0.1 / < 0.25 / > 0.25
  • Speed Index: < 3.4s / < 5.8s / > 5.8s

Phase 3: Network Analysis

List all network requests to identify optimization opportunities:

list_network_requests(resourceTypes: ["Script", "Stylesheet", "Document", "Font", "Image"])

Look for:

  1. Render-blocking resources: JS/CSS in <head> without async/defer/media attributes
  2. Network chains: Resources discovered late because they depend on other resources loading first (e.g., CSS imports, JS-loaded fonts)
  3. Missing preloads: Critical resources (fonts, hero images, key scripts) not preloaded
  4. Caching issues: Missing or weak Cache-Control, ETag, or Last-Modified headers
  5. Large payloads: Uncompressed or oversized JS/CSS bundles
  6. Unused preconnects: If flagged, verify by checking if ANY requests went to that origin. If zero requests, it's definitively unused—recommend removal. If requests exist but loaded late, the preconnect may still be valuable.

For detailed request info:

get_network_request(reqid: <id>)

Phase 4: Accessibility Snapshot

Take an accessibility tree snapshot:

take_snapshot(verbose: true)

Flag high-level gaps:

  • Missing or duplicate ARIA IDs
  • Elements with poor contrast ratios (check against WCAG AA: 4.5:1 for normal text, 3:1 for large text)
  • Focus traps or missing focus indicators
  • Interactive elements without accessible names

Phase 5: Codebase Analysis

Skip if auditing a third-party site without codebase access.

Analyze the codebase to understand where improvements can be made.

Detect Framework & Bundler

Search for configuration files to identify the stack:

Tool Config Files
Webpack webpack.config.js, webpack.*.js
Vite vite.config.js, vite.config.ts
Rollup rollup.config.js, rollup.config.mjs
esbuild esbuild.config.js, build scripts with esbuild
Parcel .parcelrc, package.json (parcel field)
Next.js next.config.js, next.config.mjs
Nuxt nuxt.config.js, nuxt.config.ts
SvelteKit svelte.config.js
Astro astro.config.mjs

Also check package.json for framework dependencies and build scripts.

Tree-Shaking & Dead Code

  • Webpack: Check for mode: 'production', sideEffects in package.json, usedExports optimization
  • Vite/Rollup: Tree-shaking enabled by default; check for treeshake options
  • Look for: Barrel files (index.js re-exports), large utility libraries imported wholesale (lodash, moment)

Unused JS/CSS

  • Check for CSS-in-JS vs. static CSS extraction
  • Look for PurgeCSS/UnCSS configuration (Tailwind's content config)
  • Identify dynamic imports vs. eager loading

Polyfills

  • Check for @babel/preset-env targets and useBuiltIns setting
  • Look for core-js imports (often oversized)
  • Check browserslist config for overly broad targeting

Compression & Minification

  • Check for terser, esbuild, or swc minification
  • Look for gzip/brotli compression in build output or server config
  • Check for source maps in production builds (should be external or disabled)

Output Format

Present findings as:

  1. Core Web Vitals Summary - Table with metric, value, and rating (good/needs-improvement/poor)
  2. Top Issues - Prioritized list of problems with estimated impact (high/medium/low)
  3. Recommendations - Specific, actionable fixes with code snippets or config changes
  4. Codebase Findings - Framework/bundler detected, optimization opportunities (omit if no codebase access)

歷程

v1.0.0 bootstrap
v1.1.0 baseline-verified f96bff7
v1.1.0 license-refresh f96bff7
v1.1.1 upstream-update 626547c