From startup
Compresses JPG/PNG/GIF images to WebP using cwebp, iteratively reducing quality/resolution until under 100KB, preserves originals, reports sizes, updates file references. Use for web/SEO performance.
npx claudepluginhub rameerez/claude-code-startup-skillsThis skill is limited to using the following tools:
Compress all images in `$ARGUMENTS` (or `app/assets/images/content/` if no path provided) to WebP format, optimized for SEO performance (target: under 100KB per image).
Optimizes web images using compression for JPEG/PNG/WebP/SVG, modern formats, and responsive techniques to reduce file size and improve loading speed.
Compresses images cross-platform to WebP by default with PNG-to-PNG support via CLI. Uses sips, cwebp, ImageMagick, or Sharp fallback. Processes files/directories recursively with quality/format options.
Compresses images to WebP (default), PNG, or JPEG using optimal tools like sips, cwebp, ImageMagick, or Sharp via Bun CLI. Useful for optimizing file sizes, converting formats, or processing directories recursively.
Share bugs, ideas, or general feedback.
Compress all images in $ARGUMENTS (or app/assets/images/content/ if no path provided) to WebP format, optimized for SEO performance (target: under 100KB per image).
originals/ subfolder inside the target directory and move source files there. Never destroy source files.originals/ to the parent directory as .webp.webptarget-directory/
├── originals/ # High-quality source files preserved here
│ ├── hero.jpg
│ └── feature.png
├── hero.webp # Compressed, web-optimized
└── feature.webp
IMPORTANT: Keep compressing until ALL images are under 100KB. Check sizes after each pass and re-compress any that exceed the target.
cwebp -q 70 -resize 1200 0 originals/image.jpg -o image.webp
ls -lh image.webp # Check size
# Try these in order until under 100KB:
cwebp -q 60 -resize 1200 0 originals/image.jpg -o image.webp
cwebp -q 50 -resize 1200 0 originals/image.jpg -o image.webp
cwebp -q 45 -resize 1200 0 originals/image.jpg -o image.webp
cwebp -q 40 -resize 1200 0 originals/image.jpg -o image.webp
cwebp -q 35 -resize 1200 0 originals/image.jpg -o image.webp
# If q 35 at 1200px is still over 100KB, reduce to 1000px:
cwebp -q 30 -resize 1000 0 originals/image.jpg -o image.webp
cwebp -q 25 -resize 1000 0 originals/image.jpg -o image.webp
From actual compression run on content images:
| Image | Original | First Try | Final | Settings Used |
|---|---|---|---|---|
| waves.jpg | 198KB | 33KB | 33KB | q 70, 1200px (1 pass) |
| calendar.jpg | 246KB | 42KB | 42KB | q 70, 1200px (1 pass) |
| floating.jpg | 230KB | 43KB | 43KB | q 70, 1200px (1 pass) |
| cash.jpg | 409KB | 88KB | 88KB | q 70, 1200px (1 pass) |
| knot.jpg | 395KB | 96KB | 96KB | q 70, 1200px (1 pass) |
| floating-dark.jpg | 414KB | 94KB | 94KB | q 70, 1200px (1 pass) |
| keyboard2.jpg | 459KB | 102KB | 102KB | q 70, 1200px (1 pass, acceptable) |
| perpetual.jpg | 565KB | 130KB | 96KB | q 40, 1200px (3 passes) |
| keyboard.jpg | 718KB | 196KB | 98KB | q 25, 1000px (5 passes) |
ls -lh *.webp - re-run compression on any exceeding targetoriginals/ folder for future reference or re-compression