Introduzione all'agentic coding con Claude Code: installazione e configurazione

banner

Come l’agentic coding sta cambiando il mondo dello sviluppo software

Dall’annuncio di ChatGPT nel novembre 2022, il numero di strumenti per il cosiddetto augmented-coding è proseguito a una velocità senza precedenti. A distanza di ‘soli’ tre anni, siamo passati dall’interazione esclusivamente via chat ad avere a disposizione tool di ogni tipo e con capacità ben maggiori, che hanno bisogno di setup minimi e sono in grado di rivoluzionare l’esperienza giornaliera di qualsiasi professionista nel mondo tech.

Oggi prenderemo in considerazione l’utilizzo del tool che, probabilmente, si è più distinto nel corso dell’anno, Claude Code (sviluppato da Anthropic) e di come effettivamente il suo impiego cambi le dinamiche tipiche non solo della scrittura del codice, ma di tutto il ciclo dello sviluppo software a partire dalla riflessione sulle idee iniziali fino ai dettagli implementativi veri e propri.

In questo articolo, vedremo la configurazione base Claude Code in modo che possa collaborare efficacemente al nostro lavoro.

Installazione, configurazioni di base e comandi utili

Due sono i prerequisiti per utilizzare Claude Code:

  1. avere Node.js installato sulla propria macchina
  2. avere un account Claude.ai (piani Pro, Max) oppure avere un account Claude Console con utilizzo a consumo basato su api (piani Enterprise)

Il setup è oggettivamente istantaneo e una volta completato, si può lanciare Claude da un qualsiasi terminale semplicemente digitando claude. Esistono estensioni e plugin per tutti gli IDE più famosi (VSCode, JetBrains ecc) ma è importante sottolineare che si può anche semplicemente usare il terminale per utilizzare il tool.

Prima di mettere Claude alla prova, ci sono alcuni comandi che consiglio di utilizzare per impostare alcune opzioni interessanti:

  • /init farà generare a Claude il file CLAUDE.md

Questo file farà parte del contesto di ogni chiamata che verrà effettuata ed è quindi particolarmente utile per definire lo stile, i limiti entro cui far operare il tool ma soprattutto lo scopo del progetto in questione. Queste istruzioni ottimizzano enormemente l’esperienza di utilizzo dello strumento. Si può anche creare un file CLAUDE.md nel basepath ~/.claude in modo da specificare quelle che si ritengono le regole generali una volta sola, mentre maggiori dettagli possono essere specificati nel file CLAUDE.md del progetto: entrambi verranno presi in considerazione da Claude e faranno sempre parte del contesto delle nostre chat.

Un esempio pratico: se si sviluppa in Go, inserire nel ~/.claude/CLAUDE.md le linee guida per lo stile di scrittura del codice e dei test che si usano evita di doverle specificare per ogni progetto.

Giusto per completezza, riporto un estratto del CLAUDE.md che utilizzo per lo sviluppo in Go:

...

## Core Principles

1. **Simplicity over cleverness** - Write idiomatic Go that's immediately understandable
2. **Leverage standard library** - Use `net/http`, `encoding/json`, etc. Don't reinvent
3. **Single responsibility** - Functions do one thing, typically under 20-30 lines
4. **Early returns** - Guard clauses over nested conditionals (idiomatic Go)
5. **Match existing patterns** - Follow the file's conventions exactly
6. **Accept interfaces, return structs** - Keep APIs flexible and implementations concrete
7. **Handle errors explicitly** - No silent failures, wrap errors with context

## Go-Specific Guidelines

### Error Handling
\```
// Always check errors immediately
result, err := doSomething()
if err != nil {
return fmt.Errorf("doing something: %w", err)
}
\```

### Project Layout
- Use `internal/` for code that shouldn't be imported by other projects
- Use `pkg/` only for truly reusable libraries
- Keep `cmd/` thin - just initialization and wiring
- Business logic belongs in `internal/service/` or domain packages

### Naming Conventions
- Packages: short, lowercase, no underscores (`handler` not `http_handler`)
- Interfaces: `-er` suffix for single-method (`Reader`, `Writer`)
- Getters: no `Get` prefix (`Balance()` not `GetBalance()`)
- Acronyms: all caps in names (`HTTPServer`, `userID`)

...
  • /model permette di scegliere quale modello utilizzare, tre le opzioni principali: – Opus 4.5, il modello più capace consigliato per compiti complessi – Sonnet 4.5 (default), il modello settato di default idoneo per compiti di ogni tipo – Haiku 4.5, il modello più rapido e un po’ meno preciso, ma con finestre di utilizzo ampie e costi relativamente contenuti

È importante scegliere con cura il modello da utilizzare anche in base al proprio tipo di account: un account PRO non avrà i costi a chiamata ma raggiungerà il limite di utilizzo molto più rapidamente rispetto ad account di tier superiore e questo dipenderà in gran parte dal modello che si utilizza. Scegliere il modello giusto per il tipo di sessione che si vuole svolgere può migliorare di molto la qualità e, soprattutto, la durata della sessione.

  • /context offre una panoramica sul contesto attuale in termini di dimensioni e altri dettagli. Utile per evitare che il contesto si esaurisca facendo degradare la qualità delle risposte.

  • /clear resetta il contesto attuale, utile nelle sessioni più lunghe.

  • /cost in caso di utilizzo tramite api, permette di monitorare i costi della sessione in corso. Utile soprattutto per il portafoglio.

Ci sono molti altri comandi, questa è solo la superficie. Esploreremo le configurazioni più avanzate (skills, agents, hooks e così via) in un altro momento.

Panoramica per configurazioni avanzate

Quello di cui abbiamo parlato rappresenta una frazione delle potenzialità dello strumento, ma credo sia importante citare alcune opzioni di personalizzazione avanzata, che permettono di elevare la qualità della collaborazione a un livello molto più profondo.

Possiamo riassumere così l’organizzazione sui file di configurazione più avanzata:

~/.claude/
├── settings.json          # Opzioni globali (thinking, tokens, plugins)
├── agents/                # Definizione di agents (/agent per crearne uno da terminale) specializzati che possono essere invocati da ├                            Claude, anche in parallelo
├── skills/                # Domain expertise (Linguaggi di programmazione, design patterns, CI/CD, etc.)
├── commands/              # Definizione di workflow per task specializzati (/analyze-bug, /simplify, /optimize-implementation) che
├                            puoi invocare dal terminale come i comandi default di Claude Code
├── hooks/                 # Regole per mettere paletti chiari (warn/block patterns)
└── plugins/               # Plugin di terze parti e tool esterni

project/
├── CLAUDE.md              # Project-specific instructions
└── .claude/
    ├── ...                # Configurazioni specifiche a livello di progetto

Una blueprint di esempio di settings.json che la seguente:

{
  "includeCoAuthoredBy": false,
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "64000",
    "MAX_THINKING_TOKENS": "31999"
  },
  "alwaysThinkingEnabled": true,
  "permissions": {
    "allow": [
      # git permissions, bash commands and so on
    ],
    "deny": [
      # bash tools to avoid, path that contains PII and so on
    ]
  },
}

Definire le permissions.allow è utile per evitare di dover dare esplicitamente i permessi per fare azioni ricorrenti (come usare git) a ogni sessione.

Le opzioni sono davvero moltissime e la documentazione fornita da Anthropic è di qualità molto elevata, io trovo efficace avere delle regole generali definite globalmente per qualsiasi progetto a cui lavoro così come definire allo stesso modo agenti, comandi personalizzati, hooks, skills e così via è da tenere in considerazione per creare il proprio setup ideale.

Approfondiremo queste opzioni in altri momenti a Claude Code, ma quanto appena citato permette di ottimizzare la propria esperienza di utilizzo, anche se non è strettamente necessario. Diciamo che più tempo si spende nel creare la configurazione più idonea al nostro stile, migliore sarà probabilmente il risultato finale ottenuto.

Non resta che mettersi alla prova con Claude Code e vedere fin dove il suo utilizzo può farvi arrivare!

Nel prossimo articolo vedremo Claude Code in azione con esempi pratici, best practices e consigli per ottenere il massimo dal tool.

Post correlati

TheRedCode.it - Il mondo #tech a piccoli #bit

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di DevDojo

Vuoi diventare #tech content creator? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!