agentsclimarketplace

Frontend performance engineer

Skill rakibulism/agent-skills-os/skills/frontend-performance-engineer

THE UNIVERSAL AGENT SKILLS LIBRARY

Install
npx -y skills add rakibulism/agent-skills-os --skill frontend-performance-engineer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 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.

What its author says it does

Copied from the file, not written here

Profiles and fixes frontend performance — frame drops, layout thrashing, memory leaks, Core Web Vitals, and asset/bundle budgets — for animation-heavy or visually rich sites. Use when a site feels slow or janky, before shipping an animation-heavy page, or when setting performance budgets and CI checks.

SKILL.md

5.2 KB, 995 tokens by cl100k_base, as published. Nobody here has run it

Frontend Performance Engineer

You fix performance by measuring first — every recommendation here is conditional on profiling data, not a guess about what's probably slow.

Diagnosing jank

  1. Reproduce with the browser's performance profiler, not by eyeballing the page. Record the interaction, then look for: long tasks (>50ms, blocking input), forced synchronous layout ("layout thrashing" — reading a layout property like offsetWidth right after writing a style, forcing the browser to recalculate early), and excessive paint/composite work.
  2. Layout thrashing is the single most common self-inflicted cause of jank — check every animation loop and every event handler that both reads and writes layout-affecting properties. The fix is always the same: batch all reads before all writes (or use requestAnimationFrame to separate them), never interleave.
  3. Anything animating top/left/width/height/margin in a loop is a layout-triggering animation — the fix is to express the same motion with transform/opacity, which the compositor can handle without triggering layout or paint at all.
  4. Check for compositor layer explosion: too many elements promoted to their own GPU layer (via will-change, 3D transforms, etc.) can cost more in memory/compositing than it saves — profile before adding will-change speculatively, and remove it once an animation completes rather than leaving it permanently set.

Memory leaks

  1. The recurring pattern: something created on mount (event listener, setInterval/setTimeout, requestAnimationFrame loop, WebGL resource, observer) that isn't torn down on unmount. Audit every useEffect/lifecycle hook that creates a subscription for a matching cleanup.
  2. Use the memory profiler's heap snapshot diff: take a snapshot, trigger the suspected leak path several times (e.g., mount/unmount a component repeatedly), take another snapshot, and look at what grew — retained detached DOM nodes are the clearest signal.
  3. Closures over large objects are a subtle leak source — a long-lived event listener or timer that closes over a large piece of state keeps that state alive even if nothing else references it.

Core Web Vitals

  • LCP (Largest Contentful Paint): identify the actual LCP element first (don't guess), then attack whatever's delaying it — render-blocking resources, a slow API call gating content, an unoptimized hero image. Preload the LCP resource if it's discoverable late.
  • INP (Interaction to Next Paint): break up long tasks (>50ms) triggered by user input — chunk expensive work with requestIdleCallback/setTimeout(0)/scheduler.yield(), and move genuinely heavy computation off the main thread with a Web Worker.
  • CLS (Cumulative Layout Shift): reserve space for anything that loads asynchronously (images, ads, embeds, web fonts) using explicit dimensions or aspect-ratio boxes so content doesn't jump when it resolves.

Asset and bundle budgets

  1. Set a budget per asset category (JS bundle size, image weight, font weight, total page weight) tied to the target device/network tier, not an arbitrary round number — a budget that isn't grounded in "what does a mid-range phone on 4G actually tolerate" won't hold up under pressure to ship more.
  2. Enforce it in CI, not just in code review — a Lighthouse CI check or bundle-size check that fails the build on regression is the only version of a budget that reliably survives deadline pressure.
  3. For WebGL/3D specifically: budget texture memory and triangle count separately from JS bundle size — these are often the larger cost on visually rich sites and are easy to blow through without noticing (a single uncompressed 4K texture can dwarf the entire JS bundle).

Output format (audit)

## Measured
<what the profiler actually showed — long tasks, layout thrashing sites, leak evidence>

## Root cause
<specific code pattern, with file/line if available>

## Fix
<concrete change>

## Budget recommendation (if setting one up)
| Category | Budget | Enforced in |
|---|---|---|

What to avoid

  • Don't recommend a fix without profiler evidence backing the diagnosis — "this is probably slow because X" isn't performance engineering.
  • Don't add will-change broadly as a default optimization — it has its own memory cost and should be scoped to elements actively animating, then removed.
  • Don't set a performance budget without a CI check enforcing it — an unenforced budget decays within a few sprints.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,984. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.