9. Claude Code: agente da terminale per sviluppatori
Claude Code è il prodotto che stai usando ora (probabilmente). È un agente AI da terminale pensato specificamente per chi scrive codice. Per chi sviluppa, è oggi uno degli strumenti più produttivi sul mercato.
9.1 Cosa fa Claude Code
In una frase: un terminal-based agent che può leggere, modificare ed eseguire codice nel tuo progetto, sotto il tuo controllo.
Diversamente da ChatGPT (chat) o GitHub Copilot (autocomplete), Claude Code:
- Ha accesso reale al filesystem (legge ed edita file nel tuo repo).
- Può eseguire comandi shell (test, build, git).
- Lavora in loop autonomi: gli dai un obiettivo, esegue molti passi, ti riporta.
- Chiede conferma prima di azioni potenzialmente distruttive.
Esempi di prompt che funzionano:
"Trova il bug per cui il login fallisce con email maiuscola e fixalo, aggiungendo un test."
"Refactora il modulo
payments/per separare logica di business da quella di persistenza.""Aggiorna le dipendenze al major successivo, esegui i test, fixa quello che si rompe."
9.2 Installazione e setup base
# macOS / Linux
curl -fsSL https://claude.com/install.sh | sh
# o con npm
npm install -g @anthropic-ai/claude-code
Poi nel tuo progetto:
cd ~/my-project
claude
Si apre una sessione interattiva. Scrivi il tuo prompt, premi Invio, l'agente lavora.
9.3 La gerarchia dei file CLAUDE.md
Claude Code legge automaticamente file CLAUDE.md (e simili) per istruzioni persistenti del progetto. Ordine di precedenza:
~/.claude/CLAUDE.md— istruzioni globali (per tutti i tuoi progetti).<project>/CLAUDE.md— istruzioni di progetto (versionato in git).<project>/.claude/CLAUDE.local.md— istruzioni locali tue (gitignored).
Cosa metterci:
# Convenzioni del progetto
- Stack: Python 3.12, FastAPI, PostgreSQL, pytest.
- Stile: Black, isort, type hints obbligatori.
- Test: ogni nuovo endpoint richiede un test di integrazione.
# Comandi utili
- `make test` — esegue test unit + integration.
- `make lint` — lancia black + ruff + mypy.
- `make migrate` — esegue le migrations.
# Cose da NON fare
- Non modificare `legacy/` senza chiedere.
- Non aggiungere dipendenze senza valutare alternative.
Il file viene caricato a ogni avvio. Risparmi di ripetere lo stesso contesto a ogni sessione.
9.4 Slash commands
Comandi che inizi con / per azioni speciali. I principali:
/help— vedi tutti i comandi disponibili./init— genera unCLAUDE.mdanalizzando il progetto./clear— reset della conversazione (mantiene il working directory)./compact— comprime la storia (utile quando si avvicina al limite)./review— review della PR corrente./security-review— review specifico per problemi di sicurezza./model— cambia modello (es. da Sonnet a Opus per task difficili).
Puoi anche definire i tuoi slash command mettendo file .md in .claude/commands/ con istruzioni:
# .claude/commands/deploy.md
Esegui il deploy in staging:
1. Verifica che `main` sia pulito.
2. Tagga la versione corrente.
3. Esegui `./scripts/deploy.sh staging`.
4. Smoke test su https://staging.example.com.
5. Riporta esiti.
Poi in chat: /deploy → l'agente segue la procedura.
9.5 Hooks
Gli hook sono script shell che il sistema esegue in risposta a eventi (es. "dopo ogni edit di file", "prima di un commit"). Configurati in ~/.claude/settings.json o <project>/.claude/settings.json:
{
"hooks": {
"PostToolUse:Edit": [
{
"command": "make lint",
"matcher": {"path_regex": "src/.*\\.py$"}
}
],
"Stop": [
{"command": "say 'Claude ha finito'"}
]
}
}
Esempi utili:
- Post-edit di file Python: lancia ruff automaticamente.
- Post-edit di test: esegue solo i test interessati.
- Stop: notifica desktop o Slack quando l'agente ha finito un task lungo.
Gli hook sono potenti perché automatizzano controlli che altrimenti dipenderebbero dal modello.
9.6 MCP server: estendere i tool
Visto nel Cap. 6: i server MCP espongono tool che Claude Code può consumare.
Configurazione in .claude/settings.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {"GITHUB_TOKEN": "ghp_..."}
}
}
}
Una volta abilitati, Claude Code li vede come tool aggiuntivi disponibili. Puoi chiedere "apri la PR #123 e leggi i commenti" e l'agente userà il tool MCP GitHub.
9.7 Permessi e sicurezza
Claude Code chiede conferma prima di azioni rischiose. Puoi:
- Approvare una sola volta (default).
- Approvare per la sessione.
- Aggiungere una regola permanente in
settings.json:
{
"permissions": {
"allow": [
"Bash(npm test)",
"Bash(git status)",
"Edit(src/**)",
"Read(**)"
],
"deny": [
"Bash(rm -rf*)",
"Edit(.env*)"
]
}
}
Pattern consigliato:
- Read libero, Edit limitato a cartelle di codice, Bash con whitelist di comandi non distruttivi.
- Mai allow: ["*"] in settings globali.
Lo skill fewer-permission-prompts analizza i tuoi log e suggerisce permessi sensati.
9.8 Subagent: parallelizzare e specializzare
Claude Code può lanciare subagent per task delegati. Tipi tipici:
- Explore — esplora la codebase per trovare pattern, definizioni.
- Plan — progetta un piano di implementazione.
- claude-code-guide — risponde a domande sull'uso di Claude Code stesso.
Quando lanciare un subagent:
- Per ricerche ampie nel codebase (evita di "consumare" il tuo context con grep e tree).
- Per task indipendenti che possono andare in parallelo.
- Per delegare ricerca esterna mentre tu lavori sul task principale.
Esempio in chat:
"Esplora il codebase e trovami tutti i posti dove si fa parsing di date, riportami i pattern usati."
L'agente principale lancerà un subagent di tipo Explore per il lavoro di ricerca, ricevendo solo il riassunto finale (e risparmiando context).
9.9 Workflow tipici di sviluppo con Claude Code
Sviluppo di una feature
- Scrivi un breve spec in chat: cosa, perché, vincoli.
- Chiedi a Claude di creare un piano (
/plano "fammi un piano prima di scrivere"). - Rivedi il piano, correggi se serve.
- "Procedi". L'agente implementa, esegue test, itera.
- Tu fai code review della diff (
git diff). - Commit (manualmente o chiedendo a Claude).
Fix di un bug
- Descrivi il bug + come riprodurlo.
- "Trova la causa, proponi fix con test."
- Claude esplora, propone, scrive test, esegue.
- Tu valuti la diff e committi.
Refactor
- "Refactora X per Y. Vincoli: non rompere i test, mantieni la API pubblica."
- Lascia l'agente fare il lavoro grosso.
- Verifica che la diff sia minima e mirata. Se gonfia, chiedi di ripartire con vincoli più stretti.
Onboarding su un repo nuovo
/initper generare unCLAUDE.mddi base.- "Spiegami l'architettura di questo repo: principali moduli, dataflow, dipendenze."
- "Dove devo guardare per capire X?"
- Salva le scoperte in
CLAUDE.md.
9.10 Tips operativi
- Una sessione = un task. Non usare la stessa sessione per refactor + nuova feature + bug fix. Crea sessioni separate, o usa
/clear. - Dai contesto narrativo, non ordini secchi. "Stiamo migrando da X a Y, oggi tocca al modulo Z, attento al test E che è flaky" → molto più efficace di "modifica file W".
- Verifica le diff prima del commit. L'agente è bravo, non perfetto.
git diffè il tuo amico. - Usa il piano mode (
/plan) per task >30 minuti di lavoro: vedi cosa farà prima che lo faccia. - Quando si blocca, dagli più contesto, non più ordini. Se non capisce, di solito mancano informazioni.
- Scrivi
CLAUDE.mdman mano: ogni volta che spieghi una convenzione una volta, scrivila lì. Risparmi tempo per sempre. - Limiti di iterazione: per task lunghi, l'auto-compaction comprime la storia. Funziona bene ma nei task chirurgici può perdere dettagli — preferisci sessioni focalizzate.
9.11 Differenze con Cursor, Aider, Copilot
| Strumento | Modello | Pattern |
|---|---|---|
| Claude Code | Agente con loop, in terminale | Tu dai obiettivi, lui agisce |
| Cursor | IDE-first con AI integrata | Mix di autocomplete + chat in IDE |
| Aider | Agent CLI simile a Claude Code | Pre-Claude Code, modello-agnostico |
| Copilot | Autocomplete in editor | Suggerisce mentre scrivi |
Non sono mutuamente esclusivi. Molti dev usano Claude Code per task grossi e Copilot/Cursor per il flow quotidiano di typing.
9.12 Pratica: il primo task vero
Apri un tuo progetto in Claude Code e prova questo:
"Analizza il progetto e dimmi: 1) cosa fa in 3 frasi, 2) le 3 aree con più debito tecnico, 3) un quick win che potresti fare oggi."
In 5 minuti avrai un'analisi che richiederebbe ore a un nuovo dev. Da lì, decidi se vuoi farti aiutare a sistemare uno dei punti.
9.13 Da ricordare
- Claude Code = agente da terminale per dev. Legge, edita, esegue codice nel tuo repo, con conferma.
- CLAUDE.md salva le convenzioni del progetto: scrivi una volta, riutilizzi sempre.
- Slash commands automatizzano procedure ripetute.
- Hooks lanciano script in risposta a eventi (lint dopo edit, notifica a fine task).
- MCP estende i tool disponibili.
- Subagent per task delegabili senza saturare il context principale.
- Permessi a whitelist, mai "permetti tutto".
9.14 Errori tipici
- Usarlo come ChatGPT in chat. Senza dargli accesso ai file, sprechi il 90% del valore.
- Saltare il piano per task >30 minuti. Risultato: lavoro che va fuori scope.
- Non scrivere
CLAUDE.md. Ripeti le stesse istruzioni a ogni sessione. - Dare permessi troppo larghi. "Permetti Bash" = l'agente può fare
rm -rfsenza chiedere. - Non rivedere le diff. Il commit è tua responsabilità, non sua.
- Sessioni troppo lunghe e mischiate. Un task = una sessione, riapri quando cambi obiettivo.
Hai imparato a usare gli agenti già pronti. Adesso passiamo alla costruzione: come si fa un agente da zero, con codice tuo.