Back to Seo

responsive-images

responsive imagesweb performancefrontendimage optimizationhtmlcore web vitalssrcsetsizes attribute
⭐ 860πŸ“„ MITπŸ•’ 2026-06-11Source β†—

Install this skill

npx skills add jezweb/claude-skills

Works across Claude Code, Cursor, Codex, Copilot & Antigravity

The responsive-images skill generates optimized markup for web assets to ensure high performance across diverse device resolutions. It enforces critical Core Web Vitals standards by automatically calculating width and height attributes, preventing layout shifts that degrade user experience. By automating the implementation of srcset and sizes attributes, it ensures browsers download only the image resolution necessary for the specific display viewport. The skill also handles complex loading strategies, such as assigning fetchpriority for Largest Contentful Paint elements or applying lazy loading for below-the-fold content. It further supports modern file delivery by structuring Picture elements for AVIF or WebP alternatives, and configures art direction when different aspect ratios are required for mobile compared to desktop layouts.

When to Use This Skill

  • β€’Optimizing hero banners for fast LCP scores
  • β€’Creating multi-column grid layouts that resize fluidly
  • β€’Delivering lightweight image formats while maintaining browser fallback
  • β€’Displaying different image crops for mobile versus desktop screens

How to Invoke This Skill

Example prompts that trigger this skill in Claude Code, Cursor, or Antigravity:

  • β€œmake this image responsive
  • β€œoptimize images for mobile and desktop
  • β€œfix cumulative layout shift for images
  • β€œadd srcset and sizes to this image tag
  • β€œset up hero image for core web vitals

Pro Tips

  • πŸ’‘Always specify `width` and `height` attributes on `<img>` tags to prevent layout shifts (CLS) and improve LCP, even when using `srcset` and `sizes`.
  • πŸ’‘Utilize `loading='lazy'` for images below the fold to defer their loading, but use `loading='eager'` and `fetchpriority='high'` for critical above-the-fold images like hero banners to prioritize their fetch.
  • πŸ’‘Automate the generation of multiple image sizes (e.g., 400w, 800w, 1200w) during your build process or with dedicated image optimization services to easily populate `srcset`.

What this skill does

  • β€’Generates srcset and sizes attributes for resolution switching
  • β€’Implements lazy loading and fetchpriority for LCP optimization
  • β€’Structures picture elements for modern AVIF/WebP format support
  • β€’Configures media-specific art direction crops for distinct layouts
  • β€’Calculates required image dimensions to prevent layout shifts

When not to use it

  • βœ•When displaying vector-based assets like SVG icons
  • βœ•For simple UI elements where file size optimization is negligible
  • βœ•In legacy environments that do not require performance tuning

Example workflow

  1. Analyze the image placement to determine if it is above or below the fold
  2. Resize source images into multiple widths for the srcset attribute
  3. Calculate the sizes attribute based on CSS container dimensions
  4. Apply width and height attributes to the img tag
  5. Add loading='eager' and fetchpriority='high' if the image is an LCP candidate

Prerequisites

  • –Source images available in multiple sizes
  • –Known layout breakpoints from the project CSS

Pitfalls & limitations

  • !Omission of width/height attributes causing layout shift
  • !Applying lazy loading to images located at the top of the viewport
  • !Incorrect sizes attribute values resulting in blurred images on high-DPI screens

FAQ

Why do I need width and height attributes if I have CSS?
Browsers use these attributes to allocate the necessary space before the image downloads, which directly prevents cumulative layout shift (CLS).
When should I use the picture element instead of a standard img tag?
Use the picture element when you need to serve different file formats like AVIF or when you require art direction, such as showing a square crop on mobile and a landscape crop on desktop.
Does setting fetchpriority='high' work on all browsers?
It is a performance hint supported by most modern browsers; browsers that do not support it will simply ignore the attribute without affecting functionality.

How it compares

Unlike manual coding which often relies on guesswork for sizes or misses CLS-critical attributes, this skill automates the calculation of responsive attributes based on standard performance patterns.

Source & trust

⭐ 860 starsπŸ“„ MITπŸ•’ Updated 2026-06-11
πŸ“„ Full skill instructions β€” original source: jezweb/claude-skills
# Responsive Images

**Status**: Production Ready βœ…
**Last Updated**: 2026-01-14
**Standards**: Web Performance Best Practices, Core Web Vitals

---

## Quick Start

### Basic Responsive Image

<img
src="/images/hero-800.jpg"
srcset="
/images/hero-400.jpg 400w,
/images/hero-800.jpg 800w,
/images/hero-1200.jpg 1200w,
/images/hero-1600.jpg 1600w
"
sizes="(max-width: 640px) 100vw,
(max-width: 1024px) 90vw,
1200px"
alt="Hero image description"
width="1200"
height="675"
loading="lazy"
/>


### Hero Image (LCP)

<img
src="/images/hero-1200.jpg"
srcset="
/images/hero-800.jpg 800w,
/images/hero-1200.jpg 1200w,
/images/hero-1600.jpg 1600w
"
sizes="100vw"
alt="Hero image"
width="1600"
height="900"
loading="eager"
fetchpriority="high"
/>


---

## Configuration

### Recommended Image Sizes

| Use Case | Widths to Generate | Sizes Attribute |
|----------|-------------------|-----------------|
| Full-width hero | 800w, 1200w, 1600w, 2400w | 100vw |
| Content width | 400w, 800w, 1200w | (max-width: 768px) 100vw, 800px |
| Grid cards (3-col) | 300w, 600w, 900w | (max-width: 768px) 100vw, 33vw |
| Sidebar thumbnail | 150w, 300w | 150px |

### Lazy Loading Rules

| Image Position | loading | fetchpriority | Why |
|----------------|---------|---------------|-----|
| Hero/LCP | eager | high | Optimize LCP, prioritize download |
| Above fold (not LCP) | eager | omit | Load normally |
| Below fold | lazy | omit | Defer until near viewport |
| Off-screen carousel | lazy | omit | Defer until interaction |

---

## Common Patterns

### Full-Width Responsive Image

<img
src="/images/banner-1200.jpg"
srcset="
/images/banner-600.jpg 600w,
/images/banner-1200.jpg 1200w,
/images/banner-1800.jpg 1800w,
/images/banner-2400.jpg 2400w
"
sizes="100vw"
alt="Full width banner"
width="2400"
height="800"
loading="lazy"
class="w-full h-auto"
/>


### Grid Card Image (3 columns)

<img
src="/images/card-600.jpg"
srcset="
/images/card-300.jpg 300w,
/images/card-600.jpg 600w,
/images/card-900.jpg 900w
"
sizes="(max-width: 768px) 100vw,
(max-width: 1024px) 50vw,
33vw"
alt="Card image"
width="900"
height="600"
loading="lazy"
class="w-full h-auto"
/>


### Fixed Aspect Ratio Container

<div class="aspect-[16/9] overflow-hidden">
<img
src="/images/video-thumbnail-800.jpg"
srcset="
/images/video-thumbnail-400.jpg 400w,
/images/video-thumbnail-800.jpg 800w,
/images/video-thumbnail-1200.jpg 1200w
"
sizes="(max-width: 768px) 100vw, 800px"
alt="Video thumbnail"
width="800"
height="450"
loading="lazy"
class="w-full h-full object-cover"
/>
</div>


### Modern Formats (WebP + AVIF)

<picture>
<source
srcset="
/images/hero-800.avif 800w,
/images/hero-1200.avif 1200w,
/images/hero-1600.avif 1600w
"
sizes="100vw"
type="image/avif"
/>
<source
srcset="
/images/hero-800.webp 800w,
/images/hero-1200.webp 1200w,
/images/hero-1600.webp 1600w
"
sizes="100vw"
type="image/webp"
/>
<img
src="/images/hero-1200.jpg"
srcset="
/images/hero-800.jpg 800w,
/images/hero-1200.jpg 1200w,
/images/hero-1600.jpg 1600w
"
sizes="100vw"
alt="Hero image"
width="1600"
height="900"
loading="eager"
fetchpriority="high"
/>
</picture>


### Art Direction (Different Crops)

<picture>
<source
media="(max-width: 640px)"
srcset="
/images/product-portrait-400.jpg 400w,
/images/product-portrait-800.jpg 800w
"
sizes="100vw"
/>
<source
media="(min-width: 641px)"
srcset="
/images/product-landscape-800.jpg 800w,
/images/product-landscape-1200.jpg 1200w,
/images/product-landscape-1600.jpg 1600w
"
sizes="(max-width: 1024px) 90vw, 1200px"
/>
<img
src="/images/product-landscape-1200.jpg"
alt="Product image"
width="1200"
height="675"
loading="lazy"
/>
</picture>


---

## Error Prevention

### Always Include Width and Height

**Problem**: Layout shift when images load (poor CLS score)

<!-- ❌ WRONG - causes layout shift -->
<img src="/image.jpg" alt="Image" loading="lazy" />

<!-- βœ… CORRECT - browser reserves space -->
<img
src="/image.jpg"
alt="Image"
width="800"
height="600"
loading="lazy"
/>


**Source**: [Web.dev - Optimize CLS](https://web.dev/articles/optimize-cls)

### Don't Lazy Load LCP Images

**Problem**: Delayed LCP, poor Core Web Vitals score

<!-- ❌ WRONG - delays LCP -->
<img
src="/hero.jpg"
alt="Hero"
loading="lazy"
/>

<!-- βœ… CORRECT - prioritizes LCP -->
<img
src="/hero.jpg"
alt="Hero"
loading="eager"
fetchpriority="high"
/>


**Source**: [Web.dev - Optimize LCP](https://web.dev/articles/optimize-lcp)

### Use Width Descriptors (w), Not Density (x)

**Problem**: Browser can't choose optimal image for viewport

<!-- ❌ WRONG - only considers DPR -->
<img
src="/image.jpg"
srcset="/image.jpg 1x, /[email protected] 2x"
alt="Image"
/>

<!-- βœ… CORRECT - considers viewport + DPR -->
<img
src="/image-800.jpg"
srcset="
/image-400.jpg 400w,
/image-800.jpg 800w,
/image-1200.jpg 1200w
"
sizes="(max-width: 768px) 100vw, 800px"
alt="Image"
width="800"
height="600"
/>


**Exception**: Density descriptors are appropriate for fixed-size images like logos.

### Always Include Alt Text

**Problem**: Fails accessibility, SEO, and screen readers

<!-- ❌ WRONG -->
<img src="/product.jpg" />

<!-- βœ… CORRECT - descriptive alt text -->
<img src="/product.jpg" alt="Red leather messenger bag with brass buckles" />

<!-- βœ… CORRECT - decorative images use empty alt -->
<img src="/decorative-line.svg" alt="" role="presentation" />


### Aspect Ratio with object-fit

**Problem**: Image stretches or squashes when container size differs from image dimensions

<!-- ❌ WRONG - image distorts -->
<div class="w-full h-64">
<img src="/image.jpg" alt="Image" class="w-full h-full" />
</div>

<!-- βœ… CORRECT - maintains aspect ratio -->
<div class="w-full h-64">
<img
src="/image.jpg"
alt="Image"
class="w-full h-full object-cover"
/>
</div>


---

## Quick Reference

### Sizes Attribute Patterns

<!-- Full width -->
sizes="100vw"

<!-- Content width (max 800px) -->
sizes="(max-width: 768px) 100vw, 800px"

<!-- Sidebar (fixed 300px) -->
sizes="300px"

<!-- 2-column grid -->
sizes="(max-width: 768px) 100vw, 50vw"

<!-- 3-column grid -->
sizes="(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"

<!-- Responsive with max-width -->
sizes="(max-width: 640px) 100vw, (max-width: 1024px) 90vw, 1200px"


### Common Aspect Ratios

| Ratio | CSS | Use Case |
|-------|-----|----------|
| 16:9 | aspect-[16/9] | Video thumbnails, hero images |
| 4:3 | aspect-[4/3] | Standard photos |
| 3:2 | aspect-[3/2] | DSLR photos |
| 1:1 | aspect-square | Profile pictures, Instagram-style |
| 21:9 | aspect-[21/9] | Ultrawide banners |

### object-fit Values

| Value | Behavior | Use Case |
|-------|----------|----------|
| cover | Fill container, crop edges | Card images, backgrounds |
| contain | Fit inside, preserve all content | Logos, product photos |
| fill | Stretch to fill | Avoid unless necessary |
| scale-down | Smaller of contain or original size | Mixed content sizes |

### Format Comparison

| Format | Quality | File Size | Browser Support | Use Case |
|--------|---------|-----------|-----------------|----------|
| JPEG | Good | Medium | 100% | Photos, complex images |
| PNG | Lossless | Large | 100% | Logos, transparency |
| WebP | Excellent | Small | 97%+ | Modern browsers, photos |
| AVIF | Excellent | Smallest | 90%+ | Cutting-edge, fallback required |

**Recommended Strategy**: AVIF β†’ WebP β†’ JPEG fallback using <picture>

---

## Resources

- [Web.dev: Responsive Images](https://web.dev/articles/responsive-images)
- [MDN: Responsive Images](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images)
- [Web.dev: Serve Images in Modern Formats](https://web.dev/articles/serve-images-webp)
- [Web.dev: Optimize Cumulative Layout Shift](https://web.dev/articles/optimize-cls)
- [Cloudflare Images Documentation](https://developers.cloudflare.com/images/)

---

**Token Efficiency**: ~70% savings by preventing trial-and-error with srcset/sizes syntax
**Errors Prevented**: 6 common responsive image issues documented above


---

# Responsive Images Corrections

## Always Use srcset for Images >400px

**Problem**: Single-size images waste bandwidth on mobile and look pixelated on retina displays.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| <img src="/image.jpg"> | <img srcset="... 400w, ... 800w, ... 1200w" sizes="..."> |

<!-- ❌ WRONG - wastes bandwidth, no retina support -->
<img src="/image-1200.jpg" alt="Image" />

<!-- βœ… CORRECT - responsive sizes -->
<img
src="/image-800.jpg"
srcset="
/image-400.jpg 400w,
/image-800.jpg 800w,
/image-1200.jpg 1200w
"
sizes="(max-width: 768px) 100vw, 800px"
alt="Image"
width="800"
height="600"
loading="lazy"
/>


**Exception**: Small fixed-size images like logos (<200px) can use density descriptors or single size.

## Always Use Lazy Loading for Below-Fold Images

**Problem**: Loading all images immediately delays page load and LCP.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| <img src="..."> (no loading attr) | <img src="..." loading="lazy"> |
| loading="lazy" on hero image | loading="eager" fetchpriority="high" |

<!-- ❌ WRONG - loads all images immediately -->
<img src="/content-image.jpg" alt="Content" />

<!-- βœ… CORRECT - defers below-fold images -->
<img src="/content-image.jpg" alt="Content" loading="lazy" />

<!-- βœ… CORRECT - prioritizes LCP image -->
<img
src="/hero.jpg"
alt="Hero"
loading="eager"
fetchpriority="high"
/>


## Always Include Alt Text

**Problem**: Fails accessibility, SEO, and screen reader support.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| <img src="..."> | <img src="..." alt="Descriptive text"> |
| alt="image" | Descriptive alt text |
| Missing alt on decorative images | alt="" role="presentation" |

<!-- ❌ WRONG -->
<img src="/product.jpg" />
<img src="/product.jpg" alt="image" />

<!-- βœ… CORRECT - descriptive alt -->
<img src="/product.jpg" alt="Red leather messenger bag with brass buckles" />

<!-- βœ… CORRECT - decorative images -->
<img src="/decorative-line.svg" alt="" role="presentation" />


## Always Prevent Layout Shift (Aspect Ratio or Dimensions)

**Problem**: Images loading without reserved space cause layout shift, hurting CLS score.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| <img src="..."> (no dimensions) | <img src="..." width="..." height="..."> |
| Container without aspect-ratio | <div class="aspect-[16/9]"> |

<!-- ❌ WRONG - causes layout shift -->
<img src="/image.jpg" alt="Image" loading="lazy" />

<!-- βœ… CORRECT - explicit dimensions -->
<img
src="/image.jpg"
alt="Image"
width="800"
height="600"
loading="lazy"
/>

<!-- βœ… CORRECT - aspect-ratio container -->
<div class="aspect-[16/9]">
<img
src="/image.jpg"
alt="Image"
width="800"
height="450"
loading="lazy"
class="w-full h-full object-cover"
/>
</div>


## Never Use loading="lazy" on LCP Images

**Problem**: Delays Largest Contentful Paint, hurting Core Web Vitals score.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| loading="lazy" on hero/first image | loading="eager" fetchpriority="high" |

<!-- ❌ WRONG - delays LCP -->
<img
src="/hero.jpg"
alt="Hero"
loading="lazy"
/>

<!-- βœ… CORRECT - prioritizes LCP -->
<img
src="/hero.jpg"
alt="Hero"
loading="eager"
fetchpriority="high"
/>


**Rule of Thumb**: First 2-3 images visible on page load should be loading="eager".

## Use fetchpriority="high" for Hero Images

**Problem**: LCP image competes with other resources, delaying load.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| Hero image without fetchpriority | fetchpriority="high" |

<!-- ❌ WRONG - no priority boost -->
<img
src="/hero.jpg"
alt="Hero"
loading="eager"
/>

<!-- βœ… CORRECT - prioritizes download -->
<img
src="/hero.jpg"
alt="Hero"
loading="eager"
fetchpriority="high"
/>


## Use Width Descriptors (w), Not Density (x) for Responsive Images

**Problem**: Browser can't optimize for viewport size.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| srcset="... 1x, ... 2x" for content images | srcset="... 400w, ... 800w" sizes="..." |

<!-- ❌ WRONG - only considers DPR, not viewport -->
<img
src="/image.jpg"
srcset="/image.jpg 1x, /[email protected] 2x"
alt="Image"
/>

<!-- βœ… CORRECT - considers viewport + DPR -->
<img
src="/image-800.jpg"
srcset="
/image-400.jpg 400w,
/image-800.jpg 800w,
/image-1200.jpg 1200w
"
sizes="(max-width: 768px) 100vw, 800px"
alt="Image"
width="800"
height="600"
/>


**Exception**: Density descriptors are appropriate for fixed-size images like logos.

<!-- βœ… CORRECT - fixed logo size -->
<img
src="/logo.png"
srcset="/logo.png 1x, /[email protected] 2x"
alt="Logo"
width="150"
height="50"
/>


## Always Include sizes Attribute with Width Descriptors

**Problem**: Browser defaults to 100vw, choosing unnecessarily large images.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| srcset="... 400w, ... 800w" (no sizes) | Add sizes="..." |

<!-- ❌ WRONG - browser assumes 100vw -->
<img
src="/image-800.jpg"
srcset="/image-400.jpg 400w, /image-800.jpg 800w"
alt="Image"
/>

<!-- βœ… CORRECT - specifies display size -->
<img
src="/image-800.jpg"
srcset="/image-400.jpg 400w, /image-800.jpg 800w"
sizes="(max-width: 768px) 100vw, 800px"
alt="Image"
width="800"
height="600"
/>


## Use Modern Formats (AVIF, WebP) with Fallbacks

**Problem**: Serving only JPEG/PNG wastes 50-70% potential bandwidth savings.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| <img src="/image.jpg"> | <picture> with AVIF β†’ WebP β†’ JPEG |

<!-- ❌ WRONG - missing modern formats -->
<img src="/image.jpg" alt="Image" />

<!-- βœ… CORRECT - AVIF β†’ WebP β†’ JPEG fallback -->
<picture>
<source
srcset="
/image-400.avif 400w,
/image-800.avif 800w,
/image-1200.avif 1200w
"
sizes="(max-width: 768px) 100vw, 800px"
type="image/avif"
/>
<source
srcset="
/image-400.webp 400w,
/image-800.webp 800w,
/image-1200.webp 1200w
"
sizes="(max-width: 768px) 100vw, 800px"
type="image/webp"
/>
<img
src="/image-800.jpg"
srcset="
/image-400.jpg 400w,
/image-800.jpg 800w,
/image-1200.jpg 1200w
"
sizes="(max-width: 768px) 100vw, 800px"
alt="Image"
width="800"
height="600"
loading="lazy"
/>
</picture>


## Use object-fit: cover for Fixed Aspect Ratio Containers

**Problem**: Image stretches or squashes when container size differs from image dimensions.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| No object-fit with aspect-ratio | object-cover or object-contain |

<!-- ❌ WRONG - image distorts -->
<div class="w-full h-64">
<img src="/image.jpg" alt="Image" class="w-full h-full" />
</div>

<!-- βœ… CORRECT - maintains aspect ratio, crops edges -->
<div class="w-full h-64">
<img
src="/image.jpg"
alt="Image"
class="w-full h-full object-cover"
/>
</div>

<!-- βœ… CORRECT - maintains aspect ratio, shows all content -->
<div class="w-full h-64">
<img
src="/logo.svg"
alt="Logo"
class="w-full h-full object-contain"
/>
</div>


## Use Correct Source Order in picture Element

**Problem**: Browser picks first matching source, wrong order serves suboptimal format.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| JPEG before WebP | AVIF β†’ WebP β†’ JPEG |
| Missing type attribute | Always include type="image/..." |

<!-- ❌ WRONG - JPEG before WebP -->
<picture>
<source srcset="/image.jpg" type="image/jpeg" />
<source srcset="/image.webp" type="image/webp" />
<img src="/image.jpg" alt="Image" />
</picture>

<!-- βœ… CORRECT - best to worst -->
<picture>
<source srcset="/image.avif" type="image/avif" />
<source srcset="/image.webp" type="image/webp" />
<img src="/image.jpg" alt="Image" width="800" height="600" />
</picture>


## Use Art Direction (picture) for Different Crops

**Problem**: Same crop doesn't work well at all viewport sizes.

| If Claude suggests... | Use instead... |
|----------------------|----------------|
| Same image at all sizes | Different crops via <picture> |
| CSS-only cropping | Server-side cropped images |

<!-- ❌ WRONG - portrait crop stretched wide on desktop -->
<img
src="/portrait.jpg"
srcset="/portrait-400.jpg 400w, /portrait-800.jpg 800w"
sizes="100vw"
alt="Image"
/>

<!-- βœ… CORRECT - portrait on mobile, landscape on desktop -->
<picture>
<source
media="(max-width: 640px)"
srcset="/image-portrait-400.jpg 400w, /image-portrait-800.jpg 800w"
sizes="100vw"
/>
<img
src="/image-landscape-1200.jpg"
srcset="/image-landscape-800.jpg 800w, /image-landscape-1200.jpg 1200w"
sizes="(max-width: 1024px) 90vw, 1200px"
alt="Image"
width="1200"
height="675"
loading="lazy"
/>
</picture>


## Applies To

- **/*.html
- **/*.tsx, **/*.jsx (React components)
- **/*.vue, **/*.svelte (other frameworks)
- Any file with <img> or <picture> elements

## Testing Commands

# Check for missing width/height
grep -r '<img' --include="*.html" --include="*.tsx" | grep -v 'width=' | grep -v 'height='

# Check for missing alt
grep -r '<img' --include="*.html" --include="*.tsx" | grep -v 'alt='

# Check for missing loading attribute
grep -r '<img' --include="*.html" --include="*.tsx" | grep -v 'loading='

# Run Lighthouse audit
npx lighthouse https://example.com --only-categories=performance --view


## Quick Wins

1. **Add width/height to all images** - Prevents CLS
2. **Add loading="lazy" to below-fold images** - Reduces initial load
3. **Add fetchpriority="high" to hero image** - Improves LCP
4. **Generate WebP versions** - 40-50% size savings
5. **Add srcset for images >400px** - Optimize for mobile

## References

- [Web.dev: Optimize Images](https://web.dev/articles/optimize-images)
- [Web.dev: Responsive Images](https://web.dev/articles/responsive-images)
- [Web.dev: Lazy Loading](https://web.dev/articles/browser-level-image-lazy-loading)
- [Web.dev: Optimize CLS](https://web.dev/articles/optimize-cls)
- [Web.dev: Optimize LCP](https://web.dev/articles/optimize-lcp)

How to Use This Skill Unit

Option A: Project-Specific (Recommended)

  1. Click "Download" above
  2. In your project, create the directory: .agent/skills/responsive-images/
  3. Save the file as SKILL.md
  4. The agent will automatically discover the skill based on its description.

Option B: Global Installation (All Agents)

Save the file to these locations to make it available across all projects:

  • Claude Code: ~/.claude/skills/jezweb/claude-skills/responsive-images/SKILL.md
  • Cursor: ~/.cursor/skills/jezweb/claude-skills/responsive-images/SKILL.md
  • Antigravity: ~/.gemini/antigravity/skills/jezweb/claude-skills/responsive-images/SKILL.md

πŸš€ Install with CLI:
npx skills add jezweb/claude-skills

Read the Master Guide: Mastering Agent Skills β†’

Recommended Rules

View more rules β†’

Recommended Workflows

View more workflows β†’

Recommended MCP Servers

View more MCP servers β†’

Take It Further

Maximize your productivity with these powerful resources

πŸ“‹

Define Your Standards

Set up coding standards to ensure this workflow produces consistent, high-quality results.

Browse Rules Library
πŸ“–

Master Workflows

Learn how to create custom workflows, use Turbo Mode, and build your automation library.

Complete Guide

How to use this Skill in Claude Code & Cursor

For Claude Code (CLI)

To use this skill in Claude Code, copy the rule content into your project's custom instructions or follow our Add-Skill CLI guide. This ensures Claude follows your standards during every code generation.

For Cursor & Windsurf

For Cursor or Windsurf, individual skills are best used in the "Rules for AI" section. This specific unit helps the agent avoid seo issues, leading to cleaner, more efficient code.

Why the skill format matters: the standardized Agent Skills format lets your AI agent load detailed instructions only when they are relevant, keeping your prompt clean while improving results.

Source & attribution

This skill is categorized under Seo and is published by JezWeb, maintained in jezweb/claude-skills.

← Browse All Agent Skills
Sponsored AI assistant. Recommendations may be paid.