PE

performance-profiling

Systematic measurement-driven optimization for web performance and rendering.

Install

mkdir -p .claude/skills/performance-profiling-harmitx7 && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/9751" && unzip -o skill.zip -d .claude/skills/performance-profiling-harmitx7 && rm skill.zip

Installs to .claude/skills/performance-profiling-harmitx7

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Performance profiling mastery. Core Web Vitals (LCP, CLS, INP), Lighthouse auditing, JavaScript profiling, React rendering optimization, bundle analysis, memory leak detection, database query profiling (EXPLAIN ANALYZE), load testing, and performance budgets. Use when optimizing performance, debugging slow pages, or establishing performance standards.
353 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Advanced

Key capabilities

  • →Measure Core Web Vitals
  • →Analyze JS bundles
  • →Profile database queries
  • →Detect memory leaks

How it works

It guides users through measuring vitals, analyzing bundles, and profiling database queries.

Inputs & outputs

You give it
Slow page or query
You get back
Performance optimization plan

When to use performance-profiling

  • →Optimizing page load speed
  • →Fixing layout shifts
  • →Reducing bundle size
  • →Profiling slow database queries

About this skill

Performance Profiling — Measurement-Driven Optimization

Mandatory Pre-Flight Context Inspection

Before reading, generating, or refactoring code in the performance-profiling domain, inspect these 5 critical parameters:

  1. System Boundaries & Dependencies: Verify that all required dependencies exist in target package manifests and environment paths.
  2. Runtime Context & Platform Invariants: Confirm target platform constraints (Node.js, Browser, Mobile OS, Edge runtime) before applying APIs.
  3. Execution Guardrails: Identify potential side-effects, state mutations, and unhandled asynchronous exceptions.
  4. Validation & Type Contracts: Validate input data schemas and strict type constraints across all module interfaces.
  5. Observability & Proof of Execution: Ensure execution produces tangible verification signals (terminal output, tests, metrics).

Activation Boundaries

  • Activate when: Use when executing, coordinating, planning, or reviewing performance profiling agent workflows, cognitive loops, and architecture standards.
  • DO NOT activate when: The task falls outside the performance-profiling domain or is managed by a different dedicated specialist agent.

🔁 Multi-Pass Execution Protocol

PassPhaseCore ActionAdaptive Depth
Pass 1UnderstandDeconstruct the user's explicit objective, implicit requirements, and platform constraints.Fast / Standard / Deep
Pass 2PlanDecompose task into smallest logical steps; map dependencies, affected files, and tool calls.Standard / Deep
Pass 3ExecuteImplement solution with production-grade craft, zero placeholders, and strict typing.All Modes
Pass 4VerifyRun linters, unit tests, or compiler checks to validate structural correctness.All Modes
Pass 5Attack & FalsifyPerform adversarial search for edge-case failures, counterexamples, race conditions, and traps.Standard / Deep
Pass 6HardenEliminate discovered friction, optimize performance, and harden error boundaries.Standard / Deep
Pass 7Quality GateEnforce Verification-Before-Completion (VBC) with concrete terminal proof before finalizing.All Modes

🛠️ Technical Architecture & Reference Recipes


Core Web Vitals

LCP (Largest Contentful Paint) → Loading speed
  ✅ Good: ≤ 2.5s  │  ⚠️ Needs work: 2.5-4s  │  ❌ Poor: > 4s
  What: Time until the largest visible element renders
  Fix: Optimize images, preload fonts, reduce server time

INP (Interaction to Next Paint) → Responsiveness
  ✅ Good: ≤ 200ms  │  ⚠️ Needs work: 200-500ms  │  ❌ Poor: > 500ms
  What: Delay between user interaction and visual response
  Fix: Break long tasks, use web workers, defer non-critical JS

CLS (Cumulative Layout Shift) → Visual stability
  ✅ Good: ≤ 0.1  │  ⚠️ Needs work: 0.1-0.25  │  ❌ Poor: > 0.25
  What: How much the page layout shifts unexpectedly
  Fix: Set explicit dimensions on images/ads, font-display: swap

TTFB (Time to First Byte) → Server responsiveness
  ✅ Good: ≤ 800ms
  Fix: CDN, caching, optimize database queries, use edge

// ❌ HALLUCINATION TRAP: FID is deprecated. Use INP (Interaction to Next Paint).
// FID only measured the FIRST interaction. INP measures ALL interactions.

JavaScript Profiling

Bundle Analysis

# Analyze what's in your JavaScript bundle
npx vite-bundle-visualizer   # Vite
npx @next/bundle-analyzer    # Next.js

# Key targets:
# Total JS < 200KB (gzipped) for initial load
# No single dependency > 50KB (gzipped)
# Tree-shaking working (no dead code)
// Common bundle bloat sources:
// ❌ import _ from "lodash";           // 72KB — imports everything
// ✅ import debounce from "lodash/debounce";  // 1KB — specific import

// ❌ import { format } from "date-fns";  // may import entire library
// ✅ import { format } from "date-fns/format";  // specific import

// ❌ import moment from "moment";        // 67KB + locales
// ✅ Use native Intl.DateTimeFormat or date-fns (tree-shakeable)

React Rendering Profiling

// React DevTools Profiler — find unnecessary re-renders

// 1. Why Did You Render (development tool)
// npm i @welldone-software/why-did-you-render -D

// 2. Manual render tracking
const RenderCounter = ({ label }: { label: string }) => {
  const renderCount = useRef(0);
  renderCount.current++;
  console.log(`[${label}] rendered ${renderCount.current} times`);
  return null;
};

// 3. React.memo — prevent re-renders when props haven't changed
const ExpensiveList = React.memo(function ExpensiveList({ items }: Props) {
  return items.map((item) => <ListItem key={item.id} {...item} />);
});

// 4. useMemo / useCallback — memoize expensive computations
const sortedItems = useMemo(
  () => items.toSorted((a, b) => a.name.localeCompare(b.name)),
  [items],
);

Memory Leak Detection

// Common memory leaks in JavaScript:
// 1. Event listeners not cleaned up
useEffect(() => {
  const handler = () => console.log('resize');
  window.addEventListener('resize', handler);
  return () => window.removeEventListener('resize', handler); // ✅ cleanup
}, []);

// 2. Timers not cleared
useEffect(() => {
  const interval = setInterval(pollData, 5000);
  return () => clearInterval(interval); // ✅ cleanup
}, []);

// 3. AbortController not used for fetch
useEffect(() => {
  const controller = new AbortController();
  fetch('/api/data', { signal: controller.signal })
    .then(res => res.json())
    .then(setData)
    .catch(e => {
      if (e.name !== 'AbortError') throw e;
    });
  return () => controller.abort(); // ✅ cancel on unmount
}, []);

// Detection: Chrome DevTools → Memory → Heap Snapshot
// Take snapshot, perform action, take another, compare growth

Image Optimization

<!-- Modern image loading -->
<img
  src="hero.webp"
  srcset="hero-480.webp 480w, hero-768.webp 768w, hero-1200.webp 1200w"
  sizes="(max-width: 768px) 100vw, 50vw"
  width="1200"
  height="800"
  loading="lazy"
  decoding="async"
  alt="Product hero"
  fetchpriority="high"
/>

<!-- Rules:
  - ALWAYS set width and height (prevents CLS)
  - Use WebP/AVIF (30-50% smaller than JPEG)
  - loading="lazy" for below-the-fold images
  - fetchpriority="high" for LCP image
  - Use srcset for responsive images
  - Serve from CDN with auto-format negotiation
-->

Database Query Profiling

-- Always EXPLAIN before optimizing
EXPLAIN ANALYZE SELECT u.*, COUNT(p.id) AS post_count
FROM users u
LEFT JOIN posts p ON p.author_id = u.id
WHERE u.is_active = true
GROUP BY u.id
ORDER BY post_count DESC
LIMIT 20;

-- Look for:
-- Seq Scan → needs an index (on large tables)
-- Nested Loop → consider index or different join strategy
-- Sort → can an index provide sorted data?
-- execution time > 100ms → optimize

-- Common fixes:
-- Add index: CREATE INDEX idx_posts_author ON posts (author_id);
-- Use partial index: CREATE INDEX idx_active_users ON users (id) WHERE is_active;
-- Avoid SELECT *: SELECT only needed columns
-- Paginate with cursor: WHERE id > $cursor ORDER BY id LIMIT 20

Performance Budgets

// Lighthouse CI budget
// lighthouserc.js
module.exports = {
  ci: {
    assert: {
      assertions: {
        'categories:performance': ['error', { minScore: 0.9 }],
        'first-contentful-paint': ['error', { maxNumericValue: 1500 }],
        'largest-contentful-paint': ['error', { maxNumericValue: 2500 }],
        'cumulative-layout-shift': ['error', { maxNumericValue: 0.1 }],
        'total-byte-weight': ['error', { maxNumericValue: 500000 }],
      },
    },
  },
};
Performance budget targets:
  Total JS (gzipped):     < 200KB
  Total CSS (gzipped):    < 50KB
  Total page weight:      < 500KB
  LCP:                    < 2.5s
  INP:                    < 200ms
  CLS:                    < 0.1
  TTFB:                   < 800ms
  Time to Interactive:    < 3.8s

🚨 Edge-Case & Failure Mode Matrix

ScenarioRiskProduction Mitigation
Empty or Null InputsUnhandled exception or unexpected rendering collapseEnforce fallback guards, optional chaining, and explicit empty state handlers
Network Timeout / LatencyHanging operations or duplicate side-effectsImplement bounded abort controllers, exponential backoff, and idempotency keys
Concurrency / Race ConditionsStale state overwrite or inconsistent data mutationsUse atomic transactions, mutex locking, or cancel-on-resubmit controls
Invalid Schema / Malformed PayloadDownstream runtime errors or security injectionValidate boundary payloads with Zod/Pydantic schemas prior to execution
Resource / Memory SaturationOOM errors, frame drops, or memory leaksClean up listeners, cancel active timers, and enforce pagination/virtualization

🤖 LLM-Specific Traps Table

Anti-PatternWhat AI Commonly Does WrongWhat Is Actually Correct
Hallucinated Tool CapabilitiesAssuming an external library or CLI command exists without verificationRun a verification check or verify package.json before referencing tools
Premature Completion ClaimDeclaring a task finished because code was generated without verificationExecute tests, linters, or terminal commands to provide concrete proof
Context Bloat DumpingPasting entire multi-thousand-line files into prompt contextExtract targeted excerpts, symbols, and signatures to preserve tokens

🏛️ Tribunal Verification & Guardrails

Active Reviewers: orchestrator · agent-organizer · logic-reviewer Slash Command: /review or /tribunal-full

🔬 Evidence Standard (Tri-State Verification)

Every finding, audit statement, or completion claim must classify its factual certainty:

  • [OBSERVED]: Directly confirmed in the codebase or ve

Content truncated.

When not to use it

  • →When profiling tools are unavailable

Prerequisites

LighthouseDevTools

Limitations

  • →FID is deprecated
  • →Total JS < 200KB for initial load

How it compares

It focuses on measurement-driven optimization rather than guesswork.

Compared to similar skills

performance-profiling side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
performance-profiling (this skill)03moReviewAdvanced
nextjs-developer3284moNo flagsAdvanced
frontend-developer275moNo flagsIntermediate
web-performance-optimization108moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

More by Harmitx7

View all by Harmitx7 →

i18n-localization

Harmitx7

Internationalization (i18n) and localization mastery. Abstracting hardcoded strings, managing JSON/YAML translation dictionaries, bidirectional routing (RTL support for Arabic/Hebrew), Pluralization algorithms, date/currency formatting, and SSR locale detection in Next.js/React. Use when preparing a

00

code-review-checklist

Harmitx7

Code review guidelines covering code quality, security, and best practices.

00

web-accessibility-auditor

Harmitx7

Web Accessibility (a11y) mastery. WCAG 2.2 AA standards, semantic HTML, ARIA attributes, keyboard navigation, focus management, screen reader compatibility, color contrast, and dynamic content announcements. Use when building UI components or auditing frontend code for accessibility compliance.

00

data-validation-schemas

Harmitx7

Data validation and schema design mastery. Zod, Yup, Joi, Valibot, and Pydantic schema design, runtime type checking, API boundary validation, form validation patterns, DTO design, schema composition, error message formatting, schema evolution strategies, and coercion rules. Use when validating user

00

plan-writing

Harmitx7

Technical design and implementation planning mastery. Writing structured execution checklists, dependency mapping, establishing rollback protocols, segmenting monolithic tasks, writing ADRs (Architecture Decision Records), and defining verification criteria. Use when transitioning from ideation to c

00

database-design

Harmitx7

Database design principles and decision-making. Schema design, indexing strategy, ORM selection, serverless databases.

00

You might also like

Search skills

Search the agent skills registry