Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Analyzes and optimizes frontend performance using Core Web Vitals, bundle analysis, lazy loading, image optimization, and caching strategies
.claude/skills/williamzujkowski-frontend-performance-optimizer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 55% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 40% | 0% |
Trigger conditions:
Use this skill when you need systematic frontend performance analysis and actionable optimization recommendations based on industry-standard metrics.
Time normalization:
pythonNOW_ET = "2025-12-15T19:35:37-05:00" # NIST/time.gov semantics
Input validation:
Source freshness:
Goal: Quick performance assessment with high-impact recommendations.
Steps:
Output: Performance score summary + prioritized 3-item action list.
Abort conditions: URL unreachable, no performance data available.
Goal: Comprehensive audit with framework-specific optimizations.
Steps:
Output: Detailed audit report + code examples + performance budget config.
Goal: Root cause analysis with custom optimizations and benchmarking.
Steps:
Output: Root cause analysis + custom optimization plan + monitoring setup guide.
Tier escalation:
Ambiguity thresholds:
Abort conditions:
Required fields:
typescriptinterface PerformanceReport { metrics: { lcp: { value: number; rating: "good" | "needs-improvement" | "poor" }; fid: { value: number; rating: "good" | "needs-improvement" | "poor" }; cls: { value: number; rating: "good" | "needs-improvement" | "poor" }; }; recommendations: Array<{ priority: "high" | "medium" | "low"; category: "images" | "javascript" | "css" | "caching" | "fonts" | "third-party"; issue: string; solution: string; estimatedImpact: string; // e.g., "0.5s LCP improvement" codeExample?: string; }>; performanceBudget?: { javascript: string; // e.g., "500KB" css: string; images: string; total: string; }; nextSteps: string[]; }
Format: Structured JSON or Markdown report with code blocks.
Constraints:
Input:
URL: https://example.com/app
Framework: ReactOutput:
markdown## Performance Audit Summary **Core Web Vitals:** - LCP: 4.2s (poor) — Target: <2.5s - FID: 85ms (good) - CLS: 0.15 (needs improvement) — Target: <0.1 **Top 3 Recommendations:** 1. **HIGH: Optimize hero image (3.5MB PNG)** - Convert to WebP/AVIF - Use responsive images with srcset - Estimated impact: 1.5s LCP improvement 2. **HIGH: Reduce layout shift in header** - Add explicit width/height to logo - Reserve space for dynamic content - Estimated impact: 0.12 CLS reduction 3. **MEDIUM: Enable text compression** - Configure gzip/brotli for text assets - Estimated impact: 0.3s LCP improvement
Token budgets:
Safety:
Auditability:
Determinism:
Official Documentation:
Tools:
Performance Budgets:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 39,460 | 15,215 | -61% | 1 | 1 | 0% | 5,741 | 5,287 | -8% | 0 | 0 | — |
case-02 | fail→fail | 23,351 | 16,783 | -28% | 1 | 1 | 0% | 4,475 | 5,438 | +22% | 0 | 0 | — |
case-03 | fail→fail | 18,329 | 15,504 | -15% | 1 | 1 | 0% | 3,301 | 4,880 | +48% | 0 | 0 | — |
case-04 | fail→fail | 17,483 | 16,168 | -8% | 1 | 1 | 0% | 3,288 | 4,896 | +49% | 0 | 0 | — |
case-05 | pass→pass | 23,802 | 10,772 | -55% | 1 | 1 | 0% | 4,105 | 4,247 | +3% | 0 | 0 | — |
case-06 | pass→pass | 24,784 | 13,471 | -46% | 1 | 1 | 0% | 4,825 | 4,747 | -2% | 0 | 0 | — |
case-07 | pass→pass | 27,806 | 15,364 | -45% | 1 | 1 | 0% | 5,068 | 4,898 | -3% | 0 | 0 | — |
case-08 | pass→pass | 19,775 | 13,556 | -31% | 1 | 1 | 0% | 2,036 | 3,239 | +59% | 0 | 0 | — |
case-09 | pass→pass | 9,182 | 8,733 | -5% | 1 | 1 | 0% | 2,050 | 4,143 | +102% | 0 | 0 | — |
case-10 | pass→pass | 22,302 | 13,139 | -41% | 1 | 1 | 0% | 3,894 | 4,697 | +21% | 0 | 0 | — |
case-11 | pass→pass | 11,332 | 10,050 | -11% | 1 | 1 | 0% | 2,195 | 4,234 | +93% | 0 | 0 | — |
case-12 | fail→pass | 14,255 | 11,629 | -18% | 1 | 1 | 0% | 2,800 | 4,353 | +55% | 0 | 0 | — |
case-13 | fail→pass | 11,851 | 8,627 | -27% | 1 | 1 | 0% | 2,417 | 3,858 | +60% | 0 | 0 | — |
case-14 | fail→fail | 20,586 | 21,016 | +2% | 1 | 1 | 0% | 4,144 | 6,134 | +48% | 0 | 0 | — |
case-20 | fail→pass | 14,798 | 10,871 | -27% | 1 | 1 | 0% | 2,949 | 4,250 | +44% | 0 | 0 | — |
case-15 | fail→pass | 13,449 | 8,856 | -34% | 1 | 1 | 0% | 2,764 | 3,870 | +40% | 0 | 0 | — |
case-16 | pass→pass | 20,214 | 13,448 | -33% | 1 | 1 | 0% | 3,542 | 4,940 | +39% | 0 | 0 | — |
case-17 | pass→pass | 22,524 | 12,915 | -43% | 1 | 1 | 0% | 4,382 | 4,653 | +6% | 0 | 0 | — |
case-18 | pass→pass | 15,578 | 10,838 | -30% | 1 | 1 | 0% | 3,326 | 4,266 | +28% | 0 | 0 | — |
case-19 | pass→pass | 30,447 | 12,956 | -57% | 1 | 1 | 0% | 6,171 | 4,892 | -21% | 0 | 0 | — |
case-21 | pass→pass | 20,679 | 13,283 | -36% | 1 | 1 | 0% | 3,464 | 4,592 | +33% | 0 | 0 | — |
case-22 | pass→pass | 16,201 | 11,505 | -29% | 1 | 1 | 0% | 3,276 | 4,580 | +40% | 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. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 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.