Cancellato, misurato, una regola rotta
Cancellare un CLAUDE.md significa rimuovere il file di istruzioni che Claude Code legge all'inizio di ogni conversazione. Boris Cherny, il creatore di Claude Code, ha detto sul palco di cancellarlo ogni sei mesi. Ventidue video lo hanno ripetuto in sette settimane. Nessuno ha aperto un repository.
Questo articolo fa quello che i video non hanno fatto: prende un'app vera con un CLAUDE.md di 177 righe, tre skill, quattro comandi e un hook, esegue cinque task quotidiani con il file e senza, e conta. Quarantaquattro run dopo, esattamente una regola si è rotta. Il file è costato token su ogni task, mai la stessa quantità, e una delle sue righe nessuno riusciva a seguirla.
La clip, testuale, e le due frasi che non sono sue
La clip viene dal talk di Boris Cherny alla YC Startup School, registrato il giorno dopo l'uscita di Opus 5. Le sue parole: ogni sei mesi, cancella il tuo CLAUDE.md, cancella le tue skill, cancella i tuoi hook. Guarda cosa fa il modello, potrebbe sorprenderti. Per Opus 5, dice, Anthropic consiglia davvero di provarlo: il modello potrebbe non aver più bisogno di tutte quelle istruzioni.
Trenta secondi prima arriva l'avvertimento che nessuno cita. Anthropic non cancella l'intera code base. Ne cancella molta, e lo chiama ablation. La trascrizione scritta riporta oggi quella frase per intero. L'ottanta percento del system prompt di Claude Code è andato così: cancellare tutto, riportarlo indietro riga per riga, misurare ogni riga.
Due frasi che i video di reazione gli mettono in bocca non sono nel talk. "Contesto, obiettivi e una definizione di completamento" non compare da nessuna parte; il più vicino che dice è task, guardrail, criteri di uscita. "Sessantaquattro agenti che riscrivono Bun" non è nemmeno il suo numero: è di Jarred Sumner, nel post su Bun. Cherny parla di undici giorni e, quando gli chiedono un conteggio, indovina migliaia.
Ventidue video in sette settimane hanno citato la clip. Nessuno ha eseguito il test. Quindi questo fa ciò che lui ha davvero descritto: cancellare, riportare indietro un pezzo alla volta, misurare.
Lo strumento: ablation, non cancellazione
Un'ablation rimuove un pezzo alla volta di una configurazione e ne misura l'effetto, invece di cancellare tutto e indovinare. Il CLAUDE.md viene letto all'inizio di ogni conversazione e di nuovo a ogni turno; le skill si caricano solo quando vengono invocate. Questa differenza è ciò che è stato misurato.
Anthropic fornisce l'interruttore per cancellarlo: un semplice flag, la stessa variabile che Cherny nomina sul palco. Il repository è un'app vera, mia: 177 righe di istruzioni, tre skill, quattro comandi e un hook che scatta a ogni ricerca.
| Dimensione | Valore |
|---|---|
| Task quotidiani | 5 (nuovo componente, modifica, refactor, cambio dello store, domanda di architettura) |
| Configurazioni | 5 (completa, senza file, senza skill, senza hook, niente) |
| Modello | uno, fissato |
| Ambiente | cartella di configurazione vuota, clone nuovo prima di ogni run |
| Run | 44 |
| Costo | $39 |
Ogni run è stato valutato allo stesso modo, sullo stesso clone, da uno script anziché a mano. Cosa conta come rotto: le regole del repository stesso (import, tipi, design token, traduzioni) più typecheck e lint.
L'unico strumento costruito per questo tipo di ablation, Caliper, ablata skill e server MCP ma non tocca mai il file; lo scambio del CLAUDE.md è stato fatto a mano. I limiti, dichiarati una volta: un repository, un modello, due run per cella, nessuna trascrizione. Il primo risultato ha dato il tono: il task di refactor è tornato identico, sessantaquattro centesimi con il file e sessantatré senza.
Cosa si è rotto: una regola, sui file nuovi
La regola che si è rotta è una regola di internazionalizzazione, nelle parole stesse del file: aggiungi sempre sia l'inglese sia il francese, non hardcodare mai una stringa che l'utente vede. Nel task del nuovo componente, con il file, tutte e quattro le run hanno scritto il file di traduzione. Senza, tre run su quattro hanno hardcodato il titolo. Stesso task, stesso repository, stesso modello, stesso prompt.
| Nuovo componente | Ha scritto il file di traduzione |
|---|---|
| Con CLAUDE.md | 4 su 4 |
| Senza CLAUDE.md | 1 su 4 |
Il task di modifica racconta l'altra metà. Ogni configurazione l'ha eseguito correttamente, anche senza niente, perché i vicini lo insegnano: ogni componente accanto a quello modificato ha già un file di traduzione. Tutto il resto ha retto in tutte le quarantaquattro run: l'alias di import, type invece di interface, i design token, il pattern dello store. Il codice mostra queste cose, il file le ripete.
Uno studio di ETH Zurich ha misurato la stessa cosa su 138 issue reali. La sua conclusione: i context file non migliorano il successo e costano circa il venti percento in più, e il modello segue davvero le istruzioni. Un'avvertenza: una run senza il file ha comunque scritto il file di traduzione. La regola non è impossibile senza il file, è inaffidabile. Una regola si è rotta, quella che il codice non riusciva a insegnare. E la run che ha saltato quel lavoro è stata anche la più economica.
Quanto è costato il file, task per task
Il costo in token di un CLAUDE.md è la differenza di token letti tra una run con il file e la stessa run senza.
| Task | Meno token letti senza il file |
|---|---|
| Nuovo componente | 61% |
| Modifica | 15% |
| Refactor | 5% |
| Cambio dello store | 4% |
| Domanda di architettura | 14% |
| Sulle dieci run | 32% di token, 22% di denaro |
Trentadue percento è il numero che ogni video metterebbe nel titolo, ed è quello sbagliato. Il risparmio più grande è la run che non ha scritto il file di traduzione: più economica perché ha fatto meno. Dove l'output era identico, il file è costato dal quattro al quattordici percento. Questo è il suo prezzo reale, e il venti percento dello studio sta esattamente tra questi due numeri.
Il meccanismo pesa circa 1.800 token, letti di nuovo a ogni turno. Skill, hook e knowledge graph non hanno prodotto nulla di misurabile, presenti o assenti. Il rumore è più grande della maggior parte di questo: lo stesso task con lo stesso file è costato $2,11 in una run e $1,33 nell'altra. Due run hanno toccato il limite di turni, una con il file e una senza. Quindi il file costa un po' ovunque e si guadagna il suo posto una volta, a meno che non menta anche.
Le righe che mentivano
Una riga che mente è un'istruzione che il modello non può seguire o che non cambia nulla. La riga anticipata all'inizio: importare il tema dall'alias design-tokens. L'alias non esiste: la configurazione TypeScript mappa un solo prefisso, e la cartella dei token non ha alcun file theme. Ogni run, con il file o senza, ha fatto quello che fanno i vicini, la stessa riga di import quarantaquattro volte.
Il file ha ottantadue righe di panoramica sull'architettura. Stessa domanda, sei risposte: tutte e sei hanno trovato gli stessi nove file, dal backend allo schermo, nello stesso ordine, con la panoramica e senza. Un blocco punta a un knowledge graph che il clone non ha; con il graph presente, la domanda è costata lo stesso.
| Misura | Valore |
|---|---|
| Regola di dimensione di Anthropic | sotto le 200 righe |
| Questo file | 177 righe |
| File mediano nel dataset reporails di 30k repository | 50 elementi, 12 direttive |
| Righe direttive in questo file | 24 su 177 |
La posizione decide quale delle due regole in conflitto vince, e il modello non lo dice mai, circa novanta punti nel test di un fornitore. La panoramica potrebbe aiutare un task non eseguito qui: un solo probe, una sola risposta. Tre tipi di righe, dunque: quella che si è guadagnata il posto, quelle che il codice insegna, quelle che mentono.
Tieni, sposta, cancella: la lista breve
Tre pile, e la misura dietro ciascuna.
| Pila | Cosa ci va | Misura |
|---|---|---|
| Tieni | La regola che il codice non può mostrare | 6 righe che hanno salvato 4 run |
| Sposta | La panoramica sull'architettura e i comandi | 107 righe senza guadagno misurato |
| Cancella | Le righe che mentono, e le righe che l'albero già mostra | 44 run identiche |
Tieni ciò su cui il modello ha sbagliato due volte: è lo stesso criterio di Anthropic per il file. Sposta la panoramica e i comandi in un albero di file caricati quando servono; il post di luglio di Anthropic chiama il repository centrale un mito. Gli hook restano: un gate non scade quando il modello migliora. Taglia la prosa che ha superato, tieni il gate.
Il file dopo: circa settanta righe, più le sei che se lo sono guadagnato. È il metodo di Cherny, letto per intero: cancella, riportalo indietro riga per riga, misura. Un repository, un modello, due run per cella; le tue pile saranno diverse, il metodo no. Cancellare è costato una regola e ha risparmiato poco. Trovare le righe che mentivano è stata la vittoria.
AIDive