Communitygithub.com

Piyush-Nagar/coding-agents-skills

La performance est une fonctionnalité. Concevez pour le P99, pas pour la moyenne. Mesurez avant d'optimiser — l'intuition a presque toujours tort sur l'origine des temps d'exécution.

Qu'est-ce que coding-agents-skills ?

Cette compétence fournit une série de règles et de bonnes pratiques indispensables pour concevoir et maintenir des systèmes backend performants. Destinée aux développeurs backend et aux ingénieurs DevOps qui utilisent des agents IA comme Claude Code, Cursor ou Codex, elle couvre les domaines clés de l'optimisation : profilage des performances, gestion des bases de données, mise en cache et conception d'API. Chaque règle est conçue pour être directement actionable par un agent : par exemple, elle suggère d'utiliser des flame graphs ou `EXPLAIN ANALYZE` avant toute optimisation, de paginer tous les endpoints de liste avec un curseur, ou encore de projeter uniquement les colonnes nécessaires. La compétence met l'accent sur le design pour le P99 plutôt que la moyenne, et alerte sur les pires pratiques (boucles de requêtes DB, caches sans TTL, pools aux valeurs par défaut). Elle est implémentée sous forme de fichier SKILL.md lisible par les agents, et fonctionne sur toute plateforme d'IA agent supportant ce format.

Compatible avec~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Piyush-Nagar/coding-agents-skills/tree/HEAD/backend/core/nfr/performance

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Performance

La performance est une fonctionnalité. Concevez pour le P99, pas pour la moyenne. Mesurez avant d'optimiser — l'intuition a presque toujours tort sur l'origine des temps d'exécution.

Règles

  • Profiler avant d'optimiser. Deviner le chemin critique fait perdre des jours. Utilisez d'abord des flame graphs, des traces APM ou EXPLAIN ANALYZE.
  • Éliminer les requêtes N+1. La plus grande source de latence dans le code de service. Privilégiez les jointures, les récupérations par lots ou IN (...) plutôt que les recherches ligne par ligne.
  • Paginer chaque endpoint de liste. Des ensembles de résultats illimités finiront par faire planter un pod par OOM ou saturer la base de données. Par défaut, utilisez une pagination basée sur curseur pour les grandes tables.
  • Indexer sur les prédicats de requête, pas sur chaque colonne. Chaque index supplémentaire ralentit les écritures et gonfle le stockage. Ajoutez un index uniquement lorsqu'une requête connue en a besoin.
  • Projeter uniquement les colonnes nécessaires. SELECT * dans un DTO large gaspille le réseau, la mémoire et le GC. Renvoyez des projections réduites pour les APIs de liste.
  • Mettre en cache les données souvent lues et idempotentes. Mais décidez de la stratégie d'invalidation avant d'ajouter le cache — un cache sans plan d'éviction est une usine à bugs.
  • Définir explicitement les tailles des pools de connexions et de threads. Les valeurs par défaut sont rarement adaptées à votre charge de travail. Dimensionnez-les en fonction de la capacité en aval, pas en amont.
  • Regrouper les appels sortants. Une requête avec 100 éléments bat 100 requêtes avec un élément sur tous les axes — latence, CPU, connexions à la base de données.
  • Éviter les chaînes synchrones d'appels distants. La latence se cumule. Parallélisez les appels ou déplacez le travail en asynchrone.
  • Garder les charges utiles petites. Compressez les réponses, supprimez les champs inutilisés, utilisez des protocoles binaires lorsque c'est important (gRPC, Protobuf).

Drapeaux rouges

  • Boucles qui interrogent la base de données.
  • APIs qui renvoient « tous les enregistrements ».
  • Caches sans TTL ni invalidation.
  • Pools de threads / pools de connexions réglés sur la valeur par défaut du framework en production.
  • Tableaux de bord de latence qui n'affichent que des moyennes (pas de P95/P99).

Individual skills in this repo

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

Skills associés