Web performance
Skill ahtishamshahzad/agent_dev_flow/.ai/skills/web/web-performance
Use to plan and fix web performance from measurements — Core Web Vitals (LCP/CLS/INP) budgets, code splitting, image/font loading, bundle analysis, caching/CDN, rendering-strategy impact, and dashboard-specific costs (tables, charts). Measure first; fix the measured bottleneck; validate in a production build.From its SKILL.md
npx -y skills add ahtishamshahzad/agent_dev_flow --skill web-performanceAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.3 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Web Performance
Purpose
Keep the app fast by working from measurements: set budgets on Core Web Vitals, find the actual bottleneck (lab + field data), apply the matching fix, and validate in a representative production build. The web arm of ../../performance-review — no speculative optimization.
When to Use
- When metrics regress, users report slowness, or budgets are being set for a new app.
- Before release of performance-sensitive surfaces (public pages feeding SEO, heavy dashboards).
- Not for backend query tuning (that's the backend's performance work — coordinate via
../../performance-review).
Inputs
- Measurements: Lighthouse runs, Web Vitals field data (if instrumented), bundle analysis output.
- Rendering strategy (
nextjs-foundation/vite-react-foundation) and deployment/CDN setup (web-deployment). - The pages/flows that matter most (public landing vs dashboard grid have different budgets).
Discovery Questions
- What do lab and field numbers actually show, per key page (LCP element, CLS sources, INP interactions)?
- What are the budgets — and are they differentiated (marketing page vs internal dashboard)?
- What dominates the bundle (analyze, don't guess), and what loads eagerly that could split?
- Are images/fonts optimized (sizing, formats, preload of the LCP asset,
font-display)?
Responsibilities
- Set budgets per surface: LCP/CLS/INP targets, bundle-size ceilings, and where they're enforced (CI check, review).
- Measure before fixing: reproduce the slow path in a production build; identify the specific cause (LCP asset, hydration cost, long task, layout shift source, chatty requests).
- Plan the standard levers where measurements point at them: route/component code splitting and lazy loading; image optimization (modern formats, dimensions, responsive sizes, priority on the LCP image); font strategy (subset, preload,
font-display: swap); caching/CDN headers (web-deployment); rendering-strategy adjustments (static/ISR over SSR where content allows,nextjs-foundation). - Cover dashboard-specific costs: table virtualization thresholds (
dashboard-tables), chart rendering weight (dashboard-reporting), re-render storms from state misplacement (web-state-management). - Validate after fixing: re-measure the same metric in the same conditions; keep the before/after numbers.
Required Workflow
- Measure (lab + field where available) and record the baseline per key page.
- Set/confirm budgets per surface.
- Diagnose the top bottleneck to a specific cause.
- Apply the matching fix — smallest change that moves the metric.
- Re-measure in a production build; record before/after or "unverified until run."
Decision Rules
- No optimization without a measurement naming the bottleneck.
- Field data outranks lab data when they disagree.
- The fix must match the diagnosis — code splitting doesn't fix an unoptimized LCP image.
- Regressions are prevented by budgets in CI, not by memory.
Rules
- Performance claims cite numbers and conditions; "feels faster" is not a result.
- Dev-mode measurements don't count — production builds only.
- Don't trade correctness or accessibility for a metric (e.g., skeleton flashes that game LCP but hurt CLS/users).
Anti-Patterns
- Memoizing everything while the real cost is a 4 MB hero image.
- SSR everywhere "for speed" when static generation serves the same content.
- One global budget applied identically to a landing page and an admin grid.
- Optimizing once and never watching the metric again.
Validation Checklist
- Baseline measured per key page (lab; field where available).
- Budgets set per surface and enforced somewhere (CI/review).
- Bottlenecks diagnosed to specific causes.
- Fixes matched to diagnoses; scope minimal.
- Before/after measurements recorded in production builds (or marked unrun).
Definition of Done
Recorded budgets, a measured baseline, diagnosed bottlenecks with matched fixes, and before/after production-build measurements — with regression protection wired into CI where budgets exist.
Related Skills
../../performance-review, nextjs-foundation, vite-react-foundation, web-deployment, dashboard-tables, dashboard-reporting, web-state-management, web-seo.
Related Knowledge
../../../knowledge/ (traffic patterns, device/network profile of users).
Related References
../../../references/web/ (perf run logs — when populated).
Context Loading Guidance
- Requires: measurements, rendering strategy, key-page list.
- Does not require: full source tree, unrelated feature skills.
- May load:
web-deploymentfor caching/CDN;dashboard-tables/dashboard-reportingfor dashboard costs. - Stop when: fixes are validated by re-measurement (or explicitly marked unrun).
Token Efficiency Guidance
Carry numbers, not narratives: metric → page → baseline → target → after. Analyze the top bottleneck at a time instead of auditing everything.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.