claude_code pour les outils de codage de type CLI ou IDE où un humain observe et dirige le travail. Écrivez votre propre invite pour les agents ayant une surface, une identité ou un modèle de permissions différents.
Cette page couvre :
- Fonctionnement des invites système, avec un tableau de décision pour choisir entre le préréglage, le préréglage avec
append, et une invite personnalisée - Personnaliser le comportement de l’agent avec des fichiers CLAUDE.md, des styles de sortie,
append, ou une chaîne personnalisée - Comparer les quatre approches par persistance, portée, et ce qu’elles préservent
- Combiner les approches pour superposer les méthodes de personnalisation
Fonctionnement des invites système
Une invite système est l’ensemble initial d’instructions qui façonne le comportement de Claude tout au long d’une conversation. Le SDK Agent dispose de trois points de départ pour celle-ci :- Défaut minimal : lorsque vous ne définissez pas
systemPrompten TypeScript ousystem_prompten Python, le SDK utilise une invite minimale qui couvre l’appel d’outils mais omet les directives de codage de Claude Code, le style de réponse et le contexte du projet. Cela diffère declaude -p, qui utilise l’invite complète de Claude Code par défaut. Si vous migrez depuis la CLI et souhaitez un comportement correspondant, définissez le préréglageclaude_code. - Préréglage
claude_code: l’invite système complète que la CLI Claude Code utilise, avec les instructions d’utilisation des outils, les directives de style et de formatage du code, les règles de ton et de verbosité des réponses, les instructions de sécurité et de sûreté, et le contexte du répertoire de travail et de l’environnement. DéfinissezsystemPrompt: { type: "preset", preset: "claude_code" }en TypeScript ousystem_prompt={"type": "preset", "preset": "claude_code"}en Python, éventuellement avecappendpour ajouter vos propres instructions à la fin. - Chaîne personnalisée : une invite que vous écrivez vous-même. Le SDK envoie uniquement ce que vous fournissez.
Décider d’un point de départ
Le facteur décisif est la proximité de votre agent avec Claude Code : un agent de codage opérant dans un référentiel, avec un humain regardant la sortie en continu et dirigeant le travail. Plus votre produit s’éloigne de cela, plus vous voudrez écrire votre propre invite.
« Différent de Claude Code » signifie généralement l’un des éléments suivants :
- Surface différente : la sortie n’est pas lue dans un terminal par la personne qui l’a déclenchée. Les interfaces de chat, les consommateurs de sortie structurée et l’automatisation non-codage ont chacun besoin d’une invite qui correspond à la façon dont leur sortie est rendue et examinée. L’automatisation de codage sans surveillance, comme un travail CI qui corrige les erreurs de lint ou examine les diffs, s’adapte toujours au préréglage car le travail lui-même est ce pour lequel le préréglage est écrit.
- Identité différente : l’agent ne devrait pas se présenter comme Claude Code. Un bot d’assistance, un assistant d’analyse de données ou tout agent spécifique à un domaine a besoin de son propre nom, portée et persona.
- Modèle de permission différent : l’agent s’exécute de manière autonome sans qu’un humain n’approuve chaque étape, ou opère sur un ensemble étroit de ressources. L’invite de Claude Code suppose qu’un humain est dans la boucle avec accès à un ensemble complet d’outils.
- Tâches non-codage : la plupart de l’invite de Claude Code est une guidance de codage. Pour les agents de recherche, de contenu ou d’opérations, cette guidance entre en concurrence avec les instructions dont vous avez réellement besoin.
Personnaliser le comportement de l’agent
Les styles de sortie,append, et une chaîne d’invite personnalisée modifient chacun directement l’invite système. CLAUDE.md emprunte un chemin différent : le SDK le lit et injecte son contenu dans la conversation en tant que contexte du projet, non dans l’invite système, donc il façonne le comportement aux côtés de n’importe quelle configuration d’invite système que vous choisissez. Les Skills, les hooks, et les permissions façonnent également le comportement en dehors de l’invite système et sont couverts sur leurs propres pages.
Fichiers CLAUDE.md pour les instructions au niveau du projet
Les fichiers CLAUDE.md donnent à Claude un contexte et des instructions persistants au niveau du projet. Le SDK injecte leur contenu dans la conversation, non dans l’invite système, donc ils fonctionnent avec n’importe quelle configuration d’invite système. Pour savoir quoi mettre dans CLAUDE.md, où le placer, et comment écrire des instructions efficaces, consultez Comment Claude se souvient de votre projet. Cette section couvre ce qui est spécifique au SDK : comment CLAUDE.md se charge. Le SDK lit CLAUDE.md lorsque la source de paramètre correspondante est activée :'project' charge CLAUDE.md ou .claude/CLAUDE.md à partir du répertoire de travail, et 'user' charge ~/.claude/CLAUDE.md. Les options query() par défaut activent les deux sources, donc CLAUDE.md se charge automatiquement. Si vous définissez settingSources en TypeScript ou setting_sources en Python explicitement, incluez les sources dont vous avez besoin. Le chargement de CLAUDE.md est contrôlé par les sources de paramètres, non par le préréglage claude_code.
Charger CLAUDE.md avec le SDK
Pour charger CLAUDE.md, définissezsettingSources pour inclure le niveau où votre CLAUDE.md se trouve. L’exemple ci-dessous charge un CLAUDE.md au niveau du projet aux côtés du préréglage claude_code, donc Claude a à la fois l’invite complète de l’agent de codage et les conventions de votre projet :
settingSources vide.
Styles de sortie pour les configurations persistantes
Les styles de sortie sont des configurations enregistrées qui modifient l’invite système de Claude. Ils sont stockés sous forme de fichiers markdown et peuvent être réutilisés dans les sessions et les projets.Créer un style de sortie
Un style de sortie est un fichier markdown avec un frontmatter pour les métadonnées, suivi du contenu de l’invite. Enregistrez-le dans~/.claude/output-styles/ pour un style au niveau de l’utilisateur disponible dans chaque projet, ou .claude/output-styles/ dans votre référentiel pour un style au niveau du projet que vous pouvez valider et partager avec votre équipe.
Par défaut, un style de sortie personnalisé remplace les instructions d’ingénierie logicielle du préréglage claude_code par les vôtres. Pour les conserver et superposer vos instructions par-dessus, définissez keep-coding-instructions: true dans le frontmatter. Conservez-les lorsque votre agent effectue toujours du travail d’ingénierie logicielle. Omettez-les lorsque vous remplacez entièrement le rôle.
L’exemple ci-dessous définit une persona d’examen de code qui conserve les instructions de codage, car l’examen du code bénéficie toujours des conseils en matière de sécurité et de qualité du code de Claude Code. Enregistrez-le sous ~/.claude/output-styles/code-reviewer.md pour le rendre disponible dans tous les projets :
~/.claude/output-styles/code-reviewer.md
Activer un style de sortie
Une fois créés, activez les styles de sortie via :-
CLI : exécutez
/configet sélectionnez un style de sortie -
Paramètres : définissez
outputStyledans.claude/settings.local.json -
SDK TypeScript : définissez
outputStyledans l’objetsettingsen ligne passé àquery(), ou pointezsettingsvers un fichier de paramètres qui le définit.outputStylen’est pas un champOptionsde niveau supérieur :
.claude/settings.local.json, utilisez append ou une chaîne d’invite personnalisée à la place.
Remarque pour les utilisateurs du SDK : Les styles de sortie sont chargés lorsque vous incluez settingSources: ['user'] ou settingSources: ['project'] (TypeScript) / setting_sources=["user"] ou setting_sources=["project"] (Python) dans vos options.
Ajouter au préréglage claude_code
Vous pouvez utiliser le préréglage Claude Code avec une propriété append pour ajouter vos instructions personnalisées tout en préservant toutes les fonctionnalités intégrées.
Améliorer la mise en cache des invites entre les utilisateurs et les machines
Par défaut, deux sessions qui utilisent le même préréglageclaude_code et le même texte append ne peuvent toujours pas partager une entrée de cache d’invite si elles s’exécutent à partir de répertoires de travail différents. C’est parce que le préréglage intègre le contexte par session dans l’invite système avant votre texte append : le répertoire de travail, qu’il s’agisse d’un référentiel git, la plateforme, le shell actif, la version du système d’exploitation, et les chemins de mémoire automatique. Toute différence dans ce contexte produit une invite système différente et un cache miss. Le contenu de CLAUDE.md n’affecte pas le cache d’invite système car le SDK l’injecte dans la conversation, non dans l’invite système.
Pour rendre l’invite système identique dans les sessions, définissez excludeDynamicSections: true en TypeScript ou "exclude_dynamic_sections": True en Python. Le contexte par session se déplace dans le premier message utilisateur, laissant uniquement le préréglage statique et votre texte append dans l’invite système afin que les configurations identiques partagent une entrée de cache dans les utilisateurs et les machines.
excludeDynamicSections nécessite @anthropic-ai/claude-agent-sdk v0.2.98 ou ultérieur, ou claude-agent-sdk v0.1.58 ou ultérieur pour Python. Il s’applique uniquement à la forme d’objet préréglé et n’a aucun effet lorsque systemPrompt est une chaîne.append partagé avec excludeDynamicSections afin qu’une flotte d’agents s’exécutant à partir de répertoires différents puisse réutiliser la même invite système mise en cache :
--exclude-dynamic-system-prompt-sections.
Invites système personnalisées
Vous pouvez fournir une chaîne personnalisée commesystemPrompt pour remplacer entièrement la valeur par défaut par vos propres instructions.
Comparaison des quatre approches
Les quatre méthodes de personnalisation diffèrent par leur emplacement, la façon dont elles sont partagées et ce qu’elles préservent de la présélectionclaude_code.
« Avec append » signifie utiliser
systemPrompt: { type: "preset", preset: "claude_code", append: "..." } en TypeScript ou system_prompt={"type": "preset", "preset": "claude_code", "append": "..."} en Python. CLAUDE.md ne modifie pas le message système lui-même : le SDK injecte son contenu dans la conversation en tant que contexte du projet.
Cas d’utilisation et meilleures pratiques
Quand utiliser CLAUDE.md
Utilisez CLAUDE.md pour les instructions qui doivent s’appliquer à chaque session dans un projet, indépendamment du système prompt utilisé par la session : normes de codage, commandes courantes, contexte d’architecture et conventions d’équipe. CLAUDE.md est validé dans votre référentiel, il reste donc synchronisé avec le code qu’il décrit. Consultez Quand ajouter à CLAUDE.md pour des conseils complets. Les fichiers CLAUDE.md se chargent lorsque la source de paramètreproject est activée, ce qui est le cas pour les options query() par défaut. Si vous définissez explicitement settingSources en TypeScript ou setting_sources en Python, incluez 'project' pour continuer à charger CLAUDE.md au niveau du projet.
Quand utiliser les styles de sortie
Les styles de sortie sont destinés aux personas que vous souhaitez réutiliser dans l’interface de ligne de commande et le SDK sans modifier le code de l’application. Comme ils résident sous forme de fichiers dans.claude/output-styles, le même persona est disponible à partir de /config dans l’interface de ligne de commande et à partir de toute session SDK qui charge la source de paramètre correspondante.
Idéal pour :
- Les modifications de comportement persistantes dans les sessions
- Les configurations partagées par l’équipe
- Les assistants spécialisés comme un examinateur de code, un data scientist ou un assistant DevOps
- Les modifications d’invite complexes qui nécessitent une gestion de version
- Créer un assistant dédié d’optimisation SQL
- Construire un examinateur de code axé sur la sécurité
- Développer un assistant pédagogique avec une pédagogie spécifique
Quand utiliser systemPrompt avec append
Utilisez append lorsque le préréglage claude_code convient déjà à votre produit et que vous avez seulement besoin d’ajouter des instructions supplémentaires. Vous conservez les conseils d’outils du préréglage, les règles de sécurité et les conventions de codage sans les réimplémenter.
Idéal pour :
- Ajouter des normes ou des préférences de codage spécifiques
- Personnaliser le formatage de la sortie
- Ajouter des connaissances spécifiques au domaine
- Modifier la verbosité des réponses
- Améliorer le comportement par défaut de Claude Code sans perdre les instructions des outils
Quand utiliser systemPrompt personnalisé
Utilisez une invite personnalisée lorsque la surface, l’identité ou le modèle de permission de votre agent diffère de celui de Claude Code, comme décrit dans Décider d’un point de départ. Vous définissez l’ensemble complet des instructions, y compris tout conseil d’outils et toute règle de sécurité dont votre agent a besoin.
Idéal pour :
- Contrôle complet du comportement de Claude
- Les tâches spécialisées d’une seule session
- Tester de nouvelles stratégies d’invite
- Les situations où les outils par défaut ne sont pas nécessaires
- Construire des agents spécialisés avec un comportement unique
Combiner les approches
Ces méthodes se composent. Un style de sortie persistant ou CLAUDE.md définit le comportement à long terme, etappend superpose les instructions spécifiques à la session sans modifier la configuration enregistrée.
Combiner un style de sortie avec des ajouts spécifiques à la session
L’exemple ci-dessous suppose qu’un style de sortie Code Reviewer est déjà actif. Le blocappend superpose les domaines de focus spécifiques à la session sur la persona, de sorte qu’une seule session de révision peut prioriser OAuth et le stockage des tokens sans modifier le style de sortie enregistré :
Voir aussi
- Styles de sortie : créer, gérer et partager les styles de sortie pour la CLI, y compris le format de fichier et les emplacements de stockage
- Comment Claude se souvient de votre projet : ce qu’il faut mettre dans CLAUDE.md, où le placer et comment rédiger des instructions de projet efficaces
- Référence du SDK TypeScript : le type
Optionscomplet, y comprissystemPrompt,settingSourcesetsettings - Référence du SDK Python : le type
ClaudeAgentOptionscomplet, y comprissystem_promptetsetting_sources - Paramètres : la référence
settings.json, y compris où les styles de sortie et autres configurations sont stockés