2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.
4 4
5# Best practices for Claude Code5# Best practice per Claude Code
6 6
7> Suggerimenti e modelli per ottenere il massimo da Claude Code, dalla configurazione dell'ambiente al ridimensionamento tra sessioni parallele.7> Ottieni di più da Claude Code: di' a Claude ciò che non può vedere, dagli un controllo da eseguire e applica le regole che non ammettono eccezioni.
8 8
9Claude Code è un ambiente di codifica agenziale. A differenza di un chatbot che risponde alle domande e aspetta, Claude Code può leggere i vostri file, eseguire comandi, apportare modifiche e lavorare autonomamente attraverso i problemi mentre voi guardate, reindirizzate o vi allontanate completamente.9Claude Code è progettato in modo che, nella maggior parte dei casi, il tuo primo prompt semplice in una sessione nuova faccia già la cosa giusta, senza alcuna configurazione da parte tua.
10 10
11Questo cambia il modo in cui lavorate. Invece di scrivere il codice voi stessi e chiedere a Claude di rivederlo, descrivete quello che volete e Claude capisce come costruirlo. Claude esplora, pianifica e implementa.11Ad esempio:
12 12
13Ma questa autonomia comporta comunque una curva di apprendimento. Claude lavora all'interno di determinati vincoli che dovete comprendere.13* Per consentire ai comandi di essere eseguiti in sicurezza senza che tu debba approvarli uno per uno, le nuove sessioni di terminale e VS Code si avviano in [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode), in cui un classificatore esamina qualsiasi azione rischiosa prima che venga eseguita.
14* Per mantenere concentrata la tua conversazione principale mentre il lavoro indipendente procede in parallelo, Claude delega ai subagent e ti interpella solo quando è necessario.
15* Per far proseguire una sessione lunga senza che tu debba gestirla, la conversazione viene compattata automaticamente prima che la finestra di contesto si riempia.
14 16
15Questa guida copre i modelli che si sono dimostrati efficaci nei team interni di Anthropic e per gli ingegneri che utilizzano Claude Code in vari codebase, linguaggi e ambienti. Per sapere come funziona il ciclo agenziale, consultate [How Claude Code works](https://code.claude.com/docs/it/how-claude-code-works.md).17Questa pagina spiega cosa fare quando le impostazioni predefinite non bastano. Di solito succede quando il tuo progetto ha conoscenze, regole o vincoli che Claude non può vedere dal solo codice:
16 18
17***19* Un processo di deploy che esiste solo nella testa di qualcuno
20* Un file che non deve mai essere letto
21* Un controllo che deve passare prima che qualcosa possa considerarsi completato
22* Un budget da non superare
18 23
19La maggior parte delle best practice si basa su un vincolo: la finestra di contesto di Claude si riempie rapidamente e le prestazioni si degradano man mano che si riempie.24Nessuna impostazione predefinita può conoscere queste cose sul tuo progetto, quindi è qui che un po' di configurazione da parte tua ripaga.
20 25
21La finestra di contesto di Claude contiene l'intera conversazione, inclusi ogni messaggio, ogni file che Claude legge e ogni output di comando. Tuttavia, può riempirsi rapidamente. Una singola sessione di debug o esplorazione del codebase potrebbe generare e consumare decine di migliaia di token.26Quando una sessione non va come ti aspettavi, quasi sempre il motivo è uno di questi:
22 27
23Questo è importante perché le prestazioni dell'LLM si degradano man mano che il contesto si riempie. Quando la finestra di contesto sta per riempirsi, Claude potrebbe iniziare a "dimenticare" le istruzioni precedenti o fare più errori. La finestra di contesto è la risorsa più importante da gestire. Per vedere come una sessione si riempie nella pratica, [guardate una procedura dettagliata interattiva](https://code.claude.com/docs/it/context-window.md) di quello che si carica all'avvio e quanto costa ogni lettura di file. Monitorate continuamente l'utilizzo del contesto con una [custom status line](https://code.claude.com/docs/it/statusline.md) e consultate [Reduce token usage](https://code.claude.com/docs/it/costs.md#reduce-token-usage) per strategie su come ridurre l'utilizzo dei token.28* Claude ha creato qualcosa di diverso da quello che avevi in mente, oppure deve riscoprire lo stesso fatto all'inizio di ogni sessione. Gli mancano informazioni che non può ottenere leggendo il repository. Consulta [Di' a Claude ciò che non può vedere](#tell-claude-what-it-cant-see).
29* Claude ha detto di aver finito ma non era proprio così, di solito perché non aveva modo di verificare il proprio lavoro. Consulta [Dai a Claude un controllo da eseguire](#give-claude-a-check-to-run).
30* Claude ha fatto qualcosa che non deve mai succedere in questo repository, oppure ha saltato un passaggio che deve sempre avvenire. Un prompt da solo non può garantire nessuna delle due cose. Consulta [Applica le regole che non ammettono eccezioni](#enforce-the-rules-that-cant-have-exceptions).
31* Claude ha fatto la cosa giusta, ma ci ha messo più tempo, token o richieste di permesso di quanto valesse l'attività. Consulta [Modifica un'impostazione predefinita](#change-a-default).
24 32
25***33[Lascia che Claude lavori senza di te](#let-claude-run-without-you) applica gli stessi quattro punti alle esecuzioni senza supervisione, e [Cosa puoi smettere di fare](#what-you-can-stop-doing) elenca i consigli che i modelli attuali hanno reso superflui.
26 34
27## Dai a Claude un modo per verificare il suo lavoro35> [!NOTE]
28
29> [!TIP]
30>36>
31> Dai a Claude un controllo che può eseguire: test, una build, uno screenshot da confrontare. È la differenza tra una sessione che guardi e una da cui ti allontani.37> La configurazione per un intero team si trova in una pagina separata: [Configura Claude Code per la tua organizzazione](https://code.claude.com/docs/it/admin-setup.md).
32 38
33Claude si ferma quando il lavoro sembra completato. Senza un controllo che possa eseguire, "sembra completato" è l'unico segnale disponibile, e tu diventi il ciclo di verifica: ogni errore aspetta che tu lo noti. Dai a Claude qualcosa che produca un risultato positivo o negativo, e il ciclo si chiude da solo. Claude esegue il lavoro, esegue il controllo, legge il risultato e itera finché il controllo non passa.39## Istruzioni deterministiche e non deterministiche
34 40
35Il controllo è qualsiasi cosa che restituisca un segnale che Claude possa leggere nella conversazione: una suite di test, un codice di uscita della build, un linter, uno script che confronta l'output con un fixture, o uno [screenshot del browser](https://code.claude.com/docs/it/chrome.md) confrontato con un design. Esegui [`/verify`](https://code.claude.com/docs/it/skills#run-and-verify-your-app) tu stesso dopo che il controllo di Claude passa per confermare la modifica rispetto all'app in esecuzione.41Ogni istruzione che dai a Claude Code appartiene a una di queste categorie:
36 42
37| Strategia | Prima | Dopo |431. Non deterministica: scrivi tu l'istruzione e Claude (il modello) la legge. Può essere il tuo prompt, `CLAUDE.md` o una skill. Il modello decide poi cosa fare con queste informazioni. Di solito segue i tuoi comandi, e i modelli attuali sono bravi a comprendere le tue intenzioni senza molto contesto, ma non c'è alcuna *garanzia* che seguirà le tue istruzioni. Può comunque decidere di non fare certe cose, o di farne altre.
38| - | - | - |442. Deterministica: configuri tu l'istruzione e Claude Code (l'harness) *deve* eseguirla. Può essere un hook, una regola deny o un'impostazione gestita. Claude Code la applica ogni volta, indipendentemente da ciò che il modello ha deciso di fare.
39| **Fornisci criteri di verifica** | *"implementa una funzione che convalida gli indirizzi email"* | *"scrivi una funzione validateEmail. esempi di casi di test: [user@example.com](mailto:user@example.com) è vero, invalid è falso, [user@.com](mailto:user@.com) è falso. esegui i test dopo l'implementazione"* |
40| **Verifica i cambiamenti dell'interfaccia utente visivamente** | *"rendi il dashboard più bello"* | *"\[incolla screenshot] implementa questo design. fai uno screenshot del risultato e confrontalo con l'originale. elenca le differenze e correggile"* |
41| **Affronta le cause radice, non i sintomi** | *"la build sta fallendo"* | *"la build fallisce con questo errore: \[incolla errore]. correggilo e verifica che la build abbia successo. affronta la causa radice, non sopprimere l'errore"* |
42 45
43Una volta che il controllo esiste, decidi quanto rigidamente deve bloccare l'arresto:46La maggior parte degli elementi di Claude Code esiste in entrambe le forme:
44 47
45* **In un prompt**: chiedi a Claude di eseguire il controllo e iterare nello stesso messaggio, come nella tabella sopra.48| | Non deterministico (decide Claude) | Deterministico (lo impone Claude Code) |
46* **In una sessione**: imposta il controllo come condizione [`/goal`](https://code.claude.com/docs/it/goal). Un valutatore separato lo ri-controlla dopo ogni turno e Claude continua a lavorare finché l'obiettivo non si risolve. Se Claude si blocca, Claude Code alla fine arresta l'esecuzione con l'obiettivo ancora impostato — vedi [come funziona la valutazione di /goal](https://code.claude.com/docs/it/goal.md#how-evaluation-works).49| :- | :- | :- |
47* **Come gate deterministico**: un [Stop hook](https://code.claude.com/docs/it/hooks.md#stop) esegue il tuo controllo come script e blocca il turno dall'terminare finché non passa. [Stop input](https://code.claude.com/docs/it/hooks.md#stop-input) copre il limite sui blocchi consecutivi.50| Cosa fare | Il tuo prompt, `CLAUDE.md`, le skill che Claude avvia da sé | Gli hook, e le skill che solo tu puoi avviare |
48* **Da un secondo parere**: un [verification subagent](https://code.claude.com/docs/it/sub-agents.md) o un [dynamic workflow](https://code.claude.com/docs/it/workflows.md) che controlla i suoi stessi risultati ha un modello fresco che tenta di confutare il risultato, quindi l'agente che esegue il lavoro non è quello che lo valuta.51| Cosa può toccare | Il classificatore della modalità auto | Regole deny, la sandbox in [modalità rigorosa](https://code.claude.com/docs/it/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), impostazioni gestite |
52| Quando ha finito | Una richiesta di prove, `/goal`, `/code-review` | Test, controllo dei tipi, un hook `Stop`, CI |
53| Quanto spende | Livello di sforzo, il ritmo di Claude | `--max-turns` o [`--max-budget-usd`](https://code.claude.com/docs/it/cli-reference) con `-p`, un [limite di spesa](https://code.claude.com/docs/it/costs.md) che hai impostato |
54| Chi ha l'ultima parola | Il riepilogo di Claude su ciò che ha fatto | Protezione del branch, una persona che approva il merge |
49 55
50Ogni passaggio scambia la configurazione per l'attenzione. La versione con prompt funziona su qualsiasi attività oggi. Le versioni `/goal` e Stop hook sono quelle che permettono a un'esecuzione incustodita di terminare correttamente senza di te.56Nella maggior parte dei casi, vuoi che sia Claude a decidere. Quasi ogni linea guida ha eccezioni, e i modelli attuali sono bravi a leggere il codice che hanno davanti e a valutare se una linea guida si adatta alla situazione. Con il codice reale davanti, Claude di solito è in una posizione migliore per prendere quella decisione rispetto a una regola che hai scritto in anticipo.
51 57
52Fai mostrare a Claude le prove piuttosto che asserire il successo: l'output del test, il comando che ha eseguito e cosa ha restituito, o uno screenshot del risultato. Rivedere le prove è più veloce che ri-eseguire la verifica tu stesso, e funziona per le sessioni che non stavi guardando.58Il tipo deterministico serve quando vuoi assicurarti che certe cose accadano *sempre* (o non accadano mai), indipendentemente da ciò che decide il modello. Non deve trattarsi di nulla di drammatico. La modalità auto [blocca già le cose drammatiche](https://code.claude.com/docs/it/permission-modes.md#what-the-classifier-blocks-by-default), come un deploy in produzione o un force push sul lavoro di qualcun altro. Di solito si tratta di qualcosa di specifico del *tuo* progetto, e può essere di nicchia quanto vuoi:
53 59
54***60* Non modificare mai il client generato in `src/gen/`
61* Esegui sempre lo script dell'intestazione di licenza dopo aver creato un file
55 62
56## Esplorate prima, poi pianificate, poi codificate63Avresti potuto scrivere ciascuna di queste come una riga in `CLAUDE.md` o nel tuo prompt, e Claude la seguirebbe quasi sempre. Ma per quanto tu la formuli con decisione, se Claude segua quella riga in un dato turno resta comunque una sua scelta.
57 64
58> [!TIP]65> [!TIP]
59>66>
60> Separate la ricerca e la pianificazione dall'implementazione per evitare di risolvere il problema sbagliato.67> Se continui ad aggiungere enfasi a una riga di `CLAUDE.md` e Claude la ignora comunque, è segno che quella riga va messa in un hook. Vale anche il contrario: se hai hook per cose che sono solo preferenze, eliminali e lascia decidere Claude.
61 68
62Lasciare che Claude salti direttamente alla codifica può produrre codice che risolve il problema sbagliato. Utilizzate [Plan Mode](https://code.claude.com/docs/it/permission-modes.md#analyze-before-you-edit-with-plan-mode) per separare l'esplorazione dall'esecuzione.69## Di' a Claude ciò che non può vedere
63 70
64Il flusso di lavoro consigliato ha quattro fasi:71> [!TIP]
72>
73> Scrivi solo ciò che Claude non può trovare leggendo il repository, o ciò che altrimenti passerebbe tempo a riscoprire in ogni sessione.
65 74
66**1. Esplora**75Claude inizia ogni attività leggendo il tuo codice, e i modelli attuali sono *molto* bravi in questo. Trovano la struttura dei file, le convenzioni, il framework di test e il modo in cui sono costruiti i componenti esistenti, di solito più velocemente di quanto potresti spiegarli tu. Questo significa che Claude conosce già la maggior parte di ciò che potresti essere tentato di scrivergli.
67 76
68Entra in plan mode premendo `Shift+Tab` finché la barra di stato non mostra `⏸ plan mode on`, oppure avvia la sessione con `claude --permission-mode plan`. Claude legge i file e risponde alle domande senza apportare modifiche.77Quello che non può trovare sono le informazioni che non sono mai state nel repository:
69 78
70```txt title="claude (plan mode)" wrap theme={null}79* Una decisione presa dal tuo team in una riunione
71read /src/auth and understand how we handle sessions and login.80* Un processo di deploy che esiste solo nella testa di una persona
72also look at how we manage environment variables for secrets.81* La variabile d'ambiente di cui hanno bisogno i tuoi test di integrazione
73```
74 82
75**2. Pianifica**83Ci sono anche informazioni che *sono* nel repository ma richiedono qualche minuto di ricerca per essere trovate, e Claude deve rifare quella ricerca all'inizio di ogni sessione.
76 84
77Chiedi a Claude di creare un piano di implementazione dettagliato.85Un buon test prima di scrivere qualcosa per Claude:
78 86
79```txt title="claude (plan mode)" wrap theme={null}871. Potrebbe trovarlo leggendo il codice?
80I want to add Google OAuth. What files need to change?882. Andrebbe davvero a cercarlo?
81What's the session flow? Create a plan.
82```
83 89
84Premi `Ctrl+G` per aprire il piano nel vostro editor di testo per la modifica diretta prima che Claude proceda.90Se la risposta è sì a entrambe, lascialo fuori.
85 91
86**3. Implementa**92### Scrivi un prompt specifico
87 93
88Esci da plan mode approvando il piano o premendo `Shift+Tab`, quindi lascia che Claude codifichi, verificando rispetto al suo piano.94Un prompt specifico aiuta per lo stesso motivo, perché fornisce a Claude informazioni che non ha già. Se indichi il file, descrivi il sintomo e dici fin dall'inizio cosa significa "risolto", di solito ti risparmi un giro di correzioni in seguito.
89 95
90```txt title="claude" wrap theme={null}96Lo stesso vale per una preferenza tra due approcci ragionevoli: Claude non può ricavarla dal codice, quindi se ti interessa quale dei due sceglie, dillo subito.
91implement the OAuth flow from your plan. write tests for the
92callback handler, run the test suite and fix any failures.
93```
94 97
95**4. Commit**98| Invece di | Prova |
99| :- | :- |
100| *"correggi il bug del login"* | *"gli utenti segnalano che il login fallisce dopo il timeout della sessione. guarda l'aggiornamento del token in src/auth/, scrivi un test che fallisce e riproduce il problema, poi correggilo"* |
101| *"aggiungi un widget calendario"* | *"segui il pattern di HotDogWidget.php e crea un widget calendario che permetta di scegliere un mese e di scorrere tra gli anni. nessuna nuova libreria"* |
96 102
97Chiedi a Claude di eseguire il commit con un messaggio descrittivo e creare una PR.103Se hai già ciò di cui Claude ha bisogno, passaglielo invece di descriverlo:
98 104
99```txt title="claude" wrap theme={null}105* Un file: digita `@` e il percorso per [includere il contenuto del file](https://code.claude.com/docs/it/common-workflows.md#reference-files-and-directories) nel tuo messaggio.
100commit with a descriptive message and open a PR106* Un'immagine: incolla nel prompt lo screenshot del design o dell'errore.
101```107* Output di un comando: invialo tramite pipe dalla tua shell con `cat error.log | claude -p "what's going on here"`.
102 108
103Plan Mode è utile, ma aggiunge anche overhead.109Frasi come `think step by step` o `be thorough` sono normale testo del prompt, non parole chiave. Il controllo principale su quanto Claude ragiona è il [livello di sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level), trattato in [Modifica il modello e lo sforzo](#change-the-model-and-effort). Formulazioni di questo tipo possono comunque spingere Claude entro la sua impostazione di sforzo, ma non gliela fanno superare.
104 110
105Per attività in cui l'ambito è chiaro e la correzione è piccola (come correggere un errore di battitura, aggiungere una riga di log o rinominare una variabile) chiedete a Claude di farlo direttamente.111Una frase che aiuta ancora è `be ambitious`. Claude tende a interpretare una richiesta in modo conservativo e a creare la cosa più piccola che la soddisfi, dato che non può vedere quanto speravi di ottenere. Quando vuoi la versione più completa, con i casi limite gestiti e il naturale seguito incluso, dillo:
106 112
107La pianificazione è più utile quando siete incerti sull'approccio, quando il cambiamento modifica più file o quando non siete familiari con il codice da modificare. Se potete descrivere il diff in una frase, saltate il piano.113```text theme={null}
114build the settings page from the mockup. be ambitious: empty and error states, the save flow wired up, keyboard navigation, not just the layout
115```
108 116
109***117Questo significa dire a Claude qual è la portata del lavoro, cosa che sai solo tu, piuttosto che quanto ragionare.
110 118
111## Fornite contesto specifico nei vostri prompt119E quando stai esplorando anziché correggere qualcosa di specifico, un prompt vago come `what would you improve in this file?` va benissimo. Dovrai correggere un po' di più strada facendo, ed è questo il compromesso.
112 120
113> [!TIP]121### Fai prima brainstorming con Claude
114>
115> Più precise sono le vostre istruzioni, meno correzioni vi serviranno.
116 122
117Claude può dedurre l'intento, ma non può leggere la mente. Fate riferimento a file specifici, menzionate i vincoli e indicate i modelli di esempio.123Quando non sai ancora esattamente cosa vuoi, non devi chiarire tutto prima di scrivere il prompt. Chiedi invece a Claude di intervistarti:
118 124
119| Strategia | Prima | Dopo |125```text theme={null}
120| - | - | - |126I want to add rate limiting to the public API but haven't thought it through yet. Interview me until you could write the spec, then write it to SPEC.md.
121| **Definire l'ambito del compito.** Specificate quale file, quale scenario e le preferenze di test. | *"aggiungere test per foo.py"* | *"scrivere un test per foo.py che copra il caso limite in cui l'utente è disconnesso. evitare i mock."* |127```
122| **Puntare alle fonti.** Indirizzate Claude alla fonte che può rispondere a una domanda. | *"perché ExecutionFactory ha un'API così strana?"* | *"guardare la cronologia git di ExecutionFactory e riassumere come la sua API è arrivata a essere così"* |
123| **Fare riferimento ai modelli esistenti.** Puntate Claude ai modelli nel vostro codebase. | *"aggiungere un widget calendario"* | *"guardare come i widget esistenti sono implementati nella home page per comprendere i modelli. HotDogWidget.php è un buon esempio. seguire il modello per implementare un nuovo widget calendario che consenta all'utente di selezionare un mese e paginare avanti/indietro per scegliere un anno. costruire da zero senza librerie diverse da quelle già utilizzate nel codebase."* |
124| **Descrivere il sintomo.** Fornite il sintomo, la probabile posizione e come appare "risolto". | *"correggere il bug di login"* | *"gli utenti segnalano che il login fallisce dopo il timeout della sessione. controllare il flusso di autenticazione in src/auth/, in particolare l'aggiornamento del token. scrivere un test fallito che riproduce il problema, quindi correggerlo"* |
125 128
126I prompt vaghi possono essere utili quando state esplorando e potete permettervi di correggere il corso. Un prompt come `"cosa migliorereste in questo file?"` può evidenziare cose a cui non avreste pensato di chiedere.129Claude torna con domande a scelta multipla sugli aspetti che non hai ancora definito: limiti per utente o per chiave, cosa succede alle richieste oltre il limite, cosa è fuori ambito. Continua a chiedere finché le risposte non formano una specifica.
127 130
128### Fornire contenuti ricchi131Una volta che `SPEC.md` esiste, avvia una nuova sessione per svilupparla, in modo che il lavoro parta con un contesto pulito e una definizione scritta di "completato". È anche il file a cui indirizzerai il revisore in seguito, in [Dai a Claude un controllo da eseguire](#give-claude-a-check-to-run).
129 132
130> [!TIP]133### Mantieni CLAUDE.md breve
131>
132> Utilizzate `@` per fare riferimento ai file, incollate screenshot/immagini o inviate i dati direttamente.
133 134
134Potete fornire dati ricchi a Claude in diversi modi:135Claude Code carica [`CLAUDE.md`](https://code.claude.com/docs/it/memory) in ogni sessione, il che significa che ogni riga al suo interno sottrae un po' dell'attenzione di Claude in *ogni* attività, che sia pertinente o meno. Ecco perché il file funziona meglio quando contiene solo ciò che Claude non potrebbe ricavare dal codice stesso:
135 136
136* **Fare riferimento ai file con `@`** invece di descrivere dove vive il codice. Claude legge il file prima di rispondere.137* Come verificare il lavoro in questo repository: i comandi esatti per test, controllo dei tipi e lint, e come eseguire un singolo file di test
137* **Incollare le immagini direttamente**. Copiate/incollate o trascinate le immagini nel prompt.138* Punti in cui il codice è fuorviante: un vecchio pattern presente ovunque che il nuovo codice non deve copiare, o una directory che sembra inutilizzata ma non lo è
138* **Fornire URL** per la documentazione e i riferimenti API. Usa `/permissions` per aggiungere all'allowlist i domini utilizzati di frequente.139* Decisioni che non sono nel repository: quale helper per gli errori ha scelto il team, come funzionano i deploy, cosa richiede una revisione delle migrazioni
139* **Inviare i dati tramite pipe** eseguendo `cat error.log | claude -p "explain this error"` per inviare il contenuto del file direttamente.140* Qualsiasi cosa tu abbia già dovuto correggere due volte
140* **Lasciare che Claude recuperi quello di cui ha bisogno**. Dite a Claude di estrarre il contesto stesso utilizzando comandi Bash, strumenti MCP o leggendo i file.
141 141
142***142Un `CLAUDE.md` che supera questo test resta breve:
143 143
144## Configurate il vostro ambiente144```markdown CLAUDE.md theme={null}
145# Commands
146- Install: pnpm install
147- Run one test file: pnpm vitest run path/to/file.test.ts
148- Typecheck: pnpm tsc --noEmit
145 149
146Alcuni passaggi di configurazione rendono Claude Code significativamente più efficace in tutte le vostre sessioni. Per una panoramica completa delle funzionalità dell'estensione e di quando utilizzare ciascuna, consultate [Extend Claude Code](https://code.claude.com/docs/it/features-overview.md).150# Conventions
151- Use the error helpers in src/lib/errors.ts, never throw raw strings
152- src/legacy/ is still live but don't copy its patterns into new code
147 153
148### Scrivete un CLAUDE.md efficace154# Gotchas
155- Integration tests need DATABASE_URL set, see .env.example
156```
149 157
150> [!TIP]158In una sessione, esegui `/context` per confermare che Claude ha caricato il file.
151>
152> Eseguite `/init` per generare un file CLAUDE.md iniziale basato sulla struttura del vostro progetto attuale, quindi affinate nel tempo.
153 159
154CLAUDE.md è un file speciale che Claude legge all'inizio di ogni conversazione. Includete comandi Bash, stile del codice e regole del flusso di lavoro. Questo fornisce a Claude un contesto persistente che non può dedurre dal solo codice.160Nota che la riga del controllo dei tipi contiene solo il comando. Claude deve conoscere il comando per poter verificare il proprio lavoro man mano. Se vuoi anche che Claude Code *imponga* il superamento del controllo dei tipi prima che Claude finisca, quello è un compito per un [hook `Stop`](#enforce-the-check-with-a-stop-hook). Una riga come `Always typecheck before you finish` in questo file funziona la maggior parte delle volte, non sempre.
155 161
156Non esiste un formato obbligatorio per i file CLAUDE.md, ma manteneteli brevi e leggibili. Ad esempio:162Non devi scrivere il file da zero:
157 163
158```markdown CLAUDE.md theme={null}164* `/init` genera una versione iniziale a partire dal tuo codebase. Da lì il lavoro consiste soprattutto nel rimuovere righe. La [guida alla memoria](https://code.claude.com/docs/it/memory.md#write-effective-instructions) consiglia di restare sotto le 200.
159# Code style165* `/doctor` suggerisce tagli per tutto ciò che Claude può [già ricavare dal codice](https://code.claude.com/docs/it/memory.md#my-claude-md-is-too-large).
160- Use ES modules (import/export) syntax, not CommonJS (require)166* `/doctor prompt-audit` segnala le istruzioni scritte per modelli precedenti, che fanno riferimento a file che non esistono più o che [si contraddicono a vicenda](https://code.claude.com/docs/it/memory.md#audit-your-instruction-files).
161- Destructure imports when possible (eg. import { foo } from 'bar')
162 167
163# Workflow168Le tue preferenze personali vanno in `CLAUDE.local.md` invece che in `CLAUDE.md`, e aggiungi quel file a `.gitignore` in modo che resti fuori dal repository.
164- Be sure to typecheck when you're done making a series of code changes
165- Prefer running single tests, and not the whole test suite, for performance
166```
167 169
168Eseguite `/context` per confermare che Claude ha caricato il file. CLAUDE.md viene caricato ogni sessione, quindi includete solo le cose che si applicano ampiamente. Per la conoscenza del dominio o i flussi di lavoro che sono rilevanti solo a volte, utilizzate [skills](https://code.claude.com/docs/it/skills.md) invece. Claude li carica su richiesta senza gonfiare ogni conversazione.170> [!NOTE]
171>
172> Se Claude continua a ignorare una riga che *è* in `CLAUDE.md`, aggiungere IMPORTANT probabilmente non risolverà il problema. O il file è diventato così lungo che la riga si perde, oppure la riga è una regola che non ammette eccezioni, nel qual caso va messa in un [hook](#enforce-the-rules-that-cant-have-exceptions).
169 173
170Mantenetelo conciso. Per ogni riga, chiedetevi: *"Rimuovere questo causerebbe a Claude di fare errori?"* Se no, tagliatelo. I file CLAUDE.md gonfi causano a Claude di ignorare le vostre istruzioni effettive!174### Limita le regole a una parte del codebase
171 175
172| ✅ Includere | ❌ Escludere |176Se una regola conta solo in una parte del codebase, mettila in [`.claude/rules/`](https://code.claude.com/docs/it/memory#path-specific-rules) con un filtro `paths:` in modo che venga caricata solo quando Claude sta effettivamente lavorando lì. Ad esempio, questo `.claude/rules/api.md` viene caricato per i file TypeScript sotto `src/api/`:
173| - | - |
174| Comandi Bash che Claude non può indovinare | Qualsiasi cosa Claude possa capire leggendo il codice |
175| Regole di stile del codice che differiscono dai valori predefiniti | Convenzioni linguistiche standard che Claude già conosce |
176| Istruzioni di test e runner di test preferiti | Documentazione API dettagliata (collegare alla documentazione invece) |
177| Etichetta del repository (denominazione dei rami, convenzioni PR) | Informazioni che cambiano frequentemente |
178| Decisioni architettoniche specifiche del vostro progetto | Spiegazioni lunghe o tutorial |
179| Stranezze dell'ambiente di sviluppo (variabili env richieste) | Descrizioni file per file del codebase |
180| Insidie comuni o comportamenti non ovvi | Pratiche ovvie come "scrivi codice pulito" |
181 177
182Se Claude continua a fare qualcosa che non volete nonostante abbia una regola contro di essa, il file è probabilmente troppo lungo e la regola si sta perdendo. Se Claude vi fa domande che sono risposte in CLAUDE.md, la formulazione potrebbe essere ambigua. Trattate CLAUDE.md come codice: rivederlo quando le cose vanno male, potarlo regolarmente e testate i cambiamenti osservando se il comportamento di Claude effettivamente cambia. Per un CLAUDE.md controllato, eseguite [`/doctor`](https://code.claude.com/docs/it/commands#all-commands) e Claude propone tagli per il contenuto che può derivare dal codebase.178```markdown .claude/rules/api.md theme={null}
179---
180paths:
181 - "src/api/**/*.ts"
182---
183- Validate request bodies with the zod schemas in src/api/schemas/, don't hand-roll checks
184- Every new endpoint needs an entry in openapi.yaml, CI fails without it
185```
183 186
184Se Claude continua a saltare un'istruzione, aggiungete enfasi come "IMPORTANTE" a quella riga sola. Se enfatizzate molte righe, nessuna di esse si distingue. Controllate CLAUDE.md in git in modo che il vostro team possa contribuire. Il file aumenta di valore nel tempo.187### Inserisci le procedure del team nelle skill
185 188
186I file CLAUDE.md possono importare file aggiuntivi utilizzando la sintassi `@path/to/import`. Per le regole di importazione e dove i file CLAUDE.md possono trovarsi, consultate [CLAUDE.md files](https://code.claude.com/docs/it/memory.md#claude-md-files).189Un modello più capace sa di più sull'ingegneria, ma non sa come il *tuo* team esegue un rilascio, cosa dice il tuo runbook per gli incidenti o come vuoi che sia scritta la documentazione delle API. Questo tipo di conoscenza va in una [skill](https://code.claude.com/docs/it/skills.md): una procedura o un elemento di conoscenza del team salvato in `.claude/skills/<name>/SKILL.md`.
187 190
188### Configurate i permessi191Per questo genere di cose le skill pesano anche meno sul contesto rispetto a `CLAUDE.md`. Per una skill che Claude può avviare da solo, vede il nome e la descrizione in ogni sessione, ma [legge il file completo](https://code.claude.com/docs/it/skills.md#skill-content-lifecycle) solo quando l'attività lo richiede. Una lunga procedura di rilascio in una skill non pesa sulla correzione di un bug non correlato come farebbe in `CLAUDE.md`.
189 192
190> [!TIP]193> [!NOTE]
191>194>
192> Per ottenere meno prompt senza rinunciare al controllo, pre-approvate gli strumenti di cui vi fidate con `/permissions` e lasciate che i comandi in sandbox vengano eseguiti senza chiedere con `/sandbox`. Passate alla modalità Manual quando volete approvare voi stessi le modifiche e i comandi.195> La regola di `CLAUDE.md` vale anche per le skill: scrivi solo ciò che Claude non può trovare da solo.
193 196
194Con Claude Code v2.1.283 o successivo, la modalità auto è la [modalità di permesso iniziale integrata](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) per le sessioni di terminale interattivo e VS Code: un modello classificatore separato esamina la maggior parte delle azioni invece di voi e blocca solo quello che sembra rischioso, come l'escalation di ambito, l'infrastruttura sconosciuta o le azioni guidate da contenuti ostili. Nelle versioni precedenti, la modalità auto è la modalità di permesso iniziale integrata solo su piani Pro, Max e Team.197Per un workflow con effetti collaterali, come eseguire davvero quel rilascio, aggiungi `disable-model-invocation: true`. Claude allora [non può avviare la skill da solo](https://code.claude.com/docs/it/skills.md#control-who-invokes-a-skill), e questa viene eseguita solo quando digiti tu stesso `/release`. Salvata come `.claude/skills/release/SKILL.md`, potrebbe apparire così:
195 198
196In modalità Manual, Claude Code chiede prima di azioni che potrebbero modificare il vostro sistema: scritture di file, comandi Bash, strumenti MCP. Questo è sicuro ma tedioso. Dopo la decima approvazione state cliccando piuttosto che revisionando. Due strumenti tagliano queste interruzioni in modalità Manual e si applicano anche in modalità auto:199```markdown .claude/skills/release/SKILL.md theme={null}
200---
201name: release
202description: Cut a new release. Bumps the version, writes the changelog entry, tags it and pushes the tag so CI can publish.
203disable-model-invocation: true
204---
2051. Make sure you're on main with a clean tree. If not, stop and ask.
2062. Run `pnpm changeset version` and commit the result.
2073. Summarize the PRs merged since the last tag into CHANGELOG.md, one line each, user-facing changes only.
2084. Tag `v<new version>` and push the tag. CI publishes from there, never publish from your machine.
209```
197 210
198* **Whitelist di permessi**: consentire strumenti specifici che sapete essere sicuri, come `npm run lint` o `git commit`211### Collega gli strumenti di cui Claude ha bisogno
199* **Sandboxing**: abilitare l'isolamento a livello di sistema operativo che limita l'accesso al filesystem e alla rete, consentendo a Claude di lavorare più liberamente all'interno di confini definiti
200 212
201Leggete di più su [permission modes](https://code.claude.com/docs/it/permission-modes.md), [permission rules](https://code.claude.com/docs/it/permissions.md) e [sandboxing](https://code.claude.com/docs/it/sandboxing.md).213Alcune delle cose che Claude non può vedere si trovano del tutto in un altro sistema, come il tuo issue tracker o la tua dashboard degli errori. Se quel sistema ha una CLI, di solito è il modo più semplice per accedervi. Con `gh` installato e autenticato, ad esempio, Claude apre pull request e legge i commenti di revisione senza alcuna spiegazione da parte tua. Per una CLI che non ha mai visto, basta indirizzarlo a `--help`.
202 214
203### Utilizzate gli strumenti CLI215Per i sistemi senza CLI c'è [MCP](https://code.claude.com/docs/it/mcp.md). Aggiungi un server dalla tua shell:
204 216
205> [!TIP]217```bash theme={null}
206>218claude mcp add --transport http notion https://mcp.notion.com/mcp
207> Dite a Claude Code di utilizzare strumenti CLI come `gh`, `aws`, `gcloud` e `sentry-cli` quando interagite con servizi esterni.219```
220
221Il server compare quindi sotto `/mcp` all'interno di una sessione. I server connessi aggiungono i nomi dei propri strumenti e le proprie istruzioni al contesto anche quando non li stai usando, quindi conviene [disattivare quelli che non ti servono](https://code.claude.com/docs/it/mcp.md#disable-a-server-without-removing-it) da lì.
222
223E se lavori con un linguaggio tipizzato, un [plugin di code intelligence](https://code.claude.com/docs/it/plugins/code-intelligence.md) permette a Claude di saltare direttamente a una definizione invece di leggere molti file per trovarla.
208 224
209Gli strumenti CLI sono il modo più efficiente in termini di contesto per interagire con servizi esterni. Se utilizzate GitHub, installate la CLI `gh`. Claude sa come usarla per creare problemi, aprire pull request e leggere commenti. Senza `gh`, Claude può comunque utilizzare l'API GitHub, ma le richieste non autenticate spesso raggiungono i limiti di velocità.225## Dai a Claude un controllo da eseguire
210 226
211Claude è anche efficace nell'imparare strumenti CLI che non conosce già. Provate prompt come `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`227Claude si ferma quando il lavoro sembra completato. Se non ha nulla da eseguire che gli dica se il lavoro *è* effettivamente completato, "sembra completato" è l'unico segnale su cui può basarsi. In pratica questo fa di te la suite di test, e ogni errore resta lì finché non ti capita di notarlo.
212 228
213### Connettete i server MCP229Se gli dai qualcosa che restituisce un esito positivo o negativo, Claude può chiudere quel ciclo da solo. Apporta la modifica, esegue il controllo e, se qualcosa si è rotto, legge l'output e lo corregge prima di eseguire di nuovo il controllo.
214 230
215> [!TIP]231> [!TIP]
216>232>
217> Eseguite `claude mcp add` con un nome di server e un URL o comando per connettere strumenti esterni come Notion, Figma o il vostro database. Ad esempio: `claude mcp add --transport http notion https://mcp.notion.com/mcp`.233> Dai a Claude qualcosa che può eseguire e che restituisce un esito positivo o negativo. Una volta che lo ha, può andare avanti da solo e tu non devi stare a guardare.
218 234
219Con i [server MCP](https://code.claude.com/docs/it/mcp.md), potete chiedere a Claude di implementare funzionalità da tracker di problemi, interrogare database, analizzare dati di monitoraggio, integrare design da Figma e automatizzare flussi di lavoro.235Il controllo può essere quasi qualsiasi cosa, purché Claude possa leggerne il risultato:
220 236
221### Configurate gli hook237* Un file di test
238* Il codice di uscita di una build
239* Un linter
240* Uno script che confronta l'output con una fixture
241* Uno [screenshot del browser](https://code.claude.com/docs/it/chrome.md) accanto al mockup
222 242
223> [!TIP]243Se il tuo repository ha già uno di questi, la riga più utile in assoluto del tuo `CLAUDE.md` è il comando che lo esegue.
224>
225> Utilizzate gli hook per azioni che devono accadere ogni volta senza eccezioni.
226 244
227Gli [hook](https://code.claude.com/docs/it/hooks-guide.md) eseguono script automaticamente in punti specifici del flusso di lavoro di Claude. A differenza delle istruzioni CLAUDE.md che sono consultive, gli hook sono deterministici e garantiscono che l'azione accada.245Quanto rendere rigoroso il controllo dipende da te. Le opzioni vanno da Claude che decide da sé fino a Claude Code che lo impone:
228 246
229Claude può scrivere hook per voi. Provate prompt come *"Write a hook that runs eslint after every file edit"* o *"Write a hook that blocks writes to the migrations folder."* Modificate `.claude/settings.json` direttamente per configurare gli hook manualmente e eseguite `/hooks` per sfogliare quello che è configurato.247* Nel prompt: `run the auth tests after, and keep going until they pass`. Claude decide da sé quando è soddisfatto. Funziona con qualsiasi attività, oggi stesso, senza configurazione.
248* Come obiettivo: [`/goal all tests in tests/auth pass and lint is clean`](https://code.claude.com/docs/it/goal) imposta una condizione che un modello separato verifica rispetto alla conversazione dopo ogni turno, e Claude continua finché non è soddisfatta. Raramente ti serve in una sessione che segui tu stesso. Conta per le lunghe esecuzioni in background, in cui Claude a volte termina un turno con un riepilogo dei progressi mentre alcuni punti sono ancora aperti, e l'obiettivo lo rimanda al lavoro.
249* Come hook Stop: un [hook `Stop`](https://code.claude.com/docs/it/hooks#stop) esegue il tuo script ogni volta che Claude cerca di terminare il turno, e rimanda Claude al lavoro se lo script termina con codice di uscita 2. Questo viene imposto da Claude Code (l'harness), quindi il turno non termina finché il controllo dei tipi non passa o non viene raggiunto il [limite di blocchi](https://code.claude.com/docs/it/hooks.md#stop-input). C'è un [esempio più avanti](#enforce-the-check-with-a-stop-hook).
250* Da qualcuno che non ha scritto il codice: nel terminale, [`/code-review`](https://code.claude.com/docs/it/code-review-local) esamina il diff in un subagent nuovo che non ha mai visto la tua conversazione. Non è influenzato dal ragionamento che ha prodotto il codice.
230 251
231### Createte skill252Qualunque opzione usi, chiedi a Claude delle *prove*: il comando che ha eseguito e il suo output, oppure lo screenshot. "Tutti i test passano" da solo ti dice ben poco, e leggere l'output è più veloce che rieseguire il controllo tu stesso. Per una sessione che non stavi seguendo, è anche l'unica prova che hai.
232 253
233> [!TIP]254> [!TIP]
234>255>
235> Create file `SKILL.md` in `.claude/skills/` per fornire a Claude conoscenza del dominio e flussi di lavoro riutilizzabili.256> Una volta che Claude dice di aver finito, puoi anche eseguire [`/verify`](https://code.claude.com/docs/it/skills#run-and-verify-your-app) nella sessione, che fa sì che Claude compili ed esegua l'app e ne esamini il risultato. In questo modo si individuano i problemi che test e controlli dei tipi non rilevano.
236 257
237Le [skill](https://code.claude.com/docs/it/skills.md) estendono la conoscenza di Claude con informazioni specifiche del vostro progetto, team o dominio. Claude le applica automaticamente quando rilevanti, o potete invocarle direttamente con `/skill-name`.258### Revisiona rispetto alla tua specifica
238 259
239Create una skill aggiungendo una directory con un `SKILL.md` a `.claude/skills/`:260Se preferisci che la revisione controlli il lavoro rispetto al tuo piano anziché cercare bug in generale, scrivi tu stesso il prompt di revisione:
240 261
241```markdown .claude/skills/api-conventions/SKILL.md theme={null}262```text theme={null}
242name: api-conventions263use a subagent to review the rate limiter diff against SPEC.md, check every requirement is implemented and the listed edge cases have tests, report gaps that affect correctness and skip style
243description: REST API design conventions for our services
244# API Conventions
245- Use kebab-case for URL paths
246- Use camelCase for JSON properties
247- Always include pagination for list endpoints
248- Version APIs in the URL path (/v1/, /v2/)
249```264```
250 265
251Le skill possono anche definire flussi di lavoro ripetibili che invocate direttamente:266> [!NOTE]
252 267>
253```markdown .claude/skills/fix-issue/SKILL.md theme={null}268> Non eliminare la parte `skip style` di quel prompt. Un revisore a cui viene chiesto di trovare problemi troverà sempre *qualcosa*. Se correggi ogni segnalazione, finisci con livelli di astrazione in più e test per casi che non possono verificarsi.
254name: fix-issue269
255description: Fix a GitHub issue270### Imponi il controllo con un hook Stop
256disable-model-invocation: true271
257Analyze and fix the GitHub issue: $ARGUMENTS.272La versione con hook `Stop` della regola sul controllo dei tipi è composta da poche righe in `.claude/settings.json`. Il codice di uscita 2 è ciò che blocca l'arresto. Tutto ciò che il comando stampa su stderr torna a Claude come motivo per cui non può ancora finire, ed è per questo che l'output del compilatore viene reindirizzato lì:
258 273
2591. Use `gh issue view` to get the issue details274```json .claude/settings.json theme={null}
2602. Understand the problem described in the issue275{
2613. Search the codebase for relevant files276 "hooks": {
2624. Implement the necessary changes to fix the issue277 "Stop": [
2635. Write and run tests to verify the fix278 {
2646. Ensure code passes linting and type checking279 "hooks": [
2657. Create a descriptive commit message280 { "type": "command", "command": "pnpm tsc --noEmit 1>&2 || exit 2" }
2668. Push and create a PR281 ]
282 }
283 ]
284 }
285}
267```286```
268 287
269Eseguite `/fix-issue 1234` per invocarlo. Utilizzate `disable-model-invocation: true` per flussi di lavoro con effetti collaterali che volete attivare manualmente.288Per vederlo in azione, chiedi a Claude una modifica che rompa un tipo: invece di finire, riceve gli errori del compilatore e continua finché `tsc` non passa. Se l'hook blocca [otto arresti consecutivi](https://code.claude.com/docs/it/hooks.md#stop-input) senza chiamate agli strumenti nel mezzo, Claude Code scavalca il blocco successivo e termina il turno. Per alzare il limite, imposta [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](https://code.claude.com/docs/it/env-vars).
270 289
271### Create subagent personalizzati290## Applica le regole che non ammettono eccezioni
272 291
273> [!TIP]292> [!TIP]
274>293>
275> Definite assistenti specializzati in `.claude/agents/` che Claude può delegare per attività isolate.294> Se qualcosa deve accadere ogni volta, rendilo un hook, una regola deny o un'impostazione gestita. `CLAUDE.md` è per le linee guida, e Claude può decidere che una linea guida non si applica.
276 295
277I [subagent](https://code.claude.com/docs/it/sub-agents.md) vengono eseguiti nel loro contesto con il loro set di strumenti consentiti. Sono utili per attività che leggono molti file o necessitano di focus specializzato senza ingombrare la vostra conversazione principale.296Prendi tre regole che potresti avere oggi in `CLAUDE.md`: `Never read .env`, `Always run the formatter after editing`, `Don't touch the migrations folder`. Claude le seguirà quasi sempre. Per le poche in cui "quasi" non basta, spostale fuori da `CLAUDE.md` e inseriscile in una configurazione che Claude Code (l'harness) applica da sé. Da quel momento, il risultato non dipende da ciò che il modello ricorda o decide.
278 297
279```markdown .claude/agents/security-reviewer.md theme={null}298### Imponi i passaggi con gli hook
280name: security-reviewer299
281description: Reviews code for security vulnerabilities300Gli [hook](https://code.claude.com/docs/it/hooks-guide.md) eseguono qualcosa di tuo in punti fissi del ciclo di Claude: prima o dopo una chiamata a uno strumento, quando Claude cerca di fermarsi, quando inizia una sessione e così via. Quel qualcosa può essere:
282tools: Read, Grep, Glob, Bash301
283model: opus302* Un comando shell (il caso abituale)
284You are a senior security engineer. Review code for:303* Una richiesta POST a un endpoint HTTP
285- Injection vulnerabilities (SQL, XSS, command injection)304* Una chiamata a uno strumento su uno dei tuoi server MCP
286- Authentication and authorization flaws305* Un [hook `prompt` o `agent`](https://code.claude.com/docs/it/hooks#hook-handler-fields), che lascia decidere a un modello
287- Secrets or credentials in code306
288- Insecure data handling307Un hook `prompt` o `agent` chiede a *un altro modello* di decidere, quindi non è deterministico nemmeno lui. Per un'applicazione effettiva, usa un hook `command` o `http`, e aggiungi [`onFailure: "block"`](https://code.claude.com/docs/it/hooks#block-the-action-when-a-hook-fails) se l'azione deve essere fermata anche quando l'hook stesso va in crash o in timeout. Per un hook che analizza i commit alla ricerca di segreti, ad esempio, preferiresti bloccare il commit piuttosto che lasciarlo passare senza analisi mentre lo scanner non è disponibile.
308
309Ecco la regola del formatter come hook `PostToolUse`. Viene eseguito dopo ogni `Edit` o `Write`, e che Claude ricordi la regola non conta più, perché non è Claude a eseguirla:
289 310
290Provide specific line references and suggested fixes.311```json .claude/settings.json theme={null}
312{
313 "hooks": {
314 "PostToolUse": [
315 {
316 "matcher": "Edit|Write",
317 "hooks": [
318 { "type": "command", "command": "npx prettier --write --ignore-unknown \"$(jq -r '.tool_input.file_path')\"" }
319 ]
320 }
321 ]
322 }
323}
291```324```
292 325
293Dite a Claude di utilizzare i subagent esplicitamente: *"Use a subagent to review this code for security issues."*326Per verificare l'hook, chiedi a Claude di aggiungere una riga indentata male in un file formattato da Prettier. Il file salvato torna con l'indentazione corretta.
294 327
295### Installate i plugin328La regola sulle migrazioni diventa un [hook `PreToolUse`](https://code.claude.com/docs/it/hooks-guide#block-edits-to-protected-files) che termina con codice di uscita 2 per qualsiasi percorso sotto `migrations/`. Non devi scriverlo tu: `write a hook that blocks edits to the migrations folder` funziona come prompt, e `/hooks` mostra il risultato. Non esagerare, però: un hook è per una regola con *zero* eccezioni, e `Prefer named exports` ne ha molte, quindi quella resta in `CLAUDE.md`.
296 329
297> [!TIP]330### Limita l'accesso con le regole di permesso e la sandbox
298>
299> Eseguite `/plugin` per sfogliare il marketplace. I plugin aggiungono skill, strumenti e integrazioni senza configurazione.
300 331
301I [plugin](https://code.claude.com/docs/it/plugins/overview.md) raggruppano skill, hook, subagent e server MCP in una singola unità installabile dalla comunità e da Anthropic. Se lavorate con un linguaggio tipizzato, installate un [plugin di code intelligence](https://code.claude.com/docs/it/plugins/code-intelligence.md) per fornire a Claude la navigazione precisa dei simboli e il rilevamento automatico degli errori dopo le modifiche.332Le [regole di permesso](https://code.claude.com/docs/it/permissions.md) decidono cosa Claude può eseguire, leggere e recuperare. Le regole `deny` valgono in ogni modalità di permesso, incluse auto e `bypassPermissions`, ed è esattamente per questo che la regola su `.env` va lì:
302 333
303Per una guida sulla scelta tra skill, subagent, hook e MCP, consultate [Extend Claude Code](https://code.claude.com/docs/it/features-overview.md#match-features-to-your-goal).334```json .claude/settings.json theme={null}
335{
336 "permissions": {
337 "allow": ["Bash(pnpm tsc --noEmit)"],
338 "ask": ["Bash(git push *)"],
339 "deny": ["Read(./.env)", "Read(./.env.local)", "Read(./secrets/**)"]
340 }
341}
342```
304 343
305***344Con questa configurazione salvata, chiedere a Claude cosa c'è in `.env` non funziona, sia tramite lo strumento `Read` sia tramite `cat .env`.
306 345
307## Comunicate efficacemente346Le regole corrispondono alle chiamate agli strumenti, non alle intenzioni, quindi conviene sapere dove sono i limiti:
308 347
309Fate a Claude le domande che fareste a un altro ingegnere, e per funzionalità più grandi fate intervistare Claude e scrivere una specifica prima di iniziare l'implementazione.348* La regola `Read` *intercetta* `cat .env`, perché Claude Code riconosce i [comandi comuni di lettura dei file](https://code.claude.com/docs/it/permissions.md#read-and-edit).
349* Non intercetta uno script che apre il file.
350* Una regola deny `WebFetch` per un dominio non ha effetto su un `curl` verso lo stesso dominio, a meno che la sandbox non sia attiva.
310 351
311### Fate domande sul codebase352Per un limite a livello di sistema operativo sull'accesso al filesystem o alla rete, attiva la [sandbox](https://code.claude.com/docs/it/sandboxing.md) con `/sandbox` in una sessione. Confina i comandi shell di Claude su macOS, Linux e WSL2 e [recepisce anche le tue regole deny `Read` e le regole `WebFetch(domain:...)`](https://code.claude.com/docs/it/sandboxing#permission-rules), quindi per qualsiasi cosa legata alla sicurezza ti conviene usare entrambe.
312 353
313> [!TIP]354Per impostazione predefinita Claude può comunque chiedere di riprovare un comando bloccato fuori dalla sandbox, e quella richiesta passa per il normale flusso dei permessi. La [modalità sandbox rigorosa](https://code.claude.com/docs/it/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), nella scheda **Overrides** di `/sandbox`, disattiva questo nuovo tentativo.
355
356> [!WARNING]
314>357>
315> Fate a Claude domande che fareste a un ingegnere senior.358> La modalità auto è un modello classificatore che valuta ogni azione, non una regola rigida. È bravo a farlo, ma come ogni valutazione può sbagliare. Puoi anche regolare ciò che considera rischioso, e la tua organizzazione può disattivarla del tutto, quindi le tue regole "mai" vanno nelle regole deny o negli hook.
359
360### Scegli a chi si applica una regola
316 361
317Quando vi onboarding a un nuovo codebase, utilizzate Claude Code per l'apprendimento e l'esplorazione. Potete fare a Claude lo stesso tipo di domande che fareste a un altro ingegnere:362Il punto in cui si trova una regola determina a chi si applica:
318 363
319* Come funziona il logging?364* `.claude/settings.local.json` e `~/.claude/settings.json` sono solo tuoi. Quando selezioni **Yes, and don't ask again** per un comando, Claude Code salva quella regola nel file locale.
320* Come faccio a creare un nuovo endpoint API?365* `.claude/settings.json` e gli hook al suo interno appartengono al repository. Una volta che ne fai il commit, si applicano a chiunque lavori nel repository. Le sue regole deny si applicano subito. Le sue regole `allow` attendono che ogni persona accetti la [finestra di dialogo di attendibilità](https://code.claude.com/docs/it/permissions.md#what-runs-before-you-trust-a-folder) per quella cartella, e anche l'[attendibilità del workspace](https://code.claude.com/docs/it/hooks.md#workspace-trust) determina quando i suoi hook iniziano a essere eseguiti sulla loro macchina.
321* Cosa fa `async move { ... }` sulla riga 134 di `foo.rs`?366* Le [impostazioni gestite](https://code.claude.com/docs/it/managed-settings.md) appartengono all'organizzazione. Provengono dalla console di amministrazione, da MDM o da un file `managed-settings.json`, e nessun file di impostazioni personale può sovrascriverle, il che le rende l'unico posto adatto per la policy di un team di sicurezza. Se sei tu la persona che le imposta, consulta [Configura Claude Code per la tua organizzazione](https://code.claude.com/docs/it/admin-setup.md).
322* Quali casi limite gestisce `CustomerOnboardingFlowImpl`?
323* Perché questo codice chiama `foo()` invece di `bar()` sulla riga 333?
324 367
325Utilizzare Claude Code in questo modo è un flusso di lavoro di onboarding efficace, migliorando il tempo di ramp-up e riducendo il carico su altri ingegneri. Non è richiesto alcun prompt speciale: fate le domande direttamente.368Qualunque sia l'ambito, mantieni ridotto l'insieme delle regole imposte. Ogni hook e ogni regola deny scatterà di tanto in tanto quando non dovrebbe, e qualcuno deve mantenerli. Se ti ritrovi ad averne quaranta, la maggior parte sono probabilmente preferenze che Claude avrebbe potuto valutare da solo.
326 369
327### Lasciate che Claude vi intervisti370## Modifica un'impostazione predefinita
328 371
329> [!TIP]372> [!TIP]
330>373>
331> Per funzionalità più grandi, fate intervistare Claude prima. Iniziate con un prompt minimo e chiedete a Claude di intervistarvi utilizzando lo strumento `AskUserQuestion`.374> Le impostazioni predefinite sono abbastanza buone da lasciarle così finché un'attività non costa più tempo, token o interruzioni del dovuto. Quando succede, esegui `/usage` nella sessione per vedere dove sono finiti.
332 375
333Claude fa domande su cose che potreste non aver ancora considerato, inclusa l'implementazione tecnica, l'interfaccia utente/esperienza utente, i casi limite e i compromessi. Sostituite `[brief description]` con la vostra funzionalità prima di inviare il prompt.376Una nuova sessione prende già alcune decisioni per te:
334 377
335```text wrap theme={null}378* Le sessioni interattive di terminale e VS Code si avviano in modalità auto.
336I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.379* Usa [Claude Opus 5.5 con sforzo medio](https://code.claude.com/docs/it/model-config.md#default-model-setting) sulla maggior parte dei piani e dei provider.
380* Delega il lavoro ai subagent quando vede un motivo per farlo.
381* Compatta la conversazione man mano che cresce.
337 382
338Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.383Nella maggior parte dei casi non ci pensi nemmeno. Quando un'attività costa più del dovuto, di solito il motivo è uno di questi quattro.
339 384
340Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.385### Modifica la modalità di permesso
341```
342 386
343Una volta completata la specifica, avviate una nuova sessione per eseguirla. La nuova sessione ha un contesto pulito focalizzato interamente sull'implementazione e avete una specifica scritta a cui fare riferimento.387Entrambi gli estremi della gamma dei permessi hanno un costo:
344 388
345Le specifiche più utili sono autonome: nominano i file e le interfacce coinvolte, dichiarano cosa è fuori ambito e terminano con un passaggio di verifica end-to-end che prova che la funzionalità funziona. Il tempo speso per rendere la specifica precisa ripaga più del tempo speso a guardare l'implementazione.389* **Modalità Manual**: approvi tu stesso ogni modifica e ogni comando che non sia di sola lettura. È sicura, ma dopo la decima richiesta inizi ad approvare senza leggere, e nulla va avanti mentre sei lontano dalla tastiera.
390* **`bypassPermissions`**: approva tutto ciò che non è coperto dalle tue regole deny e ask, il che ha senso solo in un container usa e getta.
346 391
347***392La [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode) si colloca tra i due, ed è la modalità in cui [si avviano](https://code.claude.com/docs/it/permission-modes.md#which-mode-a-session-starts-in) le sessioni interattive di terminale e VS Code. Claude lavora senza fermarsi per le approvazioni di routine, e un modello classificatore separato controlla le azioni in [un ordine fisso](https://code.claude.com/docs/it/permission-modes.md#how-the-classifier-evaluates-actions) prima che vengano eseguite. Si concentra sulle [cose che vorresti fossero fermate da una persona](https://code.claude.com/docs/it/permission-modes.md#what-the-classifier-blocks-by-default):
348 393
349## Gestite la vostra sessione394* `curl | bash`
395* Deploy e migrazioni in produzione
396* Force push sul lavoro di altre persone
397* Dati sensibili inviati a endpoint esterni
398* Azioni che sembrano guidate da contenuti letti da Claude anziché da te
350 399
351Le conversazioni sono persistenti e reversibili. Utilizzate questo a vostro vantaggio!400Quando blocca qualcosa, ricevi una notifica e l'azione compare sotto **Recently denied** in `/permissions`, dove puoi riprovarla con un'approvazione manuale. Dopo [tre blocchi consecutivi](https://code.claude.com/docs/it/permission-modes.md#when-auto-mode-falls-back) (o venti in totale), la modalità auto si mette in pausa e torna a chiederti conferma.
352 401
353### Correggete il corso presto e spesso402Niente di tutto questo sostituisce i tuoi controlli deterministici, perché viene eseguito *dopo* di essi. Le regole deny e ask e gli hook `PreToolUse` si applicano prima che il classificatore veda qualsiasi cosa, quindi una regola deny blocca in modalità auto esattamente come altrove. La sandbox continua a confinare i [comandi shell che avvolge](https://code.claude.com/docs/it/sandboxing.md#what-runs-outside-the-sandbox).
354 403
355> [!TIP]404> [!NOTE]
356>405>
357> Correggete Claude non appena notate che sta andando fuori strada.406> Puoi anche dire `don't push until I've reviewed` nella conversazione, e il classificatore [lo tratta come un segnale di blocco](https://code.claude.com/docs/it/permission-modes.md#boundaries-you-state-in-conversation). Si tratta comunque di un modello che legge la trascrizione, e la frase può andare persa quando la conversazione viene compattata, quindi tutto ciò che conta va in una regola deny.
407
408Il problema opposto è il classificatore che blocca ripetutamente qualcosa che nella tua configurazione è di routine. Invece di approvarlo manualmente ogni volta, aggiungilo a `autoMode.allow` o descrivi la tua infrastruttura attendibile nella [configurazione della modalità auto](https://code.claude.com/docs/it/auto-mode-config.md). Si scrive in linguaggio naturale anziché con pattern, e [`/auto-mode-setup`](https://code.claude.com/docs/it/auto-mode-config#generate-environment-entries) può redigere per te la parte `environment` a partire dal tuo progetto e dalle sessioni recenti:
409
410```json ~/.claude/settings.json theme={null}
411{
412 "autoMode": {
413 "environment": [
414 "$defaults",
415 "Source control: github.com/example-org and every repo under it",
416 "Trusted internal domains: *.internal.example.com"
417 ],
418 "allow": [
419 "$defaults",
420 "Deploying to the staging namespace is fine, it's isolated from production and resets nightly"
421 ]
422 }
423}
424```
358 425
359I migliori risultati provengono da cicli di feedback stretti. Sebbene Claude occasionalmente risolva i problemi perfettamente al primo tentativo, correggerlo rapidamente generalmente produce soluzioni migliori più velocemente.426> [!WARNING]
427>
428> Mantieni `"$defaults"` in ogni elenco che imposti, perché senza di esso le tue voci *sostituiscono* le regole integrate di quell'elenco invece di aggiungersi a esse. Per `environment` e `allow` perderesti il contesto e le eccezioni integrati, e un elenco `soft_deny` senza di esso elimina i blocchi integrati su force push e deploy in produzione.
429>
430> Il blocco `autoMode` deve inoltre trovarsi in `~/.claude/settings.json` anziché nel progetto, perché il classificatore ignora `autoMode` nelle impostazioni di progetto.
360 431
361* **`Esc`**: fermate Claude a metà azione con il tasto `Esc`. Il contesto viene preservato, quindi potete reindirizzare.432Se preferisci vedere ogni modifica e ogni comando prima che avvengano, `Shift+Tab` nella sessione passa ciclicamente tra le modalità di permesso, Manual inclusa, oppure avvia con `claude --permission-mode manual` dalla tua shell. E se poi Manual chiede troppo spesso, `/fewer-permission-prompts` analizza le tue trascrizioni recenti alla ricerca di chiamate Bash e MCP di sola lettura comuni e le aggiunge a un'allowlist in `.claude/settings.json`.
362* **`Esc + Esc` o `/rewind`**: premete `Esc` due volte o eseguite `/rewind` per aprire il menu di rewind e ripristinare la conversazione e lo stato del codice precedenti, o riassumere da un messaggio selezionato.
363* **`"Undo that"`**: fate in modo che Claude ripristini le sue modifiche.
364* **`/clear`**: ripristinate il contesto tra attività non correlate. Le sessioni lunghe con contesto irrilevante possono ridurre le prestazioni.
365 433
366Se avete corretto Claude più di due volte sullo stesso problema in una sessione, il contesto è ingombrato di approcci falliti. Eseguite `/clear` e iniziate di nuovo con un prompt più specifico che incorpori quello che avete imparato. Una sessione pulita con un prompt migliore quasi sempre supera una sessione lunga con correzioni accumulate.434### Modifica il modello e lo sforzo
367 435
368### Gestite il contesto aggressivamente436Lo [sforzo](https://code.claude.com/docs/it/model-config.md#adjust-effort-level) è il controllo principale su quanto a lungo ragiona Claude, e sostituisce la maggior parte di ciò che in passato si faceva con la formulazione del prompt. Claude Opus 5.5, Sonnet 5.5 e Haiku 5.5 usano `medium` per impostazione predefinita, che è più che sufficiente per il lavoro quotidiano sulle funzionalità con un ambito chiaro. I casi in cui cambiarlo, con `/effort` nella sessione:
369 437
370> [!TIP]438* Alzalo con `/effort high` o `/effort xhigh` quando la riuscita dipende da casi facili da trascurare. Pensa a un bug in codice che non hai scritto tu, a un test instabile o a una modifica dello schema in cui Claude deve trovare ogni lettore della vecchia struttura. Claude allora controlla più casi limite e verifica una parte maggiore del suo lavoro prima di rispondere, ed è lì che vanno il tempo e i token in più.
371>439* Abbassalo con `/effort low` quando procedi rapidamente avanti e indietro e rivedi comunque ogni risultato: brainstorming, una prima bozza, una ridenominazione su alcuni file. Claude ti dà un punto di partenza prima e, dato che guidi ogni passaggio, la riflessione aggiuntiva non avrebbe cambiato molto oltre all'attesa.
372> Eseguite `/clear` tra attività non correlate per ripristinare il contesto.440* Riserva `max` a un problema difficile che vuoi che Claude risolva senza di te, come la ricerca di una vulnerabilità di sicurezza. Nelle attività ordinarie tende a ragionare troppo, quindi paghi di più per una risposta che potrebbe non essere migliore di quella che avresti ottenuto con `high`.
441* Quando ne ha bisogno solo il messaggio successivo, come una domanda complicata nel mezzo di un lavoro altrimenti di routine, inserisci [`ultrathink`](https://code.claude.com/docs/it/model-config#use-ultrathink-for-one-off-deep-reasoning) in quel prompt invece di cambiare l'impostazione.
373 442
374Claude Code compatta automaticamente la cronologia della conversazione quando vi avvicinate ai limiti del contesto, il che preserva il codice e le decisioni importanti mentre libera spazio.443Per quanto riguarda il modello, Opus 5.5 predefinito gestisce bene la maggior parte del lavoro di programmazione e Sonnet costa meno per il lavoro di routine. [Claude Fable 5.1](https://code.claude.com/docs/it/model-config.md#work-with-fable) è disponibile quando lo selezioni esplicitamente con `/model fable`, e Haiku è adatto ai subagent che svolgono compiti semplici. [Configurazione del modello](https://code.claude.com/docs/it/model-config.md) contiene l'elenco completo per piano e provider.
375 444
376Durante le sessioni lunghe, la finestra di contesto di Claude può riempirsi di conversazioni irrilevanti, contenuti di file e comandi. Questo può ridurre le prestazioni e talvolta distrarre Claude.445### Sappi quanto costano i subagent
377 446
378* Utilizzate `/clear` frequentemente tra le attività per ripristinare completamente la finestra di contesto447Claude delega ai [subagent](https://code.claude.com/docs/it/sub-agents.md) di sua iniziativa:
379* Quando la compattazione automatica si attiva, Claude riassume quello che conta di più, inclusi i modelli di codice, gli stati dei file e le decisioni chiave
380* Per un maggiore controllo, eseguite `/compact <instructions>`, come `/compact Focus on the API changes`
381* Per compattare solo parte della conversazione, utilizzate `Esc + Esc` o `/rewind`, selezionate un checkpoint di messaggio e scegliete **Summarize from here** o **Summarize up to here**. Il primo condensa i messaggi da quel punto in poi mantenendo il contesto precedente intatto; il secondo condensa i messaggi precedenti mantenendo quelli recenti in pieno. Consultate [il menu di rewind e le opzioni di riassunto](https://code.claude.com/docs/it/checkpointing.md#rewind-and-summarize).
382* Personalizzate il comportamento di compattazione in CLAUDE.md con istruzioni come `"When compacting, always preserve the full list of modified files and any test commands"` per assicurare che il contesto critico sopravviva alla riassunzione
383* Per domande che non devono rimanere nel contesto, utilizzate [`/btw`](https://code.claude.com/docs/it/interactive-mode#side-questions-with-%2Fbtw). La risposta non entra mai nella cronologia della conversazione, quindi potete controllare un dettaglio senza far crescere il contesto.
384 448
385### Utilizzate i subagent per l'investigazione449* Le ricerche ampie nel codebase vanno all'agente Explore integrato.
450* Le attività secondarie vengono [biforcate](https://code.claude.com/docs/it/sub-agents.md#fork-the-current-conversation) mentre la modalità fork è attiva (l'impostazione predefinita).
451* I subagent che avvia vengono eseguiti in background per impostazione predefinita, quindi la tua conversazione principale continua ad andare avanti.
386 452
387> [!TIP]453Raramente devi chiedere qualcosa di tutto ciò, ma è utile sapere cosa ottieni e quanto costa.
388>
389> Delegate la ricerca con `"use subagents to investigate X"`. Esplorano in un contesto separato, mantenendo la vostra conversazione principale pulita per l'implementazione.
390 454
391Poiché il contesto è il vostro vincolo fondamentale, utilizzate i subagent per mantenere la ricerca fuori da esso. Quando Claude ricerca un codebase legge molti file, tutti i quali consumano il vostro contesto. I subagent vengono eseguiti in finestre di contesto separate e riportano riassunti:455I subagent ripagano in queste situazioni:
392 456
393```text wrap theme={null}457* Eseguire contemporaneamente parti di lavoro indipendenti, in modo che l'intera attività finisca prima
394Use subagents to investigate how our authentication system handles token458* Tenere l'output lungo, come un'esecuzione completa dei test o una ricerca ampia, fuori dalla tua conversazione principale, dove altrimenti resterebbe per il resto della sessione
395refresh, and whether we have any existing OAuth utilities I should reuse.459* Avere un revisore che non ha visto come è stato scritto il codice
396```460* Dare a un'attività meno strumenti di quelli della sessione principale, come un revisore che può leggere ma non modificare
397 461
398Potete anche utilizzare i subagent per la verifica dopo che Claude implementa qualcosa. Consultate [Aggiungete un passaggio di revisione avversariale](#add-an-adversarial-review-step).462Ciò che ti costano sono soprattutto token, dato che ogni subagent invia le proprie richieste e queste contano sullo stesso utilizzo della tua conversazione principale. A volte costano anche tempo: un subagent nuovo deve prima raccogliere il contesto che la tua conversazione aveva già, quindi può finire per essere *più lento* che svolgere l'attività dove ti trovi.
399 463
400### Riavvolgete con i checkpoint464E per impostazione predefinita è lo stesso modello (o uno più piccolo) sulla stessa attività. Ne ottieni parallelismo o uno sguardo nuovo, ma non una risposta più intelligente.
401 465
402> [!TIP]466Per spendere meno:
403>
404> Ogni prompt che inviate che avvia un turno crea un checkpoint. Potete ripristinare la conversazione, il codice o entrambi a qualsiasi checkpoint precedente.
405 467
406Claude crea automaticamente snapshot dei file prima di ogni modifica in modo che un checkpoint possa ripristinarli. Premete il doppio tasto Escape o eseguite `/rewind` per aprire il menu di rewind. Potete ripristinare solo la conversazione, ripristinare solo il codice, ripristinare entrambi o riassumere da un messaggio selezionato. Consultate [Checkpointing](https://code.claude.com/docs/it/checkpointing.md) per i dettagli.468* Imposta [`model: haiku`](https://code.claude.com/docs/it/sub-agents#choose-a-model) nella definizione di un subagent se il suo lavoro è semplice, come raccogliere i file che importano un modulo o controllare i link nella documentazione. Quel tipo di lavoro non ha bisogno del modello più grande, e Haiku costa molto meno per richiesta.
469* Chiedi riepiloghi brevi in risposta, così venti risultati non finiscono comunque per riempire il tuo contesto.
470* Controlla `/usage` per vedere quale quota del tuo utilizzo occupa ciascun tipo di subagent, così puoi capire quali valgono il loro costo.
471* Dai a un subagent personalizzato in `.claude/agents/` solo `tools: Read, Grep, Glob`. Ora è un revisore che non può modificare nulla, e quel limite è imposto da Claude Code anziché richiesto in un prompt.
407 472
408Invece di pianificare attentamente ogni mossa, potete dire a Claude di provare qualcosa di rischioso. Se non funziona, riavvolgete e provate un approccio diverso. I checkpoint vengono salvati con la conversazione, quindi potete chiudere il vostro terminale, riprendere la sessione in seguito e comunque riavvolgere.473Quel revisore è un breve file, `.claude/agents/reviewer.md`:
409 474
410> [!WARNING]475```markdown .claude/agents/reviewer.md theme={null}
411>476---
412> I checkpoint tracciano solo le modifiche apportate attraverso gli strumenti di modifica dei file di Claude. Le modifiche apportate attraverso comandi Bash o processi esterni non vengono acquisite. Questo non è un sostituto per git.477name: reviewer
478description: Reviews changed files against the spec they were built from. Use after implementing a feature, before opening the PR.
479tools: Read, Grep, Glob
480---
481You're reviewing code you didn't write. Compare the changed files against the spec you're given,
482check that every requirement is implemented and the listed edge cases have tests,
483and report only the gaps that affect correctness. Skip style.
484```
413 485
414### Riprendete le conversazioni486Chiedi a Claude di `have the reviewer compare the rate limiter against SPEC.md` e le lacune tornano nella tua sessione, dove Claude può correggerle.
415 487
416> [!TIP]488### Contieni costi e contesto
417>
418> Nominate le sessioni con `/rename` e trattate le come rami: ogni flusso di lavoro ottiene il suo contesto persistente.
419 489
420Claude Code salva le conversazioni localmente, quindi quando un'attività si estende su più sessioni non dovete rispiegare il contesto. Eseguite [`claude --continue`](https://code.claude.com/docs/it/sessions#resume-a-session) per riprendere da dove avete lasciato, o `claude --resume` per scegliere da un elenco. Assegnate alle sessioni nomi descrittivi come `oauth-migration` in modo da poterle trovare in seguito. Consultate [Gestite le sessioni](https://code.claude.com/docs/it/sessions.md) per l'insieme completo di controlli di ripresa, ramo e denominazione.490Con una finestra da 1M di token sulla maggior parte dei modelli attuali e la compattazione vicino al limite, raramente esaurirai il contesto. Puoi comunque *pagare* per un contesto che non ti serve. Ogni richiesta invia l'intera conversazione, quindi una sessione che ha accumulato tre attività non correlate le rilegge tutte e tre a ogni turno della quarta. Questo è [scontato finché la cache è calda](https://code.claude.com/docs/it/costs.md#why-usage-climbs-in-a-long-session) e a prezzo pieno una volta scaduta.
421 491
422***492[`/usage`](https://code.claude.com/docs/it/costs) è il primo posto in cui guardare. Su Pro, Max, Team ed Enterprise suddivide il tuo utilizzo per skill, subagent, plugin e server MCP. Segnala anche pattern come contesto lungo o frequenti cache miss quando uno di essi supera il 10% del tuo utilizzo. Da lì, le soluzioni abituali:
423 493
424## Automatizza e scala494* `/clear` tra attività non correlate. Non costa nulla, e fa sì che l'attività successiva non continui a pagare per la cronologia della precedente. `/clear oauth-migration` assegna un nome alla sessione che stai lasciando, così puoi tornarci in seguito.
495* `/compact` con un focus, come `/compact keep the API changes and the test commands`. In una sessione lunga `/compact` è a sua volta una richiesta grande, dato che legge l'intera conversazione per riassumerla, e ancora di più una volta scaduta la cache.
496* Tieni d'occhio il lavoro in background: un `/loop`, il controllo di un obiettivo dopo ogni turno e i subagent di Claude continuano tutti a inviare richieste mentre non stai scrivendo.
425 497
426Una volta che sei efficace con un Claude, moltiplica il tuo output con sessioni parallele, modalità non interattiva e pattern di fan-out.498> [!NOTE]
499>
500> La [prompt cache](https://code.claude.com/docs/it/prompt-caching.md) dura circa un'ora con un abbonamento e cinque minuti con una chiave API, un cloud provider o i crediti di utilizzo. I subagent hanno cinque minuti, a meno che tu non lo modifichi.
501>
502> Con la cache di un'ora, una sessione oltre circa 200K token che resta inattiva viene compattata poco prima della scadenza della cache, quindi dopo pranzo riprendi da un riepilogo. Se non ti serve affatto la cronologia, una sessione nuova costa comunque meno.
427 503
428### Esegui la modalità non interattiva504## Guida la sessione
429 505
430> [!TIP]506> [!TIP]
431>507>
432> Usa `claude -p "prompt"` in CI, hook pre-commit o script. Aggiungi `--output-format stream-json --verbose` per l'output JSON in streaming.508> Osserva il primo minuto, premi `Esc` nel momento in cui Claude devia e, dopo due correzioni non riuscite, esegui `/clear` e scrivi un prompt migliore invece di una terza correzione.
433 509
434Con `claude -p "your prompt"`, puoi eseguire Claude in modo non interattivo, senza un prompt interattivo. L'esecuzione crea comunque una sessione ripristinabile a meno che tu non passi `--no-session-persistence`. [La modalità non interattiva](https://code.claude.com/docs/it/headless.md) è il modo in cui integri Claude nelle pipeline CI, negli hook pre-commit o in qualsiasi workflow automatizzato. I formati di output ti permettono di analizzare i risultati a livello di programmazione: testo semplice, JSON o JSON in streaming.510Nessuna configurazione sostituisce l'osservare il primo minuto e intervenire quando Claude si dirige da qualche parte che non intendevi. Ci sono solo pochi controlli per farlo, e vale la pena conoscerli a memoria:
435 511
436```bash theme={null}512* `Esc` ferma Claude a metà azione e mantiene tutto fino a quel punto, così puoi reindirizzarlo senza perdere lavoro.
437# One-off queries513* `/rewind`, o `Esc` due volte su un prompt vuoto, apre il [menu di rewind](https://code.claude.com/docs/it/checkpointing.md#rewind-and-summarize), dove riporti il codice, la conversazione o entrambi a un prompt precedente. Questo rende poco rischioso provare prima l'approccio più audace e tornare indietro se non funziona. Lo stesso menu può anche riassumere parte della conversazione quando è diventata obsoleta.
438claude -p "Explain what this project does"514* `/clear` ricomincia da capo. Se hai corretto la stessa cosa due volte ed è ancora sbagliata, una terza correzione non fa che aggiungersi a una conversazione che contiene già due tentativi falliti che Claude continua a rileggere. `/clear` più un nuovo prompt che incorpora ciò che hai imparato funziona meglio quasi sempre.
439
440# Structured output for scripts
441claude -p "List all API endpoints" --output-format json
442 515
443# Streaming for real-time processing516> [!WARNING]
444claude -p "Analyze this log file" --output-format stream-json --verbose517>
445```518> I checkpoint coprono i file che Claude ha modificato con i propri strumenti per i file nella tua conversazione principale, quindi un file toccato solo da un comando Bash [non viene ripristinato](https://code.claude.com/docs/it/checkpointing.md#bash-command-changes-not-tracked). Funzionano insieme a git anziché sostituirlo.
446 519
447Il primo comando stampa testo semplice. Il formato `json` restituisce un singolo oggetto JSON con un campo `result`. Il formato `stream-json` stampa un oggetto JSON per riga, iniziando con un evento di inizializzazione.520Due controlli minori: [`/btw`](https://code.claude.com/docs/it/interactive-mode#side-questions-with-%2Fbtw) risponde a una domanda veloce senza aggiungere nulla alla cronologia. E per un lavoro che si estende su più giorni, `/rename oauth-migration` nella sessione le assegna un nome, in modo che [`claude --resume oauth-migration`](https://code.claude.com/docs/it/sessions#resume-by-session-id-or-name) dalla tua shell la riprenda in seguito, checkpoint inclusi. `claude --continue` riprende quella più recente.
448 521
449### Esegui più sessioni Claude522## Lascia che Claude lavori senza di te
450 523
451> [!TIP]524> [!TIP]
452>525>
453> Esegui più sessioni Claude in parallelo per accelerare lo sviluppo, eseguire esperimenti isolati o avviare workflow complessi.526> Prima che un'esecuzione proceda senza supervisione, assicurati che sappia com'è il lavoro completato, che possa verificare il proprio lavoro e che possa toccare solo ciò che deve. Dalle un limite di turni o di spesa, e fai approvare il risultato finale a una persona.
454
455Scegli l'approccio parallelo che si adatta a quanto coordinamento vuoi fare tu stesso, e aggiungi la messaggistica quando le sessioni devono passarsi i risultati tra loro:
456 527
457* [Worktree](https://code.claude.com/docs/it/worktrees.md): esegui sessioni CLI separate in checkout git isolati in modo che le modifiche non si scontrino528Tutto ciò che è in questa pagina conta un po' di più quando non sei presente per individuare gli errori. Mentre osservi, il fatto che a Claude manchi qualche elemento di contesto non è un grosso problema: te ne accorgi entro un messaggio o due e glielo dici. In un'esecuzione avviata prima di andare a dormire, nessuno glielo dice, e la mattina dopo scopri che ha passato tutta la notte a costruire su un presupposto sbagliato.
458* [Messaggistica tra sessioni](https://code.claude.com/docs/it/cross-session-messaging.md): lascia che le sessioni che esegui tu stesso si passino i risultati l'una all'altra
459* [App desktop](https://code.claude.com/docs/it/desktop.md#work-in-parallel-with-sessions): gestisci più sessioni locali visivamente, facoltativamente ciascuna nel proprio worktree
460* [Usa Claude Code nel cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md): esegui sessioni su infrastruttura gestita da Anthropic per impostazione predefinita
461* [Visualizzazione agente](https://code.claude.com/docs/it/agent-view.md): anteprima di ricerca. Esegui `claude agents` per inviare sessioni che continuano a funzionare in background e osservale da una sola schermata
462* [Team di agenti](https://code.claude.com/docs/it/agent-teams.md): sperimentale e disabilitato per impostazione predefinita. Coordinamento automatizzato di più sessioni con attività condivise, messaggistica e un team lead
463 529
464Oltre a parallelizzare il lavoro, più sessioni consentono workflow focalizzati sulla qualità. Un contesto fresco migliora la code review poiché Claude non sarà influenzato dal codice che ha appena scritto.530Prima di lasciare un'attività in esecuzione da sola, conviene rispondere a queste cinque domande pensando a quell'attività specifica:
465 531
466Ad esempio, usa un pattern Writer/Reviewer:5321. Sa com'è il lavoro completato? Una condizione di obiettivo, un file di specifica o un test che fallisce e che deve far passare.
5332. Può verificare il proprio lavoro? La suite di test, un hook `Stop`, una qualche fase di revisione.
5343. Cosa può toccare? Regole di permesso, `dontAsk`, la sandbox, un worktree, l'unico branch su cui può fare push.
5354. Cosa lo ferma? `--max-turns`, `--max-budget-usd`, un limite di spesa.
5365. Dove va il risultato e chi lo approva? Una PR, un commento o un riepilogo, e poi una persona che approva il merge, il deploy o qualsiasi altra cosa irreversibile.
467 537
468| Sessione A (Writer) | Sessione B (Reviewer) |538Una volta avviata, Claude porterà avanti da solo un'attività lunga. Le parti che restano a te sono avviarla, decidere cosa significa "completato" questa volta e approvare il merge alla fine.
469| - | - |
470| `Implement a rate limiter for our API endpoints` | |
471| | `Review the rate limiter implementation in @src/middleware/rateLimiter.ts. Look for edge cases, race conditions, and consistency with our existing middleware patterns.` |
472| `Here's the review feedback: [Session B output]. Address these issues.` | |
473 539
474Puoi fare qualcosa di simile con i test: fai scrivere i test a un Claude, poi a un altro il codice per superarli.540### Esegui Claude da uno script
475 541
476### Fan out tra i file542[`claude -p "prompt"`](https://code.claude.com/docs/it/headless) viene eseguito una volta e termina, ed è così che Claude Code finisce nei job di CI, negli hook git e nei cicli della shell.
477
478> [!TIP]
479>
480> Esegui un ciclo sulle attività chiamando `claude -p` per ciascuna. Usa `--allowedTools` per pre-approvare gli strumenti per le operazioni batch.
481 543
482Per migrazioni o analisi su larga scala, puoi distribuire il lavoro tra molte invocazioni parallele di Claude. Esegui [`/batch <instruction>`](https://code.claude.com/docs/it/commands#all-commands) per fare in modo che Claude divida la modifica tra 5 e 30 subagent. Ogni subagent lavora nel proprio worktree. Per guidare invece il fan-out dal tuo script, esegui un ciclo su `claude -p`:544In uno script vorrai quasi sempre qualche flag in più:
483 545
484**1. Genera un elenco di attività**546* [`--bare`](https://code.claude.com/docs/it/headless#start-faster-with-bare-mode) salta hook, skill, plugin, server MCP e file `CLAUDE.md`, sia quelli del repository sia quelli della macchina, in modo che l'esecuzione faccia la stessa cosa ovunque venga eseguita. Inoltre non tocca mai il tuo accesso a claude.ai: l'autenticazione proviene da `ANTHROPIC_API_KEY`, da un `apiKeyHelper` nel file che passi con `--settings` o dalle credenziali del tuo cloud provider.
547* `--append-system-prompt`, `--mcp-config` e `--settings` passano esplicitamente ciò di cui l'esecuzione *ha* bisogno.
548* `--allowedTools` pre-approva i suoi strumenti, e [`--permission-mode dontAsk`](https://code.claude.com/docs/it/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) rifiuta qualsiasi altra cosa che avrebbe richiesto conferma.
549* `--output-format json` ti fornisce un singolo oggetto risultato da analizzare, e `stream-json` con `--verbose` trasmette gli eventi man mano che accadono.
485 550
486Fai scrivere a Claude l'elenco dei file da migrare in un file, in modo che il ciclo nel passaggio successivo possa leggerlo, con un prompt come `list all 2,000 Python files that need migrating and save the list to files.txt`551Messo tutto insieme, appare così:
487
488**2. Scrivi uno script per scorrere l'elenco**
489 552
490```bash theme={null}553```bash theme={null}
491for file in $(cat files.txt); do554for file in $(cat files.txt); do
492 claude -p "Migrate $file from Python 2 to Python 3. Return OK or FAIL." \555 claude --bare -p "Migrate $file to the new logger API and commit. Reply OK or FAIL." \
493 --allowedTools "Edit,Bash(git commit *)" \556 --allowedTools "Read,Edit,Bash(git add *),Bash(git commit *)" \
494 --permission-mode dontAsk557 --permission-mode dontAsk \
558 --max-turns 20
495done559done
496```560```
497 561
498**3. Testa su pochi file, poi esegui su tutti**562Al termine di un'esecuzione, Claude risponde `OK` o `FAIL`, mentre un'esecuzione che raggiunge il limite di turni termina con un errore. Provalo prima su tre file, vedi cosa va storto, correggi il prompt, poi esegui il resto.
499
500Affina il tuo prompt in base a ciò che va storto con i primi 2-3 file, quindi esegui sull'intero set. Il flag `--allowedTools` pre-approva gli strumenti di cui la migrazione ha bisogno. [`--permission-mode dontAsk`](https://code.claude.com/docs/it/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) nega qualsiasi altra cosa che richiederebbe un'approvazione, il che è importante quando esegui senza supervisione, anche se un [mod](https://code.claude.com/docs/it/plugins/mods/overview.md) che hai installato può comunque approvare alcune di queste chiamate.
501 563
502Puoi anche integrare Claude nelle pipeline di elaborazione/dati esistenti:564La modalità auto funziona anche con `-p` se passi `--permission-mode auto`. In un'esecuzione non interattiva, un blocco del classificatore nega quella singola azione e Claude prosegue, e i blocchi ripetuti non mettono in pausa l'esecuzione come fanno in un terminale. Leggi [come si applicano le soglie in quel caso](https://code.claude.com/docs/it/permission-modes.md#repeated-block-thresholds) prima di farci affidamento.
503 565
504```bash theme={null}566### Avvia esecuzioni su pianificazione o in base a un evento
505claude -p "<your prompt>" --output-format json | your_command
506```
507 567
508### Esegui in autonomia con la modalità auto568Una volta avviata un'esecuzione, Claude può gestire il resto da solo. L'unica cosa che non può fare è decidere di *iniziare*, quindi qualcosa deve farlo: tu, un timer o un evento come un controllo CI fallito o una nuova PR.
509 569
510Per un'esecuzione ininterrotta con controlli di sicurezza in background, usa la [modalità auto](https://code.claude.com/docs/it/permission-modes.md#eliminate-prompts-with-auto-mode). Un modello classificatore esamina i comandi prima che vengano eseguiti, bloccando l'escalation dell'ambito, l'infrastruttura sconosciuta e le azioni guidate da contenuti ostili, mentre consente al lavoro abituale di procedere senza richieste di conferma.570All'interno di una sessione aperta c'è [`/loop`](https://code.claude.com/docs/it/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop), che ripete un prompt a intervalli:
511 571
512```bash theme={null}572```text theme={null}
513claude --permission-mode auto -p "fix all lint errors"573/loop 15m check CI on this branch, and if it's red pull the failing job's log, fix it and push
514```574```
515 575
516Quando il classificatore blocca ripetutamente le azioni in un'esecuzione non interattiva con il flag `-p`, Claude Code non interrompe l'esecuzione. Consulta [quando la modalità auto ricorre al fallback](https://code.claude.com/docs/it/permission-modes.md#when-auto-mode-falls-back) per sapere cosa accade invece e quali sono le soglie.576Ogni esecuzione è un ulteriore turno nella stessa sessione, quindi non lasciarne uno attivo in una conversazione lunga. Per tutto ciò che deve avvenire mentre il tuo laptop è chiuso, [`/schedule`](https://code.claude.com/docs/it/routines#create-from-the-cli) configura un'[attività pianificata nel cloud](https://code.claude.com/docs/it/routines.md) che viene eseguita in base a un timer. Richiede un accesso a claude.ai anziché una chiave API. Puoi aggiungere un trigger basato su eventi GitHub chiedendolo a Claude, o un trigger API su [claude.ai/code/routines](https://claude.ai/code/routines).
517
518### Aggiungi un passaggio di revisione avversariale
519 577
520> [!TIP]578> [!WARNING]
521>579>
522> Prima di considerare un'attività completata, fai in modo che un subagent riveda il diff in un contesto fresco e segnali le lacune.580> Prima di lasciare in esecuzione un'attività pianificata nel cloud, proteggi `main` con una [regola di branch GitHub che l'attività non può aggirare](https://code.claude.com/docs/it/routines.md#repositories-and-branch-permissions). E osserva le prime esecuzioni di qualsiasi cosa nuova prima di fidarti a lasciarla senza supervisione.
523
524Più a lungo Claude lavora senza supervisione, più un controllo indipendente è importante prima di considerare il lavoro completato. Un revisore che opera in un contesto [subagent](https://code.claude.com/docs/it/sub-agents.md) fresco vede solo il diff e i criteri che gli fornisci, non il ragionamento che ha prodotto la modifica, quindi valuta il risultato in modo autonomo.
525 581
526Per un controllo di correttezza, esegui la [skill `/code-review`](https://code.claude.com/docs/it/commands) inclusa, che esamina il diff corrente alla ricerca di bug in un subagent fresco e restituisce i risultati alla sessione. Per controllare invece il diff rispetto al tuo piano, scrivi tu stesso il prompt di revisione. Indica il lavoro da controllare, il piano rispetto a cui controllarlo e cosa conta come lacuna:582### Esegui sessioni in parallelo
527 583
528```text wrap theme={null}584Quando hai più parti di lavoro separate in corso contemporaneamente, dai a ciascuna il proprio checkout in modo che le modifiche non possano scontrarsi. [`claude -w feature-auth`](https://code.claude.com/docs/it/worktrees#start-claude-in-a-worktree) avvia una sessione in un nuovo worktree, l'[app desktop](https://code.claude.com/docs/it/desktop.md#work-in-parallel-with-sessions) ne esegue diverse fianco a fianco, e le [sessioni cloud](https://code.claude.com/docs/it/claude-code-on-the-web.md) le eseguono nel cloud anziché sulla tua macchina.
529Use a subagent to review the rate limiter diff against PLAN.md. Check that
530every requirement is implemented, the listed edge cases have tests, and
531nothing outside the task's scope changed. Report gaps, not style preferences.
532```
533 585
534Poiché il revisore opera come subagent, la sessione di implementazione riceve direttamente le lacune e può correggerle e ripetere la revisione senza che tu debba copiare i risultati tra le finestre.586Un worktree è un checkout nuovo, il che significa che i file ignorati da git come `.env` non sono presenti e le dipendenze non sono installate. Per i primi, elenca i file ignorati da git di cui hai bisogno in un [`.worktreeinclude`](https://code.claude.com/docs/it/worktrees#copy-gitignored-files-into-worktrees) nella root del repository (stessa sintassi di `.gitignore`) e Claude Code li copia in ogni worktree che crea:
535 587
536Un revisore incaricato di trovare lacune di solito ne segnala alcune, anche quando il lavoro è solido, perché è quello che gli è stato chiesto di fare. Inseguire ogni risultato porta all'over-engineering: strati di astrazione extra, codice difensivo e test per casi che non possono verificarsi. Di' al revisore di segnalare solo le lacune che influiscono sulla correttezza o sui requisiti dichiarati, e tratta il resto come facoltativo.588```text .worktreeinclude theme={null}
589.env
590.env.local
591config/dev-credentials.json
592```
537 593
538***594Limitati a file piccoli: li copia anziché collegarli, quindi inserire `node_modules` significherebbe una copia completa per ogni worktree. Per directory di grandi dimensioni c'è l'impostazione [`worktree.symlinkDirectories`](https://code.claude.com/docs/it/settings-reference#worktree-symlinkdirectories), oppure tieni il comando di installazione in `CLAUDE.md` in modo che Claude lo esegua ogni volta che inizia in un nuovo checkout.
539 595
540## Evitate i modelli di fallimento comuni596Raramente devi ripulire tu stesso:
541 597
542Questi sono errori comuni. Riconoscerli presto fa risparmiare tempo:598* Quando esci da una sessione worktree senza nome, Claude Code [rimuove il worktree](https://code.claude.com/docs/it/worktrees.md#clean-up-worktrees) se non contiene nulla. Per una sessione con nome, o con modifiche, ti chiede cosa fare.
599* I worktree dei subagent scompaiono quando il subagent termina senza modifiche.
600* I worktree dei subagent e delle sessioni in background che restano comunque vengono eliminati quando sono più vecchi di `cleanupPeriodDays` e non contengono lavoro.
543 601
544* **La sessione del lavandino della cucina.** Iniziate con un'attività, poi chiedete a Claude qualcosa di non correlato, poi tornate alla prima attività. Il contesto è pieno di informazioni irrilevanti.602> [!NOTE]
545 > **Correzione**: `/clear` tra attività non correlate.603>
546* **Correggere più volte.** Claude fa qualcosa di sbagliato, lo correggete, è ancora sbagliato, lo correggete di nuovo. Il contesto è inquinato da approcci falliti.604> Un'esecuzione `claude -p --worktree` va ripulita da te, dato che termina senza chiedere. Rimuovi questi worktree con `git worktree remove <path>` e, se git si rifiuta perché il worktree è bloccato, esegui prima `git worktree unlock <path>`.
547 > **Correzione**: Dopo due correzioni fallite, `/clear` e scrivete un prompt iniziale migliore che incorpori quello che avete imparato.
548* **Il CLAUDE.md eccessivamente specificato.** Se il vostro CLAUDE.md è troppo lungo, Claude ignora metà di esso perché le regole importanti si perdono nel rumore.
549 > **Correzione**: Potate spietatamente. Se Claude fa già qualcosa di corretto senza l'istruzione, eliminatelo o convertitelo in un hook.
550* **Il divario tra fiducia e verifica.** Claude produce un'implementazione plausibile che non gestisce i casi limite.
551 > **Correzione**: Fornite sempre la verifica (test, script, screenshot). Se non potete verificarlo, non lo spedite.
552* **L'esplorazione infinita.** Chiedete a Claude di "investigare" qualcosa senza limitarlo. Claude legge centinaia di file, riempiendo il contesto.
553 > **Correzione**: Limitate le investigazioni strettamente o utilizzate i subagent in modo che l'esplorazione non consumi il vostro contesto principale.
554 605
555***606Per una grande modifica meccanica su molti file, [`/batch migrate every handler to the v2 response helpers`](https://code.claude.com/docs/it/commands) divide il lavoro in 5-30 unità e ti mostra il piano. Poi esegue ogni unità nel proprio worktree e apre una PR per ciascuna. Dalla tua shell, [`claude agents`](https://code.claude.com/docs/it/agent-view) (ancora in anteprima di ricerca) ti offre un'unica schermata per tutto ciò che è in esecuzione in background sulla tua macchina.
556 607
557## Sviluppate la vostra intuizione608Una seconda sessione è anche il revisore indipendente più semplice che puoi avere. Una sessione scrive il rate limiter, un'altra esamina `@src/middleware/rateLimiter.ts` senza averne osservato la scrittura, e tu incolli i risultati nella prima. Stessa idea di `/code-review`, con te a fare da messaggero.
558 609
559I modelli in questa guida non sono scolpiti nella pietra. Sono punti di partenza che funzionano bene in generale, ma potrebbero non essere ottimali per ogni situazione.610## Cosa puoi smettere di fare
560 611
561A volte *dovreste* lasciare che il contesto si accumuli perché siete immersi in un problema complesso e la cronologia è preziosa. A volte dovreste saltare la pianificazione e lasciare che Claude lo capisca perché l'attività è esplorativa. A volte un prompt vago è esattamente giusto perché volete vedere come Claude interpreta il problema prima di limitarlo.612Ognuno di questi era un buon consiglio quando è stato scritto. La maggior parte erano soluzioni alternative per qualcosa che il modello non riusciva ancora a fare in modo affidabile, e da allora i modelli si sono messi al passo. Se alcuni sono ancora tue abitudini, ecco perché puoi abbandonarli in sicurezza.
562 613
563Prestate attenzione a quello che funziona. Quando Claude produce un output eccellente, notate quello che avete fatto: la struttura del prompt, il contesto che avete fornito, la modalità in cui siete stati. Quando Claude fatica, chiedetevi perché. Il contesto era troppo rumoroso? Il prompt troppo vago? L'attività troppo grande per un passaggio?614| Il vecchio consiglio | Perché non serve più |
615| :- | :- |
616| La finestra di contesto è il tuo vincolo principale, gestiscila in modo aggressivo | La maggior parte dei modelli attuali ha una finestra da 1M di token e la compattazione avviene da sola, quindi esaurirla è raro. `/clear` tra un'attività e l'altra vale ancora la pena, perché un contesto focalizzato ti dà risposte migliori e costa meno. |
617| Aggiungi IMPORTANT o TUTTO MAIUSCOLO alle istruzioni che Claude continua a ignorare | I modelli più vecchi a volte avevano bisogno dell'enfasi. Quelli attuali seguono una riga formulata in modo semplice, e accumulare enfasi porta soprattutto Claude ad applicare la regola in modo eccessivo. Se è una regola che non può piegarsi, trasformala in un hook o in una regola deny. Se la riga si perde in un file lungo, il file deve essere più breve. |
618| Usa i subagent per proteggere la tua finestra di contesto | Esaurire il contesto raramente è più un problema. I subagent restano ottimi per il lavoro in parallelo, per tenere fuori dai piedi l'output rumoroso e per la revisione indipendente, ma ognuno di questi usi costa token in più. |
619| Delega a un subagent per ottenere una risposta migliore | Affidare la stessa attività a un subagent non rende la risposta migliore. Un revisore nuovo aiuta, perché non ha visto il tuo ragionamento, ma questa è una cosa diversa dal delegare. |
620| `think hard`, `think harder`, `be thorough` nel prompt | Lo sforzo è il controllo giusto per questo. Quelle frasi sono normale testo del prompt che spinge Claude entro la sua impostazione di sforzo, non parole chiave che la alzano. `ultrathink` funziona ancora: chiede un ragionamento più profondo per quel singolo turno senza toccare la tua impostazione di sforzo. |
621| Di' a Claude di andare avanti, di ripetere finché non ha finito, di non essere pigro | I modelli attuali di solito portano avanti un'attività concordata senza che glielo si dica, e righe del genere hanno più probabilità di causare lavoro eccessivo che di risolvere un arresto. Dare a Claude un controllo da superare è diverso, e vale ancora la pena farlo. Se un'esecuzione si ferma prima del tempo, di' `continue`, e per le esecuzioni che nessuno sta osservando, `/goal` o un hook `Stop` lo impongono. |
622| Descrivi la tua architettura e la struttura dei file in `CLAUDE.md` | Claude legge il repository da solo. Scrivi solo ciò che non c'è. |
564 623
565Nel tempo, svilupperete un'intuizione che nessuna guida può catturare. Saprete quando essere specifici e quando essere aperti, quando pianificare e quando esplorare, quando cancellare il contesto e quando lasciarlo accumulare.624Se qualche altro consiglio in questa pagina inizia a sembrarti lavoro inutile, probabilmente è segno che anche quello appartiene a questa tabella.
566 625
567## Risorse correlate626## Risorse correlate
568 627
569* [How Claude Code works](https://code.claude.com/docs/it/how-claude-code-works.md): il ciclo agenziale, gli strumenti e la gestione del contesto628* [Come funziona Claude Code](https://code.claude.com/docs/it/how-claude-code-works.md): il ciclo, gli strumenti e cosa viene caricato all'avvio
570* [Extend Claude Code](https://code.claude.com/docs/it/features-overview.md): skill, hook, MCP, subagent e plugin629* [Esplora la finestra di contesto](https://code.claude.com/docs/it/context-window.md): cosa occupa spazio in una sessione e quando viene caricato
571* [Common workflows](https://code.claude.com/docs/it/common-workflows.md): ricette passo dopo passo per debug, test, PR e altro630* [Estendi Claude Code](https://code.claude.com/docs/it/features-overview.md): la scelta tra skill, hook, MCP, subagent e plugin
572* [CLAUDE.md](https://code.claude.com/docs/it/memory.md): archiviare le convenzioni del progetto e il contesto persistente631* [Scegli una modalità di permesso](https://code.claude.com/docs/it/permission-modes.md) e [Configura i permessi](https://code.claude.com/docs/it/permissions.md)
632* [Gestisci i costi in modo efficace](https://code.claude.com/docs/it/costs.md)
633* [Esegui Claude Code a livello di codice](https://code.claude.com/docs/it/headless.md) e [Automatizza il lavoro con le attività pianificate nel cloud](https://code.claude.com/docs/it/routines.md)
634* Per team lead e amministratori: [Configura Claude Code per la tua organizzazione](https://code.claude.com/docs/it/admin-setup.md)