Communitygithub.com

YepAPI/skills

Limitación de velocidad con token bucket, ventana deslizante, límites por usuario/IP, respaldado por Redis y patrones Upstash.

¿Qué es skills?

Esta habilidad proporciona reglas y patrones robustos para implementar limitación de velocidad en APIs y aplicaciones web. Es especialmente útil para desarrolladores que trabajan con arquitecturas serverless o múltiples instancias, ya que se basa en Redis (o Upstash) como almacenamiento externo de estado, evitando los problemas de consistencia de la memoria en memoria. La habilidad define algoritmos específicos (token bucket para endpoints de API, ventana deslizante para rutas de autenticación) y establece límites predeterminados sensibles (100 req/min para API general, 5 req/min para autenticación, 1000 req/min para lecturas). Se integra con `@upstash/ratelimit` para manejar la atomicidad de Redis y la ventana deslizante nativamente, se implementa como middleware globalmente (con capacidad de anular por ruta) y recomienda encabezados como `Retry-After` y `X-RateLimit-Remaining`. Además, incluye patrones de código para implementación directa en proyectos Next.js, separación de límites por nivel de usuario (free, pro, enterprise) y consejos para evitar errores comunes como la limitación solo en la capa de aplicación o el bloqueo de usuarios legítimos con límites demasiado agresivos. La habilidad es compatible con plataformas como Vercel, Cloudflare y cualquier infraestructura basada en Redis/Upstash, y es ideal para desarrolladores que necesitan escalar sus APIs con seguridad y consistencia.

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

Preguntar en tu IA favorita

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

Documentación

Limitación de Velocidad

Reglas

  • Usa token bucket para los endpoints de API, ventana deslizante para las rutas de autenticación/inicio de sesión
  • Identifica a los llamantes primero por clave de API, luego por IP — nunca solo IP para rutas autenticadas
  • Devuelve 429 Too Many Requests con el encabezado Retry-After (segundos) y el encabezado X-RateLimit-Remaining
  • Almacena los contadores en Redis (o Upstash para serverless) — nunca en memoria para despliegues multi-instancia
  • Establece valores predeterminados sensibles: 100 req/min para API general, 5 req/min para autenticación, 1000 req/min para lecturas
  • Usa @upstash/ratelimit para serverless — maneja la atomicidad de Redis y la ventana deslizante de forma nativa
  • Implementa la limitación de velocidad como middleware — aplícalo globalmente, anula por ruta con límites más estrictos
  • Para Next.js: limita la velocidad en middleware.ts o en los manejadores de rutas de API, no en componentes de React
  • Separa los límites por nivel: gratuito, profesional, empresarial — almacena el nivel en JWT o mediante búsqueda en base de datos
  • Registra los aciertos de limitación de velocidad con la identidad del llamante — detecta patrones de abuso temprano

Patrones

// Patrón serverless con Upstash
import { Ratelimit } from "@upstash/ratelimit";
import { Redis } from "@upstash/redis";

const ratelimit = new Ratelimit({
  redis: Redis.fromEnv(),
  limiter: Ratelimit.slidingWindow(10, "10 s"),
  analytics: true,
});

const { success, limit, remaining, reset } = await ratelimit.limit(identifier);

Qué Evitar

  • Limitación de velocidad en memoria en configuraciones serverless o multi-instancia — el estado se pierde entre invocaciones
  • Limitar la velocidad solo en la capa de aplicación — añade límites también en el CDN/edge (Cloudflare, Vercel)
  • Bloquear usuarios legítimos con límites demasiado agresivos — comienza permisivo, ajusta según los datos
  • Olvidar limitar la velocidad en webhooks y envíos de formularios públicos

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

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

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

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

Skills relacionados