Immagine AI

L’utilizzo di Claude Code sta portando molti sviluppatori a costruire configurazioni sempre più articolate, aggiungendo istruzioni persistenti, file CLAUDE.md, skill, hook, comandi personalizzati, subagent e integrazioni MCP. L’accumulo progressivo di queste regole può però trasformarsi in un problema: l’agente si trova a lavorare con una quantità crescente di indicazioni che vengono caricate nel contesto, spesso senza che lo stesso sviluppatore sappia più spiegare con precisione perché siano state introdotte, quali siano ancora necessarie o se alcune siano diventate incompatibili con altre. Il risultato è un sistema apparentemente molto personalizzato ma più difficile da controllare e, soprattutto, un contesto nel quale le istruzioni realmente importanti rischiano di perdere peso rispetto al rumore accumulato nel tempo.

Claude Code utilizza i file CLAUDE.md come uno dei principali strumenti per mantenere istruzioni persistenti relative a un progetto, a un singolo utente o a un’intera organizzazione. Questi file possono contenere convenzioni di sviluppo, comandi di build e test, indicazioni sull’architettura, regole di formattazione, percorsi importanti del repository e procedure operative da rispettare. Le istruzioni vengono però inserite nel contesto del modello all’inizio delle sessioni e non funzionano come configurazioni rigide applicate deterministicamente dal software. Claude le interpreta come contesto e tenta di seguirle, quindi la loro efficacia dipende anche da quanto siano specifiche, concise, coerenti e facilmente distinguibili tra loro. Quando il numero di regole aumenta eccessivamente oppure vengono mantenute istruzioni vecchie e contraddittorie, l’affidabilità con cui vengono rispettate può diminuire.

Anthropic raccomanda di mantenere i file CLAUDE.md relativamente brevi, indicativamente sotto le 200 righe, perché file molto estesi consumano una parte maggiore della finestra di contesto e possono ridurre l’aderenza alle istruzioni. Non è sufficiente suddividere un documento molto grande in numerosi file importati se questi vengono comunque caricati all’avvio: l’organizzazione può migliorare dal punto di vista umano, ma il volume complessivo di contesto utilizzato rimane sostanzialmente invariato. Per le regole necessarie soltanto in determinate aree di un progetto è invece possibile utilizzare istruzioni associate a specifici percorsi, facendo in modo che vengano caricate soltanto quando Claude lavora sui file interessati.

La stessa logica riguarda le skill. Una skill dovrebbe rappresentare una procedura ripetibile e chiaramente identificabile, come una sequenza di controlli pre-release, una procedura per le migrazioni del database, un flusso di verifica dell’interfaccia o l’utilizzo corretto di un’API interna. Il suo vantaggio consiste proprio nel poter fornire conoscenza quando serve, invece di inserire preventivamente ogni possibile procedura nel contesto generale dell’agente. Se una skill duplica ciò che è già scritto in CLAUDE.md, contiene procedure non più utilizzate o potrebbe essere sostituita da un test automatico, da un linter, da una pipeline CI o da un hook, mantenerla significa aggiungere complessità senza necessariamente migliorare il risultato.

La crescita incontrollata delle configurazioni può inoltre produrre conflitti difficili da individuare. Due file possono contenere istruzioni differenti per la stessa operazione, una vecchia regola può riferirsi a un’architettura che nel frattempo è stata modificata e una procedura aggiunta mesi prima può continuare a essere applicata anche se il problema che doveva risolvere non esiste più. Claude Code non dispone di una gerarchia capace di risolvere automaticamente qualsiasi contraddizione semantica: quando incontra regole incompatibili può seguirne una invece dell’altra. Per questo il controllo periodico delle istruzioni diventa parte della manutenzione del sistema, esattamente come la revisione di codice, dipendenze e configurazioni.

Claude Code dispone anche di un sistema di memoria automatica distinto dai file CLAUDE.md. L’auto memory consente al modello di salvare autonomamente informazioni che potrebbero essere utili nelle sessioni successive, come comandi di build, dettagli sull’architettura, risultati di debugging o preferenze emerse durante il lavoro. Queste informazioni vengono conservate localmente in una directory associata al progetto, con MEMORY.md utilizzato come punto di ingresso, e possono essere visualizzate, modificate o eliminate. Anche questa memoria richiede però manutenzione: una conoscenza corretta nel momento in cui è stata salvata può diventare obsoleta dopo una modifica del progetto, inducendo Claude a utilizzare successivamente informazioni non più valide.

La gestione del contesto diventa particolarmente importante durante sessioni lunghe. Ogni messaggio, file letto e output prodotto dagli strumenti occupa parte della finestra disponibile e, con il progredire della sessione, la quantità di informazioni presenti può diventare molto elevata. Claude Code utilizza meccanismi di compattazione per mantenere operative conversazioni estese, ma una gestione ordinata delle informazioni rimane preferibile rispetto all’accumulo indiscriminato. Il comando /compact consente di comprimere la conversazione e può essere accompagnato da indicazioni su ciò che deve essere preservato, mentre /clear permette di eliminare il contesto della sessione quando è diventato più utile ripartire da una situazione pulita.

Una parte delle informazioni importanti dovrebbe quindi essere trasferita dalla conversazione a documenti persistenti quando deve sopravvivere alle sessioni o alla compattazione. Le decisioni architetturali, i vincoli di progetto e le procedure consolidate hanno più valore se vengono mantenuti in file verificabili piuttosto che lasciati all’interno di una lunga sequenza di messaggi. Allo stesso tempo, non ogni correzione merita di diventare una regola permanente: trasformare automaticamente ogni comportamento osservato in una nuova istruzione porta proprio alla crescita incontrollata della configurazione.

Un approccio alternativo consiste nel separare maggiormente ricerca, pianificazione e implementazione. Per attività non banali, Claude Code può prima analizzare in profondità la parte rilevante del repository e salvare quanto appreso in un documento di ricerca. Su questa base può quindi produrre un piano di implementazione in un file Markdown, che lo sviluppatore può leggere, correggere e annotare prima che venga modificato qualsiasi codice. Solo dopo l’approvazione del piano si passa all’esecuzione. In questo modo molte decisioni che altrimenti finirebbero come nuove regole permanenti possono rimanere legate alla singola attività e al relativo documento di lavoro.

Il piano può diventare uno stato condiviso tra sviluppatore e agente. Le correzioni vengono aggiunte direttamente nel documento, Claude aggiorna il progetto sulla base delle annotazioni e il ciclo può essere ripetuto fino a quando architettura, file interessati, vincoli e attività da svolgere risultano definiti. Prima dell’implementazione è possibile trasformare il piano in una lista dettagliata di attività e utilizzare lo stesso file per registrare l’avanzamento. L’agente mantiene così un riferimento esplicito e verificabile senza richiedere una nuova serie di istruzioni globali destinata a essere caricata in tutte le sessioni future.

Lo stesso principio si applica agli strumenti automatici di verifica. Una regola testuale che ricorda continuamente a Claude di rispettare un determinato requisito può essere meno affidabile di un test che fallisce quando quel requisito viene violato. Type checking, test automatici, linting, controlli CI e validazioni dell’output offrono all’agente un feedback direttamente verificabile e riducono la quantità di comportamento che deve essere governata esclusivamente attraverso prompt e documenti di istruzioni. Fornire a Claude la possibilità di verificare autonomamente il proprio lavoro è quindi complementare alla riduzione del contesto.

La configurazione di Claude Code non richiede perciò necessariamente un ecosistema crescente di istruzioni. CLAUDE.md rimane adatto alle poche informazioni che devono valere stabilmente per un progetto, le regole specifiche possono essere associate ai percorsi nei quali sono realmente necessarie, le skill possono contenere procedure richiamate soltanto quando servono e i documenti di ricerca e pianificazione possono conservare il contesto relativo alle singole attività. Parallelamente, memoria automatica, skill e istruzioni persistenti devono poter essere eliminate quando non hanno più una funzione.

Il risultato è un modello di utilizzo nel quale la qualità del contesto conta più della quantità delle istruzioni. Ogni nuova regola dovrebbe avere uno scopo identificabile, ogni skill dovrebbe corrispondere a un flusso realmente ripetuto e ogni elemento della memoria dovrebbe poter essere ricondotto a un’informazione ancora valida. Quando la configurazione diventa così estesa che lo sviluppatore non riesce più a ricordare il motivo delle singole istruzioni, il problema non è soltanto organizzativo: quelle stesse istruzioni stanno occupando contesto e possono rendere meno prevedibile il comportamento dell’agente che avrebbero dovuto controllare.

Questo articolo è stato redatto con il supporto di strumenti di intelligenza artificiale (AI)

Di Fantasy