Synthèse automatique
Implémente un limitation de débit d'API multi-algorithmes (fenêtre glissante, token bucket, compteur à fenêtre fixe) avec état distribué dans Redis, quotas par palier et en-têtes de réponse normalisés.
Points forts
- Couvre trois algorithmes et indique comment choisir selon le profil de trafic (rafales, précision à la seconde, quota simple)
- Inclut les en-têtes normalisés X-RateLimit-* et RateLimit-Policy ainsi que la réponse 429 avec Retry-After
- Prévoit des quotas par palier (Free/Pro/Enterprise), des dépassements de burst et un contournement pour les appels internes service-à-service
- Décrit des tests vérifiant les seuils exacts, les compteurs restants et la réinitialisation en fin de fenêtre
Limites
- Suppose une instance Redis 6+ et des bibliothèques tierces (rate-limiter-flexible, slowapi, Bucket4j) non fournies par le skill
- Le comportement en cas de panne Redis est laissé à l'appréciation (fail open ou fail closed) sans recommandation tranchée
- Les exemples de code produits sont orientés Node.js/JavaScript, les autres écosystèmes restent à adapter
À utiliser lorsqu'une API publique ou multi-consommateurs doit être protégée contre les pics de requêtes avec des quotas différenciés par client.
À éviter si l'application est mono-instance sans Redis ni besoin de quotas par consommateur, où un middleware de limitation simple suffit.
Analyse de sécurité
SûrThis is a well-scoped instructional skill about implementing API rate limiting. It uses only Read/Write/Edit/Grep/Glob plus a narrowly permissioned Bash pattern (api:ratelimit-*), and contains no destructive commands, no curl|sh, no secret exfiltration, no obfuscated payloads, and no attempts to disable safety controls. Recommended practices (Redis atomic ops, fail-open/closed guidance, mTLS bypass validation) are standard and legitimate.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
Add rate limiting to our Express API: 100 req/min for free plan users and 1000 req/min for pro users, keyed by API key, backed by Redis.Our /search endpoint gets bursty traffic and /reports is expensive. Recommend a rate limiting algorithm for each and implement the middleware.Add X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset and RateLimit-Policy headers to every response, and return a 429 with Retry-After and a JSON body when a client exceeds its limit.name: rate-limiting-apis description: | Implement sophisticated rate limiting with sliding windows, token buckets, and quotas. Use when protecting APIs from excessive requests. Trigger with phrases like "add rate limiting", "limit API requests", or "implement rate limits".
allowed-tools: Read, Write, Edit, Grep, Glob, Bash(api:ratelimit-*) version: 1.0.0 author: Jeremy Longshore jeremy@intentsolutions.io license: MIT compatible-with: claude-code, codex, openclaw
Rate Limiting APIs
Overview
Implement sophisticated rate limiting using sliding window, token bucket, and fixed window counter algorithms with Redis-backed distributed state. Configure per-endpoint, per-user, and per-API-key limits with tiered quotas, burst allowances, and standard response headers that communicate limit status to API consumers.
Prerequisites
- Redis 6+ for distributed rate limit state (required for multi-instance deployments)
- Rate limiting library:
rate-limiter-flexible(Node.js),slowapi(Python/FastAPI), or Bucket4j (Java) - API key or user identification mechanism for per-consumer tracking
- Monitoring for rate limit hit rates and rejected request metrics
- Documentation system for publishing rate limit policies to API consumers
Instructions
- Analyze endpoint traffic patterns using Read and Grep on access logs or metrics to determine appropriate rate limits per endpoint category (read-heavy, write-heavy, resource-intensive).
- Select the rate limiting algorithm per endpoint: token bucket for bursty traffic allowance, sliding window log for precise per-second limits, or fixed window counter for simple quota enforcement.
- Implement rate limiting middleware that extracts the client identifier (API key from header, user ID from JWT, or IP address as fallback) and checks against the configured limit.
- Configure tiered rate limits per API consumer plan: Free (100 req/min), Pro (1000 req/min), Enterprise (10000 req/min) with per-endpoint overrides for expensive operations.
- Add burst allowance using token bucket: allow 2x the sustained rate for 10 seconds to handle legitimate traffic spikes without penalizing well-behaved clients.
- Set standard rate limit response headers on every response:
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset(Unix timestamp), andRateLimit-Policy(draft IETF standard). - Return 429 Too Many Requests with
Retry-Afterheader (seconds until next allowed request) and a JSON body explaining the limit, current usage, and reset time. - Implement rate limit bypass for internal service-to-service calls using shared secret or mutual TLS identification to prevent internal traffic from consuming consumer quotas.
- Write tests that verify rate limits engage at exact thresholds, headers reflect correct remaining counts, and limits reset at the configured window boundary.
See ${CLAUDE_SKILL_DIR}/references/implementation.md for the full implementation guide.
Output
${CLAUDE_SKILL_DIR}/src/middleware/rate-limiter.js- Rate limiting middleware with algorithm selection${CLAUDE_SKILL_DIR}/src/config/rate-limits.js- Per-endpoint and per-tier rate limit configuration${CLAUDE_SKILL_DIR}/src/utils/rate-limit-store.js- Redis-backed distributed counter implementation${CLAUDE_SKILL_DIR}/src/middleware/rate-limit-headers.js- Standard rate limit response header injection${CLAUDE_SKILL_DIR}/tests/rate-limiting/- Rate limit threshold verification tests${CLAUDE_SKILL_DIR}/docs/rate-limits.md- Consumer-facing rate limit documentation
Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| 429 Too Many Requests | Client exceeded configured rate limit for the endpoint | Return Retry-After header with seconds until reset; include limit details in JSON body |
| Redis connection failure | Rate limit state store unavailable | Fail open (allow requests) or fail closed (reject all) based on security posture; alert immediately |
| Clock skew between instances | Distributed rate limit windows misaligned across servers | Use Redis server time (TIME command) as canonical clock; avoid relying on application server clocks |
| Inconsistent counts | Race condition in read-check-increment cycle | Use Redis MULTI/EXEC transaction or Lua script for atomic increment-and-check operations |
| Bypass abuse | Internal bypass mechanism exploited by external client | Validate bypass credentials per-request; restrict bypass to specific IP ranges or mTLS certificates |
Refer to ${CLAUDE_SKILL_DIR}/references/errors.md for comprehensive error patterns.
Examples
Sliding window with Redis: Implement a sliding window rate limiter using Redis sorted sets, where each request adds a timestamped entry and the window count is computed by ZRANGEBYSCORE over the last 60 seconds.
Tiered SaaS quotas: Free tier gets 100 requests/minute with no burst, Pro tier gets 1000 requests/minute with 2x burst for 10 seconds, Enterprise tier gets 10000 requests/minute with custom per-endpoint overrides.
Login endpoint protection: Apply strict rate limit of 5 attempts per minute per IP on /auth/login to prevent brute force attacks, with progressive lockout (15 min, 1 hour, 24 hours) after repeated violations.
See ${CLAUDE_SKILL_DIR}/references/examples.md for additional examples.
Resources
- IETF RateLimit header fields draft: https://datatracker.ietf.org/doc/draft-ietf-httpapi-ratelimit-headers/
- Token bucket algorithm explained
rate-limiter-flexiblelibrary: https://github.com/animir/node-rate-limiter-flexible- Redis rate limiting patterns with Lua scripts
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/rate-limiting-apis-ms2s7d3w/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/rate-limiting-apis-ms2s7d3w' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/rate-limiting-apis-ms2s7d3w/download' --output '.skill-downloads/rate-limiting-apis-ms2s7d3w/SKILL.md.part' && mv '.skill-downloads/rate-limiting-apis-ms2s7d3w/SKILL.md.part' '.skill-downloads/rate-limiting-apis-ms2s7d3w/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Write, Edit, Grep, Glob, Bash(api:ratelimit-*)
Extrait original : Prerequisites
- Redis 6+ for distributed rate limit state (required for multi-instance deployments)
- Rate limiting library:
rate-limiter-flexible(Node.js),slowapi(Python/FastAPI), or Bucket4j (Java) - API key or user identification mechanism for per-consumer tracking
- Monitoring for rate limit hit rates and rejected request metrics
- Documentation system for publishing rate limit policies to API consumers
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/rate-limiting-apis-ms2s7d3w/SKILL.md' && test -s '.skill-downloads/rate-limiting-apis-ms2s7d3w/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/rate-limiting-apis' && cp -R '.skill-downloads/rate-limiting-apis-ms2s7d3w' '.claude/skills/rate-limiting-apis'Codex
test -f '.skill-downloads/rate-limiting-apis-ms2s7d3w/SKILL.md' && test -s '.skill-downloads/rate-limiting-apis-ms2s7d3w/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/rate-limiting-apis' && cp -R '.skill-downloads/rate-limiting-apis-ms2s7d3w' '.agents/skills/rate-limiting-apis'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/rate-limiting-apis-ms2s7d3w'openskills read 'rate-limiting-apis-ms2s7d3w'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/rate-limiting-apis-ms2s7d3w/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Sécurité AMM DeFi
Securite
Checklist de sécurité pour les contrats Solidity AMM, pools de liquidité et flux de swap. Couvre réentrance, attaques par donation, manipulation d'oracles, etc.
Créateur de règles Semgrep
Securite
Crée des règles Semgrep personnalisées pour détecter des vulnérabilités de sécurité, des motifs de bugs et des motifs de code. Inclut une méthodologie de test en premier, le support du mode taint et des étapes de validation. Utile pour construire des détections d'analyse statique ciblées.
Revue barre d'outils développement
Securite
Règles de sécurité pour la barre d'outils de développement, le client PostHog et les feature flags. À utiliser lors de la revue de modifications des composants dev-tools et connexes.