Claude Code: Assaggiare il Pair Programming con con un collega artificiale

Da quando uso Claude Code, il mio modo di sviluppare è cambiato. Non tanto perché scrive codice al posto mio, ma perché è diventato il mio pair programming partner: qualcuno con cui discutere scelte architetturali, validare pattern, ragionare su trade-off.

Quando lavoro da sola, è facile restare incastrata nelle mie assunzioni. Avere Claude che fa domande, propone alternative, mette in discussione le scelte — è come avere un collega sempre disponibile per un brainstorming.

Ma usavo Claude Code in modo basilare: scrivere codice, fix bugs, qualche refactoring. Poi ho seguito il corso "Claude Code: The Practical Guide" di Maximilian Schwarzmüller su Udemy e ho scoperto alcune funzionalità che possono amplificare radicalmente il workflow.

I cinque game-changer

1. @ per context engineering pulito

Uno dei problemi che avevo: Claude leggeva troppi file e inquinava il context window con informazioni non necessarie.

Il pattern @NOME_FILE

Nel file CLAUDE.md (che Claude legge all'inizio di ogni sessione) o nei prompt, puoi usare @nomefile.md per dire a Claude di puntare a un file specifico senza caricarlo nel context immediato.

Esempio:

# CLAUDE.md

Stiamo costruendo un app, trovi i dettagli in @app_wow.md. 
Leggi il file per le task di architettura generica o per controllare la struttura del database

Mantieni le tue risposte estremamente concise e focalizzati sull'informazione chiave.
Niente chiacchiere inutili.
Code language: PHP (php)

Come funziona

Claude sa che @app_wow.md esiste, ma legge quel file solo quando serve per il task corrente.

Risultato: Context window pulito. Claude carica solo i file rilevanti per il task specifico, non tutto il progetto in anticipo. O file non richiesti, che potrebbero inquinare il main context window.

Caso d'uso reale

Nel mio progetto ho:

  • @ARCHITECTURE.md → pattern architetturali
  • @API_SPEC.md → specifiche API
  • @DEPLOYMENT.md → configurazione deploy

Claude sa dove trovare le info, ma non le carica tutte contemporaneamente.

2. MCP e Context7: documentazione sempre aggiornata

MCP (Model Context Protocol) è il pezzo che trasforma Claude da "assistente locale" a "assistente con accesso al mondo esterno".

Il problema

Framework e librerie cambiano continuamente. Non puoi aspettarti che Claude conosca l'ultima versione di ogni tool.

Senza MCP, Claude potrebbe allucinare API o usare syntax deprecata.

La soluzione: Context7

Context7 è un server MCP che dà a Claude accesso a documentazioni ufficiali di librerie e framework in tempo reale.

Invece di affidarsi alla knowledge cutoff, Claude cerca la docs aggiornata mentre lavora.

Come lo Userò

Nel prompt, dico esplicitamente:

Usa Context7 per cercare la documentazione ufficiale di [libreria].
Code language: CSS (css)

Claude cerca, legge la docs corretta, e mi dà codice che funziona davvero con la versione che sto usando.

Quando è fondamentale

  • Librerie nuove o poco conosciute
  • Framework con API che cambiano spesso
  • Quando devo essere sicuro della syntax esatta

📚 Link: MCP Documentation

3. SubAgents: Context window separato

Questo è forse il concetto che mi ha aperto più possibilità.

🔑 Il Vantaggio chiave

IMPORTANTISSIMO: I SubAgents NON usano il main context window. Hanno il loro context separato.

Puoi creare un SubAgent che:

  • Legge decine di pagine di documentazione
  • Fa ricerche estensive tramite MCP
  • Analizza file complessi

Senza intasare il tuo context window principale.

Il SubAgent passa al main context solo il risultato finale — le informazioni rilevanti distillate.

Esempio: DocsExplorer SubAgent

Durante il corso abbiamo creato un SubAgent specializzato nella ricerca di documentazione:

---
name: DocsExplorer
description: Documentation lookup specialist
tools: WebFetch, WebSearch, Skill
model: sonnet
---

You are a documentation specialist. When given a library/framework:

1. Execute ALL lookups in parallel for speed
2. Use Context7 MCP as primary source
3. Fall back to web search if docs lack coverage
4. Prefer machine-readable formats (llms.txt, .md)

Goal: provide accurate, relevant documentation quickly.
Code language: JavaScript (javascript)

Workflow pratico

  1. Dico a Claude: "Cerca la documentazione per [libreria X]"
  2. Claude delega al DocsExplorer SubAgent
  3. DocsExplorer legge tutta la docs nel SUO context window (può essere centinaia di pagine!)
  4. Ritorna al main context solo: "Ecco le 3 API rilevanti per il tuo task + esempi"

Risultato: Main context pulito, focalizzato sul codice. Tutta la ricerca pesante è delegata.

📚 Documentazione: Sub-Agents Docs

4. Comandi custom con argomenti dinamici

I comandi custom sono "prompt salvati" che richiami con /comando.

Ma la parte potente è che possono prendere argomenti dinamici.

Esempio: Code review configurabile

Nel corso viene mostrata la creazione di un comando /review che cambia comportamento in base agli argomenti:

---
allowed-tools: Read(*)
description: Perform a code review
---

Mode: $ARGUMENTS

If Mode is one of the following, adjust the review:
- MODE == BUGS: Focus ONLY on logical bugs
- MODE == SECURITY: Focus ONLY on security issues  
- MODE == PERFORMANCE: Focus ONLY on performance

MODE can be combined: "BUGS,SECURITY"

If MODE is empty, perform general code review.
Code language: PHP (php)

Uso:

/review SECURITY

Claude fa un security audit mirato.

/review BUGS,PERFORMANCE

Claude cerca bugs e problemi di performance, ignorando style o altri aspetti.

Perché è potente

Stesso comando, comportamento diverso. Non devo scrivere prompt lunghi ogni volta.

Comandi che voglio costruire

  • /refactor PATTERN → refactoring usando design pattern specifico (Factory, Repository, Strategy)
  • /test COVERAGE → genera test fino a raggiungere coverage %
  • /docs API → genera documentazione API

Usa $ARGUMENTS per rendere i comandi flessibili e riutilizzabili.

5. Hooks: automazione che non dimentica

Gli Hooks sono trigger automatici che si attivano in risposta a eventi specifici.

Il problema che risolvono

Scenario reale: finisco di modificare codice Python. Dimentico di formattare con ruff. Faccio commit. CI fallisce.

Con gli hooks, questo non può succedere.

Esempio: Hook PostToolUse

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "type": "command",
        "command": "cd \"$CLAUDE_PROJECT_DIR\" && ruff format . 2>/dev/null || true"
      }
    ]
  }
}
Code language: JSON / JSON with Comments (json)

Cosa fa: Ogni volta che Claude modifica un file Python (Edit|Write), esegue automaticamente ruff format.

Variabile $CLAUDE_PROJECT_DIR

Claude offre $CLAUDE_PROJECT_DIR per eseguire comandi nella directory del progetto corrente, indipendentemente da dove sei.

Risultato: Claude non può "dimenticare" step. L'automazione li forza.

Altri Hook utili

  • Pre-commit: verifica che non ci siano print() dimenticati
  • Post-test: aggiorna coverage badge automaticamente
  • Pre-deploy: controlla che tutte le env var necessarie siano documentate

📚 Documentazione: Hooks Documentation

Il sistema integrato che voglio costruire

Combinando tutti questi pattern, sto progettando un sistema che elevi Claude Code da pair programming partner a quality assurance automatizzata.

Architettura del sistema

Layer 1: Knowledge base (SubAgents + MCP)

  • DesignPatternExpert SubAgent: conosce tutti i design pattern strutturali (Repository, Factory, Strategy, Observer, Decorator)
  • BestPractices SubAgent: applica DRY, KISS, SOLID
  • DocsExplorer + Context7: documentazione ufficiale sempre aggiornata

Layer 2: automation (Hooks)

  • Post-Edit hook: ruff format automatico su ogni modifica Python
  • Pre-Commit hook:
  • Linting con ruff
  • Security scan per container (Dockerfile best practices)
  • Test suite con pytest
  • Coverage check (minimo 80%)
  • Quality gate: Se qualcosa fallisce → rollback automatico

Layer 3: commands (workflow)

  • /review SECURITY,PERFORMANCE → code review mirato
  • /refactor REPOSITORY → applica pattern specifico
  • /docs → genera/aggiorna documentazione

Come funziona in pratica

  1. Scrivo codice → Hook esegue formatting automatico
  2. Chiedo refactoring → DesignPatternExpert SubAgent suggerisce pattern appropriato nel SUO context window, ritorna solo raccomandazione
  3. Claude implementa → DocsExplorer + Context7 verificano syntax aggiornata delle librerie
  4. Pre-commit Hook →
  • Linting ✓
  • Security ✓
  • Test ✓
  • Coverage ✓
  1. Se tutto OK → Commit
  2. Se fallisce → Rollback + report

Perché questo approccio?

Working project ≠ production ready project

Un progetto che "funziona" non è automaticamente pronto per produzione. Questo sistema garantisce:

  • ✅ Code quality attraverso pattern validati
  • ✅ Security attraverso scan automatici
  • ✅ Best practices applicate consistentemente
  • ✅ Documentazione aggiornata
  • ✅ Test coverage adeguato

E soprattutto: non posso dimenticare nessuno step. Gli hook lo forzano.

Riflessioni finali

Claude Code non è solo "AI che scrive codice". È un sistema configurabile che si plasma sul tuo workflow.

Questi pattern mi hanno fatto capire che stavo usando forse il 20% delle sue capacità.

Ma la parte più importante resta il pair programming. Claude non sostituisce il pensiero critico. È un partner che:

  • Mi fa domande che non mi farei
  • Propone alternative che non considererei
  • Esegue task meccanici mentre io penso all'architettura
  • E ora può accedere a conoscenza esterna, delegare ricerche pesanti, e automatizzare quality checks

Se usi Claude Code solo come autocomplete, ti stai perdendo molto.


Risorse

Related Post

Maggio 30, 2025
Cosa mi porto da Catania: AI, Spritz e tanto ma tanto movimento

🚂 Tornando da Catania, con la mente piena di AI e possibilità Appena rientrata da due eventi intensi e stimolanti a Catania — Green Mind AI e Catan.IA — mi porto a casa molto più di una valigia piena: mi porto idee, connessioni, contaminazioni. Mi porto a casa l’energia delle realtà come Aitho e Datapizza, […]

Luglio 13, 2025
MCP: "USB-C per l'AI" che Sta Rivoluzionando l'Integrazione

Hai mai desiderato che la tua AI potesse davvero fare qualcosa invece di limitarsi a parlarne? Bene, questo sogno è ora realtà grazie al Model Context Protocol (MCP). Cosa Ho Imparato nel Corso Zero to Mastery Ho appena completato il corso MCP di Diogo Resende su Zero to Mastery, e devo dire che è stata […]

veronicaschembri
Copyright © Veronica Schembri

Privacy Policy
Cookie Policy
💬