Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Comprehensive performance specialist covering analysis, optimization, load testing, and framework-specific performance. Use when identifying bottlenecks, optimizing code, conducting load tests, analyzing Core Web Vitals, fixing memory leaks, or improving application performance across all layers (application, database, frontend). Includes React-specific optimization patterns.
.claude/skills/aiskillstore-performance/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 157% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-24 | ✓→✓ | = Same ✓ | 105% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 152% | 0% |
This skill provides comprehensive performance capabilities including performance analysis, optimization, load testing, stress testing, capacity planning, and framework-specific performance patterns.
Analyze the performance of this application and identify bottlenecksProfile the memory usage and find any leaksCreate load test scenarios for this APITest performance under 1000 concurrent usersOptimize this React app for better performanceAnalyze bundle size and reduce itMetrics to Track:
Common Issues:
Analysis Focus:
Tools:
Core Web Vitals:
Bundle Analysis:
Rendering Optimization:
Bundle Optimization:
Purpose: Test system under expected load Metrics: Response time, throughput, error rate Tools: k6, Artillery, JMeter, Locust
Example (k6):
javascriptimport http from 'k6/http'; import { check } from 'k6'; export const options = { stages: [ { duration: '2m', target: 100 }, // Ramp up { duration: '5m', target: 100 }, // Stay at 100 { duration: '2m', target: 200 }, // Ramp up to 200 { duration: '5m', target: 200 }, // Stay at 200 { duration: '2m', target: 0 }, // Ramp down ], }; export default function() { const res = http.get('https://api.example.com/users'); check(res, { 'status is 200': (r) => r.status === 200, 'response time < 500ms': (r) => r.timings.duration < 500, }); }
Purpose: Find breaking points Metrics: Maximum capacity, failure points Approach: Gradually increase load until failure
Purpose: Determine resource needs Metrics: Resource utilization, scaling requirements Analysis: Current capacity vs. future needs
Measure Current Performance:
Set Targets:
Profiling Techniques:
Bottleneck Patterns:
Investigation Steps:
Recommendations Should Include:
Input: API endpoint /api/users is slow
Output:
markdown## Performance Analysis: /api/users ### Current Performance - **Average Response Time**: 2.3s - **P95 Response Time**: 4.1s - **Throughput**: 45 req/s - **Error Rate**: 2% ### Bottleneck Identified **Issue**: N+1 query problem in user data fetching - **Location**: `src/routes/users.js:34` - **Pattern**: One query for users, then N queries for each user's posts ### Root Cause
// Current implementation const users = await db.users.findAll(); for (const user of users) { user.posts = await db.posts.findByUserId(user.id); // N+1 queries }
### Optimization
// Optimized with eager loading const users = await db.users.findAll({ include: { model: Post, as: 'posts' }] // Single query with JOIN });
### Expected Impact
- **Response Time**: 2.3s → 0.3s (87% improvement)
- **Database Queries**: 101 → 1 (99% reduction)
- **Throughput**: 45 → 200+ req/s
Input: Optimize expensive component
Output:
markdown## React Performance: Component Optimization ### Issue Component re-renders on every parent update, even when props haven't changed. ### Optimization
// Before: Re-renders unnecessarily function ExpensiveComponent({ data, config }) { const processed = data .filter(item => item.active) .map(item => processComplex(item, config));
return <Chart data={processed} />; }
// After: Memoized to prevent unnecessary re-renders const ExpensiveComponent = React.memo(({ data, config }) => { const processed = useMemo(() => { return data .filter(item => item.active) .map(item => processComplex(item, config)); }, data, config]);
return <Chart data={processed} />; });
### Impact
- Re-renders reduced: 100% → 5%
- Performance improvement: 80% faster
For framework-specific performance patterns and detailed guidance, load reference files as needed:
references/framework_patterns.md - Performance patterns for Node.js, React, databases, APIs, frontend, and monitoring strategies (from performance-analysis)references/react_patterns.md - React-specific performance optimization patterns, memoization strategies, bundle optimization, and Core Web Vitals improvementsreferences/load_testing.md - Load testing and stress testing patterns, tools, scenarios, and capacity planning strategiesreferences/PERFORMANCE_ANALYSIS.template.md - Performance analysis report template with load profiles, bottlenecks, and recommendationsWhen analyzing performance for specific frameworks or conducting load tests, load the appropriate reference file.
Application:
Database:
Frontend:
React:
Key Metrics:
Alerting:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-24 | pass→pass | 12,513 | 10,214 | -18% | 1 | 1 | 0% | 2,073 | 4,244 | +105% | 0 | 0 | — |
case-01 | pass→pass | 8,278 | 7,640 | -8% | 1 | 1 | 0% | 1,460 | 3,680 | +152% | 0 | 0 | — |
case-02 | pass→pass | 10,957 | 10,282 | -6% | 1 | 1 | 0% | 1,897 | 3,988 | +110% | 0 | 0 | — |
case-03 | pass→pass | 11,513 | 9,314 | -19% | 1 | 1 | 0% | 1,842 | 3,786 | +106% | 0 | 0 | — |
case-04 | pass→pass | 13,912 | 10,363 | -26% | 1 | 1 | 0% | 2,391 | 4,151 | +74% | 0 | 0 | — |
case-05 | pass→pass | 8,756 | 7,359 | -16% | 1 | 1 | 0% | 1,464 | 3,643 | +149% | 0 | 0 | — |
case-06 | pass→pass | 12,871 | 11,773 | -9% | 1 | 1 | 0% | 2,166 | 4,399 | +103% | 0 | 0 | — |
case-07 | pass→pass | 5,518 | 7,356 | +33% | 1 | 1 | 0% | 923 | 3,650 | +295% | 0 | 0 | — |
case-08 | pass→pass | 16,695 | 18,362 | +10% | 1 | 1 | 0% | 2,689 | 5,381 | +100% | 0 | 0 | — |
case-09 | fail→fail | 9,862 | 10,664 | +8% | 1 | 1 | 0% | 1,695 | 4,269 | +152% | 0 | 0 | — |
case-10 | pass→pass | 9,378 | 10,881 | +16% | 1 | 1 | 0% | 1,408 | 4,273 | +203% | 0 | 0 | — |
case-11 | pass→pass | 6,739 | 7,233 | +7% | 1 | 1 | 0% | 1,099 | 3,579 | +226% | 0 | 0 | — |
case-25 | pass→pass | 11,317 | 9,949 | -12% | 1 | 1 | 0% | 2,183 | 4,440 | +103% | 0 | 0 | — |
case-12 | pass→pass | 14,157 | 14,981 | +6% | 1 | 1 | 0% | 2,339 | 4,850 | +107% | 0 | 0 | — |
case-13 | pass→pass | 6,699 | 8,602 | +28% | 1 | 1 | 0% | 1,174 | 3,784 | +222% | 0 | 0 | — |
case-14 | pass→pass | 5,374 | 5,451 | +1% | 1 | 1 | 0% | 862 | 3,217 | +273% | 0 | 0 | — |
case-15 | pass→pass | 10,204 | 12,324 | +21% | 1 | 1 | 0% | 1,788 | 4,630 | +159% | 0 | 0 | — |
case-16 | pass→pass | 9,801 | 7,894 | -19% | 1 | 1 | 0% | 1,591 | 3,650 | +129% | 0 | 0 | — |
case-17 | pass→pass | 11,506 | 12,173 | +6% | 1 | 1 | 0% | 1,754 | 4,196 | +139% | 0 | 0 | — |
case-18 | fail→pass | 10,480 | 4,009 | -62% | 1 | 1 | 0% | 1,609 | 3,005 | +87% | 0 | 0 | — |
case-19 | fail→pass | 6,810 | 5,109 | -25% | 1 | 1 | 0% | 1,080 | 2,780 | +157% | 0 | 0 | — |
case-20 | pass→pass | 12,103 | 10,781 | -11% | 1 | 1 | 0% | 1,691 | 4,029 | +138% | 0 | 0 | — |
case-21 | pass→pass | 10,756 | 9,997 | -7% | 1 | 1 | 0% | 1,705 | 3,862 | +127% | 0 | 0 | — |
case-22 | fail→pass | 16,110 | 2,289 | -86% | 1 | 1 | 0% | 2,644 | 2,731 | +3% | 0 | 0 | — |
case-23 | pass→pass | 4,959 | 6,082 | +23% | 1 | 1 | 0% | 781 | 3,396 | +335% | 0 | 0 | — |
case-26 | pass→pass | 10,546 | 10,890 | +3% | 1 | 1 | 0% | 1,837 | 4,390 | +139% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 26 cases were attempted. The headline lift of +12 percentage points is the difference between those two pass rates over the 26 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.