Aller au contenu principal

Écrire du code avec Codex

De l’idée au code en une instruction

Écrire du code est la tâche la plus courante que vous confierez à Codex. L’agent ne se contente pas de générer un snippet isolé — il comprend votre codebase, respecte vos conventions, et s’intègre dans l’architecture existante.

Créer un nouveau fichier ou module

Quand vous demandez à Codex de créer du nouveau code, soyez précis sur le contexte :

"Crée un service src/services/notification.service.ts qui gère 
l'envoi de notifications par email et par webhook. Utilise le 
même pattern que src/services/auth.service.ts. Le service doit 
exposer sendEmail(to, subject, body) et sendWebhook(url, payload)."

Codex va :

  1. Lire auth.service.ts pour comprendre le pattern utilisé
  2. Analyser les imports et dépendances du projet
  3. Créer le fichier avec la même structure
  4. Ajouter les types TypeScript appropriés
  5. Exporter les fonctions conformément aux conventions du projet

Résultat typique :

// src/services/notification.service.ts
import { z } from "zod";
import { logger } from "@/lib/logger";
import { env } from "@/lib/env";

const emailSchema = z.object({
  to: z.string().email(),
  subject: z.string().min(1),
  body: z.string().min(1),
});

export async function sendEmail(
  to: string, 
  subject: string, 
  body: string
): Promise<void> {
  const validated = emailSchema.parse({ to, subject, body });
  // ... implémentation
}

export async function sendWebhook(
  url: string, 
  payload: Record<string, unknown>
): Promise<Response> {
  // ... implémentation
}

Remarquez que Codex a ajouté la validation Zod parce qu’il a vu que le projet l’utilise déjà.

Ajouter une fonctionnalité à du code existant

C’est là que Codex excelle : modifier du code existant en comprenant le contexte complet.

"Dans src/api/routes/users.ts, ajoute un endpoint 
GET /users/:id/activity qui retourne les 50 dernières 
actions de l'utilisateur. Utilise le même middleware 
d'authentification que les autres routes."

Codex analyse les routes existantes, identifie le middleware utilisé, comprend le format de réponse, et ajoute l’endpoint de manière cohérente.

Générer du code à partir d’une spécification

Pour les fonctionnalités complexes, vous pouvez fournir une spécification détaillée :

"Implémente un système de rate limiting pour l'API :
- Maximum 100 requêtes par minute par IP
- Maximum 1000 requêtes par heure par utilisateur authentifié
- Retourne un header X-RateLimit-Remaining
- Retourne 429 Too Many Requests quand la limite est atteinte
- Stocke les compteurs dans Redis (déjà configuré dans le projet)
- Crée le middleware dans src/middleware/rate-limit.ts"

Plus votre spécification est détaillée, plus le résultat sera proche de ce que vous attendez. Codex traite chaque point comme une exigence à satisfaire.

Travailler avec plusieurs fichiers

Codex peut créer ou modifier plusieurs fichiers en une seule tâche :

"Ajoute un système de notifications in-app :
1. Le modèle Prisma Notification (id, userId, type, message, read, createdAt)
2. Le service src/services/notification.service.ts
3. Les routes API CRUD dans src/api/routes/notifications.ts
4. Les tests dans src/api/routes/notifications.test.ts"

Codex crée les quatre fichiers de manière cohérente : le service utilise le modèle Prisma, les routes appellent le service, et les tests couvrent les routes.

Conseils pour des résultats optimaux

  • Référencez des fichiers existants : « comme dans auth.service.ts » aide Codex à comprendre vos conventions
  • Précisez les bibliothèques : « utilise Zod pour la validation » plutôt que « ajoute de la validation »
  • Indiquez le format de sortie : « retourne un objet { success, data, error } »
  • Mentionnez les edge cases : « gère le cas où l’utilisateur n’existe pas »
  • Utilisez AGENTS.md : les conventions documentées dans AGENTS.md sont appliquées automatiquement

Points clés à retenir

  • Codex comprend votre codebase et respecte vos conventions existantes
  • Référencez des fichiers existants pour guider le style et les patterns
  • Les spécifications détaillées produisent des résultats plus précis
  • Codex peut créer et modifier plusieurs fichiers en une seule tâche
  • AGENTS.md complète vos instructions avec des règles permanentes