Was this page helpful?
Les invites système définissent le comportement, les capacités et le style de réponse de Claude. Le Claude Agent SDK fournit trois façons de personnaliser les invites système : en utilisant des styles de sortie (configurations persistantes basées sur des fichiers), en ajoutant à l'invite de Claude Code, ou en utilisant une invite entièrement personnalisée.
Une invite système est l'ensemble initial d'instructions qui façonne le comportement de Claude tout au long d'une conversation.
Comportement par défaut : Le Agent SDK utilise une invite système minimale par défaut. Elle contient uniquement les instructions essentielles des outils mais omet les directives de codage de Claude Code, le style de réponse et le contexte du projet. Pour inclure l'invite système complète de Claude Code, spécifiez systemPrompt: { preset: "claude_code" } en TypeScript ou system_prompt={"type": "preset", "preset": "claude_code"} en Python.
L'invite système de Claude Code inclut :
Les fichiers CLAUDE.md fournissent un contexte et des instructions spécifiques au projet qui sont automatiquement lus par le Agent SDK lorsqu'il s'exécute dans un répertoire. Ils servent de « mémoire » persistante pour votre projet.
Localisation et découverte :
CLAUDE.md ou .claude/CLAUDE.md dans votre répertoire de travail~/.claude/CLAUDE.md pour les instructions globales sur tous les projetsIMPORTANT : Le SDK ne lit les fichiers CLAUDE.md que lorsque vous configurez explicitement settingSources (TypeScript) ou setting_sources (Python) :
'project' pour charger CLAUDE.md au niveau du projet'user' pour charger CLAUDE.md au niveau de l'utilisateur (~/.claude/CLAUDE.md)L'invite système preset claude_code ne charge PAS automatiquement CLAUDE.md - vous devez également spécifier les sources de paramètres.
Format du contenu : Les fichiers CLAUDE.md utilisent le markdown simple et peuvent contenir :
# Directives du projet
## Style de code
- Utiliser le mode strict TypeScript
- Préférer les composants fonctionnels dans React
- Toujours inclure des commentaires JSDoc pour les API publiques
## Test
- Exécuter `npm test` avant de valider
- Maintenir une couverture de code > 80%
- Utiliser jest pour les tests unitaires, playwright pour E2E
## Commandes
- Build : `npm run build`
- Serveur de développement : `npm run dev`
- Vérification de type : `npm run typecheck`Idéal pour :
Caractéristiques clés :
settingSourcesLes 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.
Une fois créés, activez les styles de sortie via :
/output-style [style-name].claude/settings.local.json/output-style:new [description]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.
systemPrompt avec ajoutVous pouvez utiliser le preset Claude Code avec une propriété append pour ajouter vos instructions personnalisées tout en préservant toutes les fonctionnalités intégrées.
Vous pouvez fournir une chaîne personnalisée comme systemPrompt pour remplacer entièrement la valeur par défaut par vos propres instructions.
| Fonctionnalité | CLAUDE.md | Styles de sortie | systemPrompt avec ajout | systemPrompt personnalisé |
|---|---|---|---|---|
| Persistance | Fichier par projet | Enregistré en tant que fichiers | Session uniquement | Session uniquement |
| Réutilisabilité | Par projet | Entre les projets | Duplication de code | Duplication de code |
| Gestion | Sur le système de fichiers | CLI + fichiers | Dans le code | Dans le code |
| Outils par défaut | Préservés | Préservés | Préservés | Perdus (sauf s'ils sont inclus) |
Remarque : « Avec ajout » signifie utiliser systemPrompt: { type: "preset", preset: "claude_code", append: "..." } en TypeScript ou system_prompt={"type": "preset", "preset": "claude_code", "append": "..."} en Python.
Idéal pour :
Exemples :
npm run lint:fix avant de valider »migrations/ »Important : Pour charger les fichiers CLAUDE.md, vous devez explicitement définir settingSources: ['project'] (TypeScript) ou setting_sources=["project"] (Python). L'invite système preset claude_code ne charge PAS automatiquement CLAUDE.md sans ce paramètre.
Idéal pour :
Exemples :
systemPrompt avec ajoutIdéal pour :
systemPrompt personnaliséIdéal pour :
Vous pouvez combiner ces méthodes pour une flexibilité maximale :
import { query } from "@anthropic-ai/claude-agent-sdk";
// IMPORTANT : Vous devez spécifier settingSources pour charger CLAUDE.md
// Le preset claude_code seul ne charge PAS les fichiers CLAUDE.md
const messages = [];
for await (const message of query({
prompt: "Add a new React component for user profiles",
options: {
systemPrompt: {
type: "preset",
preset: "claude_code", // Utiliser l'invite système de Claude Code
},
settingSources: ["project"], // Requis pour charger CLAUDE.md du projet
},
})) {
messages.push(message);
}
// Maintenant Claude a accès à vos directives de projet depuis CLAUDE.mdimport { writeFile, mkdir } from "fs/promises";
import { join } from "path";
import { homedir } from "os";
async function createOutputStyle(
name: string,
description: string,
prompt: string
) {
// Au niveau de l'utilisateur : ~/.claude/output-styles
// Au niveau du projet : .claude/output-styles
const outputStylesDir = join(homedir(), ".claude", "output-styles");
await mkdir(outputStylesDir, { recursive: true });
const content = `---
name: ${name}
description: ${description}
---
${prompt}`;
const filePath = join(
outputStylesDir,
`${name.toLowerCase().replace(/\s+/g, "-")}.md`
);
await writeFile(filePath, content, "utf-8");
}
// Exemple : Créer un spécialiste en révision de code
await createOutputStyle(
"Code Reviewer",
"Thorough code review assistant",
`You are an expert code reviewer.
For every code submission:
1. Check for bugs and security issues
2. Evaluate performance
3. Suggest improvements
4. Rate code quality (1-10)`
);import { query } from "@anthropic-ai/claude-agent-sdk";
const messages = [];
for await (const message of query({
prompt: "Help me write a Python function to calculate fibonacci numbers",
options: {
systemPrompt: {
type: "preset",
preset: "claude_code",
append:
"Always include detailed docstrings and type hints in Python code.",
},
},
})) {
messages.push(message);
if (message.type === "assistant") {
console.log(message.message.content);
}
}import { query } from "@anthropic-ai/claude-agent-sdk";
const customPrompt = `You are a Python coding specialist.
Follow these guidelines:
- Write clean, well-documented code
- Use type hints for all functions
- Include comprehensive docstrings
- Prefer functional programming patterns when appropriate
- Always explain your code choices`;
const messages = [];
for await (const message of query({
prompt: "Create a data processing pipeline",
options: {
systemPrompt: customPrompt,
},
})) {
messages.push(message);
if (message.type === "assistant") {
console.log(message.message.content);
}
}| Sécurité intégrée |
| Maintenue |
| Maintenue |
| Maintenue |
| Doit être ajoutée |
| Contexte d'environnement | Automatique | Automatique | Automatique | Doit être fourni |
| Niveau de personnalisation | Ajouts uniquement | Remplacer la valeur par défaut | Ajouts uniquement | Contrôle complet |
| Contrôle de version | Avec le projet | Oui | Avec le code | Avec le code |
| Portée | Spécifique au projet | Utilisateur ou projet | Session de code | Session de code |
import { query } from "@anthropic-ai/claude-agent-sdk";
// En supposant que le style de sortie « Code Reviewer » est actif (via /output-style)
// Ajouter des domaines de focus spécifiques à la session
const messages = [];
for await (const message of query({
prompt: "Review this authentication module",
options: {
systemPrompt: {
type: "preset",
preset: "claude_code",
append: `
For this review, prioritize:
- OAuth 2.0 compliance
- Token storage security
- Session management
`,
},
},
})) {
messages.push(message);
}