Comment mieux coder avec Claude Code sans perdre de temps ?

Claude Code marche mieux quand je le traite comme un développeur à qui je donne du contexte, des critères de réussite et des moyens de vérifier. Le sujet n’est pas de faire un prompt plus long, c’est de rendre la session contrôlable.

Quelle consigne donne un bon résultat ?

Une bonne consigne dit à Claude Code ce qu’il ne peut pas deviner. Ce n’est presque jamais un prompt magique. Les sessions efficaces viennent surtout d’un contexte clair, donné au bon endroit, avec une demande vérifiable.

Je donne presque toujours trois infos. L’emplacement exact du fichier ou du dossier. Le scénario précis à corriger ou créer. La définition de fini, c’est-à-dire ce qui prouve que le travail est terminé. Dans les observations partagées sur des centaines de milliers de sessions, les utilisateurs avancés donnent plus d’actions utiles et plus de contexte. Mais le vrai sujet, ce n’est pas la longueur brute. C’est la précision.

  • Vague : Corrige le bug du formulaire. Exploitable : Dans src/components/SignupForm.tsx, quand l’email est vide et que je clique sur submit, je veux afficher le message Email obligatoire sans appeler l’API, et le test npm test SignupForm doit passer.
  • Vague : Améliore la page admin. Exploitable : Dans src/pages/admin/users.tsx, ajoute un filtre par rôle sur la liste existante, sans changer l’API, et vérifie avec npm run test:ui.
  • Vague : Refactor le service auth. Exploitable : Dans src/services/auth.ts, extrais la logique de refresh token dans une fonction refreshAccessToken, garde la même signature publique, et ne modifie pas src/api/client.ts.
  • Vague : Ajoute les tests. Exploitable : Dans tests/billing.test.ts, couvre le cas où une facture payée ne peut pas être annulée, avec npm test billing en validation finale.

Pour éviter de répéter ça à chaque session, je mets le contexte stable dans CLAUDE.md. Anthropic recommande aussi de lancer /init pour aider Claude Code à créer ce fichier. J’y mets les commandes utiles, les conventions, les règles de style, les tests, et surtout les zones à ne pas toucher. Ça évite les improvisations.

# Objectif du projet
# Application SaaS B2B pour gérer les inscriptions, abonnements et factures.
# Priorité actuelle : stabilité du checkout et réduction des bugs formulaire.

# Commandes utiles
npm run dev
npm test
npm test SignupForm
npm run lint
npm run typecheck

# Architecture
# src/components : composants React réutilisables.
# src/pages : pages Next.js.
# src/services : logique métier et appels API.
# tests : tests unitaires et intégration.

# Conventions
# Utiliser TypeScript strict.
# Ne pas utiliser any sauf justification courte.
# Garder les composants simples, pas de logique API dans les composants.
# Préférer des fonctions pures dans src/services.

# Zones à ne pas modifier
# Ne pas modifier src/api/client.ts sans demande explicite.
# Ne pas changer le schéma Prisma sans validation humaine.

# Définition de fini
# Les tests ciblés passent.
# npm run lint passe.
# npm run typecheck passe.
# Le comportement demandé est couvert par un test si possible.
Ce que je demande Pourquoi ça aide Claude Code Exemple concret
Un fichier précis Ça réduit la recherche inutile. Dans src/components/SignupForm.tsx.
Un scénario précis Ça évite une correction trop large. Email vide au submit, afficher Email obligatoire.
Une définition de fini Ça donne un critère vérifiable. Npm test SignupForm doit passer.

Que doit vérifier Claude Code ?

Claude Code doit pouvoir vérifier son travail avec une commande, un test, un log ou un résultat observable. Sans ça, on travaille trop à l’impression. Le code “a l’air correct”, mais personne n’a prouvé qu’il marche. Et franchement, c’est là que les sessions partent en rond.

Je demande presque toujours une vérification explicite. Pas juste “corrige le bug”. Plutôt “corrige le bug, lance les tests, lance le typage, puis résume ce qui a changé”. Là, Claude Code devient vraiment utile. Il lit l’erreur, modifie le code, relance la commande, voit si ça passe, recommence si besoin. C’est beaucoup plus fiable qu’une discussion abstraite.

Voici un petit exemple TypeScript avec un calcul de panier.

// src/calculateTotal.ts

export type CartItem = {
  price: number;
  quantity: number;
};

export type CalculateTotalOptions = {
  discountPercent?: number;
  shippingFee?: number;
};

export function calculateTotal(
  items: CartItem[],
  options: CalculateTotalOptions = {}
): number {
  // Calcule le sous-total du panier.
  const subtotal = items.reduce((sum, item) => {
    return sum + item.price * item.quantity;
  }, 0);

  // Applique une remise optionnelle en pourcentage.
  const discount = options.discountPercent
    ? subtotal * (options.discountPercent / 100)
    : 0;

  // Ajoute les frais de livraison optionnels.
  const shipping = options.shippingFee ?? 0;

  return subtotal - discount + shipping;
}
// tests/calculateTotal.test.ts

import { describe, expect, it } from "vitest";
import { calculateTotal } from "../src/calculateTotal";

describe("calculateTotal", () => {
  it("Calcule un total simple", () => {
    expect(
      calculateTotal([{ price: 10, quantity: 2 }])
    ).toBe(20);
  });

  it("Applique une remise et des frais de livraison", () => {
    expect(
      calculateTotal(
        [{ price: 50, quantity: 2 }],
        { discountPercent: 10, shippingFee: 5 }
      )
    ).toBe(95);
  });
});
{
  "scripts": {
    "test": "vitest run",
    "lint": "eslint .",
    "typecheck": "tsc --noEmit"
  },
  "devDependencies": {
    "@types/node": "latest",
    "eslint": "latest",
    "typescript": "latest",
    "vitest": "latest"
  }
}

Le prompt que je donnerais à Claude Code est simple : “Modifie calculateTotal pour gérer une remise en pourcentage, puis lance npm test et npm run typecheck. Ne considère pas la tâche finie tant que les deux commandes ne passent pas.”

Pour les logs, même logique. Évitez “ça plante en prod”. Collez la stack trace, l’identifiant Sentry, ou les lignes utiles du log. Exemple : “Erreur Sentry EVENT_ID 8f3a…, voici la stack trace complète, trouve la cause et propose un correctif vérifiable”. Si l’environnement le permet, je donne aussi accès à gh, aws, gcloud ou sentry-cli. Claude Code récupère alors un contexte compact, réel, vérifiable, au lieu de deviner à partir d’une description floue.

Type de tâche Vérification attendue Commande ou preuve à demander
Bug TypeScript Tests et typage au vert npm test et npm run typecheck
Refactor Aucune régression visible npm test et npm run lint
Bug production Cause reliée à un log réel Stack trace, Sentry ID, logs applicatifs
Déploiement Statut observable Logs CI, endpoint santé, commande CLI cloud

Qui doit corriger le code ?

Dans une bonne session, Claude Code corrige le code avec les preuves disponibles, et moi je corrige surtout la direction produit, le besoin et les contraintes. Si je passe mon temps à relire chaque ligne à la main, je perds le bénéfice de l’agent. Autant coder moi-même, ce sera plus lent mais au moins je saurai pourquoi.

Le vrai sujet, c’est la direction de correction. Quand Claude Code manque de contexte, je finis par corriger l’outil en boucle : non pas ce fichier, non pas cette logique, non pas cette dépendance. C’est épuisant. Quand le cadre est clair, Claude Code peut se corriger lui-même avec des signaux vérifiables : tests qui échouent, erreurs de compilation, logs, lint, types TypeScript. Là, je ne juge plus “à l’œil”, je vérifie un résultat.

Je fais souvent comme ça avec mes clients, surtout sur des bases de code un peu vivantes. Avant d’écrire, je force une mini phase d’interview. Claude Code doit extraire le contexte, les utilisateurs concernés, les cas limites, les contraintes techniques et les critères d’acceptation. Ça évite les “ah non, en fait…” au bout de 40 minutes.

  • Prompt plan avant modification : “Analyse la demande et propose un plan court avant de modifier le code. Liste les fichiers que tu penses toucher, la logique prévue et les tests à lancer. N’écris aucun code avant ma validation.”
  • Prompt risques avant action : “Avant de toucher au code, liste les risques techniques, les zones ambiguës, les dépendances impactées et les questions bloquantes. Si une hypothèse est nécessaire, indique-la clairement.”
  • Prompt revue finale : “Fais une revue finale. Liste les fichiers modifiés, les commandes lancées, les tests passés ou échoués, les choix faits, et les points que je dois encore vérifier manuellement.”

Un exemple simple. Ici, le bug n’est pas à corriger tout de suite. Je veux d’abord le reproduire avec un test. Sinon on part sur une intuition, et l’intuition en code, c’est souvent du bruit.

// Fonction volontairement bugguée.
// Objectif attendu : appliquer une remise en pourcentage.
// Exemple : 100 avec 20% de remise doit retourner 80.

export function applyDiscount(price: number, discountPercent: number): number {
  // Bug : on ajoute la remise au lieu de la retirer.
  return price + price * (discountPercent / 100);
}

Le prompt que j’utiliserais avec Claude Code :

Reproduis d’abord le bug avec un test automatisé avant de corriger.

Contexte :
La fonction applyDiscount doit retourner le prix après remise.
Pour price = 100 et discountPercent = 20, le résultat attendu est 80.

Contraintes :
Ne modifie pas encore l’implémentation.
Ajoute ou adapte un test qui échoue.
Lance la commande de test pertinente.
Montre-moi l’erreur obtenue.
Ensuite seulement, propose la correction minimale.

C’est ça le bon partage du travail. Claude Code corrige le code avec des preuves. Moi, je corrige le cap, les priorités, les règles métier et les zones où le produit ne pardonne pas.

Quel workflow garder en équipe ?

Le meilleur workflow, c’est brief court, contexte projet, plan, modification, vérification, résumé. Pas besoin d’une usine à gaz. Ce qui compte, c’est que chaque session laisse une trace réutilisable par la suivante.

En équipe, je garde toujours le même rythme. Je prépare un fichier CLAUDE.md à la racine du projet avec les règles utiles : stack technique, conventions de code, commandes de test, architecture, pièges connus. C’est la mémoire projet. Ça évite de répéter “on utilise pnpm”, “ne touche pas à cette API”, “les tests backend se lancent comme ça”.

Ensuite, j’ouvre une branche Git propre, je donne l’objectif en une phrase, puis je demande un plan avant toute modification. Pas un roman. Juste les fichiers concernés, les risques, et l’ordre logique. Une fois le plan validé, j’autorise seulement les commandes utiles avec les permissions d’outils de Claude Code. Par exemple lecture de fichiers, diff Git, tests, mais pas de commande destructive. Ça calme beaucoup de problèmes, surtout sur des gros repos.

Les commandes slash personnalisées sont très pratiques pour standardiser les tâches répétitives. Une revue de PR, une correction de test, une migration, une analyse de dette technique… Je préfère ça à des prompts copiés dans Slack qui vieillissent mal.

---
description: Revue locale de PR avant ouverture ou merge
argument-hint: [branche cible, exemple main]
allowed-tools: Bash(git status:*), Bash(git diff:*), Bash(git log:*), Read, Grep, Glob
---

<!-- À adapter : change la branche cible par défaut si votre équipe utilise develop ou trunk. -->
Branche cible: $ARGUMENTS

<!-- Objectif : Forcer Claude à partir du diff réel, pas d'une impression générale. -->
Lis le diff local avec git diff Branche cible...HEAD.

<!-- À adapter : Ajoute ici vos zones sensibles, par exemple auth, paiement, données personnelles. -->
Identifie les risques fonctionnels, techniques et sécurité.

Vérifie les tests manquants ou insuffisants.

Propose les corrections prioritaires, classées par impact.

Ne modifie aucun fichier sans me demander confirmation.

À la fin, je demande toujours un résumé exploitable pour la pull request. Pas “j’ai amélioré le code”. Je veux du concret.

  • Fichiers modifiés et raison de chaque changement.
  • Tests lancés, avec la commande exacte.
  • Commandes échouées, avec l’erreur utile.
  • Hypothèses prises pendant l’implémentation.
  • Points à faire valider par un humain.

À grande échelle, le vrai gain ne vient pas d’un prompt héroïque isolé. Il vient de la standardisation du contexte. Quand toute l’équipe donne à Claude Code les mêmes règles, les mêmes commandes et les mêmes attentes, on perd moins de temps à recadrer l’agent, et on récupère plus souvent du code vraiment mergable.

Alors vous lui donnez quoi au prochain prompt ?

Claude Code devient vraiment rentable quand je lui donne un cadre de travail, pas juste une demande vague. Les trois leviers sont simples : préciser le contexte que l’outil ne peut pas deviner, lui donner quelque chose à vérifier, et organiser la session pour qu’il se corrige avec des preuves plutôt qu’avec mes remarques au fil de l’eau. CLAUDE.md, tests, logs, commandes CLI, plan court, résumé final, rien de spectaculaire. Mais chez les clients, c’est souvent ça qui fait passer l’IA de gadget à vrai assistant de dev. Le bénéfice pour vous : moins d’allers-retours, moins de code fragile, plus de sessions utiles.

FAQ

  • Claude Code sert à quoi exactement ? Claude Code sert à travailler dans un projet de développement depuis le terminal. Il peut lire le code, proposer un plan, modifier des fichiers, lancer des commandes et aider à corriger les erreurs si je lui donne assez de contexte.
  • Pourquoi mes prompts Claude Code donnent des résultats moyens ? Le problème vient souvent d’une consigne trop implicite. Si je ne donne pas le fichier concerné, le scénario attendu, les contraintes et la définition de fini, Claude Code doit deviner. Et quand il devine, la session coûte plus cher en corrections.
  • Faut-il écrire de très longs prompts avec Claude Code ? Pas forcément. Un prompt court peut très bien marcher s’il contient les bonnes informations. Je préfère une consigne précise avec fichier, commande de test et critère d’acceptation plutôt qu’un grand texte flou.
  • Quels outils donner à Claude Code ? Je donne les outils utiles au contexte : tests, lint, typage, Git, logs, et parfois des CLI comme gh, aws, gcloud ou sentry-cli si l’équipe les utilise déjà. L’idée, c’est de lui donner des preuves accessibles, pas un accès total sans contrôle.
  • Comment éviter que Claude Code casse le projet ? Je limite les permissions, je travaille sur une branche Git, je demande un plan avant les grosses modifications, et je force une vérification finale avec les commandes du projet. Le fichier CLAUDE.md aide aussi à rappeler les règles et les zones sensibles.

 

 

A propos de l’auteur

Je suis Franck Scandolera, expert et formateur en Tracking avancé server-side, Analytics Engineering, automatisation No/Low Code avec n8n, intégration de l’IA en entreprise et SEO/GEO. J’accompagne des équipes qui veulent utiliser l’IA sans folklore, avec des workflows propres, mesurables et maintenables. J’ai travaillé pour des clients comme Logis Hôtel, Yelloh Village, BazarChic, la Fédération Française de Football ou Texdecor. Je dirige l’agence webAnalyste et l’organisme Formations Analytics. Si vous voulez structurer vos usages IA, data ou automatisation, contactez-moi.

Retour en haut