performance-optimizer
Skill2 starsChanged 4 months agoMITView on GitHub
Expert performance analysis and optimization guidance. Use when the user asks about frontend optimization, API latency, database optimization, memory leaks, CPU bottlenecks, or profiling.
17 other projects use a version of this.
Adopted by
Most recently taken up by
- oivanfelipe/claude-skillstheir own version, first seen Nov 8, 2026
- Domenico-Tenace-Open-Labs/web-dev-agenttheir own version, first seen Nov 1, 2026
- mrhinkle/VibeCoding-a-Websitetheir own version, first seen Nov 1, 2026
- saksham-techlabs/ai-builder-skills-packtheir own version, first seen Oct 25, 2026
- neeraj181-dot/ClaudeSkillstheir own version, first seen Aug 25, 2026
- TheHiddenDeveloper/jarvis-skillstheir own version, first seen Aug 19, 2026
Used with
Projects with it also use observability-engineer, security-auditor and 4 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
xfstudioSkillobservability-engineer
Build production-ready monitoring, logging, and tracing systems.
Also in 3 projects that use this
nahisahoSkillsecurity-auditor
security-auditor skill
Also in 5 projects that use this
lodetomasiSkilldatabase-optimizer
Database performance optimization: N+1 detection, query analysis, indexing, and ORM tuning
Also in 3 projects that use this
AutumnsGroveSkillapi-designer
Design and document RESTful and GraphQL APIs with OpenAPI/Swagger specifications, authentication patterns, versioning strategies, and best practices. Use for: (1) Creating API specifications, (2) Designing REST endpoints, (3) GraphQL schema design, (4) API authentication and authorization, (5) API versioning strategies, (6) Documentation generation
Also in 3 projects that use this
xenitV1Skillclean-code
Pragmatic coding standards - concise, direct, no over-engineering, no unnecessary comments
Also in 3 projects that use this
OpenAISkilltest-driven-development
Use when implementing any feature or bugfix, before writing implementation code
Also in 3 projects that use this
Other versions17 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 17
- nahisaho/MUSUBI★ 74same name
- glincker/claude-code-marketplace★ 37same name
- mrhinkle/VibeCoding-a-Website★ 17same name
- nihao555-hub/claude-code-agent-skills★ 4same name
- Domenico-Tenace-Open-Labs/web-dev-agent★ 3same name
- moses607/socialforge★ 3same name
- mehdiozdemir/awesome-agent-skills★ 2same name
- ronrefael/sonde★ 2same name
- rudrathegreat/Astronomy-AI-Toolkit★ 2same name
- lschGSL/claude_code_template★ 1same name
7 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository48 other files it gives its agents.
- agent-memorySkill
- ai-engineerSkill
- api-designSkill
- autoplanSkill
- backend-devSkill
- benchmarkSkill
- brand-guidelinesSkill
- code-reviewerSkill
- commit-messageSkill
- database-architectSkill
- data-engineerSkill
- debuggerSkill
- design-explorerSkill
- devex-engineerSkill
- devops-platformSkill
- doc-coauthoringSkill
- forward-deployment-engineerSkill
- frontend-designSkill
- internal-commsSkill
- java-developmentSkill
- land-and-deploySkill
- mcp-builderSkill
- office-hoursSkill
- pdfSkill
- plan-ceo-reviewSkill
- plan-design-reviewSkill
- plan-eng-reviewSkill
- pptxSkill
- product-engineerSkill
- prompt-engineerSkill
- python-developmentSkill
- qa-engineerSkill
- react-developmentSkill
- release-engineerSkill
- research-agentSkill
- retro-engineerSkill
- safety-guardrailsSkill
- security-engineerSkill
- skill-creatorSkill
- spec-authorSkill
- sre-canarySkill
- system-designSkill
- technical-writerSkill
- test-writerSkill
- theme-factorySkill
- typescript-developmentSkill
- webapp-testingSkill
- xlsxSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
19 rules. 0 are common, 11 are distinctive, and 8 are very specific to this project.
0
Common
Most of the 13 edited versions we read keep these.
11
Distinctive
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Before touching any code:
- Very specific: line 53
Use next/image or equivalent — automatic WebP, lazy loading, correct sizing
- Distinctive: line 55
Use CSS sprites or SVG for icons — not dozens of small PNG requests
- Distinctive: line 59
Avoid long tasks on the main thread (> 50ms) — they block user interaction
- Distinctive: line 62
Avoid layout thrashing — batch DOM reads and writes.
- Distinctive: line 69
Use a CDN for static assets — serve from the edge, not the origin
- Distinctive: line 78
Look for: sequential calls that could be parallel, N+1 patterns, slow DB queries, unnecessary external calls
- Distinctive: line 111
Look for: seq scans on large tables, nested loops on large sets, high row estimates vs.
- Very specific: line 112
Add the appropriate index — verify with EXPLAIN ANALYZE that it is used
- Very specific: line 113
Run ANALYZE if estimates are far off — statistics may be stale
- Distinctive: line 132
Use covering indexes for hot read paths — include all columns the query needs to avoid heap fetches
- Distinctive: line 133
Use partial indexes for sparse conditions — index only the subset of rows the query filters on
- Distinctive: line 138
Never open a new DB connection per request — pool connections at the application layer (PgBouncer, SQLAlchemy pool, HikariCP)
- Very specific: line 143
Avoid SELECT * — fetch only needed columns.
- Very specific: line 144
Avoid OFFSET pagination at scale — use cursor-based pagination
- Very specific: line 145
Avoid LIKE '%term%' on large tables — use full-text search indexes
- Very specific: line 146
Use EXISTS instead of COUNT when checking existence — stops scanning after the first match
- Very specific: line 169
Remove event listeners on cleanup — every addEventListener needs a corresponding removeEventListener on teardown
- Distinctive: line 197
Read measurement-plan.md before collecting a baseline or interpreting a before/after performance result.
“Common” is measured: kept by at least 6 in 10 of the 13 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Performance Optimization
Approach every performance task as an engineer who measures before cutting. Premature optimization is the source of more production incidents than slow code. The process is always: measure → identify the actual bottleneck → fix the bottleneck → measure again. Intuition about where the slowness is has a poor track record. Data does not.
Step 0: Measure First, Optimize Second
Before touching any code:
- Reproduce the problem with numbers — "it feels slow" is not a problem statement; "p99 latency is 4.2s under 100 concurrent users" is
- Identify the bottleneck — use profiling tools to find where time is actually spent; it is almost never where you expect
- Establish a baseline — measure before making any change; you cannot prove improvement without a before number
- Change one thing at a time — multiple simultaneous optimizations make it impossible to know what helped
- Measure the result — verify the optimization worked and did not regress something else
Optimization priority order:
- Algorithmic complexity — O(n²) becoming O(n log n) beats any micro-optimization
- I/O reduction — fewer DB queries, fewer HTTP calls, smaller payloads
- Caching — avoid recomputing or re-fetching what has not changed
- Parallelism — do independent work concurrently instead of sequentially
- Micro-optimization — only after the above have been exhausted
Frontend Performance
Measure with real tools:
- Lighthouse CI in the CI pipeline — fail builds that regress Core Web Vitals
- Chrome DevTools Performance panel — flame charts for CPU, network waterfall for load
- WebPageTest — real device testing, multiple geographic locations
web-vitalslibrary — measure LCP, FID/INP, CLS in production with real user data
Core Web Vitals targets:
- LCP (Largest Contentful Paint) < 2.5s
- INP (Interaction to Next Paint) < 200ms
- CLS (Cumulative Layout Shift) < 0.1
Bundle size:
- Analyze with
webpack-bundle-analyzerorvite-bundle-visualizer— know what is in the bundle - Code split at route boundaries — never ship one monolithic bundle
- Tree-shake unused exports — ensure bundler tree-shaking is working
- Lazy-load heavy components and libraries: charting, rich text editors, PDF renderers
- Audit and remove unused dependencies — they ship to the client even if unused
- Target: initial JS bundle < 200KB gzipped for most applications
Images:
- Use
next/imageor equivalent — automatic WebP, lazy loading, correct sizing - Specify
widthandheighton every image — prevents layout shift - Use CSS sprites or SVG for icons — not dozens of small PNG requests
- Compress images before serving — never serve raw camera images
JavaScript execution:
- Avoid long tasks on the main thread (> 50ms) — they block user interaction
- Move heavy computation to Web Workers
- Debounce / throttle scroll, resize, and input event handlers
- Avoid layout thrashing — batch DOM reads and writes; do not interleave them
React.memo,useMemo,useCallbackonly when profiling shows a measurable benefit — they add complexity and are commonly overused
Network:
- HTTP/2 or HTTP/3 — multiplexing eliminates per-request connection overhead
- Preconnect to critical third-party origins:
<link rel="preconnect"> - Preload critical assets: fonts, hero images, above-the-fold CSS
- Use a CDN for static assets — serve from the edge, not the origin
- Cache static assets aggressively with content-hashed filenames —
main.abc123.jscan be cached forever
API Latency
Find the bottleneck — use distributed tracing:
- OpenTelemetry spans on every significant operation — DB query, external HTTP call, cache lookup, business logic
- Look for: sequential calls that could be parallel, N+1 patterns, slow DB queries, unnecessary external calls
Common API latency culprits and fixes:
| Problem | Diagnosis | Fix |
| N+1 queries | ORM generates one query per item in a list | Eager load with joins or IN query |
| Missing index | EXPLAIN ANALYZE shows seq scan | Add targeted index |
| Synchronous external calls | Trace shows sequential HTTP calls | Fan out with Promise.all / asyncio.gather |
| Oversized response | Response payload is large | Paginate; return only requested fields |
| No caching | Same data fetched on every request | Cache at service or HTTP layer |
| Connection overhead | New DB connection per request | Connection pooling |
| Serialization overhead | Large object serialized repeatedly | Cache serialized form |
Response size matters:
- Return only the fields the client needs — avoid
SELECT *and avoid serializing entire domain objects to API responses - Compress responses with gzip or brotli — most frameworks enable this with one config line
- Paginate — a response with 10,000 items is slow to serialize, transmit, and parse
Caching strategy:
- Cache at the layer closest to the consumer
- HTTP cache headers for public, stable content —
Cache-Control: public, max-age=3600 - Application cache (Redis) for: computed results, external API responses, expensive DB queries
- Define invalidation before caching — stale data is a correctness bug, not just a performance issue
- Cache hit rate is a metric — monitor it; a low hit rate means the cache is not helping
Database Performance
Slow query workflow:
- Enable slow query log — capture all queries above a threshold (e.g., > 100ms)
EXPLAIN ANALYZEon the slow query — read the actual plan, not the estimated one- Look for: seq scans on large tables, nested loops on large sets, high row estimates vs. actuals
- Add the appropriate index — verify with
EXPLAIN ANALYZEthat it is used - Run
ANALYZEif estimates are far off — statistics may be stale
N+1 query pattern:
# ❌ N+1 — one query for the list, one per item
orders = db.query("SELECT * FROM orders WHERE user_id = ?", user_id)
for order in orders:
items = db.query("SELECT * FROM order_items WHERE order_id = ?", order.id)
# ✅ Single query with join or IN clause
orders = db.query("""
SELECT o.*, oi.*
FROM orders o
JOIN order_items oi ON oi.order_id = o.id
WHERE o.user_id = ?
""", user_id)Index effectiveness:
- Use covering indexes for hot read paths — include all columns the query needs to avoid heap fetches
- Use partial indexes for sparse conditions — index only the subset of rows the query filters on
- Monitor index usage — drop indexes that are never used; they slow every write
- Index bloat accumulates over time —
REINDEX CONCURRENTLYperiodically on heavily updated tables
Connection pooling:
- Never open a new DB connection per request — pool connections at the application layer (PgBouncer, SQLAlchemy pool, HikariCP)
- Monitor connection pool utilisation — exhausted pools queue requests and spike latency
- Set pool size based on DB server capacity, not application concurrency
Query patterns:
- Avoid
SELECT *— fetch only needed columns; reduces data transfer and enables covering indexes - Avoid
OFFSETpagination at scale — use cursor-based pagination - Avoid
LIKE '%term%'on large tables — use full-text search indexes - Use
EXISTSinstead ofCOUNTwhen checking existence — stops scanning after the first match
Memory Leak Detection
Node.js:
- Heap snapshots in Chrome DevTools — take two snapshots separated by a period of activity; compare retained objects
--inspectflag to attach Chrome DevTools to a Node process- Common sources: event listeners not removed, global state that accumulates, closures holding large objects, unbounded caches
Python:
tracemalloc— trace memory allocations to their sourcememory_profiler— line-by-line memory usage- Common sources: growing lists/dicts never cleared, circular references (though Python GC handles most), large objects cached without eviction
General signals:
- Steady memory growth that does not plateau — the hallmark of a leak
- Memory growth correlated with request count — something is accumulating per request
- Out-of-memory crashes on long-running processes
Prevention:
- Bounded caches — LRU cache with a max size; unbounded caches are memory leaks
- Remove event listeners on cleanup — every
addEventListenerneeds a correspondingremoveEventListeneron teardown - Weak references for caches where eviction on GC is acceptable
CPU Bottlenecks
Profiling tools:
- Node.js:
--profflag +node --prof-process; Chrome DevTools flame chart - Python:
cProfile+snakevizfor visualisation;py-spyfor sampling a live process without restart - Go:
pprof
Common CPU bottlenecks:
- Synchronous JSON serialization of large objects — consider streaming serialization or pre-serialization
- Regular expression on large inputs — catastrophic backtracking on poorly written regex; test with ReDoS tools
- Cryptographic operations on the request path — move to background workers if not latency-critical
- Sorting large collections — O(n log n) on every request; cache sorted results
- Unnecessary re-renders in React — profile with the React DevTools Profiler
Parallelism:
- CPU-bound work in Node.js blocks the event loop — offload to worker threads or a separate process
- Python GIL limits CPU parallelism in threads — use
multiprocessingfor CPU-bound work; async/threads for I/O-bound work - Horizontal scaling is not a substitute for fixing an O(n²) algorithm — fix the algorithm first
Bundled Reference
Read measurement-plan.md before collecting a baseline or interpreting a before/after performance result.
Definition of Done — Performance Work
- Baseline measured before optimization with specific numbers
- Bottleneck identified with profiling tools — not intuition
- One change made at a time
- Improvement verified against baseline with the same measurement method
- No regressions in correctness, memory usage, or latency on other paths
- Performance budget or SLO defined and monitored going forward
- CI check added to prevent regression (Lighthouse CI, latency threshold test, or equivalent)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

