Communitygithub.com

YepAPI/skills

Manejo de subidas, redimensionamiento/compresión, entrega mediante CDN, marcadores de posición borrosos y patrones de next/image.

¿Qué es skills?

Este skill proporciona pautas y patrones de código para optimizar imágenes en aplicaciones Next.js. Cubre todo el flujo de trabajo: desde la subida segura mediante URLs prefirmadas y la validación del tamaño máximo de archivo, hasta el procesamiento del lado del servidor con sharp para redimensionar y comprimir imágenes, y su entrega eficiente a través de CDN. Se centra en el uso correcto del componente `next/image`, incluyendo la generación de marcadores de posición borrosos para mejorar la experiencia de carga (LCP). Es compatible con plataformas como Vercel, AWS (S3 + CloudFront) y Cloudflare R2. El objetivo principal es maximizar el rendimiento web, reducir el Layout Shift (CLS) y minimizar el ancho de banda mediante formatos modernos y tamaños de imagen adecuados.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/image-optimization

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Optimización de Imágenes

Reglas

  • Usa next/image para todas las imágenes en Next.js — optimización automática, carga diferida, conjuntos de fuentes responsivos
  • Siempre establece width y height o usa fill con un contenedor dimensionado — evita el desplazamiento de diseño (CLS)
  • Marcador de posición borroso: genera blurDataURL en tiempo de compilación/subida con plaiceholder o usa placeholder="blur" para importaciones estáticas
  • Imágenes remotas: configura remotePatterns en next.config.js — lista blanca de dominios CDN
  • Flujo de subida: cliente → URL prefirmada (S3/R2/Supabase Storage) → subida directa → almacenar URL en la base de datos
  • Redimensionar al subir: usa sharp del lado del servidor para crear múltiples tamaños (miniatura, mediano, completo) — no sirvas los originales
  • Formatos: sirve WebP/AVIF mediante la auto-formato de next/image — recurre a JPEG para compatibilidad
  • Entrega CDN: almacena originales en almacenamiento de objetos (S3, R2), sirve a través de CDN (CloudFront, Cloudflare) con cabeceras de caché
  • Validación de tamaño máximo de archivo: verifica en el cliente (antes de subir) y en el servidor (antes de procesar) — límite típico de 5-10MB

Patrones

// next/image con marcador de posición borroso
import Image from "next/image";

<Image
  src="/hero.jpg"
  alt="Imagen principal"
  width={1200}
  height={630}
  placeholder="blur"
  blurDataURL="data:image/jpeg;base64,/9j/4AAQ..."
  priority // sobre el pliegue
/>

// Modo fill para contenedores dinámicos
<div className="relative aspect-video">
  <Image src={url} alt={alt} fill className="object-cover" sizes="(max-width: 768px) 100vw, 50vw" />
</div>
// Redimensionamiento del lado del servidor con sharp
import sharp from "sharp";

async function processUpload(buffer: Buffer) {
  const thumbnail = await sharp(buffer).resize(200, 200, { fit: "cover" }).webp({ quality: 80 }).toBuffer();
  const medium = await sharp(buffer).resize(800).webp({ quality: 85 }).toBuffer();
  const full = await sharp(buffer).resize(1920).webp({ quality: 90 }).toBuffer();
  return { thumbnail, medium, full };
}

Evitar

  • Usar etiquetas <img> en Next.js — pierdes optimización automática, carga diferida y conversión de formato
  • Faltar la propiedad sizes en imágenes responsivas — el navegador no puede elegir el tamaño de srcset correcto
  • Servir originales sin redimensionar — una foto de 5MB mostrada a 400px es un desperdicio
  • Omitir la validación del tipo de archivo — verifica el tipo MIME en el servidor, no solo la extensión del archivo

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Tenant isolation (row-level vs schema), subdomain routing, per-tenant config, and data partitioning.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Skills relacionados