web-ready
/web-ready
Use when the user wants to take a folder of images (any mix of HEIC, RAW, PNG, JPEG, TIFF, WebP) and produce a web-ready set — EXIF stripped, resized to a sensible max dimension, encoded in modern formats (AVIF + WebP, with JPEG fallback), and optimised for size. End-to-end orchestrator. Mirrors `audio-production:polish`.
- Author
- danielrosehill ↗
- Repository
- claude-image-production-plugin ↗
- Licence
- MIT
- Last repository change
- 24.10.2026
Assessment and security
- Files in this package
- 1
- Scripts
- 0
- HTML comments
- 0
- URLs in SKILL.md
- 0
No signals detected. Repository changed on 24.10.2026, without references to retired models or APIs.
MIT, open: use and modify while retaining author attribution.
What it does and when to use it
Use when the user wants to take a folder of images (any mix of HEIC, RAW, PNG, JPEG, TIFF, WebP) and produce a web-ready set — EXIF stripped, resized to a sensible max dimension, encoded in modern formats (AVIF + WebP, with JPEG fallback), and optimised for size. End-to-end orchestrator. Mirrors `audio-production:polish`.
Original author description
Use when the user wants to take a folder of images (any mix of HEIC, RAW, PNG, JPEG, TIFF, WebP) and produce a web-ready set — EXIF stripped, resized to a sensible max dimension, encoded in modern formats (AVIF + WebP, with JPEG fallback), and optimised for size. End-to-end orchestrator. Mirrors `audio-production:polish`.
How it works
- When to use
- Inputs
- Procedure
- Output
- Notes
SKILL.md preview
---
name: web-ready
description: Use when the user wants to take a folder of images (any mix of HEIC, RAW, PNG, JPEG, TIFF, WebP) and produce a web-ready set — EXIF stripped, resized to a sensible max dimension, encoded in modern formats (AVIF + WebP, with JPEG fallback), and optimised for size. End-to-end orchestrator. Mirrors `audio-production:polish`.
---
# Web-Ready (orchestrator)
One-shot pipeline: ingest anything → strip EXIF → resize → encode to web formats → optimise. The "make this folder uploadable" skill.
## When to use
- Photos coming off a phone (HEIC) destined for a blog.
- Camera RAW exports being prepped for an online gallery.
- A mixed folder of screenshots/photos that needs to ship to the web.
- Pre-step before image upload to any CMS, S3 bucket, or Cloudflare R2.
Do **not** use this skill when:
- The user wants archival output → keep originals; use the targeted skills (`convert-to-jxl`, `optimize-png`).
- The user wants pixel-perfect originals on the web (rare, e.g. art prints) → use `optimize-png`/`optimize-jpeg` only, no resize.
- Single-file conversion → call the underlying skill directly.
## Inputs
1. **Input directory** — required.
2. **Profile** — preset bundle. One of:
- `blog` (default): max-side 2000px, AVIF q60 + WebP q80 + JPEG q82 fallback, EXIF stripped.
- `gallery`: max-side 3000px, AVIF q70 + WebP q85, EXIF stripped.
- `thumbnail`: max-side 800px, AVIF q55 + WebP q75, EXIF stripped.
- `archival-web`: max-side 4000px, AVIF q80 + WebP q90, **EXIF preserved**.
3. **Custom overrides** — any of `--max-side N`, `--avif-q N`, `--webp-q N`, `--jpeg-q N`, `--keep-exif`, `--no-jpeg-fallback`.
4. **Output dir** — default: `<input>/web/`. Inside: `web/avif/`, `web/webp/`, `web/jpg/` parallel trees so the user can pick which set to upload.
5. **Recursive** — `--recursive`. Mirrors subdirectory layout.
## Procedure
1. **Pre-flight:** verify `install-deps` shows green for: `magick`/`convert`, `exiftool`, `vipsthumbnail`, `avifenc`, `cwebp` (already present for existing convert-to-webp), `cjpeg-mozjpeg` or `cjpeg` (for JPEG fallback), `oxipng`, `jpegoptim`. Missing optional tools are skipped (and the corresponding output format is dropped from the pipeline with a one-line note).
2. **Stage 1: Decode/normalise inputs.** Walk the input tree; classify each file:
- JPEG/PNG/WebP/TIFF → pass through.
- HEIC → decode to PNG via `heif-convert` (or via `vipsthumbnail` if libvips has libheif). Fail loud if neither is available.
- RAW (CR2, ARW, NEF, DNG, ORF, RAF) → decode via `darktable-cli "<input>" "<staged>.tiff"` if installed, else `vips copy` (libvips has rudimentary RAW). If neither path works, skip the file with a flagged warning.
- Anything else (BMP, GIF, etc.) → pass through.
3. **Stage 2: Strip EXIF.** Unless `--keep-exif` set:
```bash
exiftool -all= -tagsfromfile @ -Orientation -ColorSpace -overwrite_original "<staged>"
```
Preserve `Orientation` and `ColorSpace` (rotation handling and colour fidelity) even in strip mode.
4. **Stage 3: Resize.** Per file, fit within `<max-side>` box preserving aspect:
```bash
vipsthumbnail "<staged>" --size "<max-side>x<max-side>" --output "<resized>.png[Q=100]"
```
Use lossless intermediate to avoid double-compression. Skip if the source's longest side is already ≤ max-side.
5. **Stage 4: Encode.** For each survivor, produce up to three outputs:
- **AVIF:** `avifenc -q <avif-q> -s 6 "<resized>.png" "<out>/avif/<basename>.avif"`
- **WebP:** `cwebp -q <webp-q> "<resized>.png" -o "<out>/webp/<basename>.webp"`
- **JPEG fallback** (unless `--no-jpeg-fallback`): `cjpeg-mozjpeg -quality <jpeg-q> -progressive -optimize` (or stock `cjpeg` if mozjpeg missing) → `<out>/jpg/<basename>.jpg`
Run encodes in parallel — they're independent.
6. **Stage 5: Optimise (final squeeze).**
- JPEGs: `jpegoptim --strip-all --all-progressive` in-place on `web/jpg/`.
- PNGs (only if any survived as PNG, e.g. with `--no-jpeg-fallback`): `oxipng -o 4 --strip safe`.
- AVIF / WebP: avifenc and cwebp already produce near-optimal output; no second pass.
7. **Cleanup:** delete `<staged>` intermediates. Write a manifest at `<output>/manifest.json` mapping `<original-path> → {avif, webp, jpg}` plus per-file size deltas.
## Output
- Three parallel trees under `<output-dir>`: `avif/`, `webp/`, `jpg/`.
- `manifest.json` with the mapping and size table.
- Summary report:
- Files processed / skipped / failed (with reasons).
- Total bytes per format. Typical: `<orig> → AVIF <X>%, WebP <Y>%, JPEG <Z>%`.
- Recommendation line: which format to upload (AVIF if all targets support it; WebP otherwise; JPEG as universal fallback).
## Notes
- Defaults are tuned for the `blog` profile. `gallery` and `archival-web` raise quality for slower-but-better output.
- The orchestrator never modifies originals. The output tree is fully separate.
- For very large input trees (>10k files), the stage-by-stage design is intentional — early failure of one stage doesn't waste the others' work; intermediates persist until cleanup.
- Companion skill: `convert-to-webp` (single-format), `convert-to-avif` (single-format), `optimize-png`, `optimize-jpeg`. This orchestrator composes them; the user is welcome to use the components directly when they want finer control.
Versions
The database has no other skills named web-ready.
Database snapshot: 13.11.2026 · package version 29f743f0bd09 (SHA-256 digest of the entire package)
Downloads in the last 30 days: 0 · ranking
Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.
Similar skills
- 100convert-image-to-jpg
Convert local image files from common raster formats into JPG while setting a target DPI (default 96). Use when Codex needs to convert a file or folder of images such as HEIC, HEIF, PNG, TIFF, WebP, BMP, GIF, AVIF, or JPEG into `.jpg` for upload, OCR, archiving, or tools that require JPEG output. - 98zipic
Local image compression and Zipic-app expert for macOS and native Windows. Uses the Zipic CLI with JSON results, per-file saved_pct and exit codes; URL Scheme is a limited fallback. Use for compressing, optimizing or shrinking images, batch compression, conversion to… - 98image-compress-automation
Use when compressing, resizing, or converting bulk product images (PNG, JPG, WEBP, AVIF) to web-ready JPG, WebP, or AVIF files in this repository, setting up a user's working folder on a new machine, or troubleshooting height-only sizing, aspect-ratio errors, and CLI flags. - 100auto-tone
Use when the user wants automatic tonal correction — fix flat/washed-out / underexposed / low-contrast images by stretching levels, normalising contrast, and gamma-correcting to a neutral midtone. Implements auto-level (per-channel histogram stretch), auto-gamma (midtone… - 100seo-images
Image optimization analysis for SEO and performance. Checks alt text, file sizes, formats (WebP, AVIF), responsive images, lazy loading, CLS prevention, and Core Web Vitals image impact. Use when user says "image optimization", "alt text", "image SEO", "image size", "image… - 100convert-to-avif
Use when the user wants AVIF output — modern web format with ~30% better compression than WebP at the same visual quality, and ~50% better than JPEG. Wraps `avifenc`. Companion to `convert-to-webp`. Best target for new web work; check browser support if delivering to ancient clients.