Aller au contenu
Développement medium

Claude Code : subagents pour isoler le contexte et déléguer les tâches longues

14 min de lecture

Logo Claude Code - subagents pour isoler le contexte

Vous déclenchez une exploration large (« relis tout app/ et dis-moi où ajouter l’endpoint ») et d’un coup, la session principale est encombrée de fichiers lus, de résumés intermédiaires, d’hypothèses abandonnées. Le contexte de travail est pollué avant même que vous ayez écrit la première ligne. Les subagents Claude Code répondent à ce problème : vous déléguez la tâche à un agent isolé qui ne remonte que son rapport final. La session principale garde sa lisibilité, et vous pouvez spécialiser chaque subagent (explorateur, relecteur, auditeur) avec ses propres outils et son propre prompt système.

  • Créer un subagent projet dans .claude/agents/<nom>.md
  • Scoper finement les outils disponibles pour le subagent
  • Choisir entre invocation automatique (via description) et invocation manuelle
  • Distinguer subagent (contexte isolé, rapport final) et skill (procédure dans la session courante)
  • Savoir quand regarder du côté de l’Agent SDK plutôt que des subagents natifs

Dans quel contexte utiliser cette fonctionnalité ?

Section intitulée « Dans quel contexte utiliser cette fonctionnalité ? »
  • Tâche exploratoire coûteuse en lecture (plusieurs dizaines de fichiers) dont vous voulez juste la conclusion
  • Tâche répétable avec un prompt système stable (ex : revue de diff, audit de sécurité léger)
  • Besoin de paralléliser plusieurs explorations indépendantes sans mélanger leurs contextes
  • Besoin de restreindre les outils d’une sous-tâche (ex : un agent qui ne peut que lire, jamais écrire)
CritèreSkillSubagent
ContextePoursuit la session couranteContexte isolé, ne revient qu’un rapport
DuréeCourt, quelques étapesPeut être long (exploration large)
Outilsallowed-tools scopéstools scopés, prompt système dédié
Bon pourProcédure répétée (valider, préparer PR)Exploration, revue, audit
Analogie« Une checklist que je déroule »« Un collègue qui me rend un rapport »

Règle simple : si vous voulez les étapes visibles dans la session, c’est un skill. Si vous voulez juste la conclusion, c’est un subagent.

Un subagent est un fichier Markdown à plat dans .claude/agents/<nom>.md, avec frontmatter YAML et un corps qui sert de prompt système pour l’agent.

lab-claude/
├── .claude/
│ └── agents/
│ ├── explorer.md
│ └── reviewer.md
└── ...

Frontmatter minimal :

---
name: explorer
description: Explore le code en lecture seule et résume la structure, les points d'entrée et les zones à risque. À utiliser quand l'utilisateur demande une vue d'ensemble d'un module ou d'un dossier.
tools: Read, Glob, Grep
model: inherit
---
Tu es un agent d'exploration en lecture seule sur un projet Python FastAPI.
Ta sortie doit tenir en 3 sections courtes :
- Structure observée (3 à 5 points)
- Points d'entrée et dépendances clés
- Zones à risque ou à clarifier
Ne modifie aucun fichier. Ne lance aucune commande shell.

Les champs de frontmatter utiles :

ChampEffet
nameIdentifiant interne du subagent
descriptionGuide Claude pour décider quand déléguer automatiquement — rédigez-la comme une consigne d’orchestrateur
toolsListe des outils autorisés. Omis = hérite de la session (à éviter). Explicite = garantit l’isolation
modelinherit (recommandé) ou un alias précis (sonnet, haiku, opus)

Objectif : deux subagents utiles — explorer pour les vues d’ensemble en lecture seule, reviewer pour relire un diff avant commit.

  1. Créez le dossier .claude/agents/

    Fenêtre de terminal
    cd ~/Projets/lab-claude
    mkdir -p .claude/agents
  2. Écrivez .claude/agents/explorer.md

    ---
    name: explorer
    description: Explore un dossier ou un module en lecture seule et produit une synthèse courte. À utiliser quand l'utilisateur demande une vue d'ensemble, une carte du code, ou avant de proposer un plan de modification.
    tools: Read, Glob, Grep
    model: inherit
    ---
    Tu es un agent d'exploration strictement en lecture seule pour un projet Python FastAPI géré avec uv, ruff et pytest.
    Méthode :
    1. Repère les points d'entrée et les dépendances clés
    2. Liste les fichiers significatifs avec leur rôle en une ligne
    3. Identifie les zones à risque (code dupliqué, absence de tests, TODO anciens)
    Format de sortie (trois sections, rien de plus) :
    - Structure observée (3 à 5 puces)
    - Points d'entrée et dépendances
    - Zones à risque ou à clarifier
    Ne modifie aucun fichier. Ne lance aucune commande shell. Si la demande exige d'écrire, réponds que ce n'est pas ton rôle et rends la main.
  3. Invoquez-le depuis la session principale

    Je veux une vue d'ensemble de app/ avant de décider où ajouter un endpoint
    /items. Délègue à l'agent explorer.
  4. Observez le retour : une synthèse compacte, pas un log d’exploration

Objectif : relire un diff, lister les remarques, ne toucher à rien.

---
name: reviewer
description: Relit un diff git et liste les remarques (risques, incohérences, points de style). À utiliser avant commit ou avant push, jamais pour modifier du code.
tools: Bash(git diff:*), Bash(git log:*), Bash(git status), Read, Grep
model: inherit
---
Tu es un reviewer de code pour un projet Python FastAPI (uv, ruff, pytest).
Procédure :
1. Lance `git diff` pour voir les changements non commités
2. Au besoin, lis les fichiers touchés pour comprendre le contexte
3. Produit une liste de remarques classées :
- Bloquant (bug probable, faille, test manquant critique)
- À discuter (choix de design, nommage, périmètre)
- Mineur (typo, style, commentaire obsolète)
Contraintes :
- N'écris dans aucun fichier
- Ne lance ni `ruff` ni `pytest` (c'est le rôle d'un autre geste)
- Si le diff est vide, dis-le et rends la main

Invocation typique :

Délègue au reviewer : relis mon diff courant avant que je commit.

Deux chemins coexistent :

CheminDéclencheurQuand c’est pertinent
Auto-délégationClaude repère que la demande matche la descriptionDescription précise, usage régulier
ManuelleVous écrivez « délègue à l’agent X » dans le promptTâche ambiguë, ou vous voulez garantir l’isolation du contexte

Au début, invoquez manuellement : c’est plus lisible et vous constatez l’effet de l’isolation. Une fois les description bien rodées, laissez Claude aiguiller.

Scoper les outils : la règle du moins privilégié

Section intitulée « Scoper les outils : la règle du moins privilégié »

Un subagent doit avoir le minimum d’outils pour faire son job. Quelques patrons utiles :

Intention du subagenttools typique
Lecture seuleRead, Glob, Grep
Revue de diffBash(git diff:*), Bash(git log:*), Bash(git status), Read, Grep
Audit de secrets dans le dépôtRead, Glob, Grep (pas de Bash, pas d’Edit)
Génération de documentationRead, Glob, Grep, Write(docs/**)

Règle : si vous hésitez, n’ajoutez pas l’outil. Un subagent trop puissant perd son intérêt d’isolation.

BesoinBrique
Exécuter une procédure invocable par /nom dans la sessionSkill
Déléguer une exploration isolée et récupérer un rapportSubagent
Exécuter une commande shell autour d’un événementHook
Autoriser ou bloquer un outilsettings.json
Étendre Claude vers un outil externeServeur MCP

Les subagents natifs couvrent la délégation à l’intérieur d’une session Claude Code. Quand vous voulez construire une application autonome — un agent qui tourne dans votre infra, appelé par une API, piloté par un cron — vous sortez de la CLIet vous utilisez l’Agent SDK d’Anthropic :

  • @anthropic-ai/claude-agent-sdk (Node.js / TypeScript)
  • claude-agent-sdk (Python)

Le SDK expose les mêmes primitives (outils, permissions, hiérarchie d’agents) mais dans votre propre programme. Bascule typique : vous prototypez un subagent dans .claude/agents/, puis vous le réimplémentez via le SDK quand il doit tourner en dehors d’une session interactive.

SymptômeCause probableCorrection
Le subagent n’est jamais invoqué automatiquementdescription vague ou trop génériqueReformuler en « À utiliser quand… » avec déclencheur précis
Le subagent modifie des fichiers que vous ne vouliez pas touchertools trop large ou omisLister explicitement les outils en retirant Edit/Write
La session principale reste polluéeInvocation manuelle oubliée, Claude a fait l’exploration en directRedemander explicitement « délègue à l’agent X »
Le rapport du subagent est trop longPrompt système sans format imposéImposer une structure de sortie (sections, nombre max de points)
Le subagent redemande les mêmes infos à chaque appelPrompt système trop vague, trop de libre arbitreResserrer la procédure en étapes numérotées
  • J’ai au moins un subagent dans .claude/agents/
  • Sa description commence par « À utiliser quand… » et est actionnable
  • Son tools est explicite et au minimum nécessaire
  • Son prompt système impose un format de sortie court
  • J’ai testé une invocation manuelle et vérifié que le contexte principal reste propre
  • Je sais quand utiliser un skill plutôt qu’un subagent
  • Un subagent = contexte isolé + rapport final, un skill = procédure dans la session courante
  • La description est le vrai levier d’auto-délégation, pas le prompt système
  • Scoper tools au minimum garantit que le subagent reste spécialisé
  • Invocation manuelle au début, automatique une fois les description rodées
  • Pour un agent qui tourne hors session interactive, regardez l’Agent SDK

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn