npx skills add ...
npx skills add tigrisdata/skills --skill tigris-image-optimization
Use when resizing images, generating thumbnails, serving responsive images, or optimizing image delivery with Tigris — covers Next.js, Remix, Rails, Django, Laravel, Express
npx skills add tigrisdata/skills --skill tigris-image-optimization
Resize, crop, and optimize images stored in Tigris. Generate thumbnails on upload, serve responsive images, and leverage Tigris's global CDN for fast delivery.
| Approach | When to Use | Pros | Cons |
|---|---|---|---|
| Process on upload | Thumbnails, fixed sizes | Fast serving, predictable | Storage cost per variant |
| Process on request | Many size variations | Flexible, less storage | Latency on first request |
| Client-side resize | Before upload | Saves bandwidth, fast upload | Less control over quality |
Recommended: Process on upload for known sizes (avatar, thumbnail, cover). Use public buckets for CDN delivery — Tigris serves public files from the nearest global edge automatically.
Generate variants when a file is uploaded, store each variant as a separate object:
Use access: "public" for images that need fast, CDN-backed delivery.
Read the resource file for your framework:
./resources/nextjs.md for next/image config and Sharp processing./resources/remix.md for Sharp in action functions and responsive srcset./resources/express.md for Sharp middleware with Multer./resources/rails.md for Active Storage variants./resources/django.md for django-imagekit and Pillow processing./resources/laravel.md for Intervention ImageTigris public buckets serve files from the nearest global edge — no separate CDN setup needed.
Cache headers for images:
For immutable content-hashed filenames (e.g., hero-abc123.jpg), use long cache times. For mutable paths, use shorter TTLs or ETags.
Always: Use access: "public" for images served to users (enables CDN) | Generate thumbnails at upload time for known sizes | Use WebP/AVIF for smaller file sizes | Set explicit contentType
Never: Process images on every request without caching | Store only originals if you always serve thumbnails | Resize in the browser after downloading full-size images