Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Audits stylesheet loading, inline CSS volume, image alt text, image formats, and Next.js Image component usage. Use when checking page speed related to HTML structure. For render-blocking scripts, image dimensions, lazy loading, and resource hints, see the core-web-vitals skill.
.claude/skills/thisisahsaniqbal-site-speed-optimization/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -46% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -58% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -55% | 0% |
| case-21 | ✗→✓ | ▲ Improved | -32% | 0% |
Audit HTML-level factors that affect page load speed.
> Note: Render-blocking scripts, image dimensions/lazy loading, preconnect hints, and font loading are handled by the core-web-vitals skill. Do not duplicate those checks here.
Count all <script src="..."> elements:
Measure total character count of all style="..." attributes + <style> element contents:
| Condition | Status | |---|---| | Total > 5000 characters | ⚠️ WARN "Move styles to external stylesheet for caching" | | Total ≤ 5000 | ✅ PASS |
<link rel="stylesheet"> elements| Condition | Status | |---|---| | All images have alt attribute | ✅ PASS | | Any image missing alt | ❌ FAIL "Critical for SEO and accessibility" |
.jpg, .jpeg, .png, .gif extensions → ⚠️ WARN "Consider WebP or AVIF for smaller file sizes"/_next/image src → ⚠️ WARN "Consider using Next.js <Image> component for automatic optimization"<script> tags (no src) should be counted separately from external scripts — they contribute to page weight but not network requests<style> elements inside <noscript> blocks should be excluded from inline CSS volumesrc="data:image/...") bypass network loading but increase HTML size — flag as ⚠️ WARN if total base64 content exceeds 10KB<img src="*.svg">) do not need WebP/AVIF conversion — exclude from image format checks<Image> component detection: look for /_next/image in src or srcset attributes, or data-nimg attribute| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 4,243 | 3,642 | -14% | 1 | 1 | 0% | 684 | 1,242 | +82% | 0 | 0 | — |
case-02 | fail→pass | 13,230 | 4,301 | -67% | 1 | 1 | 0% | 2,481 | 1,345 | -46% | 0 | 0 | — |
case-03 | fail→fail | 6,754 | 5,277 | -22% | 1 | 1 | 0% | 1,112 | 1,518 | +37% | 0 | 0 | — |
case-12 | pass→pass | 7,566 | 4,730 | -37% | 1 | 1 | 0% | 1,244 | 1,009 | -19% | 0 | 0 | — |
case-04 | pass→pass | 11,397 | 9,001 | -21% | 1 | 1 | 0% | 2,005 | 2,066 | +3% | 0 | 0 | — |
case-05 | pass→pass | 9,860 | 7,279 | -26% | 1 | 1 | 0% | 1,772 | 1,993 | +12% | 0 | 0 | — |
case-06 | pass→pass | 9,592 | 8,103 | -16% | 1 | 1 | 0% | 1,663 | 2,106 | +27% | 0 | 0 | — |
case-07 | fail→pass | 13,094 | 3,050 | -77% | 1 | 1 | 0% | 2,288 | 956 | -58% | 0 | 0 | — |
case-08 | pass→pass | 15,623 | 3,053 | -80% | 1 | 1 | 0% | 1,745 | 1,069 | -39% | 0 | 0 | — |
case-09 | fail→pass | 12,784 | 2,005 | -84% | 1 | 1 | 0% | 1,912 | 867 | -55% | 0 | 0 | — |
case-10 | pass→pass | 10,786 | 2,520 | -77% | 1 | 1 | 0% | 1,841 | 1,015 | -45% | 0 | 0 | — |
case-11 | pass→pass | 11,553 | 4,324 | -63% | 1 | 1 | 0% | 2,111 | 1,236 | -41% | 0 | 0 | — |
case-13 | pass→pass | 8,706 | 2,432 | -72% | 1 | 1 | 0% | 1,610 | 934 | -42% | 0 | 0 | — |
case-14 | pass→pass | 14,123 | 4,042 | -71% | 1 | 1 | 0% | 2,414 | 1,313 | -46% | 0 | 0 | — |
case-15 | pass→pass | 9,834 | 2,805 | -71% | 1 | 1 | 0% | 1,602 | 1,003 | -37% | 0 | 0 | — |
case-16 | pass→pass | 11,212 | 3,479 | -69% | 1 | 1 | 0% | 2,051 | 1,213 | -41% | 0 | 0 | — |
case-17 | pass→pass | 11,174 | 4,659 | -58% | 1 | 1 | 0% | 1,881 | 1,336 | -29% | 0 | 0 | — |
case-18 | pass→pass | 13,882 | 6,784 | -51% | 1 | 1 | 0% | 2,344 | 1,637 | -30% | 0 | 0 | — |
case-19 | pass→pass | 11,835 | 5,775 | -51% | 1 | 1 | 0% | 2,102 | 1,580 | -25% | 0 | 0 | — |
case-20 | pass→pass | 12,263 | 3,999 | -67% | 1 | 1 | 0% | 2,253 | 1,244 | -45% | 0 | 0 | — |
case-21 | fail→pass | 9,863 | 3,211 | -67% | 1 | 1 | 0% | 1,734 | 1,176 | -32% | 0 | 0 | — |
case-22 | pass→pass | 7,050 | 2,771 | -61% | 1 | 1 | 0% | 1,293 | 1,031 | -20% | 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.