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:
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
- Dico a Claude: "Cerca la documentazione per [libreria X]"
- Claude delega al DocsExplorer SubAgent
- DocsExplorer legge tutta la docs nel SUO context window (può essere centinaia di pagine!)
- 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
- Scrivo codice → Hook esegue formatting automatico
- Chiedo refactoring → DesignPatternExpert SubAgent suggerisce pattern appropriato nel SUO context window, ritorna solo raccomandazione
- Claude implementa → DocsExplorer + Context7 verificano syntax aggiornata delle librerie
- Pre-commit Hook →
- Linting ✓
- Security ✓
- Test ✓
- Coverage ✓
- Se tutto OK → Commit
- 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