Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    Dexploarer

    image-optimizer

    Dexploarer/image-optimizer
    Design
    4
    1 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Optimizes images for web performance by converting to modern formats, compressing, and generating responsive sizes.

    SKILL.md

    Image Optimization Helper

    Optimizes images for web performance using modern formats and compression techniques.

    When to Use

    • "Optimize these images"
    • "Compress images for web"
    • "Convert images to WebP"
    • "Reduce image file sizes"
    • "Make images load faster"
    • "Generate responsive image sizes"

    Instructions

    1. Analyze Current Images

    First, scan for images in the project:

    # Find all images
    find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" \)
    

    Present findings:

    • Total number of images
    • Current formats
    • Total size
    • Largest images
    • Optimization opportunities

    2. Check for Optimization Tools

    Verify available tools:

    # Check for ImageMagick
    which convert || echo "ImageMagick not found"
    
    # Check for cwebp (WebP encoder)
    which cwebp || echo "cwebp not found"
    
    # Check for sharp-cli (if Node.js project)
    which sharp || echo "sharp not found"
    

    If tools missing, provide installation instructions:

    # macOS
    brew install imagemagick webp
    
    # Ubuntu/Debian
    apt-get install imagemagick webp
    
    # Node.js projects (recommended)
    npm install -g sharp-cli
    

    3. Create Optimization Plan

    Present optimization strategy:

    For WebP Conversion:

    # Convert JPG/PNG to WebP with 80% quality
    cwebp -q 80 input.jpg -o input.webp
    

    For PNG Optimization:

    # Compress PNG without quality loss
    convert input.png -strip -quality 85 output.png
    

    For JPEG Optimization:

    # Optimize JPEG with progressive loading
    convert input.jpg -strip -interlace Plane -quality 85 output.jpg
    

    For Responsive Sizes:

    # Generate multiple sizes (sharp-cli)
    sharp -i input.jpg -o output-{width}.jpg resize 320 480 768 1024 1920
    

    4. Get User Confirmation

    Present plan with:

    • Number of images to optimize
    • Target formats
    • Estimated size reduction
    • Whether to keep originals
    • Whether to generate responsive sizes

    Wait for explicit confirmation before proceeding.

    5. Execute Optimization

    Create organized output structure:

    # Backup originals
    mkdir -p images/original
    cp images/*.{jpg,png} images/original/
    
    # Create optimized versions
    mkdir -p images/optimized
    

    Process each image with progress updates.

    6. Generate Picture Elements (Optional)

    For HTML projects, offer to generate <picture> elements:

    <picture>
      <source
        srcset="image-320.webp 320w,
                image-768.webp 768w,
                image-1920.webp 1920w"
        type="image/webp"
      />
      <source
        srcset="image-320.jpg 320w,
                image-768.jpg 768w,
                image-1920.jpg 1920w"
        type="image/jpeg"
      />
      <img
        src="image-768.jpg"
        alt="Description"
        loading="lazy"
        width="768"
        height="432"
      />
    </picture>
    

    7. Update Configuration Files

    For Next.js projects, suggest image configuration:

    // next.config.js
    module.exports = {
      images: {
        formats: ['image/avif', 'image/webp'],
        deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
        imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
      },
    }
    

    For Gatsby projects, suggest gatsby-plugin-image setup.

    For vanilla projects, suggest lazy loading:

    // Lazy load images
    if ('loading' in HTMLImageElement.prototype) {
      // Browser supports native lazy loading
      document.querySelectorAll('img[loading="lazy"]').forEach(img => {
        img.src = img.dataset.src;
      });
    } else {
      // Use IntersectionObserver polyfill
      const images = document.querySelectorAll('img[data-src]');
      const imageObserver = new IntersectionObserver((entries) => {
        entries.forEach(entry => {
          if (entry.isIntersecting) {
            const img = entry.target;
            img.src = img.dataset.src;
            imageObserver.unobserve(img);
          }
        });
      });
      images.forEach(img => imageObserver.observe(img));
    }
    

    8. Report Results

    Show final metrics:

    • Images optimized: X
    • Original size: X MB
    • Optimized size: X MB
    • Reduction: X% (X MB saved)
    • Formats generated: WebP, AVIF, etc.
    • Responsive sizes created: 320w, 768w, 1920w

    9. Suggest Next Steps

    Recommend:

    • Adding images to .gitignore (originals)
    • Setting up build pipeline for automatic optimization
    • Implementing lazy loading
    • Using CDN for image delivery
    • Monitoring performance impact (Lighthouse)

    Optimization Guidelines

    Quality Settings

    JPEG:

    • Photos: 80-85 quality
    • UI elements: 90 quality
    • Background images: 75 quality

    PNG:

    • Icons: Keep lossless
    • Screenshots: 85 quality
    • Logos: Keep lossless if transparency needed

    WebP:

    • Photos: 80 quality (excellent compression)
    • Graphics: 85 quality
    • Transparent images: 90 quality

    Format Selection

    Use WebP when:

    • Browser support is adequate (95%+ as of 2024)
    • File size matters most
    • Quality/size ratio is important

    Use AVIF when:

    • Cutting-edge optimization needed
    • Supporting modern browsers only
    • 20-50% better than WebP

    Keep JPEG/PNG when:

    • Legacy browser support required
    • As fallback in <picture> element
    • Tools don't support modern formats

    Responsive Breakpoints

    Common breakpoints:

    • 320w: Mobile portrait
    • 480w: Mobile landscape
    • 768w: Tablet
    • 1024w: Small desktop
    • 1920w: Full HD
    • 2560w: Retina displays

    Size Limits

    Target sizes:

    • Hero images: < 200 KB
    • Content images: < 100 KB
    • Thumbnails: < 30 KB
    • Icons: < 10 KB
    • Background images: < 150 KB

    Safety Practices

    Always Backup

    # Create backup before optimization
    mkdir -p backups/$(date +%Y%m%d)
    cp -r images/ backups/$(date +%Y%m%d)/
    

    Preserve Originals

    • Keep original files in separate directory
    • Use version control for safety
    • Test optimized images before deployment

    Verify Results

    • Compare visual quality
    • Check file sizes
    • Test on different devices
    • Validate responsive behavior

    Handle Errors

    # Check if conversion succeeded
    if [ $? -eq 0 ]; then
      echo "✅ Optimized successfully"
    else
      echo "❌ Optimization failed, keeping original"
    fi
    

    Advanced Features

    Batch Processing Script

    Offer to create optimization script:

    #!/bin/bash
    # optimize-images.sh
    
    set -e
    
    INPUT_DIR=${1:-.}
    OUTPUT_DIR="optimized"
    QUALITY=80
    
    mkdir -p "$OUTPUT_DIR"
    
    echo "🖼️  Optimizing images in $INPUT_DIR..."
    
    # Process JPEGs
    for img in "$INPUT_DIR"/*.{jpg,jpeg,JPG,JPEG}; do
      [ -f "$img" ] || continue
      filename=$(basename "$img" | sed 's/\.[^.]*$//')
    
      # Original format
      convert "$img" -strip -interlace Plane -quality $QUALITY \
        "$OUTPUT_DIR/${filename}.jpg"
    
      # WebP format
      cwebp -q $QUALITY "$img" -o "$OUTPUT_DIR/${filename}.webp"
    
      echo "✅ $filename"
    done
    
    # Process PNGs
    for img in "$INPUT_DIR"/*.{png,PNG}; do
      [ -f "$img" ] || continue
      filename=$(basename "$img" | sed 's/\.[^.]*$//')
    
      # Optimize PNG
      convert "$img" -strip -quality 85 "$OUTPUT_DIR/${filename}.png"
    
      # WebP with alpha
      cwebp -q $QUALITY -lossless "$img" -o "$OUTPUT_DIR/${filename}.webp"
    
      echo "✅ $filename"
    done
    
    echo "🎉 Optimization complete!"
    echo "📊 Space saved:"
    du -sh "$INPUT_DIR"
    du -sh "$OUTPUT_DIR"
    

    Git Integration

    Suggest adding to .gitignore:

    # Original unoptimized images
    images/original/
    *-original.jpg
    *-original.png
    
    # Large image files
    *.jpg filter=lfs diff=lfs merge=lfs -text
    *.png filter=lfs diff=lfs merge=lfs -text
    

    Or suggest Git LFS for large images:

    # Install Git LFS
    git lfs install
    
    # Track large images
    git lfs track "*.jpg"
    git lfs track "*.png"
    
    # Add to repo
    git add .gitattributes
    

    CI/CD Integration

    For automated optimization in build pipeline:

    GitHub Actions:

    name: Optimize Images
    
    on:
      pull_request:
        paths:
          - 'images/**'
    
    jobs:
      optimize:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
    
          - name: Install tools
            run: |
              sudo apt-get install -y imagemagick webp
    
          - name: Optimize images
            run: |
              chmod +x scripts/optimize-images.sh
              ./scripts/optimize-images.sh images
    
          - name: Commit optimized images
            run: |
              git config --local user.name "Image Optimizer Bot"
              git add images/optimized
              git commit -m "chore: optimize images"
              git push
    

    Performance Impact

    Lighthouse Metrics

    Optimized images improve:

    • LCP (Largest Contentful Paint): 20-40% improvement
    • Total Page Size: 50-70% reduction in image weight
    • Time to Interactive: Faster due to smaller payloads
    • Performance Score: +10 to +30 points

    Real-World Examples

    Before optimization:

    • hero-image.jpg: 2.4 MB
    • product-1.png: 890 KB
    • background.jpg: 1.6 MB
    • Total: 4.89 MB

    After optimization:

    • hero-image.webp: 380 KB (84% reduction)
    • product-1.webp: 125 KB (86% reduction)
    • background.webp: 240 KB (85% reduction)
    • Total: 745 KB (85% total reduction)

    Mobile Impact

    On 3G connection:

    • Before: 12-15 seconds load time
    • After: 2-3 seconds load time
    • 4-5x faster page loads

    Best Practices

    1. ✅ Always provide WebP fallback to JPEG/PNG
    2. ✅ Use lazy loading for below-fold images
    3. ✅ Specify width and height to prevent layout shift
    4. ✅ Use responsive images with srcset
    5. ✅ Compress images during build, not runtime
    6. ✅ Serve images from CDN when possible
    7. ✅ Monitor image performance with RUM tools
    8. ✅ Set appropriate cache headers for images

    Common Pitfalls

    ❌ Over-optimization: Quality too low (< 70) ❌ Under-optimization: Quality too high (> 95) ❌ No fallbacks: Only serving WebP without JPEG/PNG ❌ Wrong format: Using PNG for photos ❌ Missing dimensions: Causing layout shift ❌ No lazy loading: Loading all images immediately ❌ Single size: Not using responsive images

    Framework-Specific Guidance

    React/Next.js

    import Image from 'next/image'
    
    <Image
      src="/images/hero.jpg"
      alt="Hero image"
      width={1920}
      height={1080}
      priority  // For LCP images
      placeholder="blur"
    />
    

    Gatsby

    import { StaticImage } from "gatsby-plugin-image"
    
    <StaticImage
      src="../images/hero.jpg"
      alt="Hero image"
      placeholder="blurred"
      layout="fullWidth"
    />
    

    Vue/Nuxt

    <nuxt-img
      src="/images/hero.jpg"
      alt="Hero image"
      width="1920"
      height="1080"
      format="webp"
      loading="lazy"
    />
    

    Tools Reference

    • ImageMagick: Swiss army knife for image manipulation
    • cwebp/dwebp: Google's WebP encoder/decoder
    • avifenc: AVIF encoder
    • sharp: Fast Node.js image processing
    • squoosh-cli: Google's web-based optimizer CLI
    • imagemin: Node.js image minification
    Repository
    dexploarer/claudius-skills
    Files