Communitygithub.com

YepAPI/skills

Manuseio de uploads, redimensionamento/compressão, entrega via CDN, placeholders de desfoque e padrões next/image.

O que é skills?

Este skill fornece diretrizes e implementações de referência para otimização de imagens em aplicações Next.js. Ele cobre todo o fluxo de upload e entrega: validação de tamanho no cliente e servidor, redimensionamento e compressão server-side com a biblioteca sharp, geração de placeholders de desfoque (blurDataURL) com plaiceholder no momento do build/upload e armazenamento dos originais em object storage (S3, R2) servido via CDN (CloudFront, Cloudflare) com cabeçalhos de cache. O skill enfatiza o uso obrigatório do componente next/image para obter otimização automática, lazy loading e conversão para formatos modernos como WebP/AVIF. Inclui padrões de código TypeScript para o componente Image com placeholder de desfoque e modo fill, além de uma função server-side com sharp para gerar versões thumbnail, medium e full. Também lista práticas a evitar, como tags <img> soltas, falta da prop sizes em imagens responsivas, ausência de redimensionamento e validação apenas por extensão de arquivo.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Otimização de Imagens

Regras

  • Use next/image para todas as imagens em Next.js — otimização automática, carregamento preguiçoso (lazy loading), conjuntos de srcset responsivos
  • Sempre defina width e height ou use fill com um container dimensionado — evita mudança de layout (CLS)
  • Placeholder de desfoque: gere blurDataURL no momento do build/upload com plaiceholder ou use placeholder="blur" para importações estáticas
  • Imagens remotas: configure remotePatterns em next.config.js — coloque os domínios do CDN na lista de permissões
  • Fluxo de upload: cliente → URL pré-assinada (S3/R2/Supabase Storage) → upload direto → armazenar URL no banco de dados
  • Redimensione no upload: use sharp no servidor para criar múltiplos tamanhos (miniatura, médio, completo) — não sirva os originais
  • Formatos: sirva WebP/AVIF via formatação automática do next/image — use JPEG como fallback para compatibilidade
  • Entrega via CDN: armazene originais em object storage (S3, R2), sirva através de CDN (CloudFront, Cloudflare) com cabeçalhos de cache
  • Validação de tamanho máximo de arquivo: verifique no cliente (antes do upload) e no servidor (antes do processamento) — limite típico de 5-10MB

Padrões

// next/image com placeholder de desfoque
import Image from "next/image";

<Image
  src="/hero.jpg"
  alt="Imagem hero"
  width={1200}
  height={630}
  placeholder="blur"
  blurDataURL="data:image/jpeg;base64,/9j/4AAQ..."
  priority // acima da dobra
/>

// Modo fill para containers dinâmicos
<div className="relative aspect-video">
  <Image src={url} alt={alt} fill className="object-cover" sizes="(max-width: 768px) 100vw, 50vw" />
</div>
// Redimensionamento server-side com 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 };
}

Evite

  • Usar tags <img> em Next.js — perde otimização automática, carregamento preguiçoso e conversão de formato
  • Faltar a prop sizes em imagens responsivas — o navegador não consegue escolher o tamanho correto do srcset
  • Servir originais sem redimensionamento — uma foto de 5MB exibida em 400px é desperdício
  • Pular validação de tipo de arquivo — verifique o tipo MIME no servidor, não apenas a extensão do arquivo

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.

Habilidades Relacionadas