Aller au contenu principal
Agents

Créer un subagent spécialisé

Guide complet pour créer des agents custom dans Claude Code. Structure d'un agent, exemples concrets, configuration et bonnes pratiques d'écriture de prompts pour agents.

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ôle
Description du rôle et de l'expertise de l'agent.
Ce que l'agent doit faire et ne pas faire.
## Outils disponibles
Liste 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 étape
2. Deuxième étape
3. ...
## Format de sortie
Comment l'agent doit structurer son rapport ou résultat.
## Contraintes
Ce 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.

ChampTypeDescription
namestringNom de l'agent, utilisé pour l'invoquer
descriptionstringDescription que Claude lit pour décider d'utiliser cet agent automatiquement. Mettre "PROACTIVELY" encourage l'auto-invocation.
toolsstring[]Outils autorisés : Read, Write, Edit, Bash, Glob, Grep, Agent, etc.
disallowedToolsstring[]Outils explicitement interdits, même si l'agent voulait les utiliser
modelstringModèle à utiliser : "haiku", "sonnet", "opus" ou un ID complet de modèle
permissionModestringNiveau de permissions : "default", "acceptEdits", "bypassPermissions", "auto"
maxTurnsnumberNombre maximum de tours agentiques avant arrêt forcé
skillsstring[]Skills à précharger dans le contexte de l'agent
mcpServersstring[]MCP servers accessibles depuis cet agent
hooksobjectHooks spécifiques à cet agent (pre/post-execution)
memorystringType de mémoire : "user", "project", "local"
backgroundbooleantrue pour exécuter l'agent en arrière-plan
effortstringNiveau d'effort cognitif : "low", "medium", "high"
isolationstring"worktree" pour un environnement Git isolé
initialPromptstringPrompt système additionnel injecté avant les instructions
colorstringCouleur 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 demande
description: "Effectue une review de code après modification."
# L'agent s'active automatiquement
description: "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'agentModèle recommandéPourquoi
Exploration, grep, lecture de fichiershaikuRapide, coût minimal pour les tâches simples
Code review, développement courantsonnetBon rapport qualité/vitesse pour la majorité des cas
Architecture, debugging complexe, sécuritéopusRaisonnement 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-reviewer
description: "Expert code reviewer. Use PROACTIVELY after writing or modifying code."
model: opus
tools: [Read, Grep, Glob, Bash]
disallowedTools: [Write, Edit]
permissionMode: default
maxTurns: 20
memory: project
effort: high
isolation: worktree
skills: [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 corrections
concrè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.

ValeurTokens thinking maxQuand l'utiliser
low~500Tâches mécaniques (lint, format, lookup)
medium~5000 (défaut)Développement courant, code review léger
high~20000Architecture, 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-research
description: "Audit complet de la dette technique sur 200 fichiers."
background: true
isolation: worktree
maxTurns: 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-builder
description: "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-agent
description: "Applique des migrations Prisma."
hooks:
PreToolUse:
- matcher: Bash
command: "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ôle
Tu 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 proposes
des 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)
## Instructions
1. 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 projet
c. Cherche les bugs potentiels
d. Vérifie la gestion des erreurs
e. Vérifie l'absence de secrets en dur
3. Vérifie que les tests existent pour les nouveaux chemins
4. Produis le rapport structuré
## Format de sortie
Pour 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ôle
Tu 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)
## Instructions
1. Lis le fichier source à tester
2. Identifie toutes les fonctions publiques
3. 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/undefined
4. Écris les tests en suivant le pattern AAA
5. Exécute les tests pour vérifier qu'ils passent
6. Vérifie la couverture (objectif : 80%+)
## Format de sortie
Cré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ôle
Tu es un technical writer qui produit une documentation
claire, concise et à jour. Tu t'adresses à des développeurs
de 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)
## Instructions
1. Analyse les changements récents (git log --oneline -20)
2. Identifie les fichiers de documentation impactés
3. Pour chaque fichier à mettre à jour :
a. Lis le code source correspondant
b. Vérifie que la documentation reflète le code actuel
c. Mets à jour les sections obsolètes
d. Ajoute les nouvelles fonctionnalités non documentées
4. 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

1

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.md
test-writer.md
doc-updater.md
db-migration.md
2

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.md
my-test-preferences.md
brainstorm-helper.md
3

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

# MAUVAIS
Tu es un agent de code review.
# BON
Tu es un reviewer de code senior spécialisé en TypeScript
et React. Tu as 15 ans d'expérience et tu es particulièrement
attentif aux problèmes de performance, de sécurité et
d'accessibilité. Tu donnes des feedbacks constructifs
avec des suggestions de correction concrètes.

2. Définissez des étapes claires

# MAUVAIS
Analyse le code et dis-moi si c'est bon.
# BON
1. Lis le diff complet avec git diff main...HEAD
2. 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 tests
4. Produis un rapport structuré par sévérité

3. Spécifiez le format de sortie

# MAUVAIS
Donne-moi les résultats.
# BON
Pour 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 code
Termine 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ète
Agent 1 (planner) → produit un plan
Agent 2 (coder) → implémente selon le plan
Agent 3 (tester) → écrit et exécute les tests
Agent 4 (reviewer) → valide le tout
Chaque 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 : Correctness
L'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 finale
Un 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.