agentsclimarketplace

Audit performance

Skill kensaurus/cursor-kenji/skills/audit-performance

🦖Curated Cursor AI agent skills, slash commands, MCP configs, subagents & rules for full-stack dev — React 19, Next.js 15, Supabase, Tailwind v4, TypeScript

Install
npx -y skills add kensaurus/cursor-kenji --skill audit-performance

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

  • 6 stars6 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

Audit and optimize application performance. Use when optimizing performance, debugging slow code, reducing load times, or when the user mentions performance issues. Integrates Sentry MCP for production performance data (Web Vitals, slow transactions), Firecrawl for researching current optimization techniques, and automated codebase analysis.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

7.4 KB, as published. Nobody here has run it

Performance Audit Skill

Systematic approach to finding and fixing performance issues. Research-driven, data-backed.

Step 0: Gather Performance Data

Before optimizing, measure. Collect data from multiple sources.

Production Data (Sentry)

If Sentry performance monitoring is enabled, fetch real production metrics:

sentry:search_events
{
 "organizationSlug": "<ORG_SLUG>",
 "projectSlug": "<PROJECT_SLUG>",
 "regionUrl": "<REGION_URL>",
 "query": "slowest transactions by p95 duration in last 7 days",
 "limit": 20
}
sentry:search_events
{
 "organizationSlug": "<ORG_SLUG>",
 "projectSlug": "<PROJECT_SLUG>",
 "regionUrl": "<REGION_URL>",
 "query": "web vitals LCP INP CLS performance scores in last 7 days",
 "limit": 20
}

Check for performance-related issues:

sentry:search_issues
{
 "organizationSlug": "<ORG_SLUG>",
 "projectSlugOrId": "<PROJECT_SLUG>",
 "regionUrl": "<REGION_URL>",
 "query": "performance issues slow queries N+1 in last 30 days",
 "limit": 20
}

Research Current Benchmarks

Fetch current performance targets:

firecrawl:firecrawl_search
{
 "query": "web vitals thresholds good score <current year>",
 "limit": 3,
 "sources": [{ "type": "web" }]
}

Performance Targets

Core Web Vitals

MetricGoodNeeds WorkPoor
LCP (Largest Contentful Paint)<2.5s2.5-4s>4s
INP (Interaction to Next Paint)<200ms200-500ms>500ms
CLS (Cumulative Layout Shift)<0.10.1-0.25>0.25

Other Key Metrics

  • TTFB (Time to First Byte): <200ms
  • FCP (First Contentful Paint): <1.8s
  • TTI (Time to Interactive): <3.8s

Frontend Performance Audit

Bundle Size Analysis

npm run build -- --analyze # framework-specific
npx source-map-explorer 'dist/**/*.js'

Checklist:

  • Total bundle <200KB gzipped
  • No single chunk >100KB gzipped
  • Tree shaking working (no unused exports in bundle)
  • Heavy libraries lazy-loaded (charts, editors, maps)
  • No moment.js (use date-fns or dayjs)
  • No lodash full import (use lodash-es or specific imports)

Code Splitting

  • Route-based splitting (each page loads its own chunk)
  • Component-level splitting for heavy components (lazy() / dynamic())
  • Below-fold content deferred

Image Optimization

  • WebP/AVIF format used (not PNG/JPEG for photos)
  • Images sized appropriately (not serving 4K to mobile)
  • loading="lazy" on below-fold images
  • Responsive srcSet for different screen sizes
  • Image CDN used (Cloudinary, imgix, Vercel Image Optimization)

React Performance (if applicable)

  • No unnecessary re-renders (React DevTools Profiler)
  • memo() on expensive components that receive stable props
  • useMemo() for expensive computations
  • useCallback() for callbacks passed to memoized children
  • Long lists virtualized (react-window, @tanstack/react-virtual)
  • No inline object/array creation in JSX props
  • Context providers scoped narrowly (not wrapping entire app for local state)

CSS Performance

  • No layout thrashing (reads before writes)
  • Animations use transform/opacity (GPU-accelerated)
  • No @import chains (bundled instead)
  • Critical CSS inlined for above-fold content
  • Fonts subset and preloaded (<link rel="preload">)

Backend Performance Audit

Database Queries

N+1 Detection:

// BAD: N+1
const users = await User.findAll();
for (const user of users) {
 const orders = await Order.findByUserId(user.id);
}

// GOOD: eager loading
const users = await User.findAll({ include: [Order] });

Checklist:

  • N+1 queries eliminated (eager loading, joins, batch loading)
  • Indexes on frequently queried columns (WHERE, JOIN, ORDER BY)
  • SELECT only needed columns (no SELECT *)
  • Pagination on all list endpoints
  • Connection pooling configured
  • Slow query logging enabled

Index verification:

EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = '123';

API Response Optimization

  • Response compression enabled (gzip/brotli)
  • Appropriate cache headers (Cache-Control, ETag)
  • No over-fetching (return only what the client needs)
  • Pagination for list endpoints
  • Response time <200ms for p95

Caching Strategy

LayerToolTTLUse For
BrowserCache-Control headersVariesStatic assets, API responses
CDNVercel/CloudFront/Cloudflare1h-1dStatic pages, images
APIRedis/Memcached5m-1hExpensive queries, computed data
ORMQuery cache1m-5mRepeated identical queries

Network Optimization

  • CDN for static assets
  • HTTP/2 or HTTP/3 enabled
  • Preconnect to critical origins (<link rel="preconnect">)
  • DNS prefetch for third-party domains
  • API calls batched where possible (GraphQL, DataLoader)

Research-Driven Optimization

For specific performance bottlenecks, research current solutions:

firecrawl:firecrawl_search
{
 "query": "<framework> <specific bottleneck> performance optimization <current year>",
 "limit": 5,
 "sources": [{ "type": "web" }]
}

Then deep-read the best result:

firecrawl:firecrawl_scrape
{
 "url": "<best-result-url>",
 "formats": ["markdown"],
 "onlyMainContent": true
}

Check official framework docs via Context7:

context7:resolve-library-id
{
 "libraryName": "<framework>",
 "query": "performance optimization"
}

Quick Wins (Highest Impact, Lowest Effort)

IssueSolutionImpact
Large bundleCode split routes, lazy load heavy libsHigh
Slow imagesWebP + lazy load + responsiveHigh
No cachingAdd Cache-Control headersHigh
N+1 queriesEager load / batchHigh
Missing indexesAdd database indexesHigh
Unoptimized fontsSubset + preload + font-display:swapMedium
No compressionEnable gzip/brotliMedium
Expensive re-rendersReact.memo + useMemoMedium
Layout shiftsSet explicit width/height on images/embedsMedium

Output: Performance Audit Report

## Performance Audit: [Project Name]

### Production Metrics (from Sentry)
- LCP: [value] — [good/needs work/poor]
- INP: [value] — [good/needs work/poor]
- CLS: [value] — [good/needs work/poor]
- Slowest transactions: [list with p95 times]

### Critical Issues (fix immediately)
| # | Area | Issue | Impact | Fix |
|---|------|-------|--------|-----|
| 1 | DB | N+1 on /users endpoint | p95 = 2.3s | Eager load orders relation |

### Optimizations (prioritized)
| # | Area | Issue | Impact | Effort | Fix |
|---|------|-------|--------|--------|-----|
| 1 | FE | Bundle 450KB gzipped | High | Low | Code split routes |

### Already Optimized
- [list of performance areas that are well-implemented]

### Monitoring Recommendations
- [what to add to track performance over time]

### Research Sources
- [URL] — [what optimization pattern it provided]

Keep looking

Skills are one crate of 328,083. 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.