Salta al contenuto principale

12 - Claude Code CLI: Comandi Essenziali e Configurazione

Claude Code CLI: Comandi Essenziali e Configurazione Claude Code non è solo un assistente AI: è un terminale potenziato che si integra nel workflow...

Cosa ne pensi di questo articolo?

12 - Claude Code CLI: Comandi Essenziali e Configurazione
ClaudeFoto:Matheus BertelliPexels

In Breve

Claude Code CLI: Comandi Essenziali e Configurazione Claude Code non è solo un assistente AI: è un terminale potenziato che si integra nel workflow...

Claude Code CLI: Comandi Essenziali e Configurazione

Claude Code non è solo un assistente AI: è un terminale potenziato che si integra nel workflow quotidiano dello sviluppatore. Dalla riga di comando, puoi gestire file, eseguire build, lanciare test, analizzare codice e orchestrare task complessi, tutto attraverso un'interfaccia conversazionale che comprende il contesto del tuo progetto.

In questo dodicesimo articolo della serie, esploreremo in profondità la Command Line Interface di Claude Code: i metodi di installazione su ogni piattaforma, le scorciatoie da tastiera che accelerano il lavoro, i comandi slash per il controllo dell'agente, la gerarchia di configurazione a quattro livelli, i template di permessi per la sicurezza e la modalità headless per l'automazione CI/CD.

Cosa Imparerai

  • Installare Claude Code su macOS, Linux, Windows e WSL
  • Padroneggiare le scorciatoie da tastiera per velocizzare il workflow
  • Usare tutti gli slash commands disponibili
  • Comprendere la gerarchia di configurazione a 4 livelli
  • Configurare template di permessi per diversi scenari di sicurezza
  • Eseguire Claude Code in modalità headless per pipeline CI/CD
  • Risolvere problemi comuni di installazione e configurazione
  • Ottimizzare l'esperienza CLI per il lavoro quotidiano

Panoramica della Serie Completa

#ArticoloFocus
1Claude come Partner TecnicoSetup e primi passi
2Contesto e Setup del ProgettoCLAUDE.md e configurazione
3Ideazione e RequisitiMVP e user personas
4Architettura Backend e FrontendSpring Boot e Angular
5Struttura del CodiceOrganizzazione e convenzioni
6Prompt Engineering AvanzatoTecniche avanzate
7Testing e qualitàStrategie e generazione test
8Documentazione ProfessionaleREADME, API, ADR
9Deploy e DevOpsDocker, CI/CD, monitoring
10Evoluzione e ManutenzioneRefactoring e scalabilità
11Integrazione Progetto RealeClaude Code in produzione
12Claude Code CLI (sei qui)Comandi e configurazione
13Agent Skillscapacità modulari
14Subagenti SpecializzatiAgenti con ruoli specifici
15Hooks e AutomazioneEvent-driven workflows
16Ralph Wiggum MethodSviluppo guidato da test
17BMAD MethodGestione progetti strutturata
18Orchestrazione Multi-AgentePipeline di agenti
19Collaborative WorkTeam e pair programming AI
20Sicurezza e Best PracticeHardening e compliance
21Monitoring e ObservabilityMetriche e debugging

1. Installazione di Claude Code

Claude Code supporta molteplici piattaforme e metodi di installazione. La scelta del metodo dipende dal sistema operativo e dalle preferenze personali. Tutti i metodi installano lo stesso binario claude che viene aggiunto al PATH di sistema.

Prerequisiti

Prima di procedere con l'installazione, assicurati di avere i seguenti requisiti soddisfatti sul tuo sistema:

Requisiti di Sistema

RequisitoVersione MinimaNote
Node.js 18.0+ Necessario per il runtime JavaScript
npm 9.0+ Incluso con Node.js
Git 2.30+ Per operazioni su repository
Sistema Operativo macOS 12+, Ubuntu 20.04+, Windows 10+ (WSL2) Supporto nativo Linux e macOS, WSL per Windows
Account Anthropic Piano Pro, Max o Team Necessario per l'autenticazione API

Metodo 1: Installazione tramite npm (Consigliato)

Il metodo più universale è l'installazione globale tramite npm. Funziona su tutte le piattaforme dove Node.js è disponibile e garantisce aggiornamenti semplici.

Installazione globale con npm
# Installazione globale
npm install -g @anthropic-ai/claude-code

# Verifica installazione
claude --version

# Primo avvio e autenticazione
claude

# Aggiornamento alla versione più recente
npm update -g @anthropic-ai/claude-code

Metodo 2: Installazione tramite curl (macOS e Linux)

Per chi preferisce evitare npm, è disponibile uno script di installazione diretto che scarica il binario precompilato. Questo metodo è particolarmente utile in ambienti senza Node.js preinstallato.

Installazione con curl
# macOS e Linux
curl -fsSL https://cli.anthropic.com/install.sh | sh

# Verifica che il binario sia nel PATH
which claude
# Output atteso: /usr/local/bin/claude

# Prima esecuzione
claude

Metodo 3: Installazione tramite Homebrew (macOS)

Gli utenti macOS che utilizzano Homebrew come package manager possono installare Claude Code attraverso il tap ufficiale. Questo metodo integra Claude Code nella gestione centralizzata dei pacchetti di Homebrew.

Installazione con Homebrew
# Aggiungere il tap ufficiale Anthropic
brew tap anthropics/claude-code

# Installazione
brew install claude-code

# Aggiornamento
brew upgrade claude-code

# Verifica versione
claude --version

Metodo 4: Installazione su Windows (PowerShell + WSL)

Su Windows, Claude Code richiede WSL2 (Windows Subsystem for Linux) per funzionare correttamente. L'installazione può essere eseguita direttamente dalla PowerShell di Windows o dall'interno del terminale WSL.

Installazione su Windows con WSL
# Passo 1: Installare WSL2 (se non già installato)
wsl --install

# Passo 2: Aprire il terminale WSL (Ubuntu)
wsl

# Passo 3: Installare Node.js nel WSL
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

# Passo 4: Installare Claude Code
npm install -g @anthropic-ai/claude-code

# Passo 5: Verificare
claude --version

# Alternativa: Installazione diretta da PowerShell
# (Richiede Node.js installato su Windows)
npm install -g @anthropic-ai/claude-code

Nota sulla Compatibilità Windows

Claude Code su Windows funziona meglio con WSL2 perchè molti tool di sviluppo (Git, compilatori, tool di build) sono nativamente supportati su Linux. Se lavori con progetti che richiedono strumenti Unix-like, WSL2 è fortemente raccomandato. L'esperienza con PowerShell nativa è supportata ma può avere limitazioni con alcuni comandi di sistema.

Autenticazione

Dopo l'installazione, il primo avvio di claude avvia il flusso di autenticazione. Claude Code supporta due metodi di autenticazione principali.

Metodi di Autenticazione

MetodoUsoConfigurazione
Anthropic Console Account individuali Pro/Max Login via browser automatico al primo avvio
API Key Account Team, Enterprise, CI/CD Variabile d'ambiente ANTHROPIC_API_KEY
AWS Bedrock Enterprise su infrastruttura AWS Configurazione credenziali AWS
Google Vertex AI Enterprise su infrastruttura GCP Configurazione credenziali Google Cloud
Configurazione API Key
# Metodo 1: Variabile d'ambiente (sessione corrente)
export ANTHROPIC_API_KEY="sk-ant-api03-xxxxx"

# Metodo 2: File .env nella root del progetto
echo 'ANTHROPIC_API_KEY=sk-ant-api03-xxxxx' >> .env

# Metodo 3: Configurazione permanente in .bashrc o .zshrc
echo 'export ANTHROPIC_API_KEY="sk-ant-api03-xxxxx"' >> ~/.zshrc
source ~/.zshrc

# Verifica autenticazione
claude --print-auth-status

2. Scorciatoie da Tastiera

Le scorciatoie da tastiera sono fondamentali per un uso efficiente di Claude Code. Conoscerle permette di passare rapidamente tra modalità operative, gestire il contesto e controllare il flusso di esecuzione senza interrompere il ritmo di lavoro.

Tabella Completa delle Scorciatoie

ScorciatoiaAzioneDescrizione Dettagliata
! Bash Mode Attiva la modalità Bash diretta. Digita ! seguito dal comando per eseguirlo nel terminale senza che Claude lo interpreti come prompt. Esempio: !npm test esegue direttamente i test.
@ Mention File/Folder Menziona un file o una cartella per aggiungerli al contesto corrente. Supporta autocompletamento con Tab. Esempio: @src/app/services/ carica l'intera cartella nel contesto.
Esc Interrupt Interrompe l'operazione corrente di Claude. Utile quando una generazione sta prendendo una direzione sbagliata o impiega troppo tempo.
Esc + Esc Rewind Menu Doppia pressione di Escape apre il menu di rewind che permette di tornare a uno stato precedente della conversazione, annullando le ultime azioni di Claude.
Ctrl+R Full Output Mostra l'output completo dell'ultimo comando eseguito, incluse le parti che potrebbero essere state troncate per brevita.
Shift+Tab Auto-Accept (YOLO Mode) Attiva la modalità di accettazione automatica per le operazioni successive. Claude eseguira le azioni senza chiedere conferma. Usare con cautela in ambienti di produzione.
Shift+Tab+Tab Plan Mode Attiva la modalità pianificazione. Claude analizza il task, crea un piano strutturato e lo presenta per approvazione prima di eseguire qualsiasi azione.
Ctrl+C Cancel Input Cancella il testo digitato nell'input corrente senza interrompere la sessione di Claude Code.
Ctrl+D Exit Chiude la sessione corrente di Claude Code salvando la cronologia della conversazione.
Tab Autocompletamento Autocompleta nomi di file, cartelle e comandi slash nel prompt di input.

YOLO Mode: Uso e Precauzioni

La modalità YOLO (You Only Live Once) attivata con Shift+Tab è uno strumento potente ma pericoloso. Quando attiva, Claude esegue tutte le operazioni - incluse modifiche ai file, esecuzione di comandi e installazione di pacchetti - senza chiedere conferma all'utente.

Quando Usare YOLO Mode

  • Prototyping rapido: Quando stai esplorando idee in un branch dedicato
  • Refactoring automatico: Quando hai già validato il piano e vuoi esecuzione rapida
  • Generazione boilerplate: Quando Claude deve creare molti file simili
  • Ambienti sandbox: Quando lavori in container Docker o VM usa-e-getta

Quando NON Usare YOLO Mode

  • Produzione: Mai su branch main/master o ambienti di produzione
  • Operazioni distruttive: Quando il task potrebbe comportare eliminazione di file
  • Comandi di sistema: Quando Claude potrebbe eseguire comandi con sudo
  • Dati sensibili: Quando il contesto contiene credenziali o dati riservati

Plan Mode: Pianificazione Strutturata

La modalità Plan (Shift+Tab+Tab) è l'opposto della YOLO mode. Costringe Claude a creare un piano dettagliato prima di eseguire qualsiasi azione. Il piano include:

  • Analisi del task richiesto e identificazione dei file coinvolti
  • Sequenza ordinata di operazioni da eseguire
  • Potenziali rischi e dipendenze tra le operazioni
  • Stima del numero di file da modificare
  • Richiesta esplicita di approvazione prima dell'esecuzione
Esempio di Plan Mode in azione
# Attivare Plan Mode con Shift+Tab+Tab, poi scrivere il prompt:
> Aggiungi validazione email al form di registrazione

# Claude risponde con un piano:
# Piano di Esecuzione:
# 1. Leggere src/app/auth/register.component.ts
# 2. Leggere src/app/auth/register.component.html
# 3. Aggiungere validatore email al FormGroup
# 4. Aggiungere messaggio di errore nel template
# 5. Aggiungere test per la validazione email
# 6. Aggiornare il service di validazione
#
# File coinvolti: 4
# Operazioni: 6
#
# Procedere? [y/n]

3. Slash Commands

Gli slash commands sono comandi speciali che controllano il comportamento di Claude Code. Si digitano direttamente nel prompt preceduti dal carattere /. Ogni comando ha una funzione specifica per gestire la sessione, il contesto e la configurazione.

Tabella Completa degli Slash Commands

ComandoDescrizioneEsempio d'Uso
/add-dir Aggiunge una directory al contesto di lavoro corrente /add-dir ../shared-libs per includere librerie condivise
/agents Mostra e gestisce i subagenti disponibili nella directory .claude/agents/ /agents per elencare tutti i subagenti configurati
/clear Pulisce la cronologia della conversazione corrente, liberando contesto /clear dopo aver completato un task per iniziare pulito
/config Apre e modifica i file di configurazione di Claude Code /config per visualizzare e modificare le impostazioni
/help Mostra la guida completa dei comandi disponibili /help per il riferimento rapido
/mcp Gestisce i server MCP (Model Context Protocol) configurati /mcp per vedere lo stato dei server connessi
/model Cambia il modello AI utilizzato nella sessione corrente /model claude-sonnet-4-20250514 per passare a Sonnet
/permissions Visualizza e modifica i permessi concessi a Claude Code /permissions per rivedere cosa Claude può fare
/rewind Torna a uno stato precedente della conversazione /rewind per annullare le ultime azioni
/status Mostra lo stato corrente della sessione, contesto e utilizzo token /status per verificare quanti token sono stati utilizzati

Uso Avanzato degli Slash Commands

Gli slash commands possono essere combinati in sequenze logiche per gestire sessioni di lavoro complesse. Ecco alcuni pattern d'uso avanzati.

Pattern di uso avanzato degli slash commands
# Pattern 1: Reset del contesto per un nuovo task
/clear
/add-dir ./src/features/new-feature
Implementa il componente UserProfile seguendo i pattern esistenti

# Pattern 2: Verifica stato prima di operazioni critiche
/status
/permissions
Esegui il refactoring del modulo di pagamento

# Pattern 3: Cambio modello per task specifici
/model claude-sonnet-4-20250514    # Per task rapidi e frequenti
Genera i test boilerplate per tutti i service
/model claude-opus-4-20250514      # Per task complessi
Analizza l'architettura e proponi miglioramenti

# Pattern 4: Debug di connessioni MCP
/mcp
# Verifica che i server necessari siano connessi
# prima di eseguire task che li richiedono

Comandi Personalizzati (Custom Slash Commands)

Oltre ai comandi built-in, Claude Code supporta la creazione di comandi personalizzati tramite file Markdown nella directory .claude/commands/. Ogni file .md diventa un comando slash invocabile nella sessione.

.claude/commands/review.md - Comando personalizzato per code review
# Code Review Completa

Esegui una code review approfondita dei file modificati.

## Checklist
1. Verifica la correttezza logica del codice
2. Controlla naming conventions e coerenza
3. Identifica potenziali bug o edge case
4. Verifica la gestione degli errori
5. Controlla la copertura dei test
6. Valuta la performance e la scalabilità

## Output
Produci un report strutturato con:
- **Severita**: Critical / Major / Minor / Suggestion
- **File e riga**: Riferimento preciso
- **Problema**: Descrizione chiara
- **Soluzione**: Fix proposto con codice
.claude/commands/deploy-check.md - Verifica pre-deploy
# Verifica Pre-Deploy

Prima di procedere con il deploy, controlla:

1. Esegui `npm run build` e verifica che non ci siano errori
2. Esegui `npm test` e verifica che tutti i test passino
3. Controlla che non ci siano console.log rimasti nel codice
4. Verifica che le variabili d'ambiente siano configurate
5. Controlla che il file .env.production sia aggiornato
6. Verifica la versione nel package.json

Riporta lo stato di ogni punto con un checkmark.

Una volta creati, i comandi personalizzati si invocano con /review o /deploy-check direttamente nel prompt di Claude Code.

4. Gerarchia di Configurazione

Claude Code utilizza un sistema di configurazione a quattro livelli gerarchici, dove ogni livello può sovrascrivere le impostazioni del livello inferiore. Questa architettura permette di avere configurazioni granulari che vanno dalle policy aziendali fino alle preferenze personali del singolo sviluppatore.

Gerarchia di Configurazione (dal più alto al più basso)

LivelloPercorso FileScopePriorità
Enterprise /etc/claude-code/managed-settings.json Tutta l'organizzazione Massima (non sovrascrivibile)
Progetto Locale .claude/settings.local.json Singolo sviluppatore nel progetto Alta
Progetto Condiviso .claude/settings.json Tutti gli sviluppatori del progetto Media
Utente Globale ~/.claude/settings.json Tutti i progetti dell'utente Base

Livello 1: Enterprise (Massima Priorità)

La configurazione Enterprise è gestita dall'amministratore di sistema e si trova in /etc/claude-code/managed-settings.json. Le impostazioni definite a questo livello non possono essere sovrascritte da nessun altro livello. È il meccanismo ideale per imporre policy di sicurezza aziendali.

/etc/claude-code/managed-settings.json - Configurazione Enterprise
{
  "permissions": {
    "deny": [
      "Bash(rm -rf /*)",
      "Bash(sudo *)",
      "Bash(chmod 777 *)",
      "Write(~/.ssh/*)",
      "Write(~/.aws/*)"
    ]
  },
  "security": {
    "max_file_size_bytes": 10485760,
    "blocked_domains": ["*.internal.company.com"],
    "require_approval_for_network": true
  },
  "model": {
    "default": "claude-sonnet-4-20250514",
    "allowed": ["claude-sonnet-4-20250514", "claude-opus-4-20250514"]
  }
}

Livello 2: Progetto Locale (settings.local.json)

Il file .claude/settings.local.json è specifico per il singolo sviluppatore nel contesto di un progetto. Questo file non deve essere committato nel repository (va aggiunto a .gitignore) perchè contiene preferenze personali.

.claude/settings.local.json - Preferenze personali del progetto
{
  "permissions": {
    "allow": [
      "Bash(npm run test:watch)",
      "Bash(npm run dev)",
      "Bash(docker compose up -d)"
    ]
  },
  "preferences": {
    "model": "claude-opus-4-20250514",
    "theme": "dark",
    "auto_approve_reads": true
  }
}

Livello 3: Progetto Condiviso (settings.json)

Il file .claude/settings.json viene committato nel repository e condivide le configurazioni del progetto con tutto il team. Qui vanno le regole e i permessi che tutti gli sviluppatori devono seguire.

.claude/settings.json - Configurazione condivisa del progetto
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(mvn *)",
      "Bash(gradle *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Read(*)",
      "Write(src/**/*)"
    ],
    "deny": [
      "Bash(git push --force *)",
      "Bash(git reset --hard *)",
      "Bash(rm -rf *)",
      "Write(.env*)",
      "Write(**/credentials*)",
      "Write(**/secrets*)"
    ]
  },
  "context": {
    "include_patterns": ["src/**/*.ts", "src/**/*.html", "src/**/*.css"],
    "exclude_patterns": ["node_modules/**", "dist/**", ".angular/**"]
  }
}

Livello 4: Utente Globale

Il file ~/.claude/settings.json nella home directory dell'utente contiene le preferenze globali che si applicano a tutti i progetti. È il livello con la priorità più bassa e viene sovrascritto da qualsiasi configurazione di progetto.

~/.claude/settings.json - Preferenze globali dell'utente
{
  "permissions": {
    "allow": [
      "Bash(ls *)",
      "Bash(cat *)",
      "Bash(which *)",
      "Bash(node --version)",
      "Read(*)"
    ]
  },
  "preferences": {
    "model": "claude-sonnet-4-20250514",
    "auto_approve_reads": true,
    "verbose_output": false,
    "language": "it"
  }
}

Risoluzione dei Conflitti

Quando la stessa impostazione è definita a più livelli, il livello con priorità maggiore prevale. In caso di liste (come allow e deny), le voci deny di livelli superiori prevalgono sempre sulle voci allow di livelli inferiori. Questo garantisce che le policy di sicurezza aziendali non possano essere aggirate.

5. Template di Permessi per la Sicurezza

I permessi controllano quali azioni Claude Code può eseguire senza chiedere conferma. La configurazione corretta dei permessi bilancia produttività e sicurezza. Ecco due template pronti all'uso per scenari comuni.

Template 1: Basic Security (Sviluppo Standard)

Questo template è ideale per lo sviluppo quotidiano su progetti dove vuoi che Claude abbia autonomia sui comandi di sviluppo comuni, ma con protezione sui file sensibili e le operazioni distruttive.

Template Basic Security - .claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(npm test *)",
      "Bash(npm install *)",
      "Bash(npx *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)",
      "Bash(git branch *)",
      "Bash(git checkout *)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(tsc *)",
      "Bash(ng *)",
      "Bash(mvn *)",
      "Bash(gradle *)",
      "Bash(python -m pytest *)",
      "Bash(docker compose *)",
      "Bash(curl *)",
      "Read(*)",
      "Write(src/**/*)",
      "Write(tests/**/*)",
      "Write(docs/**/*)"
    ],
    "deny": [
      "Write(.env*)",
      "Write(**/*.pem)",
      "Write(**/*.key)",
      "Write(**/credentials*)",
      "Write(**/secrets*)",
      "Write(~/.ssh/*)",
      "Write(~/.aws/*)",
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Bash(chmod 777 *)",
      "Bash(git push --force *)",
      "Bash(git reset --hard *)"
    ]
  }
}

Template 2: Strict Security (Ambienti Critici)

Questo template richiede approvazione esplicita per tutte le operazioni di scrittura e nega qualsiasi accesso alla rete. È ideale per ambienti con dati sensibili, compliance rigorosa o progetti in produzione.

Template Strict Security - .claude/settings.json
{
  "permissions": {
    "allow": [
      "Read(src/**/*)",
      "Read(tests/**/*)",
      "Read(docs/**/*)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Bash(git log *)"
    ],
    "deny": [
      "Write(*)",
      "Bash(npm install *)",
      "Bash(npx *)",
      "Bash(curl *)",
      "Bash(wget *)",
      "Bash(ssh *)",
      "Bash(scp *)",
      "Bash(nc *)",
      "Bash(git push *)",
      "Bash(git commit *)",
      "Bash(docker *)",
      "Bash(sudo *)",
      "Bash(rm *)",
      "Bash(mv *)",
      "Bash(cp *)"
    ]
  },
  "security": {
    "require_approval_for_all_writes": true,
    "require_approval_for_network": true,
    "audit_log": true,
    "max_file_modifications_per_session": 10
  }
}

Confronto tra i Template

AspettoBasic SecurityStrict Security
Lettura file Automatica su tutti i file Automatica solo su src/tests/docs
Scrittura file Automatica su src, test, docs Richiede approvazione per ogni file
Comandi build Automatici (npm, mvn, gradle) Negati - solo lettura
Comandi git Lettura + commit/checkout Solo lettura (status, diff, log)
Accesso rete curl permesso, no ssh/scp Completamente negato
File sensibili Bloccati (.env, .pem, .key) Bloccati (tutti i file in scrittura)
Uso ideale Sviluppo quotidiano Audit, compliance, produzione

6. Modalità Headless

La modalità headless permette di eseguire Claude Code in modo non interattivo, ideale per l'integrazione in pipeline CI/CD, script di automazione e processi batch. In questa modalità, Claude riceve un prompt, lo esegue e restituisce il risultato in formato JSON strutturato.

Sintassi Base

Esecuzione headless da terminale
# Sintassi base
claude --print "Analizza il codice in src/ e riporta i problemi" --output-format json

# Con limite di iterazioni
claude --print "Esegui i test e correggi i fallimenti" \
  --output-format json \
  --max-iterations 10

# Con modello specifico
claude --print "Genera la documentazione API" \
  --output-format json \
  --model claude-sonnet-4-20250514

# Con permessi espliciti
claude --print "Formatta tutti i file TypeScript" \
  --output-format json \
  --allowedTools "Bash(npx prettier --write src/**/*.ts)" \
  --allowedTools "Read(*)"

Flag Principali della Modalità Headless

Flag della Modalità Headless

FlagDescrizioneValore Default
--print Il prompt da eseguire in modalità non interattiva Obbligatorio
--output-format Formato dell'output (json, text, stream-json) text
--max-iterations Numero massimo di iterazioni (tool use cycles) Illimitato
--model Modello AI da utilizzare Da configurazione
--allowedTools Tool permessi per l'esecuzione (ripetibile) Da configurazione
--verbose Output dettagliato con log di debug false

Integrazione con GitHub Actions

Un caso d'uso potente della modalità headless e l'integrazione con pipeline CI/CD. Ecco un esempio completo di workflow GitHub Actions che usa Claude Code per code review automatica su ogni Pull Request.

.github/workflows/claude-review.yml
name: Claude Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install Claude Code
        run: npm install -g @anthropic-ai/claude-code

      - name: Run Code Review
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          DIFF=$(git diff origin/main...HEAD)
          claude --print "Analizza il seguente diff e fornisci una code review:
          $DIFF

          Formato output:
          - Severity: Critical/Major/Minor
          - File e riga
          - Problema
          - Soluzione proposta" \
            --output-format json \
            --max-iterations 5 > review.json

      - name: Post Review Comment
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const review = JSON.parse(fs.readFileSync('review.json', 'utf8'));
            await github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: review.result
            });

Script di Automazione Locale

scripts/auto-fix.sh - Script di fix automatico
#!/bin/bash
# Script per fix automatico di lint errors

echo "=== Claude Code Auto-Fix ==="
echo "Analizzando errori di lint..."

# Esegui lint e cattura errori
LINT_OUTPUT=$(npm run lint 2>&1 || true)

if [ -z "$LINT_OUTPUT" ]; then
  echo "Nessun errore trovato!"
  exit 0
fi

echo "Trovati errori. Avvio Claude Code per la correzione..."

claude --print "Correggi i seguenti errori di lint:
$LINT_OUTPUT

Regole:
- Correggi solo gli errori segnalati
- Non modificare la logica del codice
- Mantieni lo stile esistente" \
  --output-format json \
  --max-iterations 15 \
  --allowedTools "Read(src/**/*)" \
  --allowedTools "Write(src/**/*)" \
  --allowedTools "Bash(npm run lint)"

echo "Fix completato. Verifica finale..."
npm run lint

7. Errori Comuni e Troubleshooting

Anche con una configurazione corretta, è possibile incontrare errori durante l'uso di Claude Code. Ecco i problemi più comuni e le relative soluzioni.

Problemi Comuni e Soluzioni

ProblemaCausaSoluzione
Command not found: claude Binario non nel PATH Verificare npm list -g e aggiungere il percorso npm globale al PATH
Authentication failed API key non valida o scaduta Rieseguire claude per il flusso di login o verificare la variabile ANTHROPIC_API_KEY
Permission denied Azione bloccata dalla configurazione Verificare /permissions e aggiungere la regola necessaria in settings
Context too large Troppi file nel contesto Usare /clear e ricaricare solo i file necessari con @
Rate limit exceeded Troppe richieste in poco tempo Attendere qualche minuto, considerare upgrade del piano
ENOENT .claude/settings.json File di configurazione mancante Creare la directory .claude/ e il file settings.json con contenuto {}
Model not available Modello non incluso nel piano Usare /model per passare a un modello disponibile nel piano corrente
WSL network error DNS non configurato in WSL Configurare /etc/resolv.conf con nameserver 8.8.8.8 nel WSL

Debug Avanzato

Comandi di diagnostica
# Verificare la versione installata
claude --version

# Verificare lo stato dell'autenticazione
claude --print-auth-status

# Avviare in modalità debug verbose
claude --verbose

# Verificare la configurazione attiva
claude --print "Mostra la configurazione attiva" --output-format json

# Reset completo della configurazione
rm -rf ~/.claude/settings.json
claude  # Ricrea la configurazione di default

# Verifica connettivita API
curl -s https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2024-01-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-4-20250514","max_tokens":10,"messages":[{"role":"user","content":"test"}]}'

8. Workflow Quotidiano con la CLI

La vera potenza di Claude Code CLI emerge quando la si integra nel workflow quotidiano di sviluppo. Ecco una giornata tipo di uno sviluppatore che usa Claude Code come compagno di lavoro costante.

Morning Routine

Avvio giornata con Claude Code
# 1. Entrare nella directory del progetto
cd ~/projects/my-app

# 2. Avviare Claude Code
claude

# 3. Verificare lo stato del repository
> !git status
> !git log --oneline -5

# 4. Caricare il contesto del task corrente
> @src/features/user-profile/
> Sto lavorando sulla feature user-profile.
> Cosa è stato fatto finora e cosa resta da implementare?

# 5. Attivare Plan Mode per il primo task
> [Shift+Tab+Tab] Implementa la validazione del form di profilo

Development Flow

Ciclo di sviluppo tipico
# Implementazione feature
> Implementa il componente EditProfile con form reattivo
> Usa i validatori Angular per email, telefono e nome
> Segui i pattern esistenti in src/features/auth/

# Test
> Genera unit test per EditProfileComponent
> Copri i casi: form valido, email invalida, submit e cancel

# Code review
> /review   # Usa il custom command creato in precedenza

# Commit
> !git add -A
> !git commit -m "feat(user-profile): add edit profile form with validation"

# Passare al task successivo
> /clear
> @src/features/notifications/
> Implementa il sistema di notifiche push

Pattern di Produttività

Best Practice per l'Uso Quotidiano

  • Usa /clear tra task diversi: Mantiene il contesto pulito e le risposte precise
  • Menziona file specifici con @: Riduce il rumore nel contesto e migliora la qualità
  • Plan Mode per task complessi: Evita sorprese su operazioni multi-file
  • YOLO Mode per boilerplate: Accelera la generazione di file ripetitivi
  • Custom commands per task ricorrenti: Standardizza review, deploy check, test
  • Bash mode (!) per comandi rapidi: Non serve uscire da Claude per un git status
  • Rewind (Esc+Esc) quando serve: Non esitare a tornare indietro se la direzione e sbagliata
  • Controlla /status periodicamente: Monitora l'uso dei token per evitare limiti

9. Configurazione Avanzata

Oltre ai template base, Claude Code offre opzioni di configurazione avanzate per scenari specifici come monorepo, team distribuiti e ambienti multi-progetto.

Configurazione per Monorepo

In un monorepo con più pacchetti, la configurazione deve gestire contesti diversi per ogni sotto-progetto mantenendo regole comuni.

.claude/settings.json per monorepo
{
  "permissions": {
    "allow": [
      "Read(*)",
      "Write(packages/*/src/**/*)",
      "Write(packages/*/tests/**/*)",
      "Bash(npm run -w packages/* *)",
      "Bash(npx turbo run *)",
      "Bash(git *)"
    ],
    "deny": [
      "Write(packages/*/node_modules/**)",
      "Write(packages/*/.env*)",
      "Bash(rm -rf *)",
      "Bash(sudo *)"
    ]
  },
  "context": {
    "include_patterns": [
      "packages/*/src/**/*.ts",
      "packages/*/package.json",
      "turbo.json",
      "package.json"
    ],
    "exclude_patterns": [
      "**/node_modules/**",
      "**/dist/**",
      "**/.turbo/**"
    ]
  }
}

Variabili d'Ambiente per la Configurazione

Variabili d'Ambiente Supportate

VariabileDescrizioneEsempio
ANTHROPIC_API_KEY API key per l'autenticazione sk-ant-api03-xxxxx
CLAUDE_CODE_MODEL Modello di default claude-sonnet-4-20250514
CLAUDE_CODE_MAX_TOKENS Limite token per risposta 16384
CLAUDE_CODE_CONFIG_DIR Directory configurazione personalizzata /custom/path/.claude
CLAUDE_CODE_VERBOSE Attiva output verbose true

Conclusione

Claude Code CLI è molto più di un semplice wrapper attorno a un modello AI. È un ambiente di sviluppo conversazionale completo che si integra nel terminale e trasforma il modo in cui interagiamo con il codice. La combinazione di scorciatoie da tastiera, slash commands, configurazione gerarchica e modalità headless crea un ecosistema flessibile che si adatta a qualsiasi workflow e livello di sicurezza.

Punti Chiave

  • Installazione flessibile: npm, curl, Homebrew o WSL - scegli il metodo più adatto al tuo ambiente
  • Scorciatoie essenziali: ! per Bash, @ per file, Esc+Esc per rewind, Shift+Tab per YOLO
  • Slash commands per il controllo: /clear, /model, /status, /permissions per gestire la sessione
  • Gerarchia a 4 livelli: Enterprise > Progetto Locale > Progetto Condiviso > Utente Globale
  • Template di permessi: Basic Security per sviluppo, Strict Security per produzione
  • Headless mode: Automazione CI/CD con output JSON strutturato
  • Custom commands: Crea i tuoi slash commands per standardizzare il workflow del team

Nel prossimo articolo esploreremo le Agent Skills: capacità modulari che estendono le funzionalità di Claude Code con competenze specializzate per documenti, analisi dati, sviluppo web e molto altro. Scopriremo come creare skill personalizzate e integrarle nel workflow quotidiano.

Prova Questi Strumenti

Strumenti gratuiti correlati a questo argomento.

Commenti

Caricamento commenti...

Accedi per commentare

Discuti questo articolo nella community

Unisciti al gruppo Telegram per discutere con altri sviluppatori, fare domande e condividere le tue esperienze.

Ti è piaciuto questo articolo?

Esplora altri contenuti sul blog o scopri i miei progetti