Guida alla Configurazione del File CLAUDE.md

Definisci standard e vincoli del progetto tramite il file CLAUDE.md, affinché Claude Code comprenda e segua meglio i requisiti del progetto.

Cos'è CLAUDE.md

CLAUDE.md è il file di configurazione del progetto per Claude Code, che viene caricato automaticamente all'inizio di ogni conversazione come parte del prompt di sistema. Configurando correttamente questo file, puoi:

  • Definire standard di codifica specifici del progetto
  • Stabilire vincoli di stack tecnologico e framework
  • Stabilire standard di qualità del codice
  • Standardizzare flussi di lavoro di sviluppo
  • Documentare decisioni architetturali

Modello di Configurazione Principale

Struttura del Modello di Base

# Nome del Progetto

## Panoramica del Progetto

[Breve descrizione dello scopo del progetto, funzioni principali e utenti target]

## Stack Tecnologico

- Frontend: [Framework e librerie principali]
- Backend: [Linguaggio e framework]
- Database: [Tipo di database]
- Deploy: [Piattaforma di deploy]

## Struttura del Progetto

\```
project/
├── src/ # Codice sorgente
├── tests/ # File di test
├── docs/ # Documentazione
└── scripts/ # File di script
\```

## Standard di Sviluppo

[Standard di codifica specifici del progetto]

## Note

[Note e restrizioni specifiche del progetto]

Esempio di Configurazione Completa

# CLAUDE.md - File di Configurazione del Progetto

## Regole Generali (obbligatorie per tutti i progetti)

### Lingua di Comunicazione

- Usare sempre cinese semplificato per pensare e dialogare
- Commenti di codice in inglese, documentazione in cinese

### Gestione Documenti

- Documentazione ufficiale nella directory `docs/`
- Proposte di discussione nella directory `discuss/`
- Mantenere README conciso, documentazione dettagliata separata

## Standard di Architettura del Codice

### Limiti di Dimensione File

- Python/JavaScript/TypeScript: ogni file non più di 300 righe
- Java/Go/Rust: ogni file non più di 400 righe
- Non più di 8 file per cartella
- Se superato, necessario refactoring o suddivisione

### Indicatori di Qualità del Codice

Evitare i seguenti code smell:

1. **Rigidità**: Sistema difficile da modificare
2. **Ridondanza**: Troppo codice duplicato
3. **Dipendenze Circolari**: Moduli interdipendenti
4. **Fragilità**: Modifiche causano problemi a catena
5. **Oscurità**: Intenzione del codice non chiara
6. **Data Clumps**: Elementi di dati appaiono sempre insieme
7. **Sovraprogettazione**: Complessità non necessaria

## Vincoli dello Stack Tecnologico

### Stack Tecnologico Frontend

- React 19+ (non usare versione 18 o inferiore)
- Next.js 15.4+ (non usare versione 14 o inferiore)
- Tailwind CSS v4 (non usare v3)
- Preferire TypeScript, evitare JavaScript
- Vietare CommonJS, usare solo ES Modules

### Stack Tecnologico Backend

- Node.js 18+
- Usare TypeScript
- Express/Fastify come framework web
- Prisma come ORM

### Progetti Python

- Usare uv per gestione dipendenze (non pip/poetry/conda)
- Nome directory ambiente virtuale: `.venv`
- Tipizzazione forte, evitare uso di dict
- Mantenere directory radice del progetto pulita

## Flusso di Lavoro di Sviluppo

### Gestione Script

- Tutti gli script nella directory `scripts/`
- Usare script `.sh` per operazioni start-stop
- Nessun comando npm/pnpm/python diretto
- Fallimenti di script devono essere corretti immediatamente

### Gestione Log

- File di configurazione producono log
- Output unificato nella directory `logs/`
- Includere timestamp e livello di log
- Memorizzare log di errore separatamente

### Requisiti di Test

- Copertura test unitari > 80%
- Funzioni critiche devono avere test di integrazione
- File di test nella directory `tests/`
- Usare CI/CD per eseguire test automaticamente

## Convenzioni di Nomenclatura

### Nomi File

- Componenti: PascalCase (es. UserProfile.tsx)
- Funzioni utility: camelCase (es. formatDate.ts)
- File costanti: UPPER_SNAKE_CASE (es. API_CONSTANTS.ts)
- File di stile: kebab-case (es. user-profile.css)

### Nomi Variabili

- Variabili/Funzioni: camelCase
- Costanti: UPPER_SNAKE_CASE
- Classi/Interfacce: PascalCase
- Proprietà private: \_camelCase

## Flusso di Lavoro Git

### Strategia di Branching

- main: Codice di produzione
- develop: Codice di sviluppo
- feature/\*: Branch di funzionalità
- hotfix/\*: Branch di correzione di emergenza

### Convenzioni di Commit

- feat: Nuova funzionalità
- fix: Correzione bug
- docs: Aggiornamento documentazione
- style: Formattazione codice
- refactor: Refactoring codice
- test: Relativo a test
- chore: Modifiche build/strumenti

## Standard di Progettazione API

### Principi RESTful

- GET: Ottenere risorsa
- POST: Creare risorsa
- PUT: Aggiornare risorsa (completo)
- PATCH: Aggiornare risorsa (parziale)
- DELETE: Eliminare risorsa

### Formato Risposta

\```json
{
"success": true,
"data": {},
"message": "Operazione riuscita",
"timestamp": "2024-01-01T00:00:00Z"
}
\```

### Gestione Errori

\```json
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Descrizione errore",
"details": {}
}
}
\```

## Standard di Sicurezza

### Informazioni Sensibili

- Non codificare chiavi nel codice
- Usare variabili d'ambiente per gestione configurazione
- Non committare file `.env` in Git
- Aggiornare regolarmente le dipendenze

### Validazione Dati

- Validazione dati sia frontend che backend
- Usare librerie di validazione schema (es. zod)
- Parametrizzare query SQL
- Prevenire attacchi XSS e CSRF

## Ottimizzazione delle Performance

### Ottimizzazione Frontend

- Lazy loading per immagini
- Code splitting
- Strategia di cache
- Scroll virtuale (liste grandi)

### Ottimizzazione Backend

- Ottimizzazione query database
- Usare cache (Redis)
- Compressione risposte API
- Controllo concorrenza

## Configurazione Deploy

### Variabili d'Ambiente

- development: Ambiente di sviluppo
- staging: Ambiente di test
- production: Ambiente di produzione

### Containerizzazione

- Usare Docker per deploy
- Build multi-stage per ottimizzare dimensione immagine
- Usare docker-compose per orchestrazione servizi

## Monitoraggio e Log

### Metriche di Monitoraggio

- Tempo di risposta API
- Tasso di errore
- Utilizzo risorse
- Analisi comportamento utente

### Livelli di Log

- ERROR: Informazioni errore
- WARN: Informazioni avviso
- INFO: Informazioni generali
- DEBUG: Informazioni debug

## Note Speciali

⚠️ **Promemoria Importanti**:

1. Affrontare immediatamente problemi di codice
2. Chiedere attivamente all'utente in caso di incertezza
3. Mantenere codice pulito e manutenibile
4. Seguire standard stabiliti del progetto

Modelli Specifici per Tipo di Progetto

Progetti React/Next.js

## Standard Progetto React/Next.js

### Standard Componenti

- Usare componenti funzionali + Hooks
- File componente con stesso nome del componente
- Un file, un componente
- Props definite con interfacce TypeScript

### Gestione Stato

- Stato semplice: useState
- Stato complesso: useReducer
- Stato globale: Context API / Zustand
- Stato server: TanStack Query

### Soluzione Styling

- Tailwind CSS v4 come principale
- CSS Modules come complemento
- Evitare stili inline
- Priorità a design responsive

### Ottimizzazione Performance

- Usare React.memo per evitare rendering non necessario
- useMemo/useCallback per ottimizzazione calcoli
- Importazioni dinamiche per code splitting
- Usare componente next/image per immagini

Progetti Python

## Standard Progetto Python

### Struttura Progetto

\```
project/
├── src/
│ ├── **init**.py
│ ├── main.py
│ ├── models/
│ ├── services/
│ └── utils/
├── tests/
├── .venv/
└── pyproject.toml
\```

### Gestione Dipendenze

- Usare uv per tutte le dipendenze
- pyproject.toml per definire configurazione progetto
- requirements.txt per deploy di produzione
- requirements-dev.txt per dipendenze di sviluppo

### Annotazioni di Tipo

- Tutte le funzioni devono avere annotazioni di tipo
- Usare dataclass per definire strutture dati
- Combinare con mypy per verifica tipi
- Evitare uso tipo Any

### Programmazione Asincrona

- Priorità a async/await
- Usare asyncio per gestione concorrenza
- Usare driver asincroni per operazioni database
- Usare httpx per richieste HTTP

Progetti Microservizi

## Standard Architettura Microservizi

### Suddivisione Servizi

- Dividere servizi per dominio business
- Ogni servizio si deploya indipendentemente
- Comunicazione inter-servizi via API
- Codice condiviso tramite gestione pacchetti

### API Gateway

- Gestione ingresso unificata
- Autenticazione e autorizzazione
- Rate limiting e circuit breaking
- Routing richieste

### Comunicazione Servizi

- HTTP/REST: Chiamate sincrone
- Code messaggi: Comunicazione asincrona
- gRPC: Scenari alte prestazioni
- WebSocket: Comunicazione in tempo reale

### Gestione Dati

- Ogni servizio ha proprio database
- Evitare transazioni inter-servizi
- Usare event-driven per mantenere coerenza
- Implementare operazioni idempotenti

Raccomandazioni d'Uso

Configurazione Inizializzazione

Usa il comando /init per generare automaticamente la configurazione di base:

> /init

Claude Code analizzerà la struttura del progetto e genererà un file iniziale CLAUDE.md.

Aggiornamento Continuo

Man mano che il progetto si evolve, aggiorna continuamente il file di configurazione:

Documentare decisioni architetturali

Registrare decisioni tecniche importanti

Aggiornare stack tecnologico

Aggiornare tempestivamente modifiche stack tecnologico

Perfezionare standard

Integrare tempestivamente standard alla scoperta di problemi

Ottimizzare flusso di lavoro

Ottimizzare processo di sviluppo basato sulla pratica

Collaborazione Team

Assicurarsi che tutti i membri del team conoscano e seguano la configurazione:

  • Nuovi membri leggono prima CLAUDE.md
  • Revisioni regolari aggiornamenti configurazione
  • Comunicare modifiche configurazione a tutti
  • Mantenere praticità della configurazione

Migliori Pratiche

DO - Pratiche Raccomandate

Mantenere semplicità e chiarezza

  • Regole chiare e facili da capire
  • Evitare sovraconfigurazione
  • Focus su vincoli chiave

Sincronizzare con progetto

  • Configurazione riflette situazione attuale
  • Aggiornare tempestivamente contenuto obsoleto
  • Eliminare regole non più applicabili

Concentrarsi su efficacia

  • Regole aiutano a migliorare efficienza
  • Evitare formalismo
  • Migliorare continuamente basato su feedback

DON'T - Pratiche da Evitare

Sovrarestrinzione

  • Non stabilire regole troppo severe
  • Lasciare spazio flessibile per sviluppo
  • Evitare di soffocare l'innovazione

Disconnesso dalla realtà

  • Non copiare ciecamente configurazioni di altri progetti
  • Regole devono adattarsi alle capacità del team
  • Considerare esigenze reali del progetto

Trascurare manutenzione

  • Non configurare una volta e non aggiornare mai
  • Rivedere regolarmente efficacia configurazione
  • Pulire tempestivamente configurazioni non utilizzate

💡 Suggerimento: CLAUDE.md è la "costituzione" del progetto, definisce le regole di comportamento di Claude Code nel progetto. Una configurazione appropriata può migliorare significativamente l'efficienza di sviluppo e la qualità del codice, ma evita il carico di sovraconfigurazione. Ricorda sempre: la configurazione serve allo sviluppo, non lo sviluppo alla configurazione.

Insieme all'AI, infinite innovazioni e opportunità
Informazioni
Funzionalità
Documentazione
Prezzi
Contattaci
Termini e politiche
Termini di utilizzo
Informativa sulla privacy
Legge sulle transazioni commerciali specifiche