Les invites système définissent le comportement, les capacités et le style de réponse de Claude. Le SDK Claude Code fournit trois façons de personnaliser les invites système : en utilisant les styles de sortie (configurations persistantes basées sur des fichiers), en ajoutant à l’invite par défaut, ou en la remplaçant entièrement.

Comprendre les invites système

Une invite système est l’ensemble d’instructions initial qui façonne le comportement de Claude tout au long d’une conversation. L’invite système par défaut de Claude Code inclut :
  • Instructions d’utilisation des outils et outils disponibles
  • Directives de style et de formatage du code
  • Paramètres de ton et de verbosité des réponses
  • Instructions de sécurité et de sûreté
  • Contexte sur le répertoire de travail actuel et l’environnement

Méthodes de modification

Méthode 1 : Styles de sortie (configurations persistantes)

Les styles de sortie sont des configurations sauvegardées qui modifient l’invite système de Claude. Ils sont stockés sous forme de fichiers markdown et peuvent être réutilisés à travers les sessions et les projets.

Créer un style de sortie

import { writeFile, mkdir } from 'fs/promises'
import { join } from 'path'
import { homedir } from 'os'

async function createOutputStyle(name: string, description: string, prompt: string) {
  // Niveau utilisateur : ~/.claude/output-styles
  // Niveau 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 de révision de code
await createOutputStyle(
  'Code Reviewer',
  'Assistant de révision de code approfondie',
  `Vous êtes un expert en révision de code.

Pour chaque soumission de code :
1. Vérifiez les bogues et les problèmes de sécurité
2. Évaluez les performances
3. Suggérez des améliorations
4. Notez la qualité du code (1-10)`
)

Utiliser les styles de sortie

Une fois créés, activez les styles de sortie via :
  • CLI : /output-style [nom-du-style]
  • Paramètres : .claude/settings.local.json
  • Créer nouveau : /output-style:new [description]

Méthode 2 : Utiliser appendSystemPrompt

L’option appendSystemPrompt ajoute vos instructions personnalisées à l’invite système par défaut tout en préservant toutes les fonctionnalités intégrées.
import { query } from "@anthropic-ai/claude-code"

const messages = []

for await (const message of query({
  prompt: "Aidez-moi à écrire une fonction Python pour calculer les nombres de Fibonacci",
  options: {
    appendSystemPrompt: "Incluez toujours des docstrings détaillées et des annotations de type dans le code Python."
  }
})) {
  messages.push(message)
  if (message.type === 'assistant') {
    console.log(message.message.content)
  }
}

Méthode 3 : Utiliser customSystemPrompt

L’option customSystemPrompt remplace entièrement l’invite système par défaut par vos instructions personnalisées.
import { query } from "@anthropic-ai/claude-code"

const customPrompt = `Vous êtes un spécialiste du codage Python. 
Suivez ces directives :
- Écrivez du code propre et bien documenté
- Utilisez des annotations de type pour toutes les fonctions
- Incluez des docstrings complètes
- Préférez les modèles de programmation fonctionnelle quand c'est approprié
- Expliquez toujours vos choix de code`

const messages = []

for await (const message of query({
  prompt: "Créez un pipeline de traitement de données",
  options: {
    customSystemPrompt: customPrompt
  }
})) {
  messages.push(message)
  if (message.type === 'assistant') {
    console.log(message.message.content)
  }
}

Comparaison des trois approches

FonctionnalitéStyles de sortieappendSystemPromptcustomSystemPrompt
Persistance✅ Sauvegardés comme fichiers❌ Session uniquement❌ Session uniquement
Réutilisabilité✅ À travers les projets❌ Duplication de code❌ Duplication de code
Gestion✅ CLI + fichiers⚠️ Dans le code⚠️ Dans le code
Outils par défaut✅ Préservés✅ Préservés❌ Perdus (sauf si inclus)
Sécurité intégrée✅ Maintenue✅ Maintenue❌ Doit être ajoutée
Contexte d’environnement✅ Automatique✅ Automatique❌ Doit être fourni
Niveau de personnalisation⚠️ Remplace par défaut⚠️ Ajouts uniquement✅ Contrôle complet
Contrôle de version✅ Oui✅ Avec le code✅ Avec le code
Découverte/output-style❌ Non découvrable❌ Non découvrable

Cas d’usage et meilleures pratiques

Quand utiliser les styles de sortie

Idéal pour :
  • Changements de comportement persistants à travers les sessions
  • Configurations partagées en équipe
  • Assistants spécialisés (réviseur de code, data scientist, DevOps)
  • Modifications d’invite complexes nécessitant un versioning
Exemples :
  • Créer un assistant dédié à l’optimisation SQL
  • Construire un réviseur de code axé sur la sécurité
  • Développer un assistant d’enseignement avec une pédagogie spécifique

Quand utiliser appendSystemPrompt

Idéal pour :
  • Ajouter des standards ou préférences de codage spécifiques
  • Personnaliser le formatage de sortie
  • Ajouter des connaissances spécifiques au domaine
  • Modifier la verbosité des réponses

Quand utiliser customSystemPrompt

Idéal pour :
  • Contrôle complet sur le comportement de Claude
  • Tâches spécialisées à session unique
  • Tester de nouvelles stratégies d’invite
  • Situations où les outils par défaut ne sont pas nécessaires

Combiner les approches

Vous pouvez combiner ces méthodes pour une flexibilité maximale :

Exemple : Style de sortie avec ajouts spécifiques à la session

import { query } from "@anthropic-ai/claude-code"

// 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: "Révisez ce module d'authentification",
  options: {
    appendSystemPrompt: `
      Pour cette révision, priorisez :
      - Conformité OAuth 2.0
      - Sécurité du stockage des jetons
      - Gestion des sessions
    `
  }
})) {
  messages.push(message)
}

Voir aussi