{"id":"3395a38b-73da-4d1c-9e08-f01083097e12","shortId":"bpsZBd","kind":"skill","title":"optimizing-performance","tagline":"Analyzes and optimizes application performance across frontend, backend, and database layers. Use when diagnosing slowness, improving load times, optimizing queries, reducing bundle size, or when asked about performance issues.","description":"# Optimizing Performance\n\n### When to Load\n\n- **Trigger**: Diagnosing slowness, profiling, caching strategies, reducing load times, bundle size optimization\n- **Skip**: Correctness-focused work where performance is not a concern\n\n## Performance Optimization Workflow\n\nCopy this checklist and track progress:\n\n```\nPerformance Optimization Progress:\n- [ ] Step 1: Measure baseline performance\n- [ ] Step 2: Identify bottlenecks\n- [ ] Step 3: Apply targeted optimizations\n- [ ] Step 4: Measure again and compare\n- [ ] Step 5: Repeat if targets not met\n```\n\n**Critical Rule**: Never optimize without data. Always profile before and after changes.\n\n## Step 1: Measure Baseline\n\n### Profiling Commands\n\n```bash\n# Node.js profiling\nnode --prof app.js\nnode --prof-process isolate*.log > profile.txt\n\n# Python profiling\npython -m cProfile -o profile.stats app.py\npython -m pstats profile.stats\n\n# Web performance\nlighthouse https://example.com --output=json\n```\n\n## Step 2: Identify Bottlenecks\n\n### Common Bottleneck Categories\n\n| Category | Symptoms                         | Tools                           |\n| -------- | -------------------------------- | ------------------------------- |\n| CPU      | High CPU usage, slow computation | Profiler, flame graphs          |\n| Memory   | High RAM, GC pauses, OOM         | Heap snapshots, memory profiler |\n| I/O      | Slow disk/network, waiting       | strace, network inspector       |\n| Database | Slow queries, lock contention    | Query analyzer, EXPLAIN         |\n\n## Step 3: Apply Optimizations\n\n### Frontend Optimizations\n\n**Bundle Size:**\n\n```javascript\n// ❌ Import entire library\nimport _ from \"lodash\";\n\n// ✅ Import only needed functions\nimport debounce from \"lodash/debounce\";\n\n// ✅ Use dynamic imports for code splitting\nconst HeavyComponent = lazy(() => import(\"./HeavyComponent\"));\n```\n\n**Rendering:**\n\n```javascript\n// ❌ Render on every parent update\nfunction Child({ data }) {\n  return <ExpensiveComponent data={data} />;\n}\n\n// ✅ Memoize when props don't change\nconst Child = memo(function Child({ data }) {\n  return <ExpensiveComponent data={data} />;\n});\n\n// ✅ Use useMemo for expensive computations\nconst processed = useMemo(() => expensiveCalc(data), [data]);\n```\n\n**Images:**\n\n```html\n<!-- ❌ Unoptimized -->\n<img src=\"large-image.jpg\" />\n\n<!-- ✅ Optimized -->\n<img\n  src=\"image.webp\"\n  srcset=\"image-300.webp 300w, image-600.webp 600w\"\n  sizes=\"(max-width: 600px) 300px, 600px\"\n  loading=\"lazy\"\n  decoding=\"async\"\n/>\n```\n\n### Backend Optimizations\n\n**Database Queries:**\n\n```sql\n-- ❌ N+1 Query Problem\nSELECT * FROM users;\n-- Then for each user:\nSELECT * FROM orders WHERE user_id = ?;\n\n-- ✅ Single query with JOIN\nSELECT u.*, o.*\nFROM users u\nLEFT JOIN orders o ON u.id = o.user_id;\n\n-- ✅ Or use pagination\nSELECT * FROM users LIMIT 100 OFFSET 0;\n```\n\n**Caching Strategy:**\n\n```javascript\n// Multi-layer caching\nconst getUser = async (id) => {\n  // L1: In-memory cache (fastest)\n  let user = memoryCache.get(`user:${id}`);\n  if (user) return user;\n\n  // L2: Redis cache (fast)\n  user = await redis.get(`user:${id}`);\n  if (user) {\n    memoryCache.set(`user:${id}`, user, 60);\n    return JSON.parse(user);\n  }\n\n  // L3: Database (slow)\n  user = await db.users.findById(id);\n  await redis.setex(`user:${id}`, 3600, JSON.stringify(user));\n  memoryCache.set(`user:${id}`, user, 60);\n\n  return user;\n};\n```\n\n**Async Processing:**\n\n```javascript\n// ❌ Blocking operation\napp.post(\"/upload\", async (req, res) => {\n  await processVideo(req.file); // Takes 5 minutes\n  res.send(\"Done\");\n});\n\n// ✅ Queue for background processing\napp.post(\"/upload\", async (req, res) => {\n  const jobId = await queue.add(\"processVideo\", { file: req.file });\n  res.send({ jobId, status: \"processing\" });\n});\n```\n\n### Algorithm Optimizations\n\n```javascript\n// ❌ O(n²) - nested loops\nfunction findDuplicates(arr) {\n  const duplicates = [];\n  for (let i = 0; i < arr.length; i++) {\n    for (let j = i + 1; j < arr.length; j++) {\n      if (arr[i] === arr[j]) duplicates.push(arr[i]);\n    }\n  }\n  return duplicates;\n}\n\n// ✅ O(n) - hash map\nfunction findDuplicates(arr) {\n  const seen = new Set();\n  const duplicates = new Set();\n  for (const item of arr) {\n    if (seen.has(item)) duplicates.add(item);\n    seen.add(item);\n  }\n  return [...duplicates];\n}\n```\n\n## Step 4: Measure Again\n\nAfter applying optimizations, re-run profiling and compare:\n\n```\nComparison Checklist:\n- [ ] Run same profiling tools as baseline\n- [ ] Compare metrics before vs after\n- [ ] Verify no regressions in other areas\n- [ ] Document improvement percentages\n```\n\n## Performance Targets\n\n### Web Vitals\n\n| Metric | Good    | Needs Work | Poor    |\n| ------ | ------- | ---------- | ------- |\n| LCP    | < 2.5s  | 2.5-4s     | > 4s    |\n| FID    | < 100ms | 100-300ms  | > 300ms |\n| CLS    | < 0.1   | 0.1-0.25   | > 0.25  |\n| TTFB   | < 800ms | 800ms-1.8s | > 1.8s  |\n\n### API Performance\n\n| Metric      | Target  |\n| ----------- | ------- |\n| P50 Latency | < 100ms |\n| P95 Latency | < 500ms |\n| P99 Latency | < 1s    |\n| Error Rate  | < 0.1%  |\n\n## Validation\n\nAfter optimization, validate results:\n\n```\nPerformance Validation:\n- [ ] Metrics improved from baseline\n- [ ] No functionality regressions\n- [ ] No new errors introduced\n- [ ] Changes are sustainable (not one-time fixes)\n- [ ] Performance gains documented\n```\n\nIf targets not met, return to Step 2 and identify remaining bottlenecks.","tags":["optimizing","performance","claude","workflow","cloudai-x","agent-skills","ai-agents","claude-code","codex","cursor","skills"],"capabilities":["skill","source-cloudai-x","skill-optimizing-performance","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-codex","topic-cursor","topic-skills","topic-workflow"],"categories":["claude-workflow-v2"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/CloudAI-X/claude-workflow-v2/optimizing-performance","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add CloudAI-X/claude-workflow-v2","source_repo":"https://github.com/CloudAI-X/claude-workflow-v2","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1352 github stars · SKILL.md body (5,404 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-03T00:52:56.079Z","embedding":null,"createdAt":"2026-04-18T21:54:58.010Z","updatedAt":"2026-05-03T00:52:56.079Z","lastSeenAt":"2026-05-03T00:52:56.079Z","tsv":"'+1':276 '-0.25':550 '-1.8':555 '-300':544 '-4':538 '/heavycomponent':226 '/upload':392,409 '0':319,439 '0.1':548,549,574 '0.25':551 '1':74,113,447 '1.8':557 '100':317,543 '100ms':542,565 '1s':571 '2':79,150,611 '2.5':535,537 '3':83,194 '300ms':546 '3600':376 '4':88,491 '4s':540 '5':94,400 '500ms':568 '60':361,383 '800ms':553,554 'across':9 'algorithm':424 'alway':106 'analyz':4,191 'api':559 'app.js':123 'app.post':391,408 'app.py':138 'appli':84,195,495 'applic':7 'area':521 'arr':433,452,454,457,467,480 'arr.length':441,449 'ask':29 'async':329,386,393,410 'await':351,369,372,396,415 'backend':11,270 'background':406 'baselin':76,115,510,585 'bash':118 'block':389 'bottleneck':81,152,154,615 'bundl':25,47,199 'cach':42,320,326,335,348 'categori':155,156 'chang':111,246,593 'checklist':66,504 'child':235,248,251 'cls':547 'code':220 'command':117 'common':153 'compar':92,502,511 'comparison':503 'comput':164,261 'concern':60 'const':222,247,262,327,413,434,468,472,477 'content':189 'copi':64 'correct':52 'correctness-focus':51 'cprofil':135 'cpu':159,161 'critic':100 'data':105,236,239,240,252,255,256,266,267 'databas':13,185,272,366 'db.users.findbyid':370 'debounc':213 'diagnos':17,39 'disk/network':180 'document':522,603 'done':403 'duplic':435,460,473,489 'duplicates.add':484 'duplicates.push':456 'dynam':217 'entir':203 'error':572,591 'everi':231 'example.com':146 'expens':260 'expensivecalc':265 'expensivecompon':238,254 'explain':192 'fast':349 'fastest':336 'fid':541 'file':418 'finddupl':432,466 'fix':600 'flame':166 'focus':53 'frontend':10,197 'function':211,234,250,431,465,587 'gain':602 'gc':171 'getus':328 'good':530 'graph':167 'hash':463 'heap':174 'heavycompon':223 'high':160,169 'html':269 'i/o':178 'id':291,309,330,341,354,359,371,375,381 'identifi':80,151,613 'imag':268 'import':202,205,208,212,218,225 'improv':19,523,583 'in-memori':332 'inspector':184 'introduc':592 'isol':128 'issu':32 'item':478,483,485,487 'j':445,448,450,455 'javascript':201,228,322,388,426 'jobid':414,421 'join':295,303 'json':148 'json.parse':363 'json.stringify':377 'l1':331 'l2':346 'l3':365 'latenc':564,567,570 'layer':14,325 'lazi':224 'lcp':534 'left':302 'let':337,437,444 'librari':204 'lighthous':145 'limit':316 'load':20,37,45 'lock':188 'lodash':207 'lodash/debounce':215 'log':129 'loop':430 'm':134,140 'map':464 'measur':75,89,114,492 'memo':249 'memoiz':241 'memori':168,176,334 'memorycache.get':339 'memorycache.set':357,379 'met':99,607 'metric':512,529,561,582 'minut':401 'ms':545 'multi':324 'multi-lay':323 'n':275,428,462 'need':210,531 'nest':429 'network':183 'never':102 'new':470,474,590 'node':121,124 'node.js':119 'o':136,298,305,427,461 'o.user':308 'offset':318 'one':598 'one-tim':597 'oom':173 'oper':390 'optim':2,6,22,33,49,62,71,86,103,196,198,271,425,496,577 'optimizing-perform':1 'order':288,304 'output':147 'p50':563 'p95':566 'p99':569 'pagin':312 'parent':232 'paus':172 'percentag':524 'perform':3,8,31,34,56,61,70,77,144,525,560,580,601 'poor':533 'problem':278 'process':127,263,387,407,423 'processvideo':397,417 'prof':122,126 'prof-process':125 'profil':41,107,116,120,132,165,177,500,507 'profile.stats':137,142 'profile.txt':130 'progress':69,72 'prop':243 'pstat':141 'python':131,133,139 'queri':23,187,190,273,277,293 'queue':404 'queue.add':416 'ram':170 'rate':573 're':498 're-run':497 'redi':347 'redis.get':352 'redis.setex':373 'reduc':24,44 'regress':518,588 'remain':614 'render':227,229 'repeat':95 'req':394,411 'req.file':398,419 'res':395,412 'res.send':402,420 'result':579 'return':237,253,344,362,384,459,488,608 'rule':101 'run':499,505 'seen':469 'seen.add':486 'seen.has':482 'select':279,286,296,313 'set':471,475 'singl':292 'size':26,48,200 'skill' 'skill-optimizing-performance' 'skip':50 'slow':18,40,163,179,186,367 'snapshot':175 'source-cloudai-x' 'split':221 'sql':274 'status':422 'step':73,78,82,87,93,112,149,193,490,610 'strace':182 'strategi':43,321 'sustain':595 'symptom':157 'take':399 'target':85,97,526,562,605 'time':21,46,599 'tool':158,508 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-skills' 'topic-workflow' 'track':68 'trigger':38 'ttfb':552 'u':297,301 'u.id':307 'updat':233 'usag':162 'use':15,216,257,311 'usememo':258,264 'user':281,285,290,300,315,338,340,343,345,350,353,356,358,360,364,368,374,378,380,382,385 'valid':575,578,581 'verifi':516 'vital':528 'vs':514 'wait':181 'web':143,527 'without':104 'work':54,532 'workflow':63","prices":[{"id":"b4c17912-8c18-43e2-a062-8337d4ff84bb","listingId":"3395a38b-73da-4d1c-9e08-f01083097e12","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"CloudAI-X","category":"claude-workflow-v2","install_from":"skills.sh"},"createdAt":"2026-04-18T21:54:58.010Z"}],"sources":[{"listingId":"3395a38b-73da-4d1c-9e08-f01083097e12","source":"github","sourceId":"CloudAI-X/claude-workflow-v2/optimizing-performance","sourceUrl":"https://github.com/CloudAI-X/claude-workflow-v2/tree/main/skills/optimizing-performance","isPrimary":false,"firstSeenAt":"2026-04-18T21:54:58.010Z","lastSeenAt":"2026-05-03T00:52:56.079Z"}],"details":{"listingId":"3395a38b-73da-4d1c-9e08-f01083097e12","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"CloudAI-X","slug":"optimizing-performance","github":{"repo":"CloudAI-X/claude-workflow-v2","stars":1352,"topics":["agent-skills","ai","ai-agents","claude-code","codex","cursor","skills","workflow"],"license":"mit","html_url":"https://github.com/CloudAI-X/claude-workflow-v2","pushed_at":"2026-02-14T18:09:29Z","description":"Universal Claude Code workflow plugin with agents, skills, hooks, and commands","skill_md_sha":"03c038f3a752bae7f6989b69d49092503ada0237","skill_md_path":"skills/optimizing-performance/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/CloudAI-X/claude-workflow-v2/tree/main/skills/optimizing-performance"},"layout":"multi","source":"github","category":"claude-workflow-v2","frontmatter":{"name":"optimizing-performance","description":"Analyzes and optimizes application performance across frontend, backend, and database layers. Use when diagnosing slowness, improving load times, optimizing queries, reducing bundle size, or when asked about performance issues."},"skills_sh_url":"https://skills.sh/CloudAI-X/claude-workflow-v2/optimizing-performance"},"updatedAt":"2026-05-03T00:52:56.079Z"}}