I prompt di sistema definiscono il comportamento, le capacità e lo stile di risposta di Claude. Il Claude Agent SDK fornisce tre modi per personalizzare i prompt di sistema: utilizzando stili di output (configurazioni persistenti basate su file), aggiungendo al prompt di Claude Code, o utilizzando un prompt completamente personalizzato.
Un prompt di sistema è il set di istruzioni iniziali che modella come Claude si comporta durante una conversazione.
Comportamento predefinito: L'Agent SDK utilizza un prompt di sistema vuoto per impostazione predefinita per la massima flessibilità. Per utilizzare il prompt di sistema di Claude Code (istruzioni per strumenti, linee guida per il codice, ecc.), specifica systemPrompt: { preset: "claude_code" } in TypeScript o system_prompt="claude_code" in Python.
Il prompt di sistema di Claude Code include:
I file CLAUDE.md forniscono contesto e istruzioni specifici del progetto che vengono automaticamente letti dall'Agent SDK quando viene eseguito in una directory. Servono come "memoria" persistente per il tuo progetto.
Posizione e scoperta:
CLAUDE.md o .claude/CLAUDE.md nella tua directory di lavoro~/.claude/CLAUDE.md per istruzioni globali in tutti i progettiIMPORTANTE: L'SDK legge i file CLAUDE.md solo quando configuri esplicitamente settingSources (TypeScript) o setting_sources (Python):
'project' per caricare CLAUDE.md a livello di progetto'user' per caricare CLAUDE.md a livello utente (~/.claude/CLAUDE.md)Il preset del prompt di sistema claude_code NON carica automaticamente CLAUDE.md - devi anche specificare le fonti delle impostazioni.
Formato del contenuto: I file CLAUDE.md utilizzano markdown semplice e possono contenere:
# Linee Guida del Progetto
## Stile del Codice
- Usa la modalità strict di TypeScript
- Preferisci componenti funzionali in React
- Includi sempre commenti JSDoc per le API pubbliche
## Test
- Esegui `npm test` prima di fare commit
- Mantieni >80% di copertura del codice
- Usa jest per unit test, playwright per E2E
## Comandi
- Build: `npm run build`
- Server dev: `npm run dev`
- Controllo tipi: `npm run typecheck`import { query } from "@anthropic-ai/claude-agent-sdk";
// IMPORTANTE: Devi specificare settingSources per caricare CLAUDE.md
// Il preset claude_code da solo NON carica i file CLAUDE.md
const messages = [];
for await (const message of query({
prompt: "Aggiungi un nuovo componente React per i profili utente",
options: {
systemPrompt: {
type: "preset",
preset: "claude_code", // Usa il prompt di sistema di Claude Code
},
settingSources: ["project"], // Richiesto per caricare CLAUDE.md dal progetto
},
})) {
messages.push(message);
}
// Ora Claude ha accesso alle tue linee guida del progetto da CLAUDE.mdMigliore per:
Caratteristiche chiave:
settingSourcesGli stili di output sono configurazioni salvate che modificano il prompt di sistema di Claude. Sono memorizzati come file markdown e possono essere riutilizzati tra sessioni e progetti.
import { writeFile, mkdir } from "fs/promises";
import { join } from "path";
import { homedir } from "os";
async function createOutputStyle(
name: string,
description: string,
prompt: string
) {
// Livello utente: ~/.claude/output-styles
// Livello progetto: .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");
}
// Esempio: Crea uno specialista di revisione del codice
await createOutputStyle(
"Code Reviewer",
"Assistente di revisione del codice approfondita",
`Sei un esperto revisore di codice.
Per ogni sottomissione di codice:
1. Controlla bug e problemi di sicurezza
2. Valuta le prestazioni
3. Suggerisci miglioramenti
4. Valuta la qualità del codice (1-10)`
);Una volta creati, attiva gli stili di output tramite:
/output-style [nome-stile].claude/settings.local.json/output-style:new [descrizione]Nota per gli utenti SDK: Gli stili di output vengono caricati quando includi settingSources: ['user'] o settingSources: ['project'] (TypeScript) / setting_sources=["user"] o setting_sources=["project"] (Python) nelle tue opzioni.
systemPrompt con appendPuoi utilizzare il preset Claude Code con una proprietà append per aggiungere le tue istruzioni personalizzate preservando tutte le funzionalità integrate.
import { query } from "@anthropic-ai/claude-agent-sdk";
const messages = [];
for await (const message of query({
prompt: "Aiutami a scrivere una funzione Python per calcolare i numeri di fibonacci",
options: {
systemPrompt: {
type: "preset",
preset: "claude_code",
append:
"Includi sempre docstring dettagliate e type hints nel codice Python.",
},
},
})) {
messages.push(message);
if (message.type === "assistant") {
console.log(message.message.content);
}
}Puoi fornire una stringa personalizzata come systemPrompt per sostituire completamente il default con le tue istruzioni.
import { query } from "@anthropic-ai/claude-agent-sdk";
const customPrompt = `Sei uno specialista di codifica Python.
Segui queste linee guida:
- Scrivi codice pulito e ben documentato
- Usa type hints per tutte le funzioni
- Includi docstring complete
- Preferisci pattern di programmazione funzionale quando appropriato
- Spiega sempre le tue scelte di codice`;
const messages = [];
for await (const message of query({
prompt: "Crea una pipeline di elaborazione dati",
options: {
systemPrompt: customPrompt,
},
})) {
messages.push(message);
if (message.type === "assistant") {
console.log(message.message.content);
}
}| Caratteristica | CLAUDE.md | Stili di Output | systemPrompt con append | systemPrompt Personalizzato |
|---|---|---|---|---|
| Persistenza | File per progetto | Salvati come file | Solo sessione | Solo sessione |
| Riutilizzabilità | Per progetto | Tra progetti | Duplicazione codice | Duplicazione codice |
| Gestione | Su filesystem | CLI + file | Nel codice | Nel codice |
| Strumenti predefiniti | Preservati | Preservati | Preservati | Persi (a meno che inclusi) |
| Sicurezza integrata | Mantenuta | Mantenuta | Mantenuta | Deve essere aggiunta |
| Contesto ambiente | Automatico | Automatico | Automatico | Deve essere fornito |
| Livello personalizzazione | Solo aggiunte | Sostituisce default | Solo aggiunte | Controllo completo |
| Controllo versione | Con progetto | Sì | Con codice | Con codice |
| Ambito | Specifico progetto | Utente o progetto | Sessione codice | Sessione codice |
Nota: "Con append" significa utilizzare systemPrompt: { type: "preset", preset: "claude_code", append: "..." } in TypeScript o system_prompt={"type": "preset", "preset": "claude_code", "append": "..."} in Python.
Migliore per:
Esempi:
npm run lint:fix prima di fare commit"migrations/"Importante: Per caricare i file CLAUDE.md, devi impostare esplicitamente settingSources: ['project'] (TypeScript) o setting_sources=["project"] (Python). Il preset del prompt di sistema claude_code NON carica automaticamente CLAUDE.md senza questa impostazione.
Migliore per:
Esempi:
systemPrompt con appendMigliore per:
systemPrompt personalizzatoMigliore per:
Puoi combinare questi metodi per la massima flessibilità:
import { query } from "@anthropic-ai/claude-agent-sdk";
// Assumendo che lo stile di output "Code Reviewer" sia attivo (tramite /output-style)
// Aggiungi aree di focus specifiche della sessione
const messages = [];
for await (const message of query({
prompt: "Rivedi questo modulo di autenticazione",
options: {
systemPrompt: {
type: "preset",
preset: "claude_code",
append: `
Per questa revisione, dai priorità a:
- Conformità OAuth 2.0
- Sicurezza dell'archiviazione token
- Gestione delle sessioni
`,
},
},
})) {
messages.push(message);
}