- File CLAUDE.md: istruzioni che scrivi per dare a Claude un contesto persistente. Claude può anche leggere i file
AGENTS.mddi un repository, da soli o insieme a CLAUDE.md - Memoria automatica: note che Claude scrive da solo in base alle tue correzioni e preferenze
- Scrivere e organizzare file CLAUDE.md
- Utilizzare un file AGENTS.md esistente come istruzioni del tuo progetto, da solo o insieme a CLAUDE.md
- Limitare le regole a tipi di file specifici con
.claude/rules/ - Configurare la memoria automatica in modo che Claude prenda note automaticamente
- Risolvere i problemi quando le istruzioni non vengono seguite
CLAUDE.md vs memoria automatica
Claude Code ha due sistemi di memoria complementari. Entrambi vengono caricati all’inizio di ogni conversazione. Claude li tratta come contesto, non come configurazione forzata. Per bloccare un’azione indipendentemente da ciò che Claude decide, utilizza un hook PreToolUse invece. Più specifiche e concise sono le tue istruzioni, più coerentemente Claude le segue.
Usa file CLAUDE.md quando vuoi guidare il comportamento di Claude. La memoria automatica consente a Claude di imparare dalle tue correzioni senza sforzo manuale.
I subagents possono anche mantenere la propria memoria automatica. Vedi configurazione subagent per i dettagli.
File CLAUDE.md
I file CLAUDE.md sono file markdown che forniscono a Claude istruzioni persistenti per un progetto, il tuo workflow personale o l’intera organizzazione. Scrivi questi file in testo semplice; Claude li legge all’inizio di ogni sessione. Se il tuo repository utilizzaAGENTS.md invece, consulta AGENTS.md.
Quando aggiungere a CLAUDE.md
Tratta CLAUDE.md come il luogo in cui scrivi ciò che altrimenti dovresti rispiegare. Aggiungi qualcosa quando:- Claude commette lo stesso errore una seconda volta
- Una code review rileva qualcosa che Claude avrebbe dovuto sapere su questo codebase
- Digiti nella chat la stessa correzione o lo stesso chiarimento che hai digitato nella sessione precedente
- Un nuovo membro del team avrebbe bisogno dello stesso contesto per essere produttivo
Scegli dove posizionare i file CLAUDE.md
I file CLAUDE.md possono trovarsi in diversi percorsi, ognuno con un ambito diverso. La tabella seguente li elenca in ordine di caricamento, dall’ambito più ampio al più specifico, quindi un’istruzione di progetto appare in contesto dopo un’istruzione utente.
I file CLAUDE.md e CLAUDE.local.md nella gerarchia di directory sopra la directory di lavoro vengono caricati all’avvio. I file nelle sottodirectory si caricano su richiesta quando Claude legge i file in quelle directory. Consulta Come si caricano i file CLAUDE.md per l’ordine di risoluzione completo.
Per i progetti di grandi dimensioni, puoi suddividere le istruzioni in file specifici per argomento utilizzando le regole di progetto. Le regole ti permettono di limitare le istruzioni a tipi di file specifici o sottodirectory.
Configura un CLAUDE.md di progetto
Un CLAUDE.md di progetto può essere archiviato in./CLAUDE.md o ./.claude/CLAUDE.md. Crea questo file e aggiungi istruzioni che si applicano a chiunque lavori sul progetto: comandi di build e test, standard di codifica, decisioni architetturali, convenzioni di denominazione e workflow comuni. Queste istruzioni sono condivise con il tuo team tramite controllo di versione, quindi concentrati su standard a livello di progetto piuttosto che su preferenze personali. Per confermare che il file è stato caricato, esegui /context in una sessione e controlla l’elenco sotto Memory files.
Scrivi istruzioni efficaci
Claude tratta i file CLAUDE.md come contesto, non come configurazione imposta, quindi il modo in cui scrivi le istruzioni influisce su quanto affidabilmente Claude le segue. Scrivi istruzioni abbastanza concrete da poter essere verificate:- “Usa l’indentazione a 2 spazi” invece di “Formatta il codice correttamente”
- “Esegui
npm testprima di fare il commit” invece di “Testa le tue modifiche” - “I gestori API si trovano in
src/api/handlers/” invece di “Mantieni i file organizzati”
- Dimensione: punta a meno di 200 righe per file CLAUDE.md. I file più lunghi consumano più contesto e riducono l’aderenza. Sposta le istruzioni che riguardano solo una parte del codebase in regole con ambito di percorso, che si caricano solo quando Claude lavora con file corrispondenti. Le importazioni ti aiutano a organizzare un file lungo ma non riducono il costo del contesto, perché anche i file importati si caricano all’avvio.
- Struttura: raggruppa le istruzioni correlate sotto intestazioni e punti elenco markdown. Le sezioni organizzate sono più facili da seguire per Claude rispetto ai paragrafi densi.
- Coerenza: se due istruzioni si contraddicono a vicenda, Claude potrebbe sceglierne una arbitrariamente. Rivedi periodicamente i tuoi file CLAUDE.md, i file CLAUDE.md annidati nelle sottodirectory e
.claude/rules/per rimuovere istruzioni obsolete o in conflitto. Per fare in modo che Claude le trovi per te, esegui un audit delle istruzioni.
Esegui un audit dei tuoi file di istruzioni
Per fare in modo che Claude controlli i tuoi file di istruzioni alla ricerca di contenuti obsoleti o in conflitto, esegui/doctor prompt-audit in una sessione. Claude cerca problemi come istruzioni scritte per modelli più vecchi, riferimenti a file o comandi che non esistono e file che si contraddicono a vicenda. Ricevi un rapporto dei risultati con modifiche proposte, e nulla nei tuoi file cambia finché non chiedi a Claude di applicarle.
Per impostazione predefinita, l’audit copre i tuoi file CLAUDE.md, CLAUDE.local.md e AGENTS.md, più le regole, le skill, i comandi, i subagent e gli stili di output sotto .claude/ e ~/.claude/. Per controllare invece un singolo file o una singola directory, passa il suo percorso, ad esempio /doctor prompt-audit .claude/skills/deploy.
L’audit viene eseguito attraverso la skill /claude-api in bundle. Non è disponibile mentre quella skill è disattivata in skillOverrides o con disableBundledSkills. /doctor prompt-audit richiede Claude Code v2.1.283 o successivo.
Importa file aggiuntivi
I file CLAUDE.md possono importare file aggiuntivi utilizzando la sintassi@path/to/import. I file importati vengono espansi e caricati in contesto all’avvio insieme al CLAUDE.md che li referenzia.
Sono consentiti sia i percorsi relativi che assoluti. I percorsi relativi si risolvono rispetto al file che contiene l’importazione, non alla directory di lavoro. I file importati possono importare ricorsivamente altri file, con una profondità massima di quattro hop.
Per importare un file il cui percorso contiene spazi, metti una barra rovesciata prima di ogni spazio. Senza le barre rovesciate, il percorso termina al primo spazio, anche quando l’importazione è su una riga a sé stante. Un percorso racchiuso tra virgolette non viene importato affatto, con o senza le barre rovesciate. Questa importazione carica un file da una cartella denominata Design Docs:
`@README` mantiene il testo letterale, mentre @README al di fuori dei backtick importa il file.
Per includere un README, package.json e una guida al workflow, fai riferimento a essi con la sintassi @ in qualsiasi punto del tuo CLAUDE.md:
CLAUDE.local.md nella radice del progetto. Si carica insieme a CLAUDE.md e viene trattato allo stesso modo. Aggiungi CLAUDE.local.md al tuo .gitignore in modo che non venga incluso nei commit. Con CLAUDE_CODE_NEW_INIT=1 impostato, eseguire /init e scegliere l’opzione personale lo fa per te.
Se lavori su più worktree git dello stesso repository, un CLAUDE.local.md ignorato da git esiste solo nel worktree in cui lo hai creato. Per condividere istruzioni personali tra i worktree, importa invece un file dalla tua directory home:
Come si caricano i file CLAUDE.md
Claude Code caricaCLAUDE.md e CLAUDE.local.md dalla tua directory di lavoro corrente e da ogni directory sopra di essa. Se esegui Claude Code in foo/bar/, carica le istruzioni da foo/bar/CLAUDE.md, foo/CLAUDE.md e da qualsiasi file CLAUDE.local.md accanto a essi.
Tutti i file scoperti vengono concatenati in contesto invece di sovrascriversi a vicenda. Nell’albero delle directory, il contenuto è ordinato dalla radice del filesystem fino alla tua directory di lavoro. Per l’esempio foo/bar/, foo/CLAUDE.md appare in contesto prima di foo/bar/CLAUDE.md, quindi le istruzioni più vicine a dove hai avviato Claude vengono lette per ultime. All’interno di ogni directory, CLAUDE.local.md viene aggiunto dopo CLAUDE.md, quindi le tue note personali sono l’ultima cosa che Claude legge a quel livello.
Claude scopre anche i file CLAUDE.md e CLAUDE.local.md nelle sottodirectory sotto la tua directory di lavoro corrente. Invece di essere caricati all’avvio, vengono inclusi quando Claude legge i file in quelle sottodirectory. Per i file all’interno di un worktree sotto .claude/worktrees/, consulta Isolare i subagent con i worktree.
Se lavori in un grande monorepo in cui vengono raccolti i file CLAUDE.md di altri team, utilizza claudeMdExcludes per saltarli. Per il layout completo dei file CLAUDE.md e delle regole a livello di radice e per directory, consulta Monorepo e repository di grandi dimensioni.
I commenti HTML a livello di blocco (<!-- maintainer notes -->) nei file CLAUDE.md vengono rimossi prima che il contenuto venga iniettato nel contesto di Claude. Utilizzali per lasciare note per i manutentori umani senza spendere token di contesto. I commenti all’interno dei blocchi di codice vengono preservati. Quando apri un file CLAUDE.md direttamente con lo strumento Read, i commenti rimangono visibili.
Caricamento da directory aggiuntive
Il flag--add-dir dà a Claude accesso a directory aggiuntive al di fuori della tua directory di lavoro principale. Per impostazione predefinita, i file CLAUDE.md di queste directory non vengono caricati.
Per caricare anche i file di memoria dalle directory aggiuntive, imposta la variabile d’ambiente CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD:
env in ~/.claude/settings.json come mostrato in Impostare le variabili d’ambiente.
Questo carica CLAUDE.md, .claude/CLAUDE.md, .claude/rules/*.md e CLAUDE.local.md dalla directory aggiuntiva. CLAUDE.local.md viene saltato se escludi local da --setting-sources.
Organizza le regole con .claude/rules/
Per i progetti più grandi, puoi organizzare le istruzioni in più file utilizzando la directory .claude/rules/. Questo mantiene le istruzioni modulari e più facili da mantenere per i team. Le regole possono anche essere limitate a percorsi di file specifici, quindi si caricano in contesto solo quando Claude lavora con file corrispondenti, riducendo il rumore e risparmiando spazio di contesto.
Le regole si caricano in contesto in ogni sessione o quando vengono aperti i file corrispondenti. Per le istruzioni specifiche di un’attività che non devono essere sempre in contesto, utilizza invece le skill, che si caricano solo quando le richiami o quando Claude determina che sono rilevanti per il tuo prompt.
Configura le regole
Posiziona i file markdown nella directory.claude/rules/ del tuo progetto. Ogni file dovrebbe coprire un argomento, con un nome di file descrittivo come testing.md o api-design.md. Tutti i file .md vengono scoperti ricorsivamente, quindi puoi organizzare le regole in sottodirectory come frontend/ o backend/:
paths vengono caricate all’avvio con la stessa priorità di .claude/CLAUDE.md.
Le regole di progetto vengono saltate se escludi project da --setting-sources. Prima della v2.1.211, le regole che si caricano su richiesta, incluse le regole con ambito di percorso e le regole nelle directory .claude/rules/ annidate, si caricavano anche quando project era escluso.
Regole specifiche del percorso
Le regole possono essere limitate a file specifici utilizzando il frontmatter YAML con il campopaths. Queste regole condizionali si applicano solo quando Claude lavora con file che corrispondono ai modelli specificati.
paths vengono caricate incondizionatamente e si applicano a tutti i file. Le regole con ambito di percorso si attivano quando Claude legge file che corrispondono al modello, non a ogni utilizzo di uno strumento. La corrispondenza funziona anche quando Claude raggiunge un file attraverso un percorso che è un collegamento simbolico alla directory del progetto, ad esempio in un checkout collegato tramite collegamento simbolico.
Utilizza i modelli glob nel campo paths per far corrispondere i file per estensione, directory o qualsiasi combinazione:
Puoi specificare più modelli e utilizzare l’espansione tra parentesi graffe per far corrispondere più estensioni in un unico modello:
src/*.{ts,tsx} si espande in due modelli, e {a,b}/{c,d}/*.{ts,tsx} in otto. Per mantenere l’espansione limitata, l’intero elenco paths di una regola condivide un unico budget di 1.000 modelli espansi e 4 MiB, e i modelli senza parentesi graffe non vengono conteggiati.
Claude Code utilizza non espanso qualsiasi modello che supererebbe il budget, e le sue parentesi graffe letterali non corrispondono a nessun file. Prima della v2.1.217, un valore paths con molti gruppi tra parentesi graffe bloccava o causava l’arresto anomalo della CLI all’avvio.
La sintassi glob tratta [ come l’inizio di un’espressione tra parentesi quadre come [abc]. Un modello con un [ che non può essere letto come un’espressione tra parentesi quadre, come photos [2024/**, non è valido: non corrisponde a nulla, e gli altri modelli della regola continuano a funzionare. Per far corrispondere un [ letterale in un nome di file, applica l’escape come in photos \[2024/**. Prima della v2.1.207, un modello non valido causava il fallimento dello strumento Read per ogni file su cui la regola veniva valutata, invece di non corrispondere a nulla.
Riferimento frontmatter delle regole
Configura una regola con il frontmatter YAML tra i marcatori--- all’inizio del file. paths è l’unico campo che Claude Code legge da una regola; qualsiasi altro campo viene ignorato senza errore. Claude Code rimuove il frontmatter prima di caricare la regola in contesto.
Se lo YAML tra i marcatori non può essere analizzato, Claude Code ignora il frontmatter e carica la regola come se non avesse
paths. Esegui claude --debug per vedere l’errore di analisi.
Condividi le regole tra i progetti con collegamenti simbolici
La directory.claude/rules/ supporta i collegamenti simbolici, quindi puoi mantenere un set di regole condivise e collegarle in più progetti. I collegamenti simbolici circolari vengono rilevati e gestiti correttamente.
Claude Code tratta un collegamento simbolico la cui destinazione è al di fuori della tua directory di lavoro come un’importazione esterna. Le regole collegate non si caricano finché non approvi le importazioni esterne per il progetto, e dopo di che si caricano solo quelle senza un campo paths. Claude Code chiede quell’approvazione solo quando un file di memoria di progetto importa un file al di fuori della directory di lavoro con @path, non per i soli collegamenti simbolici. Per caricare le regole condivise senza quell’approvazione, mantienile in ~/.claude/rules/, dove si applicano a ogni progetto sulla tua macchina.
Questo esempio collega sia una directory condivisa che un singolo file:
.claude/rules/ o CLAUDE.md a un percorso di rete come la condivisione UNC \\server\share o un percorso sotto /net o /Network, le istruzioni collegate non si caricano. Claude Code non segue il link, perché la risoluzione di un tale percorso può contattare l’host che nomina. I percorsi \\wsl$ non contano come percorsi di rete.
Regole a livello di utente
Le regole personali in~/.claude/rules/ si applicano a ogni progetto sulla tua macchina. Utilizzale per le preferenze che non sono specifiche di un progetto:
Gestisci CLAUDE.md per i team di grandi dimensioni
Per le organizzazioni che distribuiscono Claude Code tra i team, puoi centralizzare le istruzioni e controllare quali file CLAUDE.md vengono caricati.Distribuisci un CLAUDE.md a livello organizzativo
Le organizzazioni possono distribuire un CLAUDE.md gestito centralmente che si applica a tutti gli utenti su una macchina. Questo file non può essere escluso dalle impostazioni individuali.1
Crea il file nel percorso della politica gestita
- macOS:
/Library/Application Support/ClaudeCode/CLAUDE.md - Linux e WSL:
/etc/claude-code/CLAUDE.md - Windows:
C:\Program Files\ClaudeCode\CLAUDE.md
2
Distribuisci con il tuo sistema di gestione della configurazione
Utilizza MDM, Group Policy, Ansible o strumenti simili per distribuire il file sulle macchine degli sviluppatori. Consulta impostazioni gestite per altre opzioni di configurazione a livello organizzativo.
claudeMd ti permette di inserire il contenuto CLAUDE.md gestito direttamente all’interno di managed-settings.json invece di distribuire un file separato.
Ambito: ogni sessione di Claude Code sulla macchina, in ogni repository. Per indicazioni specifiche di un repository, fai invece il commit di un CLAUDE.md di progetto.
Precedenza: la stessa di un file CLAUDE.md gestito. Si carica prima dei CLAUDE.md utente e di progetto.
Dove viene rispettato: solo nelle impostazioni gestite e di politica. Impostare claudeMd nelle impostazioni utente, di progetto o locali non ha effetto.
L’esempio seguente aggiunge istruzioni comportamentali direttamente in un file di impostazioni gestite:
Le regole delle impostazioni vengono applicate dal client indipendentemente da ciò che Claude decide di fare. Le istruzioni CLAUDE.md modellano il comportamento di Claude ma non sono un livello di applicazione rigido.
Escludi file CLAUDE.md specifici
Nei grandi monorepo, i file CLAUDE.md delle directory superiori possono contenere istruzioni che non sono rilevanti per il tuo lavoro. L’impostazioneclaudeMdExcludes ti permette di saltare file specifici per percorso o modello glob.
Questo esempio esclude un CLAUDE.md di livello superiore e una directory di regole da una cartella padre. Aggiungilo a .claude/settings.local.json in modo che l’esclusione rimanga locale alla tua macchina:
claudeMdExcludes a qualsiasi livello di impostazioni: utente, progetto, locale o politica gestita. Degli array viene eseguito il merge tra i livelli.
Per escludere un file di regole che raggiungi attraverso un collegamento simbolico, che il link sia il file stesso o la sua directory, scrivi il modello rispetto a uno dei due percorsi: il percorso del file sotto .claude/rules/ o la destinazione del link. Un modello che corrisponde a uno dei due percorsi esclude il file. Prima della v2.1.239, solo un modello che corrispondeva alla destinazione del link escludeva il file.
I file CLAUDE.md della politica gestita non possono essere esclusi. Questo garantisce che le istruzioni a livello organizzativo si applichino sempre indipendentemente dalle impostazioni individuali.
AGENTS.md
Claude Code può leggereAGENTS.md come istruzioni del vostro progetto, quindi un repository già configurato per altri agenti di codifica funziona senza aggiungere un CLAUDE.md, un import o un’impostazione. Questa tabella mostra cosa Claude legge per impostazione predefinita per ogni combinazione di file di istruzioni nel vostro repository:
Per cambiare il valore predefinito, ad esempio per fare in modo che Claude legga sempre entrambi i file, legga solo
CLAUDE.md, o legga solo le istruzioni gestite della vostra organizzazione, cambiate l’impostazione Project instructions.
La lettura diretta di
AGENTS.md richiede Claude Code v2.1.277 o successivo. In alcune sessioni Claude non può leggere AGENTS.md, quindi importatelo da un CLAUDE.md lì invece.When Claude Code reads AGENTS.md
Per impostazione predefinita, Claude leggeAGENTS.md solo quando non avete nessun CLAUDE.md nella vostra directory di lavoro o sopra di essa. Ecco quali dei vostri file contano per quel controllo:
- Contano, quindi Claude li legge invece di
AGENTS.md: unCLAUDE.md,.claude/CLAUDE.md, oCLAUDE.local.mdnella vostra directory di lavoro o in qualsiasi directory sopra di essa - Non contano, e continuano a caricarsi insieme a
AGENTS.md: il vostro~/.claude/CLAUDE.md, ilCLAUDE.mdgestito della vostra organizzazione, e i vostri file.claude/rules/
- All’inizio della sessione: ogni
AGENTS.mde.claude/AGENTS.mdnella vostra directory di lavoro e nelle directory sopra di essa. In una sessione interattiva vedete una riga comeno CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.mdnella conversazione - Mentre Claude lavora nelle sottodirectory: un
AGENTS.mddi una sottodirectory, quando Claude apre un file lì con lo strumento Read e quella sottodirectory non ha nessuno dei tre fileCLAUDE.mdpropri - All’interno di ogni
AGENTS.md: gli import@pathsono espansi, i patternclaudeMdExcludessi applicano, e i subagent che saltano le istruzioni del progetto saltano anche questi file - Non letto:
AGENTS.local.md,AGENTS.override.md, o qualsiasi cosa sotto una directory.agents/
Poiché
CLAUDE.local.md conta, aggiungerne uno per mantenere le vostre istruzioni non committate in un progetto che si basa su AGENTS.md impedisce a Claude di leggere AGENTS.md per voi. Per mantenere il vostro CLAUDE.local.md e avere comunque Claude che legge AGENTS.md, impostate Project instructions su claude-md-and-agents-md.Choose which instruction files load
Per cambiare quali file Claude legge, digitate/config in una sessione di Claude Code per aprire il pannello delle impostazioni, quindi impostate Project instructions su uno di questi valori:
Potete anche impostare il valore in un file di impostazioni invece di
/config. Aggiungetelo sotto l’ID del plugin agents-md integrato in pluginConfigs, in ~/.claude/settings.json, un file --settings, o managed settings. Claude Code lo ignora nei file di impostazioni del progetto e locale. Questo esempio fa leggere a Claude entrambi i file:
settings.json
When AGENTS.md support is unavailable
In queste sessioni Claude legge solo i fileCLAUDE.md, e Project instructions non appare nel pannello delle impostazioni /config:
- Siete su una versione di Claude Code precedente a v2.1.277
- Voi o la vostra organizzazione avete disabilitato il plugin integrato
agents-mdin/plugin - In alcuni casi, è la vostra prima sessione dopo aver aggiornato da v2.1.276 o precedente. Claude legge
AGENTS.mddalla vostra prossima sessione
CLAUDE.md. Su quelle versioni, aggiornate Claude Code. Per dare a Claude il vostro AGENTS.md in una qualsiasi di queste sessioni, importatelo da un CLAUDE.md.
Where AGENTS.md differs from CLAUDE.md
UnAGENTS.md che Claude legge attraverso l’impostazione Project instructions differisce da un CLAUDE.md in questi posti:
Remove an earlier AGENTS.md workaround
Se avete configurato Claude Code per leggereAGENTS.md prima che lo facesse da solo, ecco cosa fare con ogni configurazione comune:
- Un
CLAUDE.mdcontenente@AGENTS.md: potete lasciarlo. Mantenere l’import non fa mai leggereAGENTS.mddue volte a Claude, qualunque valore di Project instructions usiate. Rimuovete ilCLAUDE.mdse non contiene nient’altro, o mantenetelo se alcune delle vostre sessioni non possono caricareAGENTS.mddirettamente. - Un
CLAUDE.mdche dice a Claude a parole di leggereAGENTS.md: Claude vedeAGENTS.mdsolo se decide di aprire il file. Eliminate ilCLAUDE.mdin modo che Claude leggaAGENTS.mddirettamente, o sostituite la frase con un import@AGENTS.md. - Un
CLAUDE.mdcon symlink aAGENTS.md: nulla, o eliminate il symlink. In entrambi i casi Claude legge il contenuto una volta. - Un hook
SessionStartche stampaAGENTS.md: rimuovetelo. Una volta che Claude leggeAGENTS.mddirettamente, l’hook aggiunge una seconda copia al contesto.
Share one file with other coding tools
Quando Claude non legge il vostroAGENTS.md direttamente, potete comunque mantenerlo come l’unico file che ogni strumento condivide mettendo un import @AGENTS.md in un CLAUDE.md accanto ad esso. Fatelo quando il vostro progetto ha anche un CLAUDE.md, quando avete impostato Project instructions su claude-md, o in sessioni che non possono caricare AGENTS.md. Aggiungete qualsiasi istruzione specifica di Claude sotto l’import, e Claude legge il file importato per primo, poi il resto:
CLAUDE.md
- Modifica: Claude legge
CLAUDE.mdattraverso il link, ma gli strumenti Edit e Write rifiutano di scrivere attraverso un symlink, e il rifiuto dirige Claude a modificare il target del link,AGENTS.md, invece - Windows: se voi o chiunque cloni il repository lavorate su Windows, usate l’import
@AGENTS.mdinvece. Creare un symlink lì richiede privilegi di amministratore o modalità sviluppatore, e Git controlla un symlink committato come un file di testo semplice a meno checore.symlinksnon sia abilitato, il che lascia quel clone con unCLAUDE.mddi una riga al posto delle vostre istruzioni
/context nella vostra prossima sessione e confermate che CLAUDE.md appare sotto Memory files.
Migrate instructions from other tools
L’esecuzione di/init legge i file di istruzioni di altri strumenti e incorpora le parti rilevanti nel CLAUDE.md generato:
- Regole Cursor in
.cursor/rules/o.cursorrules - Regole Copilot in
.github/copilot-instructions.md - Con
CLAUDE_CODE_NEW_INIT=1impostato:AGENTS.md,.devin/rules/,.windsurf/rules/o.windsurfrules, e.clinerules
/import per portare la configurazione di un agente di codifica supportato in Claude Code, che aggiunge una copia una tantum di file di istruzioni come AGENTS.md al CLAUDE.md corrispondente e trasporta i server MCP, i comandi, i subagent e le skills. Richiede Claude Code v2.1.213 o successivo.
Memoria automatica
La memoria automatica consente a Claude di accumulare conoscenze tra le sessioni senza che tu scriva nulla. Mentre lavora, Claude salva quattro tipi di note per se stesso. Claude registra il tipo come campotype nel frontmatter del file di memoria:
user: il tuo ruolo, competenze e preferenze di lavorofeedback: correzioni che dai a Claude e approcci che confermiproject: lavoro in corso, scadenze e decisioni che Claude non può derivare dal codice o dalla cronologia gitreference: dove trovare informazioni al di fuori del progetto, come un issue tracker o una dashboard
Abilita o disabilita la memoria automatica
La memoria automatica è attivata per impostazione predefinita nelle sessioni locali. Al di fuori delle sessioni Claude Tag, una sessione in un ambiente self-hosted viene eseguita con la memoria automatica disattivata per impostazione predefinita. Per attivarla/disattivarla, apri/memory in una sessione e usa l’interruttore di memoria automatica, che salva autoMemoryEnabled nelle impostazioni utente in ~/.claude/settings.json. Per disattivarla per un singolo progetto, imposta autoMemoryEnabled nelle impostazioni di quel progetto:
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1.
Posizione di archiviazione
Ogni progetto ottiene la propria directory di memoria in~/.claude/projects/<project>/memory/. Il percorso <project> è derivato dal repository git, quindi tutti i worktrees e le sottodirectory all’interno dello stesso repo condividono una directory di memoria automatica. Al di fuori di un repository git, viene utilizzata la radice del progetto.
Se imposti CLAUDE_CODE_PROJECT_DIR_NAME accanto a CLAUDE_CONFIG_DIR, Claude Code utilizza quel nome come directory <project> sotto <config dir>/projects/ indipendentemente da quale repository avvii, quindi i progetti avviati con quella directory di configurazione condividono una directory di memoria automatica. Richiede Claude Code v2.1.234 o successivo.
Per archiviare la memoria automatica in una posizione diversa, imposta autoMemoryDirectory nel tuo settings.json. Viene letto da qualsiasi ambito di impostazioni: utente, progetto, locale, politica, o --settings.
~/.
Quando lo imposti nel .claude/settings.json o .claude/settings.local.json di un progetto, Claude Code lo rispetta secondo la stessa regola di trust dell’area di lavoro dei hook nei file di impostazioni. Mentre permissions.blockReadsOutsideWorkingDirectories è attivo, Claude Code non carica alcuna memoria automatica da una directory che un file di impostazioni fornito dal repository sceglie e non salva nulla in essa, ovunque si trovi quella directory.
La directory contiene un indice MEMORY.md e un file di argomento per memoria:
MEMORY.md funge da indice della directory di memoria. Claude legge e scrive file in questa directory durante la tua sessione, usando MEMORY.md per tenere traccia di ciò che è archiviato dove.
La memoria automatica è locale alla macchina. Tutti i worktrees e le sottodirectory all’interno dello stesso repository git condividono una directory di memoria automatica. I file non vengono condivisi tra macchine o ambienti cloud.
Claude Code elimina i vecchi transcript di sessione dopo il periodo di conservazione cleanupPeriodDays, ma esclude i file di memoria nella directory di memoria da quella scansione di conservazione. MEMORY.md e i file di argomento rimangono fino a quando tu o Claude non li modificate o eliminate.
Come funziona
Le prime 200 righe diMEMORY.md, o i primi 25KB, a seconda di quale viene raggiunto per primo, vengono caricate all’inizio di ogni conversazione. Il contenuto oltre quella soglia non viene caricato all’inizio della sessione. Claude mantiene MEMORY.md conciso spostando le note dettagliate in file di argomento separati.
Dopo che Claude scrive in MEMORY.md, Claude Code misura il file rispetto ai limiti di lettura di 200 righe e 25KB. Se il file è vicino a un limite, Claude Code ricorda a Claude di accorciarlo: mantieni una riga per voce, sposta i dettagli nei file di argomento e unisci o elimina le voci obsolete. Se il file supera un limite, la scrittura ha comunque successo, ma Claude Code restituisce un errore che dice a Claude di riscrivere l’indice, perché tutto ciò che supera il limite viene eliminato al caricamento successivo.
Questo limite si applica solo a MEMORY.md. Claude Code carica un file CLAUDE.md fino a 4 MiB completamente e salta un file più grande. I file più brevi producono una migliore aderenza.
Claude Code non carica i file di argomento come user_role.md o feedback_testing.md all’avvio. Claude li legge su richiesta usando i suoi strumenti di file standard quando ha bisogno delle informazioni.
La memoria automatica della conversazione principale non viene caricata nei subagenti; l’eccezione è un fork, che eredita la conversazione padre e il prompt di sistema. La memoria automatica di un subagente, abilitata con il campo memory del subagente, è una directory separata.
Claude legge e scrive file di memoria durante la tua sessione. Quando vedi messaggi come “Saved 2 memories” o “Recalled 2 memories” nell’interfaccia di Claude Code, Claude sta attivamente aggiornando o leggendo da ~/.claude/projects/<project>/memory/.
Quando Claude scrive un file di memoria che inizia con frontmatter YAML, Claude Code registra l’ora di scrittura in un campo frontmatter modified come timestamp ISO 8601. Il timestamp mostra quanto è attuale il fatto, sia per te che per Claude quando lo legge di nuovo. Qualsiasi file che ha frontmatter ottiene il campo la prossima volta che Claude lo scrive, inclusi i file creati in versioni precedenti; Claude Code non aggiunge mai frontmatter a un file che non ne ha. Il campo modified richiede Claude Code v2.1.214 o successivo.
Controlla e modifica la tua memoria
I file di memoria automatica sono markdown semplice che puoi modificare o eliminare in qualsiasi momento. Esegui/memory per sfogliare e aprire i file di memoria da una sessione.
Visualizza e modifica con /memory
Il comando /memory elenca i tuoi file CLAUDE.md, CLAUDE.local.md e altri file di memoria in tutti gli ambiti utente e progetto, incluse le voci CLAUDE.md utente e progetto per i file che non esistono ancora. Ti consente inoltre di attivare o disattivare la memoria automatica e fornisce un’opzione per aprire la cartella di memoria automatica. Seleziona qualsiasi file per aprirlo nel tuo editor; selezionando uno che non esiste ancora lo crea prima. Per verificare quali file CLAUDE.md e file di regole sono stati caricati nella sessione corrente, esegui /context.
Gli editor GUI come VS Code aprono il file in una finestra separata e puoi continuare a utilizzare la sessione mentre è aperta. Prima della v2.1.216, /memory attendeva che chiudessi il file prima di rispondere. Gli editor terminali come Vim prendono il controllo del terminale fino a quando non esci.
Quando chiedi a Claude di ricordare qualcosa, come “usa sempre pnpm, non npm” o “ricorda che i test API richiedono un’istanza Redis locale”, Claude lo salva nella memoria automatica. Per aggiungere istruzioni a CLAUDE.md, chiedi direttamente a Claude, come “aggiungi questo a CLAUDE.md”, oppure modifica il file tu stesso tramite /memory.
Risolvi i problemi di memoria
Questi sono i problemi più comuni con CLAUDE.md e la memoria automatica, insieme ai passaggi per risolverli.Claude non sta seguendo il mio CLAUDE.md
Il contenuto di CLAUDE.md viene consegnato come messaggio utente dopo il prompt di sistema, non come parte del prompt di sistema stesso. Claude lo legge e cerca di seguirlo, ma non c’è garanzia di conformità rigorosa, specialmente per istruzioni vaghe o conflittuali. Per eseguire il debug:- Esegui
/contexte controlla l’elenco sotto Memory files per verificare che i tuoi file CLAUDE.md e CLAUDE.local.md siano stati caricati. Se un fileCLAUDE.mdnon è presente lì, Claude non può vederlo. Usa/memoryper aprire e modificare i file. - Verifica che il CLAUDE.md rilevante si trovi in una posizione che viene caricata per la tua sessione (vedi Scegli dove mettere i file CLAUDE.md).
- Rendi le istruzioni più specifiche. “Usa indentazione a 2 spazi” funziona meglio di “formatta il codice bene”.
- Cerca istruzioni conflittuali tra i file CLAUDE.md. Se due file danno una guida diversa per lo stesso comportamento, Claude potrebbe sceglierne una arbitrariamente.
- Verifica se la tua istruzione compete con la guida che Claude Code aggiunge di per sé. Se il tuo CLAUDE.md imposta regole di commit o pull request, disattiva quelle integrate con
includeGitInstructionse imposta il testo di attribuzione conattribution.
--append-system-prompt. Questo deve essere passato al lancio, quindi è più adatto a script e automazione che all’uso interattivo. Per come si comporta quando riprendi una conversazione, vedi System prompt flags in resumed conversations.
Il mio AGENTS.md non sta caricando
Se il tuo repository ha unAGENTS.md e Claude non sembra sapere cosa dice, la causa solita è un CLAUDE.md da qualche parte nel percorso del progetto. Per impostazione predefinita Claude legge AGENTS.md solo quando non hai alcun CLAUDE.md o CLAUDE.local.md nella tua directory di lavoro o sopra di essa. Controlla questi in ordine:
- Cerca un
CLAUDE.md,.claude/CLAUDE.md, oCLAUDE.local.mdnella tua directory di lavoro o in qualsiasi directory sopra di essa, diversa dal tuo~/.claude/CLAUDE.md. Se ne trovi uno, Claude lo legge invece diAGENTS.mda meno che tu non imposti Project instructions suclaude-md-and-agents-md. - Esegui
claude --versione conferma v2.1.277 o successivo. Prima della v2.1.281, alcune sessioni, come quelle su Amazon Bedrock o con telemetria disabilitata, non potevano caricareAGENTS.md, quindi su quelle versioni aggiorna a v2.1.281 o successivo. - Digita
/confignella tua sessione per aprire il pannello delle impostazioni e conferma che Project instructions non è impostato suclaude-mdomanaged-only. Se non vedi affatto l’impostazione lì, la tua sessione è una che non può caricareAGENTS.md.
AGENTS.md, esegui /memory e cerca il suo percorso nell’elenco.
Prima della v2.1.280, /memory e /context non elencavano un AGENTS.md che Claude leggeva direttamente. Su quelle versioni, chiedi a Claude quali sono le sue istruzioni di progetto.
Se vuoi mantenere il CLAUDE.md che hai trovato, o la tua sessione non può caricare AGENTS.md, aggiungi un CLAUDE.md accanto al tuo AGENTS.md che lo importa.
Non so cosa ha salvato la memoria automatica
Esegui/memory e seleziona la cartella di memoria automatica per sfogliare ciò che Claude ha salvato. Tutto è markdown semplice che puoi leggere, modificare o eliminare.
Il mio CLAUDE.md è troppo grande
I file con più di 200 righe consumano più contesto e possono ridurre l’aderenza. Claude Code salta un file superiore a 4 MiB. Usa regole con ambito di percorso per caricare istruzioni solo quando Claude lavora con file corrispondenti, oppure riduci il contenuto che non è necessario in ogni sessione. La divisione in importazioni@path aiuta l’organizzazione ma non riduce il contesto, poiché i file importati vengono caricati all’avvio.
Se uno dei tuoi file di istruzioni supera la lunghezza consigliata, vedrai un avviso all’avvio e quando esegui /status. Vedrai anche un avviso quando i file che sono ciascuno entro quella lunghezza si sommano oltre un limite combinato all’inizio della sessione. Ogni CLAUDE.md, file di regole e importazione @path conta come un file separato.
Il controllo /doctor propone riduzioni per un CLAUDE.md archiviato: taglia il contenuto che Claude può derivare dalla base di codice, come layout di directory, elenchi di dipendenze e panoramiche dell’architettura, e mantiene i rischi, la logica e le convenzioni che differiscono dai valori predefiniti dello strumento. Il controllo di riduzione richiede Claude Code v2.1.206 o successivo.
Le istruzioni sembrano perse dopo /compact
CLAUDE.md di progetto sopravvive alla compattazione: dopo /compact, Claude rilegge il tuo CLAUDE.md dal disco e lo reinetta nella sessione. I file CLAUDE.md annidati nelle sottodirectory e le regole con frontmatter paths: vengono ricaricati quando Claude legge i file a cui si applicano.
Se un’istruzione è scomparsa dopo la compattazione, è stata data solo nella conversazione, si trova in un CLAUDE.md annidato che non è stato ancora ricaricato, oppure è una regola con ambito di percorso che non ha corrisposto a un file da allora. Aggiungi istruzioni solo per conversazione a CLAUDE.md per farle persistere. Vedi Cosa sopravvive alla compattazione per il breakdown completo.
Vedi Scrivi istruzioni efficaci per una guida su dimensione, struttura e specificità.
Risorse correlate
- Esegui il debug della tua configurazione: diagnostica perché CLAUDE.md o le impostazioni non hanno effetto
- Skills: pacchetto di flussi di lavoro ripetibili che si caricano su richiesta
- Impostazioni: configura il comportamento di Claude Code con file di impostazioni
- Memoria subagent: consenti ai subagents di mantenere la propria memoria automatica