code-optimizer

Par mkurman · zorai

npx skills add https://github.com/mkurman/zorai --skill code-optimizer

name: code-optimizer description: > Audit d'optimisation de code approfondi utilisant des agents spécialistes en parallèle. Chaque agent recherche des anti-patterns de performance, des inefficacités et du code sous-optimal en utilisant la détection basée sur des motifs (Grep/Glob) SANS lire d'abord le code source complet — en évitant le biais d'ancrage sur les implémentations existantes. Couvre TOUS les domaines d'optimisation : requêtes de base de données, fuites mémoire, complexité algorithmique, concurrence, taille du bundle, code mort, I/O & réseau, rendu/UI, structures de données, gestion d'erreurs, caching, config de build, sécurité-performance, logging et infrastructure. À utiliser quand demandé : "optimise mon code", "trouve les problèmes de performance", "audit la qualité du code", "accélère mon app", "trouve les goulots d'étranglement", "code review pour la performance", "trouve les anti-patterns", "améliore l'efficacité du code", "réduis la latence", "optimise la performance", "détection de code smell", "trouve le code lent", "optimise ce projet", "audit de performance", "optimisation de code". Déclenche aussi sur : "optimizar codigo", "encontrar cuellos de botella", "mejorar rendimiento".

tags: [gsd-2, skills, code-optimizer, performance, devops, security, database, code-review, compliance] -----------|----------------|-------| | 1 | Base de données & Requêtes | references/database-queries.md | Requêtes N+1, SELECT *, index manquants, mauvais usage ORM, connection pooling | | 2 | Mémoire & Ressources | references/memory-resources.md | Fuites mémoire, ressources non fermées, grandes allocations, concat de strings en boucle | | 3 | Complexité Algorithmique | references/algorithmic-complexity.md | Motifs O(n^2), itérations inutiles, mauvaises structures pour les recherches | | 4 | Concurrence & Async | references/concurrency-async.md | Awaits séquentiels, blocage en async, race conditions, concurrence sans limite | | 5 | Bundle & Dépendances | references/bundle-dependencies.md | Imports lourds, dépendances inutilisées, libs en double, lazy loading manquant | | 6 | Code Mort & Redondance | references/dead-code-redundancy.md | Exports inutilisés, code commenté, branches mortes, logique dupliquée | | 7 | I/O & Réseau | references/io-network.md | Requêtes séquentielles, batching manquant, pas de dédup, compression manquante | | 8 | Rendu & UI | references/rendering-ui.md | Re-rendus, virtualisation manquante, layout thrashing, perf des animations | | 9 | Structures de Données | references/data-structures.md | Mauvaises structures, copies inutiles, sérialisation inefficace | | 10 | Erreur & Résilience | references/error-resilience.md | Timeouts manquants, erreurs étouffées, pas de retries, pas de circuit breakers | | 11 | Caching & Memoization | references/caching-memoization.md | Memoization manquante, cache sans invalidation, appels API redondants | | 12 | Build & Compilation | references/build-compilation.md | Code dev en prod, flags d'optimisation manquants, tests lents, problèmes Docker | | 13 | Sécurité-Performance | references/security-performance.md | Mauvais usage crypto, rate limiting manquant, ReDoS, vecteurs SQL injection |

Agents optionnels (à créer si pertinents pour la stack détectée) :

  • Logging & Observabilité (references/logging-observability.md) — si framework de logging détecté
  • Config & Infrastructure (references/config-infra.md) — si config Docker/deployment détectée

Modèle de Prompt pour Agent

Chaque agent DOIT recevoir cette structure de prompt :

You are a {DOMAIN_NAME} optimization specialist. Your job is to find performance
anti-patterns in the codebase at {PROJECT_ROOT}.

CRITICAL RULES:
1. DO NOT read source code files before searching. This avoids anchoring bias.
2. First, read your reference file: {SKILL_DIR}/references/{REFERENCE_FILE}
3. Use Grep and Glob to search for the patterns described in the reference file.
4. Only read 5-10 lines of context around each finding to confirm it's a real issue.
5. Skip patterns that don't match the project's stack: {DETECTED_STACK}

Tech stack detected: {DETECTED_STACK}
Project root: {PROJECT_ROOT}

For each finding, report:
- **File**: path:line_number
- **Pattern**: what anti-pattern was detected
- **Severity**: CRITICAL / HIGH / MEDIUM / LOW
- **Current code**: the problematic snippet (keep short)
- **Why it's slow**: brief explanation of the performance impact
- **Optimal fix**: the recommended solution (code snippet or approach)
- **Estimated impact**: qualitative improvement expected (e.g., "10x faster for large lists")

If you find 0 issues in your domain, report "No issues found" — this is a valid outcome.
Sort findings by severity (CRITICAL first).

Étape 3 : Consolider le Rapport

Après la fin de tous les agents, consolidez leurs trouvailles dans un rapport unique et priorisé :

  1. Collectez toutes les trouvailles de tous les agents
  2. Dédupliquez (différents agents peuvent signaler le même code pour des raisons différentes)
  3. Triez par severity : CRITICAL > HIGH > MEDIUM > LOW
  4. Groupez par fichier (pour que l'utilisateur puisse corriger fichier par fichier)
  5. Présentez le rapport final avec :
    • Résumé exécutif : nombre total de trouvailles par severity, top 3 plus impactants
    • Tableau de trouvailles détaillées groupées par fichier
    • Plan d'amélioration : liste ordonnée des corrections du plus au moins impactant

Format du Rapport

# Rapport d'Audit d'Optimisation de Code

## Résumé Exécutif
- **X** problèmes critiques, **Y** élevés, **Z** moyens, **W** faibles
- Top 3 corrections les plus impactantes :
  1. [brève description] — [impact estimé]
  2. [brève description] — [impact estimé]
  3. [brève description] — [impact estimé]

## Trouvailles par Fichier

### `path/to/file.ts`

| # | Severity | Domaine | Motif | Fix | Impact |
|---|----------|---------|-------|-----|--------|
| 1 | CRITICAL | Base de données | Requête N+1 en boucle | Utiliser prefetch_related | 50x moins de requêtes |
| 2 | HIGH | Async | Awaits séquentiels | Utiliser Promise.all | 3x plus rapide |

[... pour chaque fichier avec des trouvailles ...]

## Plan d'Amélioration

Étapes ordonnées par priorité pour implémenter les corrections :

1. **[CRITICAL] Corriger les requêtes N+1 dans `api/users.py`**
   - Actuel : boucle interrogeant user.posts pour chaque utilisateur
   - Fix : ajouter prefetch_related('posts') au queryset
   - Impact : réduit N+1 à 2 requêtes

2. **[HIGH] Paralléliser les appels API dans `services/sync.ts`**
   - Actuel : 5 appels fetch() sequentiels en await
   - Fix : Promise.all([fetch1, fetch2, ...])
   - Impact : ~5x plus rapide pour l'opération de sync

[... continuer pour toutes les trouvailles ...]

Skills similaires