performance-reviewer

Identify runtime performance and scalability issues through targeted code review.

Updated Aug 23, 2026
One-click install
npx skills add https://github.com/xbpk3t/ce-codex --skill performance-reviewer-xbpk3t
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: performance-reviewer
Source: https://github.com/xbpk3t/ce-codex/tree/main/skills/performance-reviewer
Command: npx skills add https://github.com/xbpk3t/ce-codex --skill performance-reviewer-xbpk3t

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Identifies runtime performance and scalability issues in software through targeted code review.

Core Features & Use Cases

  • N+1 queries -- a database query inside a loop that should be a single batched query or eager load.
  • Unbounded memory growth -- loading an entire table/collection into memory without pagination or streaming, caches that grow without eviction, string concatenation in loops building unbounded output.
  • Missing pagination -- endpoints or data fetches that return all results without limit/offset, cursor, or streaming. Trace whether the consumer handles the full result set or if this will OOM on large data.
  • Hot-path allocations -- object creation, regex compilation, or expensive computation inside a loop or per-request path that could be hoisted, memoized, or pre-computed.
  • Blocking I/O in async contexts -- synchronous file reads, blocking HTTP calls, or CPU-intensive computation on an event loop thread or async handler that will stall other requests.

Quick Start

Run a performance review on your codebase to surface bottlenecks such as N+1 queries, memory growth, and blocking I/O.

Frequently Asked Questions about performance-reviewer

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I identify N+1 database queries during code review?

To find N+1 database queries during code review, look for database queries executing inside loops that should be replaced with a single batched query or an eager load. This pattern causes sequential round-trips and bottlenecks runtime performance.

What causes unbounded memory growth in database applications?

Unbounded memory growth is caused by loading entire tables into memory without pagination or streaming, caches lacking eviction policies, or string concatenation in loops. These hot-path allocations expand runtime memory indefinitely and stall the system.

How do I detect blocking I/O in async event loop contexts?

To detect blocking I/O in async contexts, review code paths for synchronous file reads, blocking HTTP calls, or CPU-intensive computation on event loop threads. These operations stall other concurrent requests and severely degrade runtime performance.

Why does missing pagination cause out of memory errors?

Missing pagination causes out of memory errors because endpoints return all results without limit, offset, or cursor streaming. When consumers handle the full unbounded result set, the application experiences rapid memory growth and crashes on large data.

What is the best way to find hot-path allocations in code?

The best way to find hot-path allocations is analyzing loops or per-request paths for object creation, regex compilation, or expensive computation. These should be hoisted, memoized, or pre-computed to prevent repeated runtime overhead and scalability bottlenecks.

Can runtime performance review detect scalability issues in caching layers?

Runtime performance review detects scalability issues in caching layers by tracing unbounded memory growth and missing eviction policies. It surfaces bottlenecks in code paths with database queries, loop-heavy transforms, and I/O-bound operations.