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

Novembre 30, 2025
Lo sapevate che…oggi ho mandato in crisi la mia memoria muscolare. Due volte.

Sì, avete letto bene: due volte. Perché quando decido di complicarmi la vita, lo faccio con una certa eleganza: passare a una tastiera meccanica split con layout americano mentre costruisco un workflow da tastiera con Linux e Neovim. Prima mossa geniale: passare a una tastiera meccanica split, quelle divise in due metà che ti fanno […]

Aprile 1, 2025
🎉 Level Up! Ho completato il corso “Complete Python Developer” e sbloccato nuove skill!

🎉 Level Up! Ho appena completato il corso “Complete Python Developer: Zero to Mastery” e mi sento come se avessi appena sbloccato un nuovo achievement nel mondo della programmazione! 🏆🐍 Un viaggio entusiasmante affrontato con il mio approccio preferito: sperimentare, costruire e imparare divertendomi… e sì, anche combattere qualche bug lungo il cammino. Ma del […]

veronicaschembri
Copyright © Veronica Schembri

Privacy Policy
Cookie Policy
💬