La guida all'IA che scrive codice, legge file, esegue comandi e fa il lavoro sporco mentre tu pensi a cosa ordinare per pranzo.
Da "cos'è un token" a "ho delegato il 90% del mio lavoro a un robot"
"Il vero ingegnere pigro non automatizza il lavoro. Chiede a un'IA di automatizzare il lavoro per lui."
Non è ChatGPT. Non è un plugin. Non è Copilot. È molto peggio (per la tua produttività).
Immagina di avere un collega junior instancabile che non dorme mai, non va in pausa pranzo, non si lamenta, legge qualsiasi file in un secondo, e fa tutto quello che gli dici. Il problema? Ogni tanto inventa cose che non esistono con una sicurezza impressionante. È il tirocinante più bravo e più pericoloso che tu abbia mai avuto.
Claude Code è un tool da terminale. Lo lanci, gli parli, e lui legge file, scrive codice, esegue comandi, crea commit, apre PR. Tutto dal terminale. Zero interfaccia grafica. Come piace a noi.
ChatGPT è una chat. Gli scrivi, ti risponde. Fine.
Claude Code è un agente. Gli dici "sistema questo bug", e lui legge i file, trova il problema, edita il codice, esegue i test, e ti dice "fatto". Tu nel frattempo stavi su Reddit.
Apri ChatGPT → copia il codice → incolla nel file → non funziona → torna su ChatGPT → "non funziona" → copia → incolla → errore diverso → 47 tab aperte → 😵
"fixxa il bug nel login" → legge i file → trova il problema → edita → testa → "fatto, vuoi che committo?" → 😎
Qualsiasi file del progetto, immagini incluse
Modifica chirurgica o riscrittura completa
npm, git, docker, qualsiasi cosa nel terminale
Grep, glob, ricerca semantica nel codebase
Fetch di pagine, ricerche web, documentazione
Sub-agenti paralleli per task complessi
Il loop Prompt → Pensa → Tool → Risultato che fa la magia
Immagina un cuoco che non ha la ricetta. Gli dici "fammi una carbonara". Lui pensa a cosa serve, apre il frigo (legge file), prende gli ingredienti (cerca nel codice), cucina (edita/esegue), e poi ti chiede "va bene così?". Se dici "troppo sale", aggiusta. Questo è il loop di Claude Code.
Claude Code non è solo una chat. Ha accesso a strumenti reali che usa autonomamente:
| Tool | Cosa fa | Esempio |
|---|---|---|
Read | Legge un file | Legge src/auth.js per capire il bug |
Edit | Modifica chirurgica di un file | Cambia la riga 42 con il fix |
Write | Crea o sovrascrive un file | Crea un nuovo componente da zero |
Bash | Esegue un comando nel terminale | npm test, git status |
Grep | Cerca pattern nel codice | Trova tutte le occorrenze di TODO |
Glob | Trova file per pattern | Trova tutti i *.test.ts |
Agent | Lancia un sub-agente | Agente parallelo per esplorare il codebase |
WebSearch | Cerca sul web | Cerca documentazione di una libreria |
WebFetch | Scarica una pagina web | Legge la docs di un'API |
3 comandi e sei operativo. Lo svogliato approva.
# Installa Claude Code globalmente
npm install -g @anthropic-ai/claude-code
# Vai nella cartella del tuo progetto
cd il-tuo-progetto/
# Lancia Claude Code
claude
# La prima volta ti chiede di autenticarti
# Segui le istruzioni per collegare il tuo account Anthropic
Hai 2 opzioni:
1. Account Anthropic (consigliato) — colleghi il tuo account claude.ai e usi i token inclusi nel tuo piano Pro/Max.
2. API Key — generi una chiave su console.anthropic.com e paghi a consumo. Più flessibile, più pericoloso per il portafoglio.
# Con API key (in variabile d'ambiente)
export ANTHROPIC_API_KEY="sk-ant-..."
claude
Quello che ti serve:
✓ Node.js 18+ — se non ce l'hai, stai vivendo nel passato
✓ npm — viene con Node
✓ Account Anthropic — o API key
✓ Un progetto — Claude Code funziona meglio dentro una cartella di progetto con codice vero
✓ Git — opzionale ma consigliato (Claude Code sa fare commit e PR)
Quando lanci claude nella cartella del progetto, succede questo:
Legge la struttura delle cartelle, trova i file importanti, cerca un CLAUDE.md per le istruzioni personalizzate.
Appare la riga di input. Scrivi cosa vuoi. In italiano, in inglese, come ti pare. Non è un esame.
La prima volta che vuole leggere un file, editare qualcosa, o eseguire un comando, ti chiede "posso?". Puoi dire sì, no, o "sì sempre".
Fa il suo loop: pensa, usa tool, mostra risultati. Tu guardi. O guardi il telefono. Nessuno ti giudica.
Slash command, scorciatoie, e i trick che ti faranno sembrare un pro
| Comando | Cosa fa |
|---|---|
claude | Lancia la sessione interattiva nella cartella corrente |
claude "fai X" | Lancia con un prompt iniziale diretto |
claude -p "fai X" | Modalità print: esegue, stampa il risultato, esce. Perfetto per script |
claude -c | Continua l'ultima conversazione (riprendi dove avevi lasciato) |
claude -r | Riprendi una sessione specifica |
cat file | claude "analizza" | Pipe: passa l'output di un comando come contesto |
Questi li scrivi dentro Claude Code, non nel terminale:
| Comando | Cosa fa | Quando usarlo |
|---|---|---|
/help | Mostra l'aiuto | Quando non sai cosa fare (come nella vita) |
/clear | Pulisce la conversazione | Quando il contesto è troppo pieno |
/compact | Comprime la conversazione | FONDAMENTALE per risparmiare token |
/cost | Mostra quanto hai speso | Quando vuoi deprimerti |
/commit | Crea un commit Git | Dopo aver fatto modifiche |
/review | Revisiona le modifiche | Prima di committare |
/fast | Toggle modalità veloce | Stesso modello, output più rapido |
| Tasto | Cosa fa |
|---|---|
Enter | A capo (nella finestra di input multilinea) |
Ctrl+J / Opt+Enter | Invia il messaggio |
Esc | Annulla l'operazione corrente / torna indietro |
Esc + Esc | Esce da Claude Code |
Tab | Accetta il suggerimento / autocomplete |
! comando | Esegui un comando shell senza uscire da Claude |
! npm test esegue i test direttamente nella sessione Claude. L'output entra nel contesto, così Claude può vedere gli errori e fixarli subito.
Claude Code chiede permesso prima di fare cose. Hai 3 modalità:
Chiede per ogni azione. Sicuro ma lento. Per i paranoici.
Approva automaticamente lettura e scrittura file. Più fluido.
Approva TUTTO automaticamente. Per i coraggiosi (o gli incoscienti). Usa --dangerously-skip-permissions.
rm -rf senza chiederti niente. Non usarlo su produzione. Non usarlo su niente che ti importa. In realtà, probabilmente non usarlo e basta.
Come chiedere le cose per ottenere risultati, non allucinazioni
Scrivere un buon prompt è come ordinare al ristorante. Se dici "portami qualcosa di buono" non lamentarti se arriva la trippa. Se dici "pasta alla carbonara, guanciale croccante, niente panna, per uno" — il risultato è esattamente quello che vuoi.
"fixxa il bug"
Quale bug? Dove? Cosa succede? Claude deve indovinare tutto.
"il login in src/auth.ts ritorna 500 quando l'utente ha spazi nel nome. Fixxa senza rompere i test esistenti."
Chiaro, specifico, con vincoli. Claude sa esattamente cosa fare.
Non: "apri il file X, cerca la riga Y, cambia Z". Sì: "il componente Header non gestisce il dark mode, aggiungilo". Claude è bravo a decidere il come.
"il file auth.ts", "nella cartella src/components", "come fatto per il componente Footer". Più contesto = meno allucinazioni = meno token sprecati.
"senza rompere i test", "usa TypeScript strict", "non aggiungere dipendenze". I vincoli evitano che Claude si lanci in refactor epici non richiesti.
Non: "fixxa il bug, aggiungi i test, refactora il modulo, e aggiorna la docs". Fai una cosa, verifica, poi la prossima. Meno confusione, meno token.
Se Claude va nella direzione sbagliata, fermalo subito con Esc e correggi. Non lasciarlo finire 47 modifiche sbagliate — spreca token e tempo.
Il file che trasforma Claude da "collega nuovo" a "collega che sa come lavori"
CLAUDE.md è come il foglio di istruzioni che lasci al tuo sostituto quando vai in ferie. "Il deploy si fa così, i test si lanciano cosà, non toccare MAI quel file, il capo vuole le cose in questo formato." Senza quel foglio, il sostituto fa casino. Con quel foglio, quasi quasi puoi restare in ferie.
Un file Markdown nella root del progetto che Claude Code legge automaticamente a ogni sessione. Ci metti:
# Progetto: E-commerce Svogliati
## Comandi
- Build: `npm run build`
- Test: `npm test`
- Test singolo: `npm test -- --grep "nome test"`
- Lint: `npm run lint`
- Dev server: `npm run dev` (porta 3000)
## Struttura
- src/components/ — React components (PascalCase)
- src/hooks/ — Custom hooks (useCamelCase)
- src/api/ — Chiamate API (REST, no GraphQL)
- src/utils/ — Utility pure functions
- tests/ — Mirror di src/ con .test.ts
## Convenzioni
- TypeScript strict mode
- Niente `any` (mai, davvero, mai)
- Componenti funzionali, no classi
- CSS Modules, no inline styles
- Import assoluti con alias @/
## NON fare
- NON modificare src/legacy/ (in fase di migrazione)
- NON aggiungere dipendenze senza chiedere
- NON usare console.log (usa il logger custom)
- NON committare su main direttamente
Ci sono 3 livelli di CLAUDE.md:
1. Progetto — ./CLAUDE.md nella root. Il più importante.
2. Sottocartella — ./src/CLAUDE.md per regole specifiche di un modulo.
3. Utente — ~/.claude/CLAUDE.md per le tue preferenze globali (stile, lingua, ecc.).
Senza CLAUDE.md, devi ripetere le stesse istruzioni a ogni sessione:
"Usa TypeScript, non aggiungere any, i test sono in tests/, usa il logger..."
Con CLAUDE.md, queste info sono automatiche. Risparmi:
✓ Token — non ripeti istruzioni
✓ Tempo — Claude sa già come lavori
✓ Errori — meno "scusa, volevo dire che..."
I superpoteri preconfigurati per lo svogliato che non vuole nemmeno scrivere il prompt
Le Skills sono come i numeri rapidi del telefono. Invece di digitare tutto il numero ogni volta, premi 1 e chiami mamma. Premi /commit e Claude fa il commit perfetto senza che tu debba spiegare come vuoi il messaggio.
Queste sono già pronte all'uso:
| Skill | Cosa fa | Livello Pigrizia |
|---|---|---|
/commit |
Analizza le modifiche, scrive un messaggio di commit sensato, committa | MASSIMO |
/review |
Code review automatica delle modifiche in corso | MASSIMO |
/simplify |
Revisiona il codice modificato per qualità e semplicità | ALTO |
/fast |
Attiva/disattiva output veloce (stesso modello, più rapido) | MEDIO |
/compact |
Comprime la conversazione per risparmiare token | RISPARMIO |
Puoi creare le tue skills personalizzate. Sono file Markdown in .claude/commands/:
# Quando l'utente scrive /deploy, Claude esegue:
Esegui il deploy seguendo questi step:
1. Lancia i test con `npm test`
2. Se passano, fai build con `npm run build`
3. Committa con messaggio "deploy: [descrizione]"
4. Pusha su origin
5. Mostrami il risultato
Se un test fallisce, fermati e mostrami l'errore.
NON procedere con il deploy se i test falliscono.
# Ora puoi usarlo così:
/deploy
# Ed è come se avessi scritto tutto quel prompt
# Ma con un solo comando. La pigrizia al potere.
/pr che crea una Pull Request con titolo, descrizione e test plan. Una skill /fix-lint che lancia il linter e fixxa automaticamente. Una skill /morning che ti fa il riassunto di cosa è cambiato nel repo. Il limite è la tua fantasia (e il tuo budget token).
Quando un'IA non basta, ne lanci tre in parallelo
Il main agent è il capo cantiere. Quando il lavoro è grosso, chiama dei sottoposti (sub-agent) e gli dice "tu vai a controllare le fondamenta, tu vai a verificare l'impianto elettrico, tu misura le finestre". Lavorano in parallelo, ognuno con il suo compito, e poi riportano al capo che fa il quadro completo.
Specializzato nell'esplorare il codebase. Veloce nel trovare file, pattern, capire l'architettura. Usalo quando:
✓ "Come funziona il modulo di autenticazione?"
✓ "Trova tutti gli endpoint API"
✓ "Qual è il pattern usato per i test?"
L'architetto. Progetta la strategia prima di scrivere codice. Usalo per:
✓ Refactoring grandi
✓ Feature complesse
✓ Quando dici "come struttureresti..."
Ogni sub-agent può lavorare in un worktree isolato: una copia temporanea del repo dove può fare le sue modifiche senza toccare il tuo codice. Se le modifiche sono buone, vengono unite. Se no, si butta tutto.
Come dare a Claude Code accesso a tutto il resto del mondo
Di default Claude Code sa leggere file ed eseguire comandi. MCP (Model Context Protocol) è come dargli il badge per entrare in altri edifici: database, Slack, GitHub, Gmail, Google Calendar, Jira, Figma... Ogni server MCP è un "badge" per un servizio diverso.
Nel file .claude/settings.json del tuo progetto:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_..."
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
}
}
}
.env nel .gitignore.
Issues, PR, code search dal repo
Query SQL, schema, dati di test
Leggi canali, invia messaggi
Leggi e gestisci le email
Eventi, disponibilità, scheduling
Crea il tuo server MCP per qualsiasi API
Perché ogni token è un centesimo che se ne va. A volte anche due.
I token sono come i dati del telefono. Ogni messaggio, ogni file letto, ogni risposta consuma dati. Se guardi Netflix in 4K (prompt vaghi su codebase enormi) finisci i giga in un'ora. Se guardi video in 480p (prompt precisi, contesto pulito) arrivi a fine mese.
Input (quello che mandi)
Output (quello che ricevi)
/cost.
Quando la conversazione diventa lunga, /compact comprime il contesto mantenendo le info importanti. Meno contesto = meno token per ogni messaggio successivo.
Se passi da "fixxa il bug" a "aggiungi una feature", pulisci. Il contesto del bug non serve più e paga token a vuoto.
Le istruzioni nel CLAUDE.md vengono caricate una volta sola per sessione. Meglio 20 righe in CLAUDE.md che ripetere le stesse istruzioni in 5 prompt diversi.
"Fixxa il bug in src/auth.ts riga 42" costa MOLTO meno di "c'è un bug da qualche parte nel login" (che forza Claude a leggere 20 file per trovarlo).
Esc. Immediatamente. Se Claude sta andando nella direzione sbagliata, ogni secondo in più è token bruciati. Correggi e rilancia.
Non serve Opus per un rename di variabile. Sonnet è 5x più economico e per il 90% dei task basta e avanza. Opus solo per roba complessa.
Sessioni brevi e focalizzate. "Fixxa X" → verifica → /clear → "Aggiungi Y". Meno contesto accumulato = meno costo.
Monitora la spesa. Se vedi che una sessione sta costando troppo, è il segnale per compattare o ricominciare.
"c'è un bug" → Claude legge 40 file → trova niente → "ah, è nel login" → Claude rilegge → ~$3 bruciati per nulla
"bug in auth.ts:42, ritorna null invece dell'utente" → Claude legge 1 file → fixxa → ~$0.10
I trick che ti fanno sembrare un 10x developer (sei un 0.1x che usa Claude Code)
Claude Code legge le immagini. Fai uno screenshot del bug, del design Figma, dell'errore nel browser, e passalo come input.
# Passa uno screenshot come contesto
claude "implementa questo design" --file screenshot.png
Sì, puoi letteralmente mandare uno screenshot di un mockup Figma e dirgli "fallo". Il futuro è adesso.
L'output di qualsiasi comando può diventare contesto per Claude:
# Log di errore come contesto
cat error.log | claude "cosa è andato storto?"
# Diff come contesto per code review
git diff | claude "review queste modifiche"
# Output di test falliti
npm test 2>&1 | claude "fixxa i test che falliscono"
Claude Code ha un sistema di memoria persistente. Ricorda cose tra una sessione e l'altra:
# Digli di ricordare qualcosa
"Ricorda che il deploy va fatto solo il martedì"
# Nella prossima sessione, lo sa già
"Posso deployare oggi?"
# "No, oggi è mercoledì. Il deploy va fatto solo il martedì."
Le memorie vengono salvate in ~/.claude/projects/ come file Markdown. Puoi anche editarle a mano.
Gli hooks eseguono comandi automaticamente in risposta a eventi di Claude Code:
{
"hooks": {
"afterEdit": [
{
"command": "npx prettier --write $FILE",
"description": "Formatta dopo ogni edit"
}
]
}
}
Così ogni volta che Claude edita un file, Prettier lo formatta automaticamente. Zero sforzo.
Il prompt più potente per lo svogliato supremo:
La flag -p (print mode) lo rende perfetto per automazioni e script:
# Review automatica prima del commit (in un git hook)
claude -p "Controlla le modifiche staged per bug, security issue, e best practice. Rispondi solo OK o lista problemi."
# Generazione changelog automatica
git log --oneline -20 | claude -p "Genera un changelog da questi commit, raggruppato per tipo"
# Analisi di un file di log
claude -p "Analizza /var/log/app.log delle ultime 24h. Ci sono anomalie?"
Quando Claude Code fa i capricci (succede)
Causa: Sei nella cartella sbagliata, o il file è in .gitignore e Claude lo rispetta.
Fix:
# Verifica di essere nella cartella giusta
pwd
# Lancia claude dalla root del progetto
cd /path/to/progetto && claude
Causa: Hai raggiunto il limite del tuo piano o della tua API key.
Fix:
1. Controlla con /cost quanto hai speso
2. Usa /compact per ridurre il contesto
3. Aspetta il reset (piani Pro/Max hanno limiti orari/giornalieri)
4. Passa a Sonnet/Haiku per task semplici (costano meno)
5. Valuta un upgrade di piano se succede spesso
Causa: Prompt troppo vago, o Claude ha interpretato male.
Fix:
# Claude ha un "undo" integrato per le sue modifiche
# Ma il modo più sicuro è sempre Git:
git checkout -- path/al/file/sbagliato
# Oppure, se hai fatto un commit troppo in fretta:
git revert HEAD
Lezione: Committa spesso. Così puoi sempre tornare indietro. E questo vale con o senza IA.
Causa: Le IA a volte inventano funzioni, API, o librerie che non esistono. Con grande sicurezza.
Fix:
1. Verifica sempre le dipendenze che suggerisce (npm info pacchetto)
2. Esegui i test dopo ogni modifica
3. Sii specifico nel prompt: "usa SOLO le librerie già nel package.json"
4. Mettilo nel CLAUDE.md: "Non aggiungere dipendenze senza chiedere"
Regola d'oro: L'IA scrive il codice, tu lo verifichi. Sempre. Non fidarti mai al 100%.
Causa: Contesto troppo grande. Ogni messaggio porta con sé tutta la storia della conversazione.
Fix:
1. /compact — comprime la conversazione
2. /clear — ricomincia da zero (se puoi)
3. Chiudi e rilancia claude per una sessione pulita
4. Usa claude -c se vuoi riprendere ma con contesto ridotto
git checkout . e tornare allo stato precedente. L'IA può sbagliare. Git no.
La pagina che stampi (o bookmarki, siamo nel 2026)
| Cosa vuoi fare | Comando |
|---|---|
| Lanciare Claude Code | claude |
| Lanciare con prompt diretto | claude "fai X" |
| Continuare l'ultima sessione | claude -c |
| Modalità script (no interattivo) | claude -p "fai X" |
| Passare un file come contesto | cat file | claude "analizza" |
| Comprimere la conversazione | /compact |
| Pulire la conversazione | /clear |
| Vedere il costo | /cost |
| Fare un commit | /commit |
| Code review | /review |
| Modalità veloce | /fast |
| Eseguire un comando shell | ! npm test |
| Annullare l'operazione corrente | Esc |
| Uscire | Esc + Esc |
| Tipo di Task | Pattern di Prompt |
|---|---|
| Bug fix | "In [file:riga] succede X invece di Y. Fixxa." |
| Nuova feature | "Aggiungi [cosa] in [dove], seguendo il pattern di [esempio esistente]." |
| Refactor | "Refactora [cosa] da [vecchio pattern] a [nuovo pattern]. Non rompere i test." |
| Test | "Aggiungi test per [funzione] in [file]. Copri i casi: [lista]." |
| Capire codice | "Spiegami come funziona [modulo/funzione]. Partendo dall'entry point." |
| Code review | "Fai review di [file/diff]. Cerca bug, security issue, e bad practice." |
| Migrazione | "Migra [file] da [vecchia lib] a [nuova lib]. Mantieni lo stesso comportamento." |
Prompt specifico + /compact + Sonnet
Task singoli + /clear tra task + CLAUDE.md
Prompt vaghi + contesto enorme + Opus per tutto