Outils Dev IA Article original TECH ACTU

Prompt engineering pour le code : techniques avancées pour Claude Code, Codex et Copilot

3 min de lecture 8 vues
Prompt engineering pour le code : techniques avancées pour Claude Code, Codex et Copilot

Maîtrisez l'art du prompting pour la génération de code. Techniques par outil (CLAUDE.md, commentaires Copilot, system prompts Codex), patterns qui fonctionnent (few-shot, chain-of-thought, role-playing) et anti-patterns à éviter. Exemples concrets avant/après.

Vous utilisez un assistant IA pour coder, mais les résultats sont souvent approximatifs ? Le problème ne vient probablement pas de l'outil, mais de la façon dont vous lui parlez. Le prompt engineering appliqué au code est une compétence qui transforme radicalement la qualité des résultats.

Les trois principes fondamentaux

1. Le contexte est roi

Prompt faible :

Crée un service d'authentification

Prompt avec contexte :

Crée un service d'authentification pour mon API NestJS 11.
Stack : TypeScript strict, Mongoose 8, JWT avec refresh tokens.
Conventions : DTOs avec class-validator, guards NestJS, modules par domaine.
Le user schema existe déjà dans src/modules/user/user.schema.ts
avec les champs email, passwordHash, role.

2. La spécificité des contraintes

Contraintes :
- TypeScript 5.7 strict (no any, no implicit returns)
- Gestion d'erreurs avec classes custom (HttpException)
- Tests unitaires avec Vitest inclus
- Pas de dépendance externe supplémentaire
- Documentation JSDoc sur les méthodes publiques

3. Le format de sortie explicite

Indiquez toujours ce que vous attendez comme livrable : un fichier unique ? Plusieurs fichiers ? Avec ou sans tests ?

Techniques spécifiques par outil

Claude Code : la puissance du CLAUDE.md

# CLAUDE.md optimisé pour le prompting
## Stack
- Frontend: Angular 21 (SSR, standalone, signals)
- Backend: NestJS 11, Mongoose 8.9
- Tests: Vitest (frontend), Jest (backend)

## Règles Importantes
- JAMAIS de `any` en TypeScript
- SSR obligatoire pour les pages publiques
- Les index MongoDB doivent être déclarés dans le schema

Avec un bon CLAUDE.md, les prompts deviennent concis :

Ajoute un endpoint GET /api/articles/search
qui supporte la recherche full-text avec pagination.

GitHub Copilot : le comment-driven development

// Service de cache Redis avec TTL configurable
// - Méthodes : get<T>, set, delete, invalidatePattern
// - Sérialisation JSON automatique
// - Gestion des erreurs de connexion avec fallback gracieux

export class CacheService {
  // Récupère une valeur du cache, retourne null si absente
  async get<T>(key: string): Promise<T | null> {
    // Copilot génère ici
  }
}

Patterns avancés

Few-shot : montrer plutôt qu'expliquer

Voici comment je structure mes controllers NestJS.
Crée le controller pour le module "comments" en suivant
exactement le même pattern.

Exemple existant (articles.controller.ts) :
@Controller('api/articles')
export class ArticleController {
  @Get()
  async findAll(@Query() query: PaginationDto) {
    return this.articleService.findAll(query);
  }
}

Le module comments a : create, findByArticle, delete (admin only).

Chain-of-thought pour le debugging

Ce code produit "Cannot read property 'map' of undefined" en production.

Avant de proposer un correctif :
1. Analyse le flux de données et identifie TOUS les endroits
   où la valeur peut être undefined
2. Explique pourquoi ça fonctionne en dev mais pas en prod
3. Propose un correctif qui traite la cause racine

Anti-patterns courants

// Anti-pattern : trop vague
"Fais-moi une API"

// Corrigé : spécifique et contraint
"Crée un endpoint REST GET /api/stats/dashboard qui retourne :
- nombre total d'articles publiés
- articles publiés aujourd'hui
- top 5 catégories par nombre d'articles
Stack: NestJS, Mongoose, réponse typée avec interface TypeScript"
// Anti-pattern : scope trop large
"Crée un système d'auth complet avec login, register, 2FA, OAuth, rate limiting"

// Corrigé : découpage itératif
"Étape 1 : module auth avec register et login JWT.
Un service, un controller, les DTOs. On ajoutera le reste ensuite."

Le prompt engineering pour le code n'est pas un gadget : c'est la compétence qui sépare les développeurs qui trouvent l'IA "pas fiable" de ceux qui en font un multiplicateur de productivité. Investissez du temps dans votre CLAUDE.md, structurez vos commentaires pour Copilot, et adoptez le réflexe du découpage itératif.

Partager cet article

À lire aussi en Outils Dev IA