- Agents
- Create Subagent
Pourquoi créer un agent custom ?
Les agents built-in couvrent les cas d'usage les plus courants, mais chaque équipe a ses propres workflows, conventions et processus. Un agent custom vous permet de codifier ces spécificités et de les rendre réutilisables.
Structure d'un agent
Un agent est défini par un fichier Markdown dans le dossier .claude/agents/ (niveau projet) ou ~/.claude/agents/ (niveau global). Chaque fichier contient les sections suivantes.
Anatomie complète
# Nom de l'agent## RôleDescription du rôle et de l'expertise de l'agent.Ce que l'agent doit faire et ne pas faire.## Outils disponiblesListe des outils que l'agent peut utiliser :- Read (lecture de fichiers)- Edit (modification de fichiers)- Bash (exécution de commandes)- Grep (recherche dans le code)- Glob (recherche de fichiers par pattern)## InstructionsÉtapes précises que l'agent doit suivre.1. Première étape2. Deuxième étape3. ...## Format de sortieComment l'agent doit structurer son rapport ou résultat.## ContraintesCe que l'agent ne doit jamais faire.
Référence complète du frontmatter
Le vrai point de départ d'un agent, c'est son frontmatter : le bloc YAML en début de fichier qui configure son comportement avant même la première ligne de prompt. Voici les 16 champs disponibles.
| Champ | Type | Description |
|---|---|---|
name | string | Nom de l'agent, utilisé pour l'invoquer |
description | string | Description que Claude lit pour décider d'utiliser cet agent automatiquement. Mettre "PROACTIVELY" encourage l'auto-invocation. |
tools | string[] | Outils autorisés : Read, Write, Edit, Bash, Glob, Grep, Agent, etc. |
disallowedTools | string[] | Outils explicitement interdits, même si l'agent voulait les utiliser |
model | string | Modèle à utiliser : "haiku", "sonnet", "opus" ou un ID complet de modèle |
permissionMode | string | Niveau de permissions : "default", "acceptEdits", "bypassPermissions", "auto" |
maxTurns | number | Nombre maximum de tours agentiques avant arrêt forcé |
skills | string[] | Skills à précharger dans le contexte de l'agent |
mcpServers | string[] | MCP servers accessibles depuis cet agent |
hooks | object | Hooks spécifiques à cet agent (pre/post-execution) |
memory | string | Type de mémoire : "user", "project", "local" |
background | boolean | true pour exécuter l'agent en arrière-plan |
effort | string | Niveau d'effort cognitif : "low", "medium", "high" |
isolation | string | "worktree" pour un environnement Git isolé |
initialPrompt | string | Prompt système additionnel injecté avant les instructions |
color | string | Couleur d'affichage dans la statusline (hex ou nom) |
Le mot-clé PROACTIVELY
Le champ description sert à deux choses : documenter l'agent pour les humains, et indiquer à Claude quand l'utiliser automatiquement. En ajoutant le mot "PROACTIVELY" dans la description, vous signalez que Claude doit invoquer cet agent de lui-même, sans attendre une instruction explicite.
# L'agent attend qu'on lui demandedescription: "Effectue une review de code après modification."# L'agent s'active automatiquementdescription: "Expert code reviewer. Use PROACTIVELY after writing or modifying code."
Choisir le bon modèle pour chaque agent
Le champ model est l'un des leviers les plus importants : il influence directement la vitesse, la qualité et le coût de chaque exécution.
| Type d'agent | Modèle recommandé | Pourquoi |
|---|---|---|
| Exploration, grep, lecture de fichiers | haiku | Rapide, coût minimal pour les tâches simples |
| Code review, développement courant | sonnet | Bon rapport qualité/vitesse pour la majorité des cas |
| Architecture, debugging complexe, sécurité | opus | Raisonnement approfondi quand c'est nécessaire |
Un pipeline bien conçu utilise haiku pour explorer, sonnet pour coder, et opus uniquement pour les décisions critiques.
Exemple d'agent avec frontmatter complet
---name: code-reviewerdescription: "Expert code reviewer. Use PROACTIVELY after writing or modifying code."model: opustools: [Read, Grep, Glob, Bash]disallowedTools: [Write, Edit]permissionMode: defaultmaxTurns: 20memory: projecteffort: highisolation: worktreeskills: [code-quality, security-scan]color: "#f59e0b"---Tu es un reviewer de code senior. Pour chaque revue, tu analyses la qualité,la sécurité et la maintenabilité des changements. Tu proposes des correctionsconcrètes, classées par sévérité.
Champs avancés en détail
Quelques champs méritent une explication plus poussée parce qu'ils changent radicalement le comportement de l'agent.
effort : doser le raisonnement
Le champ effort règle combien de tokens "thinking" l'agent peut consommer avant d'agir.
| Valeur | Tokens thinking max | Quand l'utiliser |
|---|---|---|
low | ~500 | Tâches mécaniques (lint, format, lookup) |
medium | ~5000 (défaut) | Développement courant, code review léger |
high | ~20000 | Architecture, debugging complexe, audit sécurité |
Un agent en effort: high paie plus cher mais évite les erreurs sur les décisions critiques. Un agent en low est presque gratuit mais ne convient qu'aux tâches sans ambiguïté.
background : exécution non-bloquante
Avec background: true, l'agent tourne sans bloquer la session principale. Vous gardez la main pour faire autre chose. Vous récupérez son output via /tasks quand il a fini.
---name: long-researchdescription: "Audit complet de la dette technique sur 200 fichiers."background: trueisolation: worktreemaxTurns: 200---
À combiner avec isolation: worktree pour éviter les conflits si vous éditez le même repo en parallèle.
initialPrompt : injecter du contexte stable
initialPrompt est concaténé avant le prompt utilisateur à chaque invocation. Idéal pour rappeler des conventions immuables sans les répéter à chaque appel.
---name: react-component-builderdescription: "Crée un composant React conforme au design system."initialPrompt: |Conventions du design system :- Tous les composants sont des function components avec hooks- Pas de default exports- Tailwind utility-first, jamais de CSS custom- Tests Vitest co-localisés en .test.tsx---
L'avantage par rapport à mettre ces conventions dans le prompt principal : initialPrompt est en haut du contexte agent, donc moins susceptible d'être ignoré quand le prompt principal s'allonge.
hooks : hooks spécifiques à l'agent
Vous pouvez attacher des hooks au cycle de vie de l'agent, en plus des hooks globaux. Pratique pour logguer ce qu'un agent particulier fait sans polluer les logs des autres agents.
---name: db-migration-agentdescription: "Applique des migrations Prisma."hooks:PreToolUse:- matcher: Bashcommand: "echo '[db-migration] $(date)' >> /tmp/db-migrations.log"Stop:- command: "bash ~/.claude/hooks/notify-team.sh"---
Ces hooks ne s'appliquent qu'aux invocations de cet agent. Les autres agents et la session principale ne sont pas affectés.
Exemple 1 : Agent de review de code
Cet agent effectue une revue de code approfondie avec un focus sur la qualité et les conventions.
# Code Reviewer## RôleTu es un reviewer de code senior avec 15 ans d'expérience.Tu analyses le code modifié avec rigueur et bienveillance.Tu ne te contentes pas de signaler les problèmes, tu proposesdes corrections concrètes.## Outils disponibles- Bash (pour git diff, git log)- Read (pour lire les fichiers modifiés et leur contexte)- Grep (pour chercher des patterns problématiques)## Instructions1. Récupère le diff avec `git diff main...HEAD`2. Pour chaque fichier modifié :a. Lis le fichier complet (pas seulement le diff)b. Vérifie la cohérence avec le style du projetc. Cherche les bugs potentielsd. Vérifie la gestion des erreurse. Vérifie l'absence de secrets en dur3. Vérifie que les tests existent pour les nouveaux chemins4. Produis le rapport structuré## Format de sortiePour chaque problème trouvé :- **Fichier** : chemin/vers/fichier.ts:ligne- **Sévérité** : CRITICAL | HIGH | MEDIUM | LOW- **Problème** : description claire du problème- **Correction** : code corrigé proposéTermine par un résumé : nombre total de problèmes par sévérité.## Contraintes- Ne modifie JAMAIS le code directement- Ne signale pas les problèmes de style déjà couverts par le linter- Limite-toi à 20 problèmes maximum (priorise les plus critiques)
Exemple 2 : Agent de tests
Un agent spécialisé dans l'écriture de tests unitaires et d'intégration.
# Test Writer## RôleTu es un expert en testing qui écrit des tests exhaustifs,lisibles et maintenables. Tu suis le pattern AAA(Arrange-Act-Assert) et tu couvres les cas limites.## Outils disponibles- Read (pour lire le code source à tester)- Write (pour créer les fichiers de test)- Bash (pour exécuter les tests et vérifier la couverture)- Grep (pour trouver les tests existants)## Instructions1. Lis le fichier source à tester2. Identifie toutes les fonctions publiques3. Pour chaque fonction, liste les cas de test :- Cas nominal (happy path)- Cas limites (edge cases)- Cas d'erreur (error paths)- Cas avec valeurs nulles/undefined4. Écris les tests en suivant le pattern AAA5. Exécute les tests pour vérifier qu'ils passent6. Vérifie la couverture (objectif : 80%+)## Format de sortieCrée le fichier de test à côté du fichier source :- `module.ts` → `module.test.ts`- `module.tsx` → `module.test.tsx`## Contraintes- N'utilise pas de mocks sauf si absolument nécessaire- Chaque test doit être indépendant (pas d'ordre d'exécution)- Noms de tests descriptifs en français- Maximum 50 lignes par test
Exemple 3 : Agent de documentation
Un agent qui génère et met à jour la documentation technique.
# Doc Updater## RôleTu es un technical writer qui produit une documentationclaire, concise et à jour. Tu t'adresses à des développeursde niveau intermédiaire.## Outils disponibles- Read (pour lire le code source)- Edit (pour mettre à jour les fichiers de documentation)- Glob (pour trouver les fichiers .md existants)- Bash (pour vérifier la structure du projet)## Instructions1. Analyse les changements récents (git log --oneline -20)2. Identifie les fichiers de documentation impactés3. Pour chaque fichier à mettre à jour :a. Lis le code source correspondantb. Vérifie que la documentation reflète le code actuelc. Mets à jour les sections obsolètesd. Ajoute les nouvelles fonctionnalités non documentées4. Vérifie les liens internes (pas de liens cassés)## Contraintes- Garde le ton du projet (vérifie le CLAUDE.md)- N'invente pas de fonctionnalités- Inclus toujours un exemple de code fonctionnel- Utilise le format Markdown standard
Où placer les fichiers d'agents
Agents de projet (partagés avec l'équipe)
Placez-les dans .claude/agents/ à la racine de votre projet. Ils seront versionnés avec Git et disponibles pour tous les membres de l'équipe.
mon-projet/.claude/agents/code-reviewer.mdtest-writer.mddoc-updater.mddb-migration.md
Agents personnels (vos préférences)
Placez-les dans ~/.claude/agents/ dans votre répertoire home. Ils seront disponibles dans tous vos projets mais pas partagés avec l'équipe.
~/.claude/agents/my-review-style.mdmy-test-preferences.mdbrainstorm-helper.md
Agents via CLAUDE.md (intégrés au contexte)
Vous pouvez aussi référencer des agents directement dans votre CLAUDE.md en décrivant quand les utiliser.
# CLAUDE.md## Agents disponibles- Utilise le **code-reviewer** agent après chaque modification- Utilise le **tdd-guide** agent pour les nouvelles features- Utilise le **security-reviewer** agent avant chaque commit
Bonnes pratiques pour les prompts d'agents
L'efficacité d'un agent dépend directement de la qualité de son prompt. Voici les principes fondamentaux.
1. Soyez spécifique sur le rôle
# MAUVAISTu es un agent de code review.# BONTu es un reviewer de code senior spécialisé en TypeScriptet React. Tu as 15 ans d'expérience et tu es particulièrementattentif aux problèmes de performance, de sécurité etd'accessibilité. Tu donnes des feedbacks constructifsavec des suggestions de correction concrètes.
2. Définissez des étapes claires
# MAUVAISAnalyse le code et dis-moi si c'est bon.# BON1. Lis le diff complet avec git diff main...HEAD2. Pour chaque fichier modifié, vérifie :a. La gestion des erreurs (try/catch, validation d'input)b. Les problèmes de performance (boucles imbriquées, requêtes N+1)c. Les failles de sécurité (injection, XSS, secrets en dur)3. Vérifie la couverture de tests4. Produis un rapport structuré par sévérité
3. Spécifiez le format de sortie
# MAUVAISDonne-moi les résultats.# BONPour chaque problème, fournis :- **Fichier** : chemin:ligne- **Sévérité** : CRITICAL / HIGH / MEDIUM / LOW- **Problème** : description en une phrase- **Suggestion** : code corrigé dans un bloc de codeTermine par un tableau récapitulatif.
4. Définissez les contraintes (les "ne jamais")
## Contraintes- Ne modifie JAMAIS le code directement (review seulement)- Ne signale pas plus de 15 problèmes (priorise)- Ignore les problèmes de formatage (gérés par Prettier)- Ne commente pas les choix d'architecture sauf si critique- Réponds toujours en français
Patterns avancés de subagents
Au-delà des agents simples, plusieurs patterns permettent de résoudre des problèmes complexes en combinant les subagents de manière structurée.
Pattern fan-out/fan-in
Le fan-out/fan-in lance plusieurs subagents en parallèle sur des sous-tâches indépendantes, puis un agent synthétiseur rassemble les résultats.
# Fan-out/Fan-in : Review multi-perspective## Phase fan-out (parallèle)Prompt agent orchestrateur :> Lance 3 subagents en parallèle :> 1. Agent qualité : analyse la lisibilité et les patterns> 2. Agent sécurité : cherche les vulnérabilités> 3. Agent performance : identifie les goulots d'étranglement## Phase fan-in (synthèse)> Consolide les 3 rapports en un seul document.> Déduplique les problèmes signalés par plusieurs agents.> Trie par sévérité décroissante.
Ce pattern est idéal pour les reviews de code, les audits et les analyses multi-critères. Le temps total est celui de l'agent le plus lent (pas la somme).
Pattern pipeline
Le pipeline passe le résultat de chaque agent au suivant, comme une chaîne de montage.
# Pipeline : Feature complèteAgent 1 (planner) → produit un planAgent 2 (coder) → implémente selon le planAgent 3 (tester) → écrit et exécute les testsAgent 4 (reviewer) → valide le toutChaque agent reçoit le résultat du précédent comme contexte.
# En pratique, vous formulez la demande ainsi :> Implémente la feature "export PDF" en suivant ce pipeline :> 1. D'abord, planifie l'architecture avec l'agent planner> 2. Ensuite, implémente avec l'agent tdd-guide (tests d'abord)> 3. Enfin, fais une review avec l'agent code-reviewer> Chaque étape utilise le résultat de la précédente.
Pattern reviewer chain
Plusieurs agents reviewent le même travail séquentiellement, chacun se concentrant sur un aspect différent. Chaque reviewer a accès aux commentaires des précédents.
# Reviewer Chain : 3 passes de review## Pass 1 : CorrectnessL'agent vérifie que le code fait ce qu'il doit faire.Résultat : liste de bugs potentiels.## Pass 2 : Security (voit les résultats de Pass 1)L'agent vérifie les failles, en tenant compte des bugs déjà signalés.Résultat : liste de vulnérabilités.## Pass 3 : Maintainability (voit Pass 1 + Pass 2)L'agent évalue la qualité à long terme du code.Résultat : suggestions de refactoring.## Synthèse finaleUn dernier agent produit le rapport consolidé avec priorités.
Gestion du contexte entre agents
Le contexte (les informations disponibles) ne se transmet pas automatiquement entre les agents. Vous devez choisir une stratégie explicite.
Stratégie fichier (recommandée pour les résultats volumineux)
L'agent A écrit son résultat dans un fichier. L'agent B le lit au début de sa mission.
# Agent A : Review> Fais une review du module auth.> Écris le résultat dans /tmp/review-auth.md# Agent B : Correction> Lis le fichier /tmp/review-auth.md et corrige> les problèmes signalés par sévérité décroissante.
Stratégie prompt (recommandée pour les résultats courts)
L'agent orchestrateur résume le résultat de l'agent A et l'inclut dans le prompt de l'agent B.
# L'orchestrateur transmet un résumé concis> L'agent de review a trouvé 3 problèmes :> 1. CRITICAL : injection SQL dans users.ts:42> 2. HIGH : pas de rate limiting sur /api/login> 3. MEDIUM : variable non utilisée dans utils.ts:15>> Corrige ces 3 problèmes dans l'ordre de priorité.
Stratégie Git (recommandée pour les modifications de code)
L'agent A fait un commit de ses changements. L'agent B travaille sur la même branche et voit les modifications.
# Agent A modifie le code et commite# Agent B voit les changements via git diff# Pas besoin de transmettre de contexte explicite
Stratégies de parallélisme
Les subagents peuvent s'exécuter en parallèle pour accélérer les workflows. Voici les règles à suivre.
Quand paralléliser
- Les tâches sont indépendantes (pas de dépendance de données)
- Les agents travaillent sur des fichiers différents
- Le résultat d'un agent n'influence pas les autres
Quand rester séquentiel
- Un agent a besoin du résultat du précédent
- Les agents modifient les mêmes fichiers
- L'ordre d'exécution change le résultat
# BON : parallèle (tâches indépendantes)> Lance en parallèle :> - Agent security : audite le module auth> - Agent tests : vérifie la couverture du module billing> - Agent docs : met à jour le README# MAUVAIS : parallèle sur les mêmes fichiers> Lance en parallèle :> - Agent A : refactore auth.ts> - Agent B : ajoute des tests dans auth.ts# → Conflit garanti !
Tester votre agent
Une fois votre agent créé, testez-le sur un cas concret.
# Lancez Claude Code dans votre projet$ claude# Demandez explicitement l'utilisation de votre agent> Utilise l'agent code-reviewer pour analyser mes derniers changements# Ou intégrez-le dans un workflow plus large> Fais une review complète de ma PR avec le code-reviewer> puis vérifie les tests avec le test-writer
Itérez sur vos agents
Un bon agent est rarement parfait du premier coup. Utilisez-le plusieurs fois, observez les résultats, et ajustez les instructions. Ajoutez des contraintes quand l'agent dévie, et précisez les étapes quand il en oublie. Comme pour un vrai collaborateur, la communication s'affine avec le temps.
Prochaines étapes
Maintenant que vous savez créer des agents custom, découvrez comment les faire collaborer.
- Agent Teams : Faire travailler plusieurs agents ensemble sur un même projet
- Top agents par cas d'usage : Les meilleurs agents par catégorie
- Orchestration avancée : Patterns d'orchestration multi-agents